som parse tree (som v1.5)

atom :: 
oper.op
gname.idx
lname.idx
string.str
num.value

op ::   add sub mul div eq ne lt le gt ge not band bor bxor mod shl shr 
  set vec mac fun call mx if ifelse while for break array case sys

program ::
fun/mac definition (oper.fun/mac gname.idx e...)
for  (oper.for lv ex0 ex0 ex)
while (oper.while ex0 ex)
if (oper.if ex0 ex)
ifelse (oper.ifelse ex0 ex ex)
case (oper.case ex0 block)
assign (oper.set var ex)
call/mx (oper.call/mx gname.idx e...)
block (oper.block e...)
syscall (oper.sys num.value e...)
var :: gname.idx  lname.idx (oper.vec var ex)

symbols
set  	=
vec  	[
mac def 	:
fun def 	to
mx 	]
call 	}
lname 	#n
gname 	name
block  	{
if 	if
ifelse 	else

24 Feb 2005
