kwclass = 'class';
kwabstract = 'abstract';
kwinterface = 'interface';
-kwuniversal = 'universal';
+kwenum = 'universal'|'enum';
kwspecial = 'special';
kwend = 'end';
kwmeth = 'fun';
= {concrete} kwclass
| {abstract} kwabstract kwclass
| {interface} kwinterface
- | {universal} kwuniversal
+ | {enum} kwenum
;
formaldefs {-> formaldef*}
;
for~withelse {-> expr}
- = kwfor no id [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, id, expr, kwdo, stmtso_withend.expr, label)}
- | {nolabel} kwfor no id [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, id, expr, kwdo, stmtso~withelse.expr, Null)}
+ = kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso_withend.expr, label)}
+ | {nolabel} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso~withelse.expr, Null)}
;
assert~withelse {-> expr}
= {concrete} kwclass
| {abstract} kwabstract kwclass
| {interface} kwinterface
- | {universal} kwuniversal
+ | {enum} kwenum
;
formaldef = [id]:classid type?;
superclass = kwspecial? kwsuper? type;
| {ifexpr} kwif expr kwthen [then]:expr kwelse [else]:expr
| {while} kwwhile expr kwdo [block]:expr? label?
| {loop} kwloop [block]:expr? label?
- | {for} kwfor id expr kwdo [block]:expr? label?
+ | {for} kwfor [ids]:id* expr kwdo [block]:expr? label?
| {assert} kwassert id? expr [else]:expr?
| {once} kwonce expr
| {send} expr