Difference between revisions of "Declaration"

From Mesham
Jump to navigationJump to search
m (Syntax)
Line 3: Line 3:
 
All variables must be declared before they are used. In Mesham one may declare a variable via its value or explicit type.
 
All variables must be declared before they are used. In Mesham one may declare a variable via its value or explicit type.
  
var [varname];<br>
+
var name;<br>
var [varname]:=[Value];<br>
+
var name:=[Value];<br>
var [varname]:[Type];<br>
+
var name:[Type];<br>
 +
 
 +
Where ''name'' is the name of the variable being declared.
  
 
== Semantics ==
 
== Semantics ==

Revision as of 13:59, 12 January 2013

Syntax

All variables must be declared before they are used. In Mesham one may declare a variable via its value or explicit type.

var name;
var name:=[Value];
var name:[Type];

Where name is the name of the variable being declared.

Semantics

The environment will map the identifier to storage location and that variable is now usable. In the case of a value being specified then the compiler will infer the type via type inference either here or when the first assignment takes place.

Note: It is not possible to declare a variable with the value null as this is a special, no value, placer and as such has no type.

Examples

var a;
var b:=99;
a:="hello";

In the code example above, the variable a is declared, without any further information the type is infered by its first use (to hold type String.) Variable b is declared with value 99, an integer and as such the type is infered to be both Int and allocated on multiple processes.

var t:Char;
var z:Char :: allocated[single[on[2]]];

Variable t is declared to be a character, without further type information it is also assumed to be on all processes (by default the type Char is allocated to all processes.) Lastly, the variable z is declared to be of type character, but is allocated only on a single process (process 2.)