From: yeom Date: Tue, 26 Apr 2011 19:10:01 +0000 (+0000) Subject: first step to reduce the size of grammar as we have an issue of Java Bytecode 64K... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4f72d36e84565af212e64998c6a3629fdda00b77;p=IRC.git first step to reduce the size of grammar as we have an issue of Java Bytecode 64K limitation. --- diff --git a/Robust/src/Parse/java14.cup b/Robust/src/Parse/java14.cup index 87079c4f..ca6871e6 100644 --- a/Robust/src/Parse/java14.cup +++ b/Robust/src/Parse/java14.cup @@ -34,6 +34,9 @@ parser code {: public void report_error(String message, java_cup.runtime.Symbol info) { lexer.errorMsg(message, info); } + public int n(){ + return lexer.line_num; + } :}; scan with {: return lexer.nextToken(); :}; @@ -306,7 +309,7 @@ task_declaration ::= flag_effects_opt:feo method_body:body {: - ParseNode pn=new ParseNode("task_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_declaration",parser.n()); pn.addChild("name").addChild(id); pn.addChild(tpl); pn.addChild(feo); @@ -316,7 +319,7 @@ task_declaration ::= task_parameter_list ::= task_parameter:fp {: - ParseNode pn=new ParseNode("task_parameter_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_parameter_list",parser.n()); pn.addChild(fp); RESULT=pn; :} @@ -328,14 +331,14 @@ task_parameter_list ::= task_parameter ::= type:type variable_declarator_id:name LBRACE flag_expression:exp RBRACE {: - ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_parameter",parser.n()); pn.addChild(type); pn.addChild(name); pn.addChild("flag").addChild(exp); RESULT=pn; :} | type:type variable_declarator_id:name LBRACE flag_expression:exp RBRACE LBRACE tag_expression_list:texp RBRACE {: - ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_parameter",parser.n()); pn.addChild(type); pn.addChild(name); pn.addChild("flag").addChild(exp); @@ -343,14 +346,14 @@ task_parameter ::= RESULT=pn; :} | type:type variable_declarator_id:name LBRACE RBRACE LBRACE tag_expression_list:texp RBRACE {: - ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_parameter",parser.n()); pn.addChild(type); pn.addChild(name); pn.addChild("tag").addChild(texp); RESULT=pn; :} | OPTIONAL task_parameter:fp {: - ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("task_parameter",parser.n()); pn.addChild("optional").addChild(fp); RESULT=pn; :} @@ -358,7 +361,7 @@ task_parameter ::= ; tag_expression_list ::= tag_expression:te {: - ParseNode pn=new ParseNode("tag_expression_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("tag_expression_list",parser.n()); pn.addChild(te); RESULT=pn; :} @@ -369,7 +372,7 @@ tag_expression_list ::= tag_expression:te {: ; tag_expression ::= IDENTIFIER:type IDENTIFIER:id {: - ParseNode pn=new ParseNode("tag_expression",parser.lexer.line_num); + ParseNode pn=new ParseNode("tag_expression",parser.n()); pn.addChild("type").addChild(type); pn.addChild("single").addChild(id); RESULT=pn; @@ -377,12 +380,12 @@ tag_expression ::= IDENTIFIER:type IDENTIFIER:id {: ; tag_list_opt ::= LBRACE tag_list:fl RBRACE {:RESULT=fl;:} - | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} - | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.n()); :} + | {: RESULT = new ParseNode("empty",parser.n()); :} ; tag_list ::= tag_change:fc {: - ParseNode pn=new ParseNode("tag_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("tag_list",parser.n()); pn.addChild(fc); RESULT=pn; :} @@ -392,10 +395,10 @@ tag_list ::= tag_change:fc {: :}; tag_change ::= IDENTIFIER:id {: - RESULT=new ParseNode("name",parser.lexer.line_num).addChild(id).getRoot(); + RESULT=new ParseNode("name",parser.n()).addChild(id).getRoot(); :} | NOT IDENTIFIER:id {: - RESULT=new ParseNode("not",parser.lexer.line_num).addChild("name").addChild(id).getRoot(); + RESULT=new ParseNode("not",parser.n()).addChild("name").addChild(id).getRoot(); :}; flag_expression ::= @@ -403,7 +406,7 @@ flag_expression ::= RESULT=exp; :} | flag_expression:exp1 OROR flag_andexpression:exp2 {: - ParseNode pn=new ParseNode("or",parser.lexer.line_num); + ParseNode pn=new ParseNode("or",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -413,7 +416,7 @@ flag_expression ::= flag_andexpression ::= flag_notexpression:exp {: RESULT=exp; :} | flag_notexpression:exp1 ANDAND flag_andexpression:exp2 {: - ParseNode pn=new ParseNode("and",parser.lexer.line_num); + ParseNode pn=new ParseNode("and",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -422,7 +425,7 @@ flag_andexpression ::= flag_notexpression ::= NOT flag_notexpression:exp {: - ParseNode pn=new ParseNode("not",parser.lexer.line_num); + ParseNode pn=new ParseNode("not",parser.n()); pn.addChild(exp); RESULT=pn; :} @@ -430,22 +433,22 @@ flag_notexpression ::= RESULT=exp; :} | IDENTIFIER:id {: - ParseNode pn=new ParseNode("name",parser.lexer.line_num); + ParseNode pn=new ParseNode("name",parser.n()); pn.addChild(id); RESULT=pn; :} ; task_exitstatement ::= TASKEXIT flag_effects_opt:opt cons_checks_opt:cco SEMICOLON {: - RESULT=(new ParseNode("taskexit",parser.lexer.line_num)).addChild(opt).getRoot().addChild(cco).getRoot(); + RESULT=(new ParseNode("taskexit",parser.n())).addChild(opt).getRoot().addChild(cco).getRoot(); :}; cons_checks_opt ::= ASSERT LPAREN cons_checks:cc RPAREN {: RESULT=cc; :} - | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + | {: RESULT = new ParseNode("empty",parser.n()); :} ; cons_checks ::= cons_check:cc {: - ParseNode pn=new ParseNode("cons_checks",parser.lexer.line_num); + ParseNode pn=new ParseNode("cons_checks",parser.n()); pn.addChild(cc); RESULT=pn; :} @@ -455,18 +458,18 @@ cons_checks ::= cons_check:cc {: :}; cons_check ::= IDENTIFIER:name LPAREN cons_argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("cons_check",parser.lexer.line_num); + ParseNode pn=new ParseNode("cons_check",parser.n()); pn.addChild("name").addChild("identifier").addChild(name); pn.addChild(args); RESULT=pn; :}; flag_effects_opt ::= LPAREN flag_effects:fe RPAREN {:RESULT=fe;:} - | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + | {: RESULT = new ParseNode("empty",parser.n()); :} ; flag_effects ::= flag_effect:fe {: - ParseNode pn=new ParseNode("flag_effects_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_effects_list",parser.n()); pn.addChild(fe); RESULT=pn; :} @@ -476,27 +479,27 @@ flag_effects ::= flag_effect:fe {: :}; flag_effect ::= IDENTIFIER:id LBRACE flag_list:fl RBRACE tag_list_opt:tlo {: - ParseNode pn=new ParseNode("flag_effect",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_effect",parser.n()); pn.addChild("name").addChild(id); pn.addChild(fl); pn.addChild(tlo); RESULT=pn; :} | IDENTIFIER:id LBRACE RBRACE LBRACE tag_list:tl RBRACE {: - ParseNode pn=new ParseNode("flag_effect",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_effect",parser.n()); pn.addChild("name").addChild(id); pn.addChild(tl); RESULT=pn; :}; flag_list_opt ::= LBRACE flag_list:fl RBRACE {:RESULT=fl;:} - | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.n()); :} | - {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT = new ParseNode("empty",parser.n()); :} ; flag_list ::= flag_change:fc {: - ParseNode pn=new ParseNode("flag_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_list",parser.n()); pn.addChild(fc); RESULT=pn; :} @@ -506,10 +509,10 @@ flag_list ::= flag_change:fc {: :}; flag_change ::= IDENTIFIER:id {: - RESULT=new ParseNode("name",parser.lexer.line_num).addChild(id).getRoot(); + RESULT=new ParseNode("name",parser.n()).addChild(id).getRoot(); :} | NOT IDENTIFIER:id {: - RESULT=new ParseNode("not",parser.lexer.line_num).addChild("name").addChild(id).getRoot(); + RESULT=new ParseNode("not",parser.n()).addChild("name").addChild(id).getRoot(); :}; // 19.2) The Syntactic Grammar @@ -524,37 +527,37 @@ goal ::= compilation_unit:cu literal ::= INTEGER_LITERAL:integer_lit {: - ParseNode pn=new ParseNode("literal",parser.lexer.line_num); + ParseNode pn=new ParseNode("literal",parser.n()); pn.addChild("integer").setLiteral(integer_lit); RESULT=pn; :} | FLOATING_POINT_LITERAL:float_lit {: - ParseNode pn=new ParseNode("literal",parser.lexer.line_num); + ParseNode pn=new ParseNode("literal",parser.n()); pn.addChild("float").setLiteral(float_lit); RESULT=pn; :} | BOOLEAN_LITERAL:boolean_lit {: - ParseNode pn=new ParseNode("literal",parser.lexer.line_num); + ParseNode pn=new ParseNode("literal",parser.n()); pn.addChild("boolean").setLiteral(boolean_lit); RESULT=pn; :} | CHARACTER_LITERAL:char_lit {: - ParseNode pn=new ParseNode("literal",parser.lexer.line_num); + ParseNode pn=new ParseNode("literal",parser.n()); pn.addChild("char").setLiteral(char_lit); RESULT=pn; :} | STRING_LITERAL:string_lit {: - ParseNode pn=new ParseNode("literal",parser.lexer.line_num); + ParseNode pn=new ParseNode("literal",parser.n()); pn.addChild("string").setLiteral(string_lit); RESULT=pn; :} | NULL_LITERAL {: - RESULT=(new ParseNode("literal",parser.lexer.line_num)).addChild("null").getRoot(); + RESULT=(new ParseNode("literal",parser.n())).addChild("null").getRoot(); :} ; @@ -565,21 +568,21 @@ type ::= primitive_type:type {: RESULT=type; :} primitive_type ::= numeric_type:type {: RESULT=type; :} - | BOOLEAN {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("boolean").getRoot(); :} + | BOOLEAN {: RESULT=(new ParseNode("type",parser.n())).addChild("boolean").getRoot(); :} ; numeric_type::= integral_type:type {: RESULT=type; :} | floating_point_type:type {: RESULT=type; :} ; integral_type ::= - BYTE {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("byte").getRoot(); :} - | SHORT {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("short").getRoot(); :} - | INT {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("int").getRoot(); :} - | LONG {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("long").getRoot(); :} - | CHAR {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("char").getRoot(); :} + BYTE {: RESULT=(new ParseNode("type",parser.n())).addChild("byte").getRoot(); :} + | SHORT {: RESULT=(new ParseNode("type",parser.n())).addChild("short").getRoot(); :} + | INT {: RESULT=(new ParseNode("type",parser.n())).addChild("int").getRoot(); :} + | LONG {: RESULT=(new ParseNode("type",parser.n())).addChild("long").getRoot(); :} + | CHAR {: RESULT=(new ParseNode("type",parser.n())).addChild("char").getRoot(); :} ; floating_point_type ::= - FLOAT {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("float").getRoot(); :} - | DOUBLE {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("double").getRoot(); :} + FLOAT {: RESULT=(new ParseNode("type",parser.n())).addChild("float").getRoot(); :} + | DOUBLE {: RESULT=(new ParseNode("type",parser.n())).addChild("double").getRoot(); :} ; reference_type ::= @@ -587,20 +590,20 @@ reference_type ::= | array_type:type {: RESULT=type; :} ; class_or_interface_type ::= name:name {: - RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("class").addChild(name).getRoot(); + RESULT=(new ParseNode("type",parser.n())).addChild("class").addChild(name).getRoot(); :}; class_type ::= class_or_interface_type:type {: RESULT=type; :}; interface_type ::= class_or_interface_type:type {: RESULT=type; :}; array_type ::= primitive_type:prim dims:dims {: - ParseNode pn=(new ParseNode("type",parser.lexer.line_num)).addChild("array"); + ParseNode pn=(new ParseNode("type",parser.n())).addChild("array"); pn.addChild("basetype").addChild(prim); pn.addChild("dims").setLiteral(dims); RESULT=pn.getRoot(); :} | name:name dims:dims {: - ParseNode pn=(new ParseNode("type",parser.lexer.line_num)).addChild("array"); + ParseNode pn=(new ParseNode("type",parser.n())).addChild("array"); pn.addChild("basetype").addChild("type").addChild("class").addChild(name); pn.addChild("dims").setLiteral(dims); RESULT=pn.getRoot(); @@ -612,11 +615,11 @@ name ::= simple_name:name {: RESULT=name; :} | qualified_name:name {: RESULT=name; :} ; simple_name ::= IDENTIFIER:id {: - RESULT=(new ParseNode("name",parser.lexer.line_num)).addChild("identifier").addChild(id).getRoot(); + RESULT=(new ParseNode("name",parser.n())).addChild("identifier").addChild(id).getRoot(); :} ; qualified_name ::= name:name DOT IDENTIFIER:id {: - ParseNode pn=new ParseNode("name",parser.lexer.line_num); + ParseNode pn=new ParseNode("name",parser.n()); pn.addChild("base").addChild(name); pn.addChild("identifier").addChild(id); RESULT=pn; @@ -628,7 +631,7 @@ compilation_unit ::= package_declaration_opt:pdo import_declarations_opt:ido type_declarations_opt:tdo {: - ParseNode pn=new ParseNode("compilation_unit",parser.lexer.line_num); + ParseNode pn=new ParseNode("compilation_unit",parser.n()); pn.addChild(tdo); pn.addChild("packages").addChild(pdo); pn.addChild("imports").addChild(ido); @@ -638,23 +641,23 @@ compilation_unit ::= package_declaration_opt ::= package_declaration:pdo {: RESULT=pdo; :} | - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} ; import_declarations_opt ::= import_declarations:ido {: RESULT=ido; :} | - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} ; type_declarations_opt ::= type_declarations:tds {: RESULT=tds; :} | - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} ; import_declarations ::= import_declaration:id {: - ParseNode pn=new ParseNode("import_decls_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("import_decls_list",parser.n()); pn.addChild(id); RESULT=pn; :} @@ -666,7 +669,7 @@ import_declarations ::= type_declarations ::= type_declaration:td {: - ParseNode pn=new ParseNode("type_declaration_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("type_declaration_list",parser.n()); pn.addChild(td); RESULT=pn; :} @@ -678,7 +681,7 @@ type_declarations ::= package_declaration ::= PACKAGE name:name SEMICOLON {: - ParseNode pn=new ParseNode("package",parser.lexer.line_num); + ParseNode pn=new ParseNode("package",parser.n()); pn.addChild(name); RESULT=pn; :} @@ -689,14 +692,14 @@ import_declaration ::= ; single_type_import_declaration ::= IMPORT name:name SEMICOLON {: - ParseNode pn=new ParseNode("import_single",parser.lexer.line_num); + ParseNode pn=new ParseNode("import_single",parser.n()); pn.addChild(name); RESULT=pn; :} ; type_import_on_demand_declaration ::= IMPORT name:name DOT MULT SEMICOLON {: - ParseNode pn=new ParseNode("import_ondemand",parser.lexer.line_num); + ParseNode pn=new ParseNode("import_ondemand",parser.n()); pn.addChild(name); RESULT=pn; :} @@ -719,12 +722,12 @@ type_declaration ::= {: RESULT=in; :} - | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.n()); :} ; // 19.7) Productions used only in the LALR(1) grammar modifiers_opt::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | modifiers:mo {: RESULT=mo; :} @@ -737,7 +740,7 @@ modifiers ::= mixed_modifiers : mmo {: RESULT=mmo; :} | annotations : an {: - ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("modifier_list",parser.n()); pn.addChild(an); RESULT=pn; :} @@ -749,12 +752,12 @@ mixed_modifiers_at ::= ; mixed_modifiers ::= modifier : mo {: - ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("modifier_list",parser.n()); pn.addChild(mo); RESULT=pn; :} | annotations:as modifier:mo {: - ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("modifier_list",parser.n()); pn.addChild(mo); pn.addChild(as); RESULT=pn; @@ -764,35 +767,35 @@ mixed_modifiers ::= RESULT=mmos; :} | mixed_modifiers_at:mma annotation_body:ab {: - mma.addChild("annotation_list",parser.lexer.line_num).addChild(ab); + mma.addChild("annotation_list",parser.n()).addChild(ab); RESULT=mma; :} ; modifier ::= - PUBLIC {: RESULT=new ParseNode("public",parser.lexer.line_num); :}| - PROTECTED {: RESULT=new ParseNode("protected",parser.lexer.line_num); :}| - PRIVATE {: RESULT=new ParseNode("private",parser.lexer.line_num); :}| - STATIC {: RESULT=new ParseNode("static",parser.lexer.line_num); :} | - ABSTRACT {: RESULT=new ParseNode("abstract",parser.lexer.line_num); :} | - FINAL {: RESULT=new ParseNode("final",parser.lexer.line_num); :}| - NATIVE {: RESULT=new ParseNode("native",parser.lexer.line_num); :} | - SYNCHRONIZED {: RESULT=new ParseNode("synchronized",parser.lexer.line_num); :} | - ATOMIC {: RESULT=new ParseNode("atomic",parser.lexer.line_num); :} | - VOLATILE {: RESULT=new ParseNode("volatile",parser.lexer.line_num); :} | - TRANSIENT {: RESULT=new ParseNode("transient",parser.lexer.line_num); :} + PUBLIC {: RESULT=new ParseNode("public",parser.n()); :}| + PROTECTED {: RESULT=new ParseNode("protected",parser.n()); :}| + PRIVATE {: RESULT=new ParseNode("private",parser.n()); :}| + STATIC {: RESULT=new ParseNode("static",parser.n()); :} | + ABSTRACT {: RESULT=new ParseNode("abstract",parser.n()); :} | + FINAL {: RESULT=new ParseNode("final",parser.n()); :}| + NATIVE {: RESULT=new ParseNode("native",parser.n()); :} | + SYNCHRONIZED {: RESULT=new ParseNode("synchronized",parser.n()); :} | + ATOMIC {: RESULT=new ParseNode("atomic",parser.n()); :} | + VOLATILE {: RESULT=new ParseNode("volatile",parser.n()); :} | + TRANSIENT {: RESULT=new ParseNode("transient",parser.n()); :} // STRICTFP // note that semantic analysis must check that the // context of the modifier allows strictfp. ; //annotations_opt ::= -// {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} +// {: RESULT=new ParseNode("empty",parser.n()); :} // | annotations:an {: // RESULT=an; // :} // ; annotations ::= AT annotation_body:ab {: - ParseNode pn=new ParseNode("annotation_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("annotation_list",parser.n()); pn.addChild(ab); RESULT=pn; :} @@ -813,17 +816,17 @@ annotation ::= ; annotation_body ::= normal_annotation_body:nab {: - ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("annotation_body",parser.n()); pn.addChild(nab); RESULT = pn; :} | marker_annotation_body:mab {: - ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("annotation_body",parser.n()); pn.addChild(mab); RESULT = pn; :} | single_element_annotation_body:seab {: - ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("annotation_body",parser.n()); pn.addChild(seab); RESULT = pn; :} @@ -834,14 +837,14 @@ normal_annotation_body ::= marker_annotation_body ::= IDENTIFIER:id {: - ParseNode pn=new ParseNode("marker_annotation",parser.lexer.line_num); + ParseNode pn=new ParseNode("marker_annotation",parser.n()); pn.addChild("name").addChild(id); RESULT=pn; :} ; single_element_annotation_body ::= IDENTIFIER:id LPAREN STRING_LITERAL:ev RPAREN {: - ParseNode pn=new ParseNode("single_annotation",parser.lexer.line_num); + ParseNode pn=new ParseNode("single_annotation",parser.n()); pn.addChild("name").addChild(id); pn.addChild("element_value").addChild(ev); RESULT=pn; @@ -885,7 +888,7 @@ class_declaration ::= modifiers_opt:mo CLASS IDENTIFIER:id super_opt:so interfaces_opt:ifo class_body:body {: - ParseNode pn=new ParseNode("class_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("class_declaration",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("super").addChild(so); @@ -899,7 +902,7 @@ super ::= EXTENDS class_type:classtype {: :} ; super_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | super:su {: RESULT=su; :} @@ -908,12 +911,12 @@ super_opt ::= interfaces ::= IMPLEMENTS interface_type_list:iftl {: RESULT=iftl; :} ; interfaces_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | interfaces:ifs {: RESULT=ifs; :} ; interface_type_list ::= interface_type:ift {: - ParseNode pn=new ParseNode("interface_type_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("interface_type_list",parser.n()); pn.addChild(ift); RESULT=pn; :} @@ -927,12 +930,12 @@ class_body ::= LBRACE class_body_declarations_opt:cbdo RBRACE {: RESULT=cbdo; :} ; class_body_declarations_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | class_body_declarations:cbd {: RESULT=cbd; :}; class_body_declarations ::= class_body_declaration:cbd {: - ParseNode pn=new ParseNode("class_body_declaration_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("class_body_declaration_list",parser.n()); pn.addChild(cbd); RESULT=pn; :} @@ -944,37 +947,37 @@ class_body_declarations ::= class_body_declaration ::= class_member_declaration:member {: - RESULT=(new ParseNode("member",parser.lexer.line_num)).addChild(member).getRoot(); + RESULT=(new ParseNode("member",parser.n())).addChild(member).getRoot(); :} | static_initializer:block{: - RESULT=(new ParseNode("static_block",parser.lexer.line_num)).addChild(block).getRoot(); + RESULT=(new ParseNode("static_block",parser.n())).addChild(block).getRoot(); :} | constructor_declaration:constructor {: - RESULT=(new ParseNode("constructor",parser.lexer.line_num)).addChild(constructor).getRoot(); + RESULT=(new ParseNode("constructor",parser.n())).addChild(constructor).getRoot(); :} | block:block {: - RESULT=(new ParseNode("block",parser.lexer.line_num)).addChild(block).getRoot(); + RESULT=(new ParseNode("block",parser.n())).addChild(block).getRoot(); :} | location_order_declaration:lod {: - RESULT=(new ParseNode("location_order_declaration",parser.lexer.line_num)).addChild(lod).getRoot(); + RESULT=(new ParseNode("location_order_declaration",parser.n())).addChild(lod).getRoot(); :} ; class_member_declaration ::= //failure aware computation flag_declaration:flag {: - RESULT=(new ParseNode("flag",parser.lexer.line_num)).addChild(flag).getRoot(); + RESULT=(new ParseNode("flag",parser.n())).addChild(flag).getRoot(); :} | field_declaration:field {: - RESULT=(new ParseNode("field",parser.lexer.line_num)).addChild(field).getRoot(); + RESULT=(new ParseNode("field",parser.n())).addChild(field).getRoot(); :} | method_declaration:method {: - RESULT=(new ParseNode("method",parser.lexer.line_num)).addChild(method).getRoot(); + RESULT=(new ParseNode("method",parser.n())).addChild(method).getRoot(); :} /* repeat the prod for 'class_declaration' here: */ | modifiers_opt:mo CLASS IDENTIFIER:id super_opt:so interfaces_opt:ifo class_body:body {: - ParseNode pn=new ParseNode("inner_class_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("inner_class_declaration",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("super").addChild(so); @@ -987,9 +990,9 @@ class_member_declaration ::= RESULT=ed; :} // | interface_declaration:interfaced {: -// RESULT=(new ParseNode("interface",parser.lexer.line_num)).addChild(interfaced).getRoot(); +// RESULT=(new ParseNode("interface",parser.n())).addChild(interfaced).getRoot(); // :} - | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.n()); :} ; // mgc @@ -997,7 +1000,7 @@ class_member_declaration ::= enum_declaration ::= modifiers_opt:mo ENUM IDENTIFIER:id /*interfaces_opt:io*/ enum_body:body {: - ParseNode pn=new ParseNode("enum_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("enum_declaration",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); //pn.addChild("superIF").addChild(ifo); @@ -1010,13 +1013,13 @@ enum_body ::= {: RESULT=eco; :} ; enum_constants_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | enum_constants:ecs {: RESULT=ecs; :} ; enum_constants ::= enum_constant:ec {: - ParseNode pn=new ParseNode("enum_constants_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("enum_constants_list",parser.n()); pn.addChild(ec); RESULT=pn; :} @@ -1028,7 +1031,7 @@ enum_constants ::= enum_constant ::= IDENTIFIER:id /*enum_arguments_opt*/ {: - ParseNode pn=new ParseNode("enum_constant",parser.lexer.line_num); + ParseNode pn=new ParseNode("enum_constant",parser.n()); pn.addChild("name").addChild(id); RESULT=pn; :} @@ -1044,12 +1047,12 @@ enum_constant ::= //Failure aware computation flag_declaration ::= FLAG IDENTIFIER:id SEMICOLON {: - ParseNode pn=new ParseNode("flag_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_declaration",parser.n()); pn.addChild("name").addChild(id); RESULT=pn; :} | EXTERNAL FLAG IDENTIFIER:id SEMICOLON {: - ParseNode pn=new ParseNode("flag_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("flag_declaration",parser.n()); pn.addChild("name").addChild(id); pn.addChild("external"); RESULT=pn; @@ -1059,14 +1062,14 @@ flag_declaration ::= // 19.8.2) Field Declarations field_declaration ::= modifiers_opt:mo type:type variable_declarators:var SEMICOLON {: - ParseNode pn=new ParseNode("field_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("field_declaration",parser.n()); pn.addChild("modifier").addChild(mo); pn.addChild("type").addChild(type); pn.addChild("variables").addChild(var); RESULT=pn; :} | modifiers_opt:mo GLOBAL type:type variable_declarators:var SEMICOLON {: - ParseNode pn=new ParseNode("field_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("field_declaration",parser.n()); pn.addChild("modifier").addChild(mo); pn.addChild("type").addChild(type); pn.addChild("variables").addChild(var); @@ -1077,7 +1080,7 @@ field_declaration ::= variable_declarators ::= variable_declarator:vd {: - ParseNode pn=new ParseNode("variable_declarators_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("variable_declarators_list",parser.n()); pn.addChild(vd); RESULT=pn; :} @@ -1088,12 +1091,12 @@ variable_declarators ::= ; variable_declarator ::= variable_declarator_id:id {: - ParseNode pn=new ParseNode("variable_declarator",parser.lexer.line_num); + ParseNode pn=new ParseNode("variable_declarator",parser.n()); pn.addChild(id); RESULT=pn; :} | variable_declarator_id:id EQ variable_initializer:init {: - ParseNode pn=new ParseNode("variable_declarator",parser.lexer.line_num); + ParseNode pn=new ParseNode("variable_declarator",parser.n()); pn.addChild(id); pn.addChild("initializer").addChild(init); RESULT=pn; @@ -1101,19 +1104,19 @@ variable_declarator ::= ; variable_declarator_id ::= IDENTIFIER:id {: - RESULT=(new ParseNode("single",parser.lexer.line_num)).addChild(id).getRoot();:} + RESULT=(new ParseNode("single",parser.n())).addChild(id).getRoot();:} | variable_declarator_id:id LBRACK RBRACK {: - RESULT=(new ParseNode("array",parser.lexer.line_num)).addChild(id).getRoot();:} + RESULT=(new ParseNode("array",parser.n())).addChild(id).getRoot();:} ; variable_initializer ::= expression:exp {: RESULT=exp; :} - | array_initializer:ai {: RESULT=(new ParseNode("array_initializer",parser.lexer.line_num)).addChild(ai).getRoot(); :} + | array_initializer:ai {: RESULT=(new ParseNode("array_initializer",parser.n())).addChild(ai).getRoot(); :} ; // 19.8.3) Method Declarations method_declaration ::= method_header:header method_body:body {: - ParseNode pn=new ParseNode("method_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("method_declaration",parser.n()); pn.addChild(header); pn.addChild("body").addChild(body); RESULT=pn; @@ -1122,7 +1125,7 @@ method_declaration ::= method_header ::= modifiers_opt:mo type:type method_declarator:decl throws_opt:to {: - ParseNode pn=new ParseNode("method_header",parser.lexer.line_num); + ParseNode pn=new ParseNode("method_header",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("returntype").addChild(type); pn.addChild("throws").addChild(to); @@ -1131,7 +1134,7 @@ method_header ::= :} | modifiers_opt:mo VOID method_declarator:decl throws_opt:to {: - ParseNode pn=new ParseNode("method_header",parser.lexer.line_num); + ParseNode pn=new ParseNode("method_header",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); pn.addChild(decl); @@ -1140,7 +1143,7 @@ method_header ::= ; method_declarator ::= IDENTIFIER:id LPAREN formal_parameter_list_opt:params RPAREN {: - ParseNode pn=new ParseNode("method_declarator",parser.lexer.line_num); + ParseNode pn=new ParseNode("method_declarator",parser.n()); pn.addChild("name").addChild(id); pn.addChild("parameters").addChild(params); RESULT=pn; @@ -1149,14 +1152,14 @@ method_declarator ::= // be careful; the above production also allows 'void foo() []' ; formal_parameter_list_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | formal_parameter_list:fpl {: RESULT=fpl; :} ; formal_parameter_list ::= formal_parameter:fp {: - ParseNode pn=new ParseNode("formal_parameter_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("formal_parameter_list",parser.n()); pn.addChild(fp); RESULT=pn; :} @@ -1167,25 +1170,25 @@ formal_parameter_list ::= ; formal_parameter ::= type:type variable_declarator_id:name {: - ParseNode pn=new ParseNode("formal_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("formal_parameter",parser.n()); pn.addChild(type); pn.addChild(name); RESULT=pn; :} | TAG variable_declarator_id:name {: - ParseNode pn=new ParseNode("tag_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("tag_parameter",parser.n()); pn.addChild(name); RESULT=pn; :} | FINAL type:type variable_declarator_id:name {: - ParseNode pn=new ParseNode("formal_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("formal_parameter",parser.n()); pn.addChild(type); pn.addChild(name); RESULT=pn; :} | annotation:an type:type variable_declarator_id:name {: - ParseNode pn=new ParseNode("annotation_parameter",parser.lexer.line_num); + ParseNode pn=new ParseNode("annotation_parameter",parser.n()); pn.addChild(type); pn.addChild(name); pn.addChild(an); @@ -1193,17 +1196,17 @@ formal_parameter ::= :} ; throws_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | throws:trs {: RESULT=trs; :} ; throws ::= THROWS class_type_list:ctl - {: RESULT=(new ParseNode("throw_list",parser.lexer.line_num)).addChild(ctl).getRoot(); :} + {: RESULT=(new ParseNode("throw_list",parser.n())).addChild(ctl).getRoot(); :} ; class_type_list ::= class_type:ct {: - ParseNode pn=new ParseNode("class_type_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("class_type_list",parser.n()); pn.addChild(ct); RESULT=pn; :} @@ -1216,13 +1219,13 @@ class_type_list ::= method_body ::= block:block {: RESULT=block; :} - | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.n()); :} ; // 19.8.4) Static Initializers static_initializer ::= STATIC block:body {: - ParseNode pn=new ParseNode("static_block_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("static_block_declaration",parser.n()); pn.addChild("body").addChild(body); RESULT=pn; :} @@ -1232,7 +1235,7 @@ static_initializer ::= constructor_declaration ::= modifiers_opt:mo constructor_declarator:cd throws_opt:to constructor_body:body {: - ParseNode pn=new ParseNode("constructor_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_declaration",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); pn.addChild(cd); @@ -1241,7 +1244,7 @@ constructor_declaration ::= :} | modifiers_opt:mo GLOBAL constructor_declarator:cd throws_opt:to constructor_body:body {: - ParseNode pn=new ParseNode("constructor_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_declaration",parser.n()); pn.addChild("global"); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); @@ -1253,7 +1256,7 @@ constructor_declaration ::= constructor_declarator ::= simple_name:name LPAREN formal_parameter_list_opt:fplo RPAREN {: - ParseNode pn=new ParseNode("constructor_declarator",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_declarator",parser.n()); pn.addChild(name); pn.addChild("parameters").addChild(fplo); RESULT=pn; @@ -1261,32 +1264,32 @@ constructor_declarator ::= ; constructor_body ::= LBRACE explicit_constructor_invocation:eci block_statements:bs RBRACE {: - ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_body",parser.n()); pn.addChild(eci); pn.addChild(bs); RESULT=pn; :} | LBRACE explicit_constructor_invocation:eci RBRACE {: - ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_body",parser.n()); pn.addChild(eci); RESULT=pn; :} | LBRACE block_statements:block RBRACE {: - ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); + ParseNode pn=new ParseNode("constructor_body",parser.n()); pn.addChild(block); RESULT=pn; :} - | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.n()); :} ; explicit_constructor_invocation ::= THIS LPAREN argument_list_opt:alo RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("explconstrinv",parser.lexer.line_num); + ParseNode pn=new ParseNode("explconstrinv",parser.n()); pn.addChild(alo); RESULT=pn; :} | SUPER LPAREN argument_list_opt:alo RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("superinvoke",parser.lexer.line_num); + ParseNode pn=new ParseNode("superinvoke",parser.n()); pn.addChild(alo); RESULT=pn; :} @@ -1301,7 +1304,7 @@ location_order_declaration ::= LOCDEF LBRACE location_order_list:lol RBRACE {: ; location_order_list ::= location_order:lo {: - ParseNode pn=new ParseNode("location_order_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("location_order_list",parser.n()); pn.addChild(lo); RESULT=pn; :} @@ -1312,13 +1315,13 @@ location_order_list ::= ; location_order ::= IDENTIFIER:loc1 LT IDENTIFIER:loc2{: - ParseNode pn=new ParseNode("location_order",parser.lexer.line_num); + ParseNode pn=new ParseNode("location_order",parser.n()); pn.addChild(loc1); pn.addChild(loc2); RESULT=pn; :} | IDENTIFIER:loc MULT{: - ParseNode pn=new ParseNode("location_property",parser.lexer.line_num); + ParseNode pn=new ParseNode("location_property",parser.n()); pn.addChild(loc); RESULT=pn; :} @@ -1331,7 +1334,7 @@ interface_declaration ::= modifiers_opt:mo INTERFACE IDENTIFIER:id extends_interfaces_opt:io interface_body:body {: - ParseNode pn=new ParseNode("interface_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("interface_declaration",parser.n()); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("superIF").addChild(io); @@ -1341,13 +1344,13 @@ interface_declaration ::= | annotation_type_declaration ; extends_interfaces_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | extends_interfaces:eifs {: RESULT=eifs; :} ; extends_interfaces ::= EXTENDS interface_type:ift {: - ParseNode pn=new ParseNode("extend_interface_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("extend_interface_list",parser.n()); pn.addChild(ift); RESULT=pn; :} @@ -1362,12 +1365,12 @@ interface_body ::= {: RESULT=imdo; :} ; interface_member_declarations_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | interface_member_declarations:imd {: RESULT=imd; :} ; interface_member_declarations ::= interface_member_declaration:imd {: - ParseNode pn=new ParseNode("interface_member_declaration_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("interface_member_declaration_list",parser.n()); pn.addChild(imd); RESULT=pn; :} @@ -1378,18 +1381,18 @@ interface_member_declarations ::= ; interface_member_declaration ::= constant_declaration:constant {: - RESULT=(new ParseNode("constant",parser.lexer.line_num)).addChild(constant).getRoot(); + RESULT=(new ParseNode("constant",parser.n())).addChild(constant).getRoot(); :} | abstract_method_declaration:method {: - RESULT=(new ParseNode("method",parser.lexer.line_num)).addChild(method).getRoot(); + RESULT=(new ParseNode("method",parser.n())).addChild(method).getRoot(); :} | enum_declaration:ed {: - RESULT=(new ParseNode("enum_declaration",parser.lexer.line_num)).addChild(ed).getRoot(); + RESULT=(new ParseNode("enum_declaration",parser.n())).addChild(ed).getRoot(); :} // | class_declaration:class // | interface_declaration:interface | SEMICOLON {: - RESULT=new ParseNode("empty",parser.lexer.line_num); + RESULT=new ParseNode("empty",parser.n()); :} ; constant_declaration ::= @@ -1400,9 +1403,9 @@ constant_declaration ::= ; abstract_method_declaration ::= method_header:header SEMICOLON {: - ParseNode pn=new ParseNode("method_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("method_declaration",parser.n()); pn.addChild("header").addChild(header); - pn.addChild("body").addChild(new ParseNode("empty",parser.lexer.line_num)); + pn.addChild("body").addChild(new ParseNode("empty",parser.n())); RESULT=pn; :} ; @@ -1439,15 +1442,15 @@ array_initializer ::= RESULT=var_init_list; :} | LBRACE COMMA RBRACE {: - RESULT=new ParseNode("empty",parser.lexer.line_num); + RESULT=new ParseNode("empty",parser.n()); :} | LBRACE RBRACE {: - RESULT=new ParseNode("empty",parser.lexer.line_num); + RESULT=new ParseNode("empty",parser.n()); :} ; variable_initializers ::= variable_initializer:var_init {: - ParseNode pn=new ParseNode("var_init_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("var_init_list",parser.n()); pn.addChild(var_init); RESULT=pn; :} @@ -1463,14 +1466,14 @@ block ::= LBRACE block_statements_opt:bso RBRACE {: :} ; block_statements_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | block_statements:bs {: RESULT=bs; :} ; block_statements ::= block_statement:bs {: - ParseNode pn=new ParseNode("block_statement_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("block_statement_list",parser.n()); pn.addChild(bs); RESULT=pn; :} @@ -1497,7 +1500,7 @@ block_statement ::= ; tag_variable_declaration_statement ::= TAG IDENTIFIER:id EQ NEW TAG LPAREN IDENTIFIER:type RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("tag_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("tag_declaration",parser.n()); pn.addChild("single").addChild(id); pn.addChild("type").addChild(type); RESULT=pn; @@ -1510,7 +1513,7 @@ local_variable_declaration_statement ::= ; local_variable_declaration ::= type:type variable_declarators:var {: - ParseNode pn=new ParseNode("local_variable_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("local_variable_declaration",parser.n()); pn.addChild(type); pn.addChild(var); RESULT=pn; @@ -1518,7 +1521,7 @@ local_variable_declaration ::= // | FINAL type:type variable_declarators:var {: /* CAUTION: only FINAL and annotations are legal modifiers here */ | modifiers:mo type:type variable_declarators:var {: - ParseNode pn=new ParseNode("local_variable_declaration",parser.lexer.line_num); + ParseNode pn=new ParseNode("local_variable_declaration",parser.n()); pn.addChild(type); pn.addChild(var); pn.addChild("modifiers").addChild(mo); @@ -1560,11 +1563,11 @@ statement_without_trailing_substatement ::= // | assert_statement ; empty_statement ::= - SEMICOLON {: RESULT=new ParseNode("nop",parser.lexer.line_num); :} + SEMICOLON {: RESULT=new ParseNode("nop",parser.n()); :} ; labeled_statement ::= IDENTIFIER:id COLON statement:st {: - ParseNode pn=new ParseNode("labeledstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("labeledstatement",parser.n()); pn.addChild("name").addChild(id); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1572,7 +1575,7 @@ labeled_statement ::= ; labeled_statement_no_short_if ::= IDENTIFIER:id COLON statement_no_short_if:st {: - ParseNode pn=new ParseNode("labeledstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("labeledstatement",parser.n()); pn.addChild("name").addChild(id); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1580,7 +1583,7 @@ labeled_statement_no_short_if ::= ; expression_statement ::= statement_expression:se SEMICOLON {: - ParseNode pn=new ParseNode("expression",parser.lexer.line_num); + ParseNode pn=new ParseNode("expression",parser.n()); pn.addChild(se); RESULT=pn; :} ; @@ -1595,7 +1598,7 @@ statement_expression ::= ; if_then_statement ::= IF LPAREN expression:exp RPAREN statement:st {: - ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("ifstatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1604,7 +1607,7 @@ if_then_statement ::= if_then_else_statement ::= IF LPAREN expression:exp RPAREN statement_no_short_if:st ELSE statement:else_st {: - ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("ifstatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); pn.addChild("else_statement").addChild(else_st); @@ -1614,7 +1617,7 @@ if_then_else_statement ::= if_then_else_statement_no_short_if ::= IF LPAREN expression:exp RPAREN statement_no_short_if:st ELSE statement_no_short_if:else_st {: - ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("ifstatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); pn.addChild("else_statement").addChild(else_st); @@ -1624,7 +1627,7 @@ if_then_else_statement_no_short_if ::= switch_statement ::= SWITCH LPAREN expression:exp RPAREN switch_block:body {: - ParseNode pn=new ParseNode("switch_statement",parser.lexer.line_num); + ParseNode pn=new ParseNode("switch_statement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(body); RESULT=pn; @@ -1633,9 +1636,9 @@ switch_statement ::= switch_block ::= LBRACE switch_block_statement_groups:sbsg switch_labels:sl RBRACE {: - ParseNode pn = new ParseNode("switch_block",parser.lexer.line_num); + ParseNode pn = new ParseNode("switch_block",parser.n()); pn.addChild("switch_labels").addChild(sl); - pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.lexer.line_num)); + pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.n())); sbsg.addChild(pn); RESULT=sbsg; :} @@ -1645,19 +1648,19 @@ switch_block ::= :} | LBRACE switch_labels:sl RBRACE {: - ParseNode pnb = new ParseNode("switch_block_list",parser.lexer.line_num); - ParseNode pn = new ParseNode("switch_block",parser.lexer.line_num); + ParseNode pnb = new ParseNode("switch_block_list",parser.n()); + ParseNode pn = new ParseNode("switch_block",parser.n()); pn.addChild("switch_labels").addChild(sl); - pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.lexer.line_num)); + pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.n())); pnb.addChild(pn); RESULT=pnb; :} - | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.n()); :} ; switch_block_statement_groups ::= switch_block_statement_group:sbsg {: - ParseNode pn = new ParseNode("switch_block_list",parser.lexer.line_num); + ParseNode pn = new ParseNode("switch_block_list",parser.n()); pn.addChild(sbsg); RESULT=pn; :} @@ -1670,7 +1673,7 @@ switch_block_statement_groups ::= switch_block_statement_group ::= switch_labels:sls block_statements:body {: - ParseNode pn=new ParseNode("switch_block",parser.lexer.line_num); + ParseNode pn=new ParseNode("switch_block",parser.n()); pn.addChild("switch_labels").addChild(sls); pn.addChild("switch_statements").addChild(body); RESULT=pn; @@ -1679,7 +1682,7 @@ switch_block_statement_group ::= switch_labels ::= switch_label:sl {: - ParseNode pn=new ParseNode("switch_label_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("switch_label_list",parser.n()); pn.addChild(sl); RESULT=pn; :} @@ -1692,19 +1695,19 @@ switch_labels ::= switch_label ::= CASE constant_expression:ce COLON {: - ParseNode pn=new ParseNode("switch_label",parser.lexer.line_num); + ParseNode pn=new ParseNode("switch_label",parser.n()); pn.addChild(ce); RESULT=pn; :} | DEFAULT COLON {: - RESULT=new ParseNode("default_switch_label",parser.lexer.line_num); + RESULT=new ParseNode("default_switch_label",parser.n()); :} ; while_statement ::= WHILE LPAREN expression:exp RPAREN statement:st {: - ParseNode pn=new ParseNode("whilestatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("whilestatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1712,7 +1715,7 @@ while_statement ::= ; while_statement_no_short_if ::= WHILE LPAREN expression:exp RPAREN statement_no_short_if:st {: - ParseNode pn=new ParseNode("whilestatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("whilestatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1720,7 +1723,7 @@ while_statement_no_short_if ::= ; do_statement ::= DO statement:st WHILE LPAREN expression:exp RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("dowhilestatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("dowhilestatement",parser.n()); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1729,7 +1732,7 @@ do_statement ::= for_statement ::= FOR LPAREN for_init_opt:init SEMICOLON expression_opt:exp SEMICOLON for_update_opt:update RPAREN statement:st {: - ParseNode pn=new ParseNode("forstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("forstatement",parser.n()); pn.addChild("initializer").addChild(init); pn.addChild("condition").addChild(exp); pn.addChild("update").addChild(update); @@ -1740,7 +1743,7 @@ for_statement ::= for_statement_no_short_if ::= FOR LPAREN for_init_opt:init SEMICOLON expression_opt:exp SEMICOLON for_update_opt:update RPAREN statement_no_short_if:st {: - ParseNode pn=new ParseNode("forstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("forstatement",parser.n()); pn.addChild("initializer").addChild(init); pn.addChild("condition").addChild(exp); pn.addChild("update").addChild(update); @@ -1749,21 +1752,21 @@ for_statement_no_short_if ::= :} ; for_init_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | for_init:init {: RESULT=init; :} ; for_init ::= statement_expression_list:list {: RESULT=list; :} | local_variable_declaration:decl {: RESULT=decl; :} ; for_update_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | for_update:update {: RESULT=update; :} ; for_update ::= statement_expression_list:list {: RESULT=list; :} ; statement_expression_list ::= statement_expression:expr {: - RESULT=(new ParseNode("statement_expression_list",parser.lexer.line_num)).addChild(expr).getRoot(); + RESULT=(new ParseNode("statement_expression_list",parser.n())).addChild(expr).getRoot(); :} | statement_expression_list:list COMMA statement_expression:expr {: list.addChild(expr); @@ -1771,10 +1774,10 @@ statement_expression_list ::= :} ; -identifier_opt ::= {: RESULT=new ParseNode("identifier_opt",parser.lexer.line_num); +identifier_opt ::= {: RESULT=new ParseNode("identifier_opt",parser.n()); :} | IDENTIFIER:id {: - ParseNode pn=new ParseNode("identifier_opt",parser.lexer.line_num); + ParseNode pn=new ParseNode("identifier_opt",parser.n()); pn.addChild("name").addChild(id); RESULT=pn; :} @@ -1782,7 +1785,7 @@ identifier_opt ::= {: RESULT=new ParseNode("identifier_opt",parser.lexer.line_nu break_statement ::= BREAK identifier_opt:id SEMICOLON {: - ParseNode pn=new ParseNode("break",parser.lexer.line_num); + ParseNode pn=new ParseNode("break",parser.n()); pn.addChild(id); RESULT=pn; :} @@ -1792,20 +1795,20 @@ continue_statement ::= CONTINUE //identifier_opt SEMICOLON -{: RESULT=new ParseNode("continue",parser.lexer.line_num); :} +{: RESULT=new ParseNode("continue",parser.n()); :} ; return_statement ::= RETURN expression_opt:exp SEMICOLON {: - RESULT=(new ParseNode("return",parser.lexer.line_num)).addChild(exp).getRoot(); :} + RESULT=(new ParseNode("return",parser.n())).addChild(exp).getRoot(); :} ; throw_statement ::= THROW expression:exp SEMICOLON {: - RESULT=(new ParseNode("throwstatement",parser.lexer.line_num)).addChild(exp).getRoot(); + RESULT=(new ParseNode("throwstatement",parser.n())).addChild(exp).getRoot(); :} ; synchronized_statement ::= SYNCHRONIZED LPAREN expression:e RPAREN block:b {: - ParseNode pn=new ParseNode("synchronized",parser.lexer.line_num); + ParseNode pn=new ParseNode("synchronized",parser.n()); pn.addChild("expr").addChild(e); pn.addChild("block").addChild(b); RESULT=pn; @@ -1813,28 +1816,28 @@ synchronized_statement ::= ; atomic_statement ::= ATOMIC block:blk {: - RESULT=(new ParseNode("atomic",parser.lexer.line_num)).addChild(blk).getRoot(); + RESULT=(new ParseNode("atomic",parser.n())).addChild(blk).getRoot(); :} ; sese_statement ::= SESE block:blk {: - ParseNode pn = new ParseNode("sese",parser.lexer.line_num); + ParseNode pn = new ParseNode("sese",parser.n()); pn.addChild("body").addChild(blk); RESULT=pn; :} | SESE variable_declarator_id:id block:blk {: - ParseNode pn = new ParseNode("sese",parser.lexer.line_num); + ParseNode pn = new ParseNode("sese",parser.n()); pn.addChild("body").addChild(blk); pn.addChild("identifier").addChild(id); RESULT=pn; :} | RBLOCK block:blk {: - ParseNode pn = new ParseNode("sese",parser.lexer.line_num); + ParseNode pn = new ParseNode("sese",parser.n()); pn.addChild("body").addChild(blk); RESULT=pn; :} | RBLOCK variable_declarator_id:id block:blk {: - ParseNode pn = new ParseNode("sese",parser.lexer.line_num); + ParseNode pn = new ParseNode("sese",parser.n()); pn.addChild("body").addChild(blk); pn.addChild("identifier").addChild(id); RESULT=pn; @@ -1843,14 +1846,14 @@ sese_statement ::= try_statement ::= TRY block:bk catches:ca {: - ParseNode pn=new ParseNode("trycatchstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("trycatchstatement",parser.n()); pn.addChild("tryblock").addChild(bk); pn.addChild("catchblock").addChild(ca); RESULT=pn; :} | TRY block:bk catches_opt:ca finally:fi {: - ParseNode pn=new ParseNode("trycatchstatement",parser.lexer.line_num); + ParseNode pn=new ParseNode("trycatchstatement",parser.n()); pn.addChild("tryblock").addChild(bk); pn.addChild("catchblock").addChild(ca); pn.addChild("finallyblock").addChild(fi); @@ -1858,13 +1861,13 @@ try_statement ::= :} ; catches_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | catches:ca {: RESULT=ca; :} ; catches ::= catch_clause:ca {: - ParseNode pn=new ParseNode("catchlist",parser.lexer.line_num); + ParseNode pn=new ParseNode("catchlist",parser.n()); pn.addChild(ca); RESULT=pn; :} @@ -1877,7 +1880,7 @@ catches ::= catch_clause:ca catch_clause ::= CATCH LPAREN formal_parameter:fp RPAREN block:bk {: - ParseNode pn=new ParseNode("catchclause",parser.lexer.line_num); + ParseNode pn=new ParseNode("catchclause",parser.n()); pn.addChild("parameter").addChild(fp); pn.addChild("block").addChild(bk); RESULT=pn; @@ -1905,30 +1908,30 @@ primary ::= primary_no_new_array:st {: ; primary_no_new_array ::= literal:lit {: RESULT=lit; :} - | THIS {: RESULT=new ParseNode("this",parser.lexer.line_num); :} + | THIS {: RESULT=new ParseNode("this",parser.n()); :} | LPAREN expression:exp RPAREN {: RESULT=exp; :} | class_instance_creation_expression:exp {: RESULT=exp; :} | field_access:exp {: RESULT=exp; :} | method_invocation:exp {: RESULT=exp; :} | array_access:exp {: RESULT=exp; :} | ISAVAILABLE LPAREN IDENTIFIER:id RPAREN {: - ParseNode pn=new ParseNode("isavailable",parser.lexer.line_num); + ParseNode pn=new ParseNode("isavailable",parser.n()); pn.addChild(id); RESULT=pn; :} // | primitive_type:pt DOT CLASS {: -// ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); +// ParseNode pn=new ParseNode("class_type",parser.n()); // pn.addChild(pt); // RESULT=pn; // :} // | VOID DOT CLASS // | array_type:at DOT CLASS {: -// ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); +// ParseNode pn=new ParseNode("class_type",parser.n()); // pn.addChild(at); // RESULT=pn; // :} | name:name DOT CLASS {: - ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); + ParseNode pn=new ParseNode("class_type",parser.n()); pn.addChild("type").addChild("class").addChild(name); RESULT=pn; :} @@ -1936,28 +1939,28 @@ primary_no_new_array ::= ; class_instance_creation_expression ::= NEWFLAG class_or_interface_type:type LPAREN argument_list_opt:args RPAREN flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild(feo); RESULT=pn; :} | NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); RESULT=pn; :} //Global object | GLOBAL NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild("global"); RESULT=pn; :} | SCRATCH NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild("scratch"); @@ -1965,21 +1968,21 @@ class_instance_creation_expression ::= :} // Objects we want to track in disjointness analysis | DISJOINT IDENTIFIER:id NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild("disjoint").addChild(id); RESULT=pn; :} | NEWFLAG class_or_interface_type:type LPAREN argument_list_opt:args RPAREN LBRACE RBRACE LBRACE tag_list:tl RBRACE {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild(tl); RESULT=pn; :} | NEWFLAG class_or_interface_type:type LPAREN argument_list_opt:args RPAREN LBRACE flag_list:fl RBRACE LBRACE tag_list:tl RBRACE {: - ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobject",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild(fl); @@ -1987,7 +1990,7 @@ class_instance_creation_expression ::= RESULT=pn; :} | NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN class_body:body {: - ParseNode pn=new ParseNode("createobjectcls",parser.lexer.line_num); + ParseNode pn=new ParseNode("createobjectcls",parser.n()); pn.addChild(type); pn.addChild(args); pn.addChild("decl").addChild("classbody").addChild(body); @@ -2005,20 +2008,20 @@ class_instance_creation_expression ::= // LPAREN argument_list_opt RPAREN class_body ; cons_argument_list_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | cons_argument_list:args {: RESULT=args; :} ; cons_argument_list ::= IDENTIFIER:id COLON expression:exp {: - ParseNode pn=new ParseNode("cons_argument_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("cons_argument_list",parser.n()); ParseNode pnarg=pn.addChild("binding"); pnarg.addChild("var").addChild(id); pnarg.addChild("exp").addChild(exp); RESULT=pn; :} | argument_list:list COMMA IDENTIFIER:id COLON expression:exp {: - ParseNode pnarg=new ParseNode("binding",parser.lexer.line_num); + ParseNode pnarg=new ParseNode("binding",parser.n()); pnarg.addChild("var").addChild(id); pnarg.addChild("exp").addChild(exp); list.addChild(pnarg); @@ -2027,13 +2030,13 @@ cons_argument_list ::= ; argument_list_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | argument_list:args {: RESULT=args; :} ; argument_list ::= expression:exp {: - ParseNode pn=new ParseNode("argument_list",parser.lexer.line_num); + ParseNode pn=new ParseNode("argument_list",parser.n()); pn.addChild(exp); RESULT=pn; :} @@ -2044,21 +2047,21 @@ argument_list ::= ; array_creation_uninit ::= NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); RESULT=pn; :} | NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); RESULT=pn; :} | GLOBAL NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2066,7 +2069,7 @@ array_creation_uninit ::= RESULT=pn; :} | SCRATCH NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2074,7 +2077,7 @@ array_creation_uninit ::= RESULT=pn; :} | DISJOINT IDENTIFIER:id NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2082,7 +2085,7 @@ array_creation_uninit ::= RESULT=pn; :} | GLOBAL NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2090,7 +2093,7 @@ array_creation_uninit ::= RESULT=pn; :} | SCRATCH NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2098,7 +2101,7 @@ array_creation_uninit ::= RESULT=pn; :} | DISJOINT IDENTIFIER:id NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray",parser.n()); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2108,14 +2111,14 @@ array_creation_uninit ::= ; array_creation_init ::= NEW primitive_type:type dims:dims array_initializer:ai {: - ParseNode pn=new ParseNode("createarray2",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray2",parser.n()); pn.addChild(type); pn.addChild("dims_opt").setLiteral(dims); pn.addChild("initializer").addChild(ai); RESULT=pn; :} | NEW class_or_interface_type:type dims:dims array_initializer:ai {: - ParseNode pn=new ParseNode("createarray2",parser.lexer.line_num); + ParseNode pn=new ParseNode("createarray2",parser.n()); pn.addChild(type); pn.addChild("dims_opt").setLiteral(dims); pn.addChild("initializer").addChild(ai); @@ -2123,7 +2126,7 @@ array_creation_init ::= :} ; dim_exprs ::= dim_expr:exp {: - ParseNode pn=new ParseNode("dim_exprs",parser.lexer.line_num); + ParseNode pn=new ParseNode("dim_exprs",parser.n()); pn.addChild(exp); RESULT=pn; :} | dim_exprs:base dim_expr:exp {: @@ -2143,7 +2146,7 @@ dims ::= LBRACK RBRACK {: RESULT=new Integer(1); :} field_access ::= primary:base DOT IDENTIFIER:id {: - ParseNode pn=new ParseNode("fieldaccess",parser.lexer.line_num); + ParseNode pn=new ParseNode("fieldaccess",parser.n()); pn.addChild("base").addChild(base); pn.addChild("field").addChild(id); RESULT=pn; @@ -2153,23 +2156,23 @@ field_access ::= ; method_invocation ::= name:name LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("methodinvoke1",parser.lexer.line_num); + ParseNode pn=new ParseNode("methodinvoke1",parser.n()); pn.addChild(name); pn.addChild(args); RESULT=pn; :} | primary:base DOT IDENTIFIER:name LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("methodinvoke2",parser.lexer.line_num); + ParseNode pn=new ParseNode("methodinvoke2",parser.n()); pn.addChild("base").addChild(base); pn.addChild("id").addChild(name); pn.addChild(args); RESULT=pn; :} | SUPER DOT IDENTIFIER:id LPAREN argument_list_opt:args RPAREN {: - ParseNode name=new ParseNode("name",parser.lexer.line_num); + ParseNode name=new ParseNode("name",parser.n()); name.addChild("base").addChild("name").addChild("identifier").addChild("super"); name.addChild("identifier").addChild(id); - ParseNode pn=new ParseNode("methodinvoke1",parser.lexer.line_num); + ParseNode pn=new ParseNode("methodinvoke1",parser.n()); pn.addChild(name); pn.addChild(args); RESULT=pn; @@ -2178,19 +2181,19 @@ method_invocation ::= ; array_access ::= name:name LBRACK expression:exp RBRACK {: - ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); + ParseNode pn=new ParseNode("arrayaccess",parser.n()); pn.addChild("base").addChild(name); pn.addChild("index").addChild(exp); RESULT=pn; :} | primary_no_new_array:base LBRACK expression:exp RBRACK {: - ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); + ParseNode pn=new ParseNode("arrayaccess",parser.n()); pn.addChild("base").addChild(base); pn.addChild("index").addChild(exp); RESULT=pn; :} // | array_creation_init:init LBRACK expression:exp RBRACK {: -// ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); +// ParseNode pn=new ParseNode("arrayaccess",parser.n()); // pn.addChild("init").addChild(init); // pn.addChild("index").addChild(exp); // RESULT=pn; @@ -2206,43 +2209,43 @@ postfix_expression ::= ; postincrement_expression ::= postfix_expression:exp PLUSPLUS - {: RESULT=(new ParseNode("postinc",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("postinc",parser.n())).addChild(exp).getRoot(); :} ; postdecrement_expression ::= postfix_expression:exp MINUSMINUS - {: RESULT=(new ParseNode("postdec",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("postdec",parser.n())).addChild(exp).getRoot(); :} ; unary_expression ::= preincrement_expression:exp {: RESULT=exp; :} | predecrement_expression:exp {: RESULT=exp; :} | PLUS unary_expression:exp - {: RESULT=(new ParseNode("unaryplus",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("unaryplus",parser.n())).addChild(exp).getRoot(); :} | MINUS unary_expression:exp - {: RESULT=(new ParseNode("unaryminus",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("unaryminus",parser.n())).addChild(exp).getRoot(); :} | unary_expression_not_plus_minus:exp {: RESULT=exp; :} ; preincrement_expression ::= PLUSPLUS unary_expression:exp - {: RESULT=(new ParseNode("preinc",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("preinc",parser.n())).addChild(exp).getRoot(); :} ; predecrement_expression ::= MINUSMINUS unary_expression:exp - {: RESULT=(new ParseNode("predec",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("predec",parser.n())).addChild(exp).getRoot(); :} ; unary_expression_not_plus_minus ::= postfix_expression:exp {: RESULT=exp; :} | COMP unary_expression:exp - {: RESULT=(new ParseNode("comp",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("comp",parser.n())).addChild(exp).getRoot(); :} | NOT unary_expression:exp - {: RESULT=(new ParseNode("not",parser.lexer.line_num)).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("not",parser.n())).addChild(exp).getRoot(); :} | cast_expression:exp {: RESULT=exp; :} ; cast_expression ::= LPAREN primitive_type:type dims_opt:dims RPAREN unary_expression:exp {: - ParseNode pn=new ParseNode("cast1",parser.lexer.line_num); + ParseNode pn=new ParseNode("cast1",parser.n()); if (dims.intValue()==0) pn.addChild("type").addChild(type); else { @@ -2254,14 +2257,14 @@ else { RESULT=pn; :} | LPAREN expression:type RPAREN unary_expression_not_plus_minus:exp {: - ParseNode pn=new ParseNode("cast2",parser.lexer.line_num); + ParseNode pn=new ParseNode("cast2",parser.n()); pn.addChild("type").addChild(type); pn.addChild("exp").addChild(exp); RESULT=pn; :} | LPAREN name:name dims:dims RPAREN unary_expression_not_plus_minus:exp {: - ParseNode pn=new ParseNode("cast1",parser.lexer.line_num); + ParseNode pn=new ParseNode("cast1",parser.n()); if (dims.intValue()==0) pn.addChild("type").addChild("class").addChild(name); else { @@ -2278,19 +2281,19 @@ multiplicative_expression ::= unary_expression:exp {: RESULT=exp; :} | multiplicative_expression:exp1 MULT unary_expression:exp2 {: - ParseNode pn=new ParseNode("mult",parser.lexer.line_num); + ParseNode pn=new ParseNode("mult",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | multiplicative_expression:exp1 DIV unary_expression:exp2 {: - ParseNode pn=new ParseNode("div",parser.lexer.line_num); + ParseNode pn=new ParseNode("div",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | multiplicative_expression:exp1 MOD unary_expression:exp2 {: - ParseNode pn=new ParseNode("mod",parser.lexer.line_num); + ParseNode pn=new ParseNode("mod",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2300,13 +2303,13 @@ additive_expression ::= multiplicative_expression:exp {: RESULT=exp; :} | additive_expression:exp1 PLUS multiplicative_expression:exp2 {: - ParseNode pn=new ParseNode("add",parser.lexer.line_num); + ParseNode pn=new ParseNode("add",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | additive_expression:exp1 MINUS multiplicative_expression:exp2 {: - ParseNode pn=new ParseNode("sub",parser.lexer.line_num); + ParseNode pn=new ParseNode("sub",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2316,19 +2319,19 @@ shift_expression ::= additive_expression:exp {: RESULT=exp; :} | shift_expression:exp1 LSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("leftshift",parser.lexer.line_num); + ParseNode pn=new ParseNode("leftshift",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | shift_expression:exp1 RSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("rightshift",parser.lexer.line_num); + ParseNode pn=new ParseNode("rightshift",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | shift_expression:exp1 URSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("urightshift",parser.lexer.line_num); + ParseNode pn=new ParseNode("urightshift",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2338,31 +2341,31 @@ relational_expression ::= shift_expression:exp {: RESULT=exp; :} | relational_expression:exp1 LT shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_lt",parser.lexer.line_num); + ParseNode pn=new ParseNode("comp_lt",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 GT shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_gt",parser.lexer.line_num); + ParseNode pn=new ParseNode("comp_gt",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 LTEQ shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_lte",parser.lexer.line_num); + ParseNode pn=new ParseNode("comp_lte",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 GTEQ shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_gte",parser.lexer.line_num); + ParseNode pn=new ParseNode("comp_gte",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp INSTANCEOF reference_type:type {: - ParseNode pn=new ParseNode("instanceof",parser.lexer.line_num); + ParseNode pn=new ParseNode("instanceof",parser.n()); pn.addChild("exp").addChild(exp); pn.addChild(type); RESULT=pn; @@ -2373,13 +2376,13 @@ equality_expression ::= relational_expression:exp {: RESULT=exp; :} | equality_expression:exp1 EQEQ relational_expression:exp2 {: - ParseNode pn=new ParseNode("equal",parser.lexer.line_num); + ParseNode pn=new ParseNode("equal",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | equality_expression:exp1 NOTEQ relational_expression:exp2 {: - ParseNode pn=new ParseNode("not_equal",parser.lexer.line_num); + ParseNode pn=new ParseNode("not_equal",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2389,7 +2392,7 @@ and_expression ::= equality_expression:exp {: RESULT=exp; :} | and_expression:exp1 AND equality_expression:exp2 {: - ParseNode pn=new ParseNode("bitwise_and",parser.lexer.line_num); + ParseNode pn=new ParseNode("bitwise_and",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2400,7 +2403,7 @@ exclusive_or_expression ::= RESULT=expr; :} | exclusive_or_expression:exp1 XOR and_expression:exp2 {: - ParseNode pn=new ParseNode("bitwise_xor",parser.lexer.line_num); + ParseNode pn=new ParseNode("bitwise_xor",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2410,7 +2413,7 @@ inclusive_or_expression ::= exclusive_or_expression:exclor {: RESULT=exclor; :} | inclusive_or_expression:exp1 OR exclusive_or_expression:exp2 {: - ParseNode pn=new ParseNode("bitwise_or",parser.lexer.line_num); + ParseNode pn=new ParseNode("bitwise_or",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2420,7 +2423,7 @@ conditional_and_expression ::= inclusive_or_expression:inclor {: RESULT=inclor; :} | conditional_and_expression:exp1 ANDAND inclusive_or_expression:exp2 {: - ParseNode pn=new ParseNode("logical_and",parser.lexer.line_num); + ParseNode pn=new ParseNode("logical_and",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2430,7 +2433,7 @@ conditional_or_expression ::= conditional_and_expression:condand {: RESULT=condand; :} | conditional_or_expression:exp1 OROR conditional_and_expression:exp2 {: - ParseNode pn=new ParseNode("logical_or",parser.lexer.line_num); + ParseNode pn=new ParseNode("logical_or",parser.n()); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2441,7 +2444,7 @@ conditional_expression ::= RESULT=condor; :} | conditional_or_expression:condor QUESTION expression:exptrue COLON conditional_expression:expfalse {: - ParseNode pn=new ParseNode("tert",parser.lexer.line_num); + ParseNode pn=new ParseNode("tert",parser.n()); pn.addChild("cond").addChild(condor); pn.addChild("trueexpr").addChild(exptrue); pn.addChild("falseexpr").addChild(expfalse); @@ -2450,7 +2453,7 @@ conditional_expression ::= ; getoffset_expression ::= GETOFFSET LBRACE class_or_interface_type:type COMMA IDENTIFIER:id RBRACE {: - ParseNode pn = new ParseNode("getoffset",parser.lexer.line_num); + ParseNode pn = new ParseNode("getoffset",parser.n()); pn.addChild(type); pn.addChild("field").addChild(id); RESULT = pn; @@ -2469,7 +2472,7 @@ assignment_expression ::= // allowing a parenthesized variable here on the lhs was introduced in // JLS 2; thanks to Eric Blake for pointing this out. assignment ::= postfix_expression:lvalue assignment_operator:op assignment_expression:rvalue {: - ParseNode pn=new ParseNode("assignment",parser.lexer.line_num); + ParseNode pn=new ParseNode("assignment",parser.n()); pn.addChild("op").addChild(op); ParseNode pnargs=pn.addChild("args"); pnargs.addChild(lvalue); @@ -2478,21 +2481,21 @@ assignment ::= postfix_expression:lvalue assignment_operator:op assignment_expre :} ; assignment_operator ::= - EQ {: RESULT=new ParseNode("eq",parser.lexer.line_num); :} - | MULTEQ {: RESULT=new ParseNode("multeq",parser.lexer.line_num); :} - | DIVEQ {: RESULT=new ParseNode("diveq",parser.lexer.line_num); :} - | MODEQ {: RESULT=new ParseNode("modeq",parser.lexer.line_num); :} - | PLUSEQ {: RESULT=new ParseNode("pluseq",parser.lexer.line_num); :} - | MINUSEQ {: RESULT=new ParseNode("minuseq",parser.lexer.line_num); :} - | LSHIFTEQ {: RESULT=new ParseNode("lshifteq",parser.lexer.line_num); :} - | RSHIFTEQ {: RESULT=new ParseNode("rshifteq",parser.lexer.line_num); :} - | URSHIFTEQ {: RESULT=new ParseNode("urshifteq",parser.lexer.line_num); :} - | ANDEQ {: RESULT=new ParseNode("andeq",parser.lexer.line_num); :} - | XOREQ {: RESULT=new ParseNode("xoreq",parser.lexer.line_num); :} - | OREQ {: RESULT=new ParseNode("oreq",parser.lexer.line_num); :} + EQ {: RESULT=new ParseNode("eq",parser.n()); :} + | MULTEQ {: RESULT=new ParseNode("multeq",parser.n()); :} + | DIVEQ {: RESULT=new ParseNode("diveq",parser.n()); :} + | MODEQ {: RESULT=new ParseNode("modeq",parser.n()); :} + | PLUSEQ {: RESULT=new ParseNode("pluseq",parser.n()); :} + | MINUSEQ {: RESULT=new ParseNode("minuseq",parser.n()); :} + | LSHIFTEQ {: RESULT=new ParseNode("lshifteq",parser.n()); :} + | RSHIFTEQ {: RESULT=new ParseNode("rshifteq",parser.n()); :} + | URSHIFTEQ {: RESULT=new ParseNode("urshifteq",parser.n()); :} + | ANDEQ {: RESULT=new ParseNode("andeq",parser.n()); :} + | XOREQ {: RESULT=new ParseNode("xoreq",parser.n()); :} + | OREQ {: RESULT=new ParseNode("oreq",parser.n()); :} ; expression_opt ::= - {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} + {: RESULT=new ParseNode("empty",parser.n()); :} | expression:exp {: RESULT=exp; :} ; @@ -2504,7 +2507,7 @@ expression ::= assignment_expression:exp {: constant_expression ::= expression:exp {: - ParseNode pn = new ParseNode("constant_expression",parser.lexer.line_num); + ParseNode pn = new ParseNode("constant_expression",parser.n()); pn.addChild(exp); RESULT=pn; :} @@ -2513,7 +2516,7 @@ constant_expression ::= genreach_statement ::= GENREACH IDENTIFIER:graphName SEMICOLON {: - ParseNode pn=new ParseNode("genreach",parser.lexer.line_num); + ParseNode pn=new ParseNode("genreach",parser.n()); pn.addChild("graphName").addChild(graphName); RESULT=pn; :} ;