syntax: enable a generalized for with iterate
[nit.git] / src / parser / nit.sablecc3xx
index 9d17d23..6455b05 100644 (file)
@@ -62,7 +62,7 @@ kwimport = 'import';
 kwclass = 'class';
 kwabstract = 'abstract';
 kwinterface = 'interface';
-kwuniversal = 'universal';
+kwenum = 'universal'|'enum';
 kwspecial = 'special';
 kwend = 'end';
 kwmeth = 'fun';
@@ -192,7 +192,7 @@ classkind
        = {concrete} kwclass
        | {abstract} kwabstract kwclass
        | {interface} kwinterface
-       | {universal} kwuniversal
+       | {enum} kwenum
        ;
 
 formaldefs {-> formaldef*}
@@ -409,8 +409,8 @@ while~withelse {-> expr}
        ;
 
 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}
@@ -605,7 +605,7 @@ classkind
        = {concrete} kwclass
        | {abstract} kwabstract kwclass
        | {interface} kwinterface
-       | {universal} kwuniversal
+       | {enum} kwenum
        ;
 formaldef = [id]:classid type?;
 superclass = kwspecial? kwsuper? type;
@@ -651,7 +651,7 @@ expr        = {block} expr*
        | {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