###### test: sayhello
- program As Bs astr bbool:
- A := $As; B := $Bs
+ program ac av:
+ A := $av[1]; B := $av[2]
+ astr := av[3]
+ bbool := av[ac-1] == "True"
print "Hello World, what lovely oceans you have!"
/* When a variable is defined in both branches of an 'if',
* and used afterwards, the variables are merged.
bools[1] = strings[2] <= "there"
for i:=0; then i=i+1; while i<5:
- print '', bools[i],
+ j ::= i
+ ra:[j]number
+ ra[i-1] = i*i
+ ra[6] = 42 // mustn't crash
+ print '', bools[i], ra[j-1],
print
###### output: arrays
- False True False False False
+ False 0 True 1 False 4 False 9 False 16
## Structures
###### test: structs
+ const three ::= 3
struct foo
- size:[3]number
+ size:[three]number
name:string
- active:Boolean
+ active:Boolean = True
struct baz { a:number; b:Boolean; }
info[i].name = nm
info[i].size[0] = i*i
- info[i].active = nm == "jane"
+ if nm != "jane":
+ info[i].active = False
for i:=0; then i=i+1; while i < 4:
print info[i].name, info[i].active, info[i].size[0]