X-Git-Url: http://nitlanguage.org diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index cfb96ca..88619c5 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -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*} @@ -491,7 +491,7 @@ expr_atom~nopar~nobra {-> expr} | {init} recv~nopar~nobra kwinit args {-> New expr.init(recv~nopar~nobra.expr, kwinit, [args.expr])} !nobra | {bra} expr_atom~nopar braargs {-> New expr.bra(expr_atom~nopar.expr, [braargs.expr], [])} | {new} kwnew no type~nobra dot [n2]:no id args {-> New expr.new(kwnew, type~nobra.type, id, [args.expr])} -// FIXME: Why are these 3 !nopar mandatory? +// !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar), !nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra {-> New expr.crange(expr, expr2.expr)} !nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra {-> New expr.orange(expr, expr2.expr)} !nobra!nopar | {array} braargs {-> New expr.array([braargs.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;