From c20b6a0f6c89d8d762629281408730f4b015e452 Mon Sep 17 00:00:00 2001 From: yeom Date: Wed, 16 Mar 2011 23:41:46 +0000 Subject: [PATCH] changes on the java grammar. the line number of a source code propagates to the ParserNode --- Robust/src/Parse/java14.cup | 562 ++++++++++++++++++------------------ 1 file changed, 281 insertions(+), 281 deletions(-) diff --git a/Robust/src/Parse/java14.cup b/Robust/src/Parse/java14.cup index c6b069ff..65ccd7a4 100644 --- a/Robust/src/Parse/java14.cup +++ b/Robust/src/Parse/java14.cup @@ -305,7 +305,7 @@ task_declaration ::= flag_effects_opt:feo method_body:body {: - ParseNode pn=new ParseNode("task_declaration"); + ParseNode pn=new ParseNode("task_declaration",parser.lexer.line_num); pn.addChild("name").addChild(id); pn.addChild(tpl); pn.addChild(feo); @@ -315,7 +315,7 @@ task_declaration ::= task_parameter_list ::= task_parameter:fp {: - ParseNode pn=new ParseNode("task_parameter_list"); + ParseNode pn=new ParseNode("task_parameter_list",parser.lexer.line_num); pn.addChild(fp); RESULT=pn; :} @@ -327,14 +327,14 @@ task_parameter_list ::= task_parameter ::= type:type variable_declarator_id:name LBRACE flag_expression:exp RBRACE {: - ParseNode pn=new ParseNode("task_parameter"); + ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); pn.addChild(type); pn.addChild(name); pn.addChild("flag").addChild(exp); @@ -342,14 +342,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"); + ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); pn.addChild(type); pn.addChild(name); pn.addChild("tag").addChild(texp); RESULT=pn; :} | OPTIONAL task_parameter:fp {: - ParseNode pn=new ParseNode("task_parameter"); + ParseNode pn=new ParseNode("task_parameter",parser.lexer.line_num); pn.addChild("optional").addChild(fp); RESULT=pn; :} @@ -357,7 +357,7 @@ task_parameter ::= ; tag_expression_list ::= tag_expression:te {: - ParseNode pn=new ParseNode("tag_expression_list"); + ParseNode pn=new ParseNode("tag_expression_list",parser.lexer.line_num); pn.addChild(te); RESULT=pn; :} @@ -368,7 +368,7 @@ tag_expression_list ::= tag_expression:te {: ; tag_expression ::= IDENTIFIER:type IDENTIFIER:id {: - ParseNode pn=new ParseNode("tag_expression"); + ParseNode pn=new ParseNode("tag_expression",parser.lexer.line_num); pn.addChild("type").addChild(type); pn.addChild("single").addChild(id); RESULT=pn; @@ -376,12 +376,12 @@ tag_expression ::= IDENTIFIER:type IDENTIFIER:id {: ; tag_list_opt ::= LBRACE tag_list:fl RBRACE {:RESULT=fl;:} - | LBRACE RBRACE {: RESULT = new ParseNode("empty"); :} - | {: RESULT = new ParseNode("empty"); :} + | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} + | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} ; tag_list ::= tag_change:fc {: - ParseNode pn=new ParseNode("tag_list"); + ParseNode pn=new ParseNode("tag_list",parser.lexer.line_num); pn.addChild(fc); RESULT=pn; :} @@ -391,10 +391,10 @@ tag_list ::= tag_change:fc {: :}; tag_change ::= IDENTIFIER:id {: - RESULT=new ParseNode("name").addChild(id).getRoot(); + RESULT=new ParseNode("name",parser.lexer.line_num).addChild(id).getRoot(); :} | NOT IDENTIFIER:id {: - RESULT=new ParseNode("not").addChild("name").addChild(id).getRoot(); + RESULT=new ParseNode("not",parser.lexer.line_num).addChild("name").addChild(id).getRoot(); :}; flag_expression ::= @@ -402,7 +402,7 @@ flag_expression ::= RESULT=exp; :} | flag_expression:exp1 OROR flag_andexpression:exp2 {: - ParseNode pn=new ParseNode("or"); + ParseNode pn=new ParseNode("or",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -412,7 +412,7 @@ flag_expression ::= flag_andexpression ::= flag_notexpression:exp {: RESULT=exp; :} | flag_notexpression:exp1 ANDAND flag_andexpression:exp2 {: - ParseNode pn=new ParseNode("and"); + ParseNode pn=new ParseNode("and",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -421,7 +421,7 @@ flag_andexpression ::= flag_notexpression ::= NOT flag_notexpression:exp {: - ParseNode pn=new ParseNode("not"); + ParseNode pn=new ParseNode("not",parser.lexer.line_num); pn.addChild(exp); RESULT=pn; :} @@ -429,22 +429,22 @@ flag_notexpression ::= RESULT=exp; :} | IDENTIFIER:id {: - ParseNode pn=new ParseNode("name"); + ParseNode pn=new ParseNode("name",parser.lexer.line_num); pn.addChild(id); RESULT=pn; :} ; task_exitstatement ::= TASKEXIT flag_effects_opt:opt cons_checks_opt:cco SEMICOLON {: - RESULT=(new ParseNode("taskexit")).addChild(opt).getRoot().addChild(cco).getRoot(); + RESULT=(new ParseNode("taskexit",parser.lexer.line_num)).addChild(opt).getRoot().addChild(cco).getRoot(); :}; cons_checks_opt ::= ASSERT LPAREN cons_checks:cc RPAREN {: RESULT=cc; :} - | {: RESULT = new ParseNode("empty"); :} + | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} ; cons_checks ::= cons_check:cc {: - ParseNode pn=new ParseNode("cons_checks"); + ParseNode pn=new ParseNode("cons_checks",parser.lexer.line_num); pn.addChild(cc); RESULT=pn; :} @@ -454,18 +454,18 @@ cons_checks ::= cons_check:cc {: :}; cons_check ::= IDENTIFIER:name LPAREN cons_argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("cons_check"); + ParseNode pn=new ParseNode("cons_check",parser.lexer.line_num); 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"); :} + | {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} ; flag_effects ::= flag_effect:fe {: - ParseNode pn=new ParseNode("flag_effects_list"); + ParseNode pn=new ParseNode("flag_effects_list",parser.lexer.line_num); pn.addChild(fe); RESULT=pn; :} @@ -475,27 +475,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"); + ParseNode pn=new ParseNode("flag_effect",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("flag_effect",parser.lexer.line_num); 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"); :} + | LBRACE RBRACE {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} | - {: RESULT = new ParseNode("empty"); :} + {: RESULT = new ParseNode("empty",parser.lexer.line_num); :} ; flag_list ::= flag_change:fc {: - ParseNode pn=new ParseNode("flag_list"); + ParseNode pn=new ParseNode("flag_list",parser.lexer.line_num); pn.addChild(fc); RESULT=pn; :} @@ -505,10 +505,10 @@ flag_list ::= flag_change:fc {: :}; flag_change ::= IDENTIFIER:id {: - RESULT=new ParseNode("name").addChild(id).getRoot(); + RESULT=new ParseNode("name",parser.lexer.line_num).addChild(id).getRoot(); :} | NOT IDENTIFIER:id {: - RESULT=new ParseNode("not").addChild("name").addChild(id).getRoot(); + RESULT=new ParseNode("not",parser.lexer.line_num).addChild("name").addChild(id).getRoot(); :}; // 19.2) The Syntactic Grammar @@ -523,37 +523,37 @@ goal ::= compilation_unit:cu literal ::= INTEGER_LITERAL:integer_lit {: - ParseNode pn=new ParseNode("literal"); + ParseNode pn=new ParseNode("literal",parser.lexer.line_num); pn.addChild("integer").setLiteral(integer_lit); RESULT=pn; :} | FLOATING_POINT_LITERAL:float_lit {: - ParseNode pn=new ParseNode("literal"); + ParseNode pn=new ParseNode("literal",parser.lexer.line_num); pn.addChild("float").setLiteral(float_lit); RESULT=pn; :} | BOOLEAN_LITERAL:boolean_lit {: - ParseNode pn=new ParseNode("literal"); + ParseNode pn=new ParseNode("literal",parser.lexer.line_num); pn.addChild("boolean").setLiteral(boolean_lit); RESULT=pn; :} | CHARACTER_LITERAL:char_lit {: - ParseNode pn=new ParseNode("literal"); + ParseNode pn=new ParseNode("literal",parser.lexer.line_num); pn.addChild("char").setLiteral(char_lit); RESULT=pn; :} | STRING_LITERAL:string_lit {: - ParseNode pn=new ParseNode("literal"); + ParseNode pn=new ParseNode("literal",parser.lexer.line_num); pn.addChild("string").setLiteral(string_lit); RESULT=pn; :} | NULL_LITERAL {: - RESULT=(new ParseNode("literal")).addChild("null").getRoot(); + RESULT=(new ParseNode("literal",parser.lexer.line_num)).addChild("null").getRoot(); :} ; @@ -564,21 +564,21 @@ type ::= primitive_type:type {: RESULT=type; :} primitive_type ::= numeric_type:type {: RESULT=type; :} - | BOOLEAN {: RESULT=(new ParseNode("type")).addChild("boolean").getRoot(); :} + | BOOLEAN {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("boolean").getRoot(); :} ; numeric_type::= integral_type:type {: RESULT=type; :} | floating_point_type:type {: RESULT=type; :} ; integral_type ::= - BYTE {: RESULT=(new ParseNode("type")).addChild("byte").getRoot(); :} - | SHORT {: RESULT=(new ParseNode("type")).addChild("short").getRoot(); :} - | INT {: RESULT=(new ParseNode("type")).addChild("int").getRoot(); :} - | LONG {: RESULT=(new ParseNode("type")).addChild("long").getRoot(); :} - | CHAR {: RESULT=(new ParseNode("type")).addChild("char").getRoot(); :} + 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(); :} ; floating_point_type ::= - FLOAT {: RESULT=(new ParseNode("type")).addChild("float").getRoot(); :} - | DOUBLE {: RESULT=(new ParseNode("type")).addChild("double").getRoot(); :} + FLOAT {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("float").getRoot(); :} + | DOUBLE {: RESULT=(new ParseNode("type",parser.lexer.line_num)).addChild("double").getRoot(); :} ; reference_type ::= @@ -586,20 +586,20 @@ reference_type ::= | array_type:type {: RESULT=type; :} ; class_or_interface_type ::= name:name {: - RESULT=(new ParseNode("type")).addChild("class").addChild(name).getRoot(); + RESULT=(new ParseNode("type",parser.lexer.line_num)).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")).addChild("array"); + ParseNode pn=(new ParseNode("type",parser.lexer.line_num)).addChild("array"); pn.addChild("basetype").addChild(prim); pn.addChild("dims").setLiteral(dims); RESULT=pn.getRoot(); :} | name:name dims:dims {: - ParseNode pn=(new ParseNode("type")).addChild("array"); + ParseNode pn=(new ParseNode("type",parser.lexer.line_num)).addChild("array"); pn.addChild("basetype").addChild("type").addChild("class").addChild(name); pn.addChild("dims").setLiteral(dims); RESULT=pn.getRoot(); @@ -611,11 +611,11 @@ name ::= simple_name:name {: RESULT=name; :} | qualified_name:name {: RESULT=name; :} ; simple_name ::= IDENTIFIER:id {: - RESULT=(new ParseNode("name")).addChild("identifier").addChild(id).getRoot(); + RESULT=(new ParseNode("name",parser.lexer.line_num)).addChild("identifier").addChild(id).getRoot(); :} ; qualified_name ::= name:name DOT IDENTIFIER:id {: - ParseNode pn=new ParseNode("name"); + ParseNode pn=new ParseNode("name",parser.lexer.line_num); pn.addChild("base").addChild(name); pn.addChild("identifier").addChild(id); RESULT=pn; @@ -627,7 +627,7 @@ compilation_unit ::= package_declaration_opt:pdo import_declarations_opt:ido type_declarations_opt:tdo {: - ParseNode pn=new ParseNode("compilation_unit"); + ParseNode pn=new ParseNode("compilation_unit",parser.lexer.line_num); pn.addChild(tdo); pn.addChild("packages").addChild(pdo); pn.addChild("imports").addChild(ido); @@ -637,23 +637,23 @@ compilation_unit ::= package_declaration_opt ::= package_declaration:pdo {: RESULT=pdo; :} | - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; import_declarations_opt ::= import_declarations:ido {: RESULT=ido; :} | - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; type_declarations_opt ::= type_declarations:tds {: RESULT=tds; :} | - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; import_declarations ::= import_declaration:id {: - ParseNode pn=new ParseNode("import_decls_list"); + ParseNode pn=new ParseNode("import_decls_list",parser.lexer.line_num); pn.addChild(id); RESULT=pn; :} @@ -665,7 +665,7 @@ import_declarations ::= type_declarations ::= type_declaration:td {: - ParseNode pn=new ParseNode("type_declaration_list"); + ParseNode pn=new ParseNode("type_declaration_list",parser.lexer.line_num); pn.addChild(td); RESULT=pn; :} @@ -677,7 +677,7 @@ type_declarations ::= package_declaration ::= PACKAGE name:name SEMICOLON {: - ParseNode pn=new ParseNode("package"); + ParseNode pn=new ParseNode("package",parser.lexer.line_num); pn.addChild(name); RESULT=pn; :} @@ -688,14 +688,14 @@ import_declaration ::= ; single_type_import_declaration ::= IMPORT name:name SEMICOLON {: - ParseNode pn=new ParseNode("import_single"); + ParseNode pn=new ParseNode("import_single",parser.lexer.line_num); pn.addChild(name); RESULT=pn; :} ; type_import_on_demand_declaration ::= IMPORT name:name DOT MULT SEMICOLON {: - ParseNode pn=new ParseNode("import_ondemand"); + ParseNode pn=new ParseNode("import_ondemand",parser.lexer.line_num); pn.addChild(name); RESULT=pn; :} @@ -718,12 +718,12 @@ type_declaration ::= {: RESULT=in; :} - | SEMICOLON {: RESULT=new ParseNode("empty"); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; // 19.7) Productions used only in the LALR(1) grammar modifiers_opt::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | modifiers:mo {: RESULT=mo; :} @@ -736,7 +736,7 @@ modifiers ::= mixed_modifiers : mmo {: RESULT=mmo; :} | annotations : an {: - ParseNode pn=new ParseNode("modifier_list"); + ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); pn.addChild(an); RESULT=pn; :} @@ -748,12 +748,12 @@ mixed_modifiers_at ::= ; mixed_modifiers ::= modifier : mo {: - ParseNode pn=new ParseNode("modifier_list"); + ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); pn.addChild(mo); RESULT=pn; :} | annotations:as modifier:mo {: - ParseNode pn=new ParseNode("modifier_list"); + ParseNode pn=new ParseNode("modifier_list",parser.lexer.line_num); pn.addChild(mo); pn.addChild(as); RESULT=pn; @@ -763,35 +763,35 @@ mixed_modifiers ::= RESULT=mmos; :} | mixed_modifiers_at:mma annotation_body:ab {: - mma.addChild("annotation_list").addChild(ab); + mma.addChild("annotation_list",parser.lexer.line_num).addChild(ab); RESULT=mma; :} ; modifier ::= - PUBLIC {: RESULT=new ParseNode("public"); :}| - PROTECTED {: RESULT=new ParseNode("protected"); :}| - PRIVATE {: RESULT=new ParseNode("private"); :}| - STATIC {: RESULT=new ParseNode("static"); :} | - ABSTRACT {: RESULT=new ParseNode("abstract"); :} | - FINAL {: RESULT=new ParseNode("final"); :}| - NATIVE {: RESULT=new ParseNode("native"); :} | - SYNCHRONIZED {: RESULT=new ParseNode("synchronized"); :} | - ATOMIC {: RESULT=new ParseNode("atomic"); :} | - VOLATILE {: RESULT=new ParseNode("volatile"); :} | - TRANSIENT {: RESULT=new ParseNode("transient"); :} + 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); :} // STRICTFP // note that semantic analysis must check that the // context of the modifier allows strictfp. ; //annotations_opt ::= -// {: RESULT=new ParseNode("empty"); :} +// {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} // | annotations:an {: // RESULT=an; // :} // ; annotations ::= AT annotation_body:ab {: - ParseNode pn=new ParseNode("annotation_list"); + ParseNode pn=new ParseNode("annotation_list",parser.lexer.line_num); pn.addChild(ab); RESULT=pn; :} @@ -812,17 +812,17 @@ annotation ::= ; annotation_body ::= normal_annotation_body:nab {: - ParseNode pn=new ParseNode("annotation_body"); + ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); pn.addChild(nab); RESULT = pn; :} | marker_annotation_body:mab {: - ParseNode pn=new ParseNode("annotation_body"); + ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); pn.addChild(mab); RESULT = pn; :} | single_element_annotation_body:seab {: - ParseNode pn=new ParseNode("annotation_body"); + ParseNode pn=new ParseNode("annotation_body",parser.lexer.line_num); pn.addChild(seab); RESULT = pn; :} @@ -833,14 +833,14 @@ normal_annotation_body ::= marker_annotation_body ::= IDENTIFIER:id {: - ParseNode pn=new ParseNode("marker_annotation"); + ParseNode pn=new ParseNode("marker_annotation",parser.lexer.line_num); pn.addChild("name").addChild(id); RESULT=pn; :} ; single_element_annotation_body ::= IDENTIFIER:id LPAREN STRING_LITERAL:ev RPAREN {: - ParseNode pn=new ParseNode("single_annotation"); + ParseNode pn=new ParseNode("single_annotation",parser.lexer.line_num); pn.addChild("name").addChild(id); pn.addChild("element_value").addChild(ev); RESULT=pn; @@ -884,7 +884,7 @@ class_declaration ::= modifiers_opt:mo CLASS IDENTIFIER:id super_opt:so interfaces_opt:ifo class_body:body {: - ParseNode pn=new ParseNode("class_declaration"); + ParseNode pn=new ParseNode("class_declaration",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("super").addChild(so); @@ -898,7 +898,7 @@ super ::= EXTENDS class_type:classtype {: :} ; super_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | super:su {: RESULT=su; :} @@ -907,12 +907,12 @@ super_opt ::= interfaces ::= IMPLEMENTS interface_type_list:iftl {: RESULT=iftl; :} ; interfaces_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | interfaces:ifs {: RESULT=ifs; :} ; interface_type_list ::= interface_type:ift {: - ParseNode pn=new ParseNode("interface_type_list"); + ParseNode pn=new ParseNode("interface_type_list",parser.lexer.line_num); pn.addChild(ift); RESULT=pn; :} @@ -926,12 +926,12 @@ class_body ::= LBRACE class_body_declarations_opt:cbdo RBRACE {: RESULT=cbdo; :} ; class_body_declarations_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | class_body_declarations:cbd {: RESULT=cbd; :}; class_body_declarations ::= class_body_declaration:cbd {: - ParseNode pn=new ParseNode("class_body_declaration_list"); + ParseNode pn=new ParseNode("class_body_declaration_list",parser.lexer.line_num); pn.addChild(cbd); RESULT=pn; :} @@ -943,37 +943,37 @@ class_body_declarations ::= class_body_declaration ::= class_member_declaration:member {: - RESULT=(new ParseNode("member")).addChild(member).getRoot(); + RESULT=(new ParseNode("member",parser.lexer.line_num)).addChild(member).getRoot(); :} | static_initializer:block{: - RESULT=(new ParseNode("static_block")).addChild(block).getRoot(); + RESULT=(new ParseNode("static_block",parser.lexer.line_num)).addChild(block).getRoot(); :} | constructor_declaration:constructor {: - RESULT=(new ParseNode("constructor")).addChild(constructor).getRoot(); + RESULT=(new ParseNode("constructor",parser.lexer.line_num)).addChild(constructor).getRoot(); :} | block:block {: - RESULT=(new ParseNode("block")).addChild(block).getRoot(); + RESULT=(new ParseNode("block",parser.lexer.line_num)).addChild(block).getRoot(); :} | location_order_declaration:lod {: - RESULT=(new ParseNode("location_order_declaration")).addChild(lod).getRoot(); + RESULT=(new ParseNode("location_order_declaration",parser.lexer.line_num)).addChild(lod).getRoot(); :} ; class_member_declaration ::= //failure aware computation flag_declaration:flag {: - RESULT=(new ParseNode("flag")).addChild(flag).getRoot(); + RESULT=(new ParseNode("flag",parser.lexer.line_num)).addChild(flag).getRoot(); :} | field_declaration:field {: - RESULT=(new ParseNode("field")).addChild(field).getRoot(); + RESULT=(new ParseNode("field",parser.lexer.line_num)).addChild(field).getRoot(); :} | method_declaration:method {: - RESULT=(new ParseNode("method")).addChild(method).getRoot(); + RESULT=(new ParseNode("method",parser.lexer.line_num)).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"); + ParseNode pn=new ParseNode("inner_class_declaration",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("super").addChild(so); @@ -986,9 +986,9 @@ class_member_declaration ::= RESULT=ed; :} // | interface_declaration:interfaced {: -// RESULT=(new ParseNode("interface")).addChild(interfaced).getRoot(); +// RESULT=(new ParseNode("interface",parser.lexer.line_num)).addChild(interfaced).getRoot(); // :} - | SEMICOLON {: RESULT=new ParseNode("empty"); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; // mgc @@ -996,7 +996,7 @@ class_member_declaration ::= enum_declaration ::= modifiers_opt:mo ENUM IDENTIFIER:id /*interfaces_opt:io*/ enum_body:body {: - ParseNode pn=new ParseNode("enum_declaration"); + ParseNode pn=new ParseNode("enum_declaration",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); //pn.addChild("superIF").addChild(ifo); @@ -1009,13 +1009,13 @@ enum_body ::= {: RESULT=eco; :} ; enum_constants_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | enum_constants:ecs {: RESULT=ecs; :} ; enum_constants ::= enum_constant:ec {: - ParseNode pn=new ParseNode("enum_constants_list"); + ParseNode pn=new ParseNode("enum_constants_list",parser.lexer.line_num); pn.addChild(ec); RESULT=pn; :} @@ -1027,7 +1027,7 @@ enum_constants ::= enum_constant ::= IDENTIFIER:id /*enum_arguments_opt*/ {: - ParseNode pn=new ParseNode("enum_constant"); + ParseNode pn=new ParseNode("enum_constant",parser.lexer.line_num); pn.addChild("name").addChild(id); RESULT=pn; :} @@ -1043,12 +1043,12 @@ enum_constant ::= //Failure aware computation flag_declaration ::= FLAG IDENTIFIER:id SEMICOLON {: - ParseNode pn=new ParseNode("flag_declaration"); + ParseNode pn=new ParseNode("flag_declaration",parser.lexer.line_num); pn.addChild("name").addChild(id); RESULT=pn; :} | EXTERNAL FLAG IDENTIFIER:id SEMICOLON {: - ParseNode pn=new ParseNode("flag_declaration"); + ParseNode pn=new ParseNode("flag_declaration",parser.lexer.line_num); pn.addChild("name").addChild(id); pn.addChild("external"); RESULT=pn; @@ -1058,14 +1058,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"); + ParseNode pn=new ParseNode("field_declaration",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("field_declaration",parser.lexer.line_num); pn.addChild("modifier").addChild(mo); pn.addChild("type").addChild(type); pn.addChild("variables").addChild(var); @@ -1076,7 +1076,7 @@ field_declaration ::= variable_declarators ::= variable_declarator:vd {: - ParseNode pn=new ParseNode("variable_declarators_list"); + ParseNode pn=new ParseNode("variable_declarators_list",parser.lexer.line_num); pn.addChild(vd); RESULT=pn; :} @@ -1087,12 +1087,12 @@ variable_declarators ::= ; variable_declarator ::= variable_declarator_id:id {: - ParseNode pn=new ParseNode("variable_declarator"); + ParseNode pn=new ParseNode("variable_declarator",parser.lexer.line_num); pn.addChild(id); RESULT=pn; :} | variable_declarator_id:id EQ variable_initializer:init {: - ParseNode pn=new ParseNode("variable_declarator"); + ParseNode pn=new ParseNode("variable_declarator",parser.lexer.line_num); pn.addChild(id); pn.addChild("initializer").addChild(init); RESULT=pn; @@ -1100,19 +1100,19 @@ variable_declarator ::= ; variable_declarator_id ::= IDENTIFIER:id {: - RESULT=(new ParseNode("single")).addChild(id).getRoot();:} + RESULT=(new ParseNode("single",parser.lexer.line_num)).addChild(id).getRoot();:} | variable_declarator_id:id LBRACK RBRACK {: - RESULT=(new ParseNode("array")).addChild(id).getRoot();:} + RESULT=(new ParseNode("array",parser.lexer.line_num)).addChild(id).getRoot();:} ; variable_initializer ::= expression:exp {: RESULT=exp; :} - | array_initializer:ai {: RESULT=(new ParseNode("array_initializer")).addChild(ai).getRoot(); :} + | array_initializer:ai {: RESULT=(new ParseNode("array_initializer",parser.lexer.line_num)).addChild(ai).getRoot(); :} ; // 19.8.3) Method Declarations method_declaration ::= method_header:header method_body:body {: - ParseNode pn=new ParseNode("method_declaration"); + ParseNode pn=new ParseNode("method_declaration",parser.lexer.line_num); pn.addChild(header); pn.addChild("body").addChild(body); RESULT=pn; @@ -1121,7 +1121,7 @@ method_declaration ::= method_header ::= modifiers_opt:mo type:type method_declarator:decl throws_opt:to {: - ParseNode pn=new ParseNode("method_header"); + ParseNode pn=new ParseNode("method_header",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("returntype").addChild(type); pn.addChild("throws").addChild(to); @@ -1130,7 +1130,7 @@ method_header ::= :} | modifiers_opt:mo VOID method_declarator:decl throws_opt:to {: - ParseNode pn=new ParseNode("method_header"); + ParseNode pn=new ParseNode("method_header",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); pn.addChild(decl); @@ -1139,7 +1139,7 @@ method_header ::= ; method_declarator ::= IDENTIFIER:id LPAREN formal_parameter_list_opt:params RPAREN {: - ParseNode pn=new ParseNode("method_declarator"); + ParseNode pn=new ParseNode("method_declarator",parser.lexer.line_num); pn.addChild("name").addChild(id); pn.addChild("parameters").addChild(params); RESULT=pn; @@ -1148,14 +1148,14 @@ method_declarator ::= // be careful; the above production also allows 'void foo() []' ; formal_parameter_list_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | formal_parameter_list:fpl {: RESULT=fpl; :} ; formal_parameter_list ::= formal_parameter:fp {: - ParseNode pn=new ParseNode("formal_parameter_list"); + ParseNode pn=new ParseNode("formal_parameter_list",parser.lexer.line_num); pn.addChild(fp); RESULT=pn; :} @@ -1166,36 +1166,36 @@ formal_parameter_list ::= ; formal_parameter ::= type:type variable_declarator_id:name {: - ParseNode pn=new ParseNode("formal_parameter"); + ParseNode pn=new ParseNode("formal_parameter",parser.lexer.line_num); pn.addChild(type); pn.addChild(name); RESULT=pn; :} | TAG variable_declarator_id:name {: - ParseNode pn=new ParseNode("tag_parameter"); + ParseNode pn=new ParseNode("tag_parameter",parser.lexer.line_num); pn.addChild(name); RESULT=pn; :} | FINAL type:type variable_declarator_id:name {: - ParseNode pn=new ParseNode("formal_parameter"); + ParseNode pn=new ParseNode("formal_parameter",parser.lexer.line_num); pn.addChild(type); pn.addChild(name); RESULT=pn; :} ; throws_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | throws:trs {: RESULT=trs; :} ; throws ::= THROWS class_type_list:ctl - {: RESULT=(new ParseNode("throw_list")).addChild(ctl).getRoot(); :} + {: RESULT=(new ParseNode("throw_list",parser.lexer.line_num)).addChild(ctl).getRoot(); :} ; class_type_list ::= class_type:ct {: - ParseNode pn=new ParseNode("class_type_list"); + ParseNode pn=new ParseNode("class_type_list",parser.lexer.line_num); pn.addChild(ct); RESULT=pn; :} @@ -1208,13 +1208,13 @@ class_type_list ::= method_body ::= block:block {: RESULT=block; :} - | SEMICOLON {: RESULT=new ParseNode("empty"); :} + | SEMICOLON {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; // 19.8.4) Static Initializers static_initializer ::= STATIC block:body {: - ParseNode pn=new ParseNode("static_block_declaration"); + ParseNode pn=new ParseNode("static_block_declaration",parser.lexer.line_num); pn.addChild("body").addChild(body); RESULT=pn; :} @@ -1224,7 +1224,7 @@ static_initializer ::= constructor_declaration ::= modifiers_opt:mo constructor_declarator:cd throws_opt:to constructor_body:body {: - ParseNode pn=new ParseNode("constructor_declaration"); + ParseNode pn=new ParseNode("constructor_declaration",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); pn.addChild(cd); @@ -1233,7 +1233,7 @@ constructor_declaration ::= :} | modifiers_opt:mo GLOBAL constructor_declarator:cd throws_opt:to constructor_body:body {: - ParseNode pn=new ParseNode("constructor_declaration"); + ParseNode pn=new ParseNode("constructor_declaration",parser.lexer.line_num); pn.addChild("global"); pn.addChild("modifiers").addChild(mo); pn.addChild("throws").addChild(to); @@ -1245,7 +1245,7 @@ constructor_declaration ::= constructor_declarator ::= simple_name:name LPAREN formal_parameter_list_opt:fplo RPAREN {: - ParseNode pn=new ParseNode("constructor_declarator"); + ParseNode pn=new ParseNode("constructor_declarator",parser.lexer.line_num); pn.addChild(name); pn.addChild("parameters").addChild(fplo); RESULT=pn; @@ -1253,32 +1253,32 @@ constructor_declarator ::= ; constructor_body ::= LBRACE explicit_constructor_invocation:eci block_statements:bs RBRACE {: - ParseNode pn=new ParseNode("constructor_body"); + ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); pn.addChild(eci); pn.addChild(bs); RESULT=pn; :} | LBRACE explicit_constructor_invocation:eci RBRACE {: - ParseNode pn=new ParseNode("constructor_body"); + ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); pn.addChild(eci); RESULT=pn; :} | LBRACE block_statements:block RBRACE {: - ParseNode pn=new ParseNode("constructor_body"); + ParseNode pn=new ParseNode("constructor_body",parser.lexer.line_num); pn.addChild(block); RESULT=pn; :} - | LBRACE RBRACE {: RESULT=new ParseNode("empty"); :} + | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; explicit_constructor_invocation ::= THIS LPAREN argument_list_opt:alo RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("explconstrinv"); + ParseNode pn=new ParseNode("explconstrinv",parser.lexer.line_num); pn.addChild(alo); RESULT=pn; :} | SUPER LPAREN argument_list_opt:alo RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("superinvoke"); + ParseNode pn=new ParseNode("superinvoke",parser.lexer.line_num); pn.addChild(alo); RESULT=pn; :} @@ -1293,7 +1293,7 @@ location_order_declaration ::= LOCDEF LBRACE location_order_list:lol RBRACE {: ; location_order_list ::= location_order:lo {: - ParseNode pn=new ParseNode("location_order_list"); + ParseNode pn=new ParseNode("location_order_list",parser.lexer.line_num); pn.addChild(lo); RESULT=pn; :} @@ -1304,7 +1304,7 @@ location_order_list ::= ; location_order ::= IDENTIFIER:loc1 LT IDENTIFIER:loc2{: - ParseNode pn=new ParseNode("location_order"); + ParseNode pn=new ParseNode("location_order",parser.lexer.line_num); pn.addChild(loc1); pn.addChild(loc2); RESULT=pn; @@ -1318,7 +1318,7 @@ interface_declaration ::= modifiers_opt:mo INTERFACE IDENTIFIER:id extends_interfaces_opt:io interface_body:body {: - ParseNode pn=new ParseNode("interface_declaration"); + ParseNode pn=new ParseNode("interface_declaration",parser.lexer.line_num); pn.addChild("modifiers").addChild(mo); pn.addChild("name").addChild(id); pn.addChild("superIF").addChild(io); @@ -1328,13 +1328,13 @@ interface_declaration ::= | annotation_type_declaration ; extends_interfaces_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | extends_interfaces:eifs {: RESULT=eifs; :} ; extends_interfaces ::= EXTENDS interface_type:ift {: - ParseNode pn=new ParseNode("extend_interface_list"); + ParseNode pn=new ParseNode("extend_interface_list",parser.lexer.line_num); pn.addChild(ift); RESULT=pn; :} @@ -1349,12 +1349,12 @@ interface_body ::= {: RESULT=imdo; :} ; interface_member_declarations_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | interface_member_declarations:imd {: RESULT=imd; :} ; interface_member_declarations ::= interface_member_declaration:imd {: - ParseNode pn=new ParseNode("interface_member_declaration_list"); + ParseNode pn=new ParseNode("interface_member_declaration_list",parser.lexer.line_num); pn.addChild(imd); RESULT=pn; :} @@ -1365,18 +1365,18 @@ interface_member_declarations ::= ; interface_member_declaration ::= constant_declaration:constant {: - RESULT=(new ParseNode("constant")).addChild(constant).getRoot(); + RESULT=(new ParseNode("constant",parser.lexer.line_num)).addChild(constant).getRoot(); :} | abstract_method_declaration:method {: - RESULT=(new ParseNode("method")).addChild(method).getRoot(); + RESULT=(new ParseNode("method",parser.lexer.line_num)).addChild(method).getRoot(); :} | enum_declaration:ed {: - RESULT=(new ParseNode("enum_declaration")).addChild(ed).getRoot(); + RESULT=(new ParseNode("enum_declaration",parser.lexer.line_num)).addChild(ed).getRoot(); :} // | class_declaration:class // | interface_declaration:interface | SEMICOLON {: - RESULT=new ParseNode("empty"); + RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; constant_declaration ::= @@ -1387,9 +1387,9 @@ constant_declaration ::= ; abstract_method_declaration ::= method_header:header SEMICOLON {: - ParseNode pn=new ParseNode("method_declaration"); + ParseNode pn=new ParseNode("method_declaration",parser.lexer.line_num); pn.addChild("header").addChild(header); - pn.addChild("body").addChild(new ParseNode("empty")); + pn.addChild("body").addChild(new ParseNode("empty",parser.lexer.line_num)); RESULT=pn; :} ; @@ -1426,15 +1426,15 @@ array_initializer ::= RESULT=var_init_list; :} | LBRACE COMMA RBRACE {: - RESULT=new ParseNode("empty"); + RESULT=new ParseNode("empty",parser.lexer.line_num); :} | LBRACE RBRACE {: - RESULT=new ParseNode("empty"); + RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; variable_initializers ::= variable_initializer:var_init {: - ParseNode pn=new ParseNode("var_init_list"); + ParseNode pn=new ParseNode("var_init_list",parser.lexer.line_num); pn.addChild(var_init); RESULT=pn; :} @@ -1450,14 +1450,14 @@ block ::= LBRACE block_statements_opt:bso RBRACE {: :} ; block_statements_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | block_statements:bs {: RESULT=bs; :} ; block_statements ::= block_statement:bs {: - ParseNode pn=new ParseNode("block_statement_list"); + ParseNode pn=new ParseNode("block_statement_list",parser.lexer.line_num); pn.addChild(bs); RESULT=pn; :} @@ -1484,7 +1484,7 @@ block_statement ::= ; tag_variable_declaration_statement ::= TAG IDENTIFIER:id EQ NEW TAG LPAREN IDENTIFIER:type RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("tag_declaration"); + ParseNode pn=new ParseNode("tag_declaration",parser.lexer.line_num); pn.addChild("single").addChild(id); pn.addChild("type").addChild(type); RESULT=pn; @@ -1497,7 +1497,7 @@ local_variable_declaration_statement ::= ; local_variable_declaration ::= type:type variable_declarators:var {: - ParseNode pn=new ParseNode("local_variable_declaration"); + ParseNode pn=new ParseNode("local_variable_declaration",parser.lexer.line_num); pn.addChild(type); pn.addChild(var); RESULT=pn; @@ -1505,7 +1505,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"); + ParseNode pn=new ParseNode("local_variable_declaration",parser.lexer.line_num); pn.addChild(type); pn.addChild(var); pn.addChild("modifiers").addChild(mo); @@ -1547,7 +1547,7 @@ statement_without_trailing_substatement ::= // | assert_statement ; empty_statement ::= - SEMICOLON {: RESULT=new ParseNode("nop"); :} + SEMICOLON {: RESULT=new ParseNode("nop",parser.lexer.line_num); :} ; //labeled_statement ::= // IDENTIFIER COLON statement @@ -1557,7 +1557,7 @@ empty_statement ::= // ; expression_statement ::= statement_expression:se SEMICOLON {: - ParseNode pn=new ParseNode("expression"); + ParseNode pn=new ParseNode("expression",parser.lexer.line_num); pn.addChild(se); RESULT=pn; :} ; @@ -1572,7 +1572,7 @@ statement_expression ::= ; if_then_statement ::= IF LPAREN expression:exp RPAREN statement:st {: - ParseNode pn=new ParseNode("ifstatement"); + ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1581,7 +1581,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"); + ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); pn.addChild("else_statement").addChild(else_st); @@ -1591,7 +1591,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"); + ParseNode pn=new ParseNode("ifstatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); pn.addChild("else_statement").addChild(else_st); @@ -1601,7 +1601,7 @@ if_then_else_statement_no_short_if ::= switch_statement ::= SWITCH LPAREN expression:exp RPAREN switch_block:body {: - ParseNode pn=new ParseNode("switch_statement"); + ParseNode pn=new ParseNode("switch_statement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(body); RESULT=pn; @@ -1610,9 +1610,9 @@ switch_statement ::= switch_block ::= LBRACE switch_block_statement_groups:sbsg switch_labels:sl RBRACE {: - ParseNode pn = new ParseNode("switch_block"); + ParseNode pn = new ParseNode("switch_block",parser.lexer.line_num); pn.addChild("switch_labels").addChild(sl); - pn.addChild("switch_statements").addChild(new ParseNode("empty")); + pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.lexer.line_num)); sbsg.addChild(pn); RESULT=sbsg; :} @@ -1622,19 +1622,19 @@ switch_block ::= :} | LBRACE switch_labels:sl RBRACE {: - ParseNode pnb = new ParseNode("switch_block_list"); - ParseNode pn = new ParseNode("switch_block"); + ParseNode pnb = new ParseNode("switch_block_list",parser.lexer.line_num); + ParseNode pn = new ParseNode("switch_block",parser.lexer.line_num); pn.addChild("switch_labels").addChild(sl); - pn.addChild("switch_statements").addChild(new ParseNode("empty")); + pn.addChild("switch_statements").addChild(new ParseNode("empty",parser.lexer.line_num)); pnb.addChild(pn); RESULT=pnb; :} - | LBRACE RBRACE {: RESULT=new ParseNode("empty"); :} + | LBRACE RBRACE {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} ; switch_block_statement_groups ::= switch_block_statement_group:sbsg {: - ParseNode pn = new ParseNode("switch_block_list"); + ParseNode pn = new ParseNode("switch_block_list",parser.lexer.line_num); pn.addChild(sbsg); RESULT=pn; :} @@ -1647,7 +1647,7 @@ switch_block_statement_groups ::= switch_block_statement_group ::= switch_labels:sls block_statements:body {: - ParseNode pn=new ParseNode("switch_block"); + ParseNode pn=new ParseNode("switch_block",parser.lexer.line_num); pn.addChild("switch_labels").addChild(sls); pn.addChild("switch_statements").addChild(body); RESULT=pn; @@ -1656,7 +1656,7 @@ switch_block_statement_group ::= switch_labels ::= switch_label:sl {: - ParseNode pn=new ParseNode("switch_label_list"); + ParseNode pn=new ParseNode("switch_label_list",parser.lexer.line_num); pn.addChild(sl); RESULT=pn; :} @@ -1669,19 +1669,19 @@ switch_labels ::= switch_label ::= CASE constant_expression:ce COLON {: - ParseNode pn=new ParseNode("switch_label"); + ParseNode pn=new ParseNode("switch_label",parser.lexer.line_num); pn.addChild(ce); RESULT=pn; :} | DEFAULT COLON {: - RESULT=new ParseNode("default_switch_label"); + RESULT=new ParseNode("default_switch_label",parser.lexer.line_num); :} ; while_statement ::= WHILE LPAREN expression:exp RPAREN statement:st {: - ParseNode pn=new ParseNode("whilestatement"); + ParseNode pn=new ParseNode("whilestatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1689,7 +1689,7 @@ while_statement ::= ; while_statement_no_short_if ::= WHILE LPAREN expression:exp RPAREN statement_no_short_if:st {: - ParseNode pn=new ParseNode("whilestatement"); + ParseNode pn=new ParseNode("whilestatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1697,7 +1697,7 @@ while_statement_no_short_if ::= ; do_statement ::= DO statement:st WHILE LPAREN expression:exp RPAREN SEMICOLON {: - ParseNode pn=new ParseNode("dowhilestatement"); + ParseNode pn=new ParseNode("dowhilestatement",parser.lexer.line_num); pn.addChild("condition").addChild(exp); pn.addChild("statement").addChild(st); RESULT=pn; @@ -1706,7 +1706,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"); + ParseNode pn=new ParseNode("forstatement",parser.lexer.line_num); pn.addChild("initializer").addChild(init); pn.addChild("condition").addChild(exp); pn.addChild("update").addChild(update); @@ -1717,7 +1717,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"); + ParseNode pn=new ParseNode("forstatement",parser.lexer.line_num); pn.addChild("initializer").addChild(init); pn.addChild("condition").addChild(exp); pn.addChild("update").addChild(update); @@ -1726,21 +1726,21 @@ for_statement_no_short_if ::= :} ; for_init_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | 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"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | 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")).addChild(expr).getRoot(); + RESULT=(new ParseNode("statement_expression_list",parser.lexer.line_num)).addChild(expr).getRoot(); :} | statement_expression_list:list COMMA statement_expression:expr {: list.addChild(expr); @@ -1755,27 +1755,27 @@ statement_expression_list ::= break_statement ::= BREAK //identifier_opt -SEMICOLON {: RESULT=new ParseNode("break"); :} +SEMICOLON {: RESULT=new ParseNode("break",parser.lexer.line_num); :} ; continue_statement ::= CONTINUE //identifier_opt SEMICOLON -{: RESULT=new ParseNode("continue"); :} +{: RESULT=new ParseNode("continue",parser.lexer.line_num); :} ; return_statement ::= RETURN expression_opt:exp SEMICOLON {: - RESULT=(new ParseNode("return")).addChild(exp).getRoot(); :} + RESULT=(new ParseNode("return",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; throw_statement ::= THROW expression:exp SEMICOLON {: - RESULT=(new ParseNode("throwstatement")).addChild(exp).getRoot(); + RESULT=(new ParseNode("throwstatement",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; synchronized_statement ::= SYNCHRONIZED LPAREN expression:e RPAREN block:b {: - ParseNode pn=new ParseNode("synchronized"); + ParseNode pn=new ParseNode("synchronized",parser.lexer.line_num); pn.addChild("expr").addChild(e); pn.addChild("block").addChild(b); RESULT=pn; @@ -1783,28 +1783,28 @@ synchronized_statement ::= ; atomic_statement ::= ATOMIC block:blk {: - RESULT=(new ParseNode("atomic")).addChild(blk).getRoot(); + RESULT=(new ParseNode("atomic",parser.lexer.line_num)).addChild(blk).getRoot(); :} ; sese_statement ::= SESE block:blk {: - ParseNode pn = new ParseNode("sese"); + ParseNode pn = new ParseNode("sese",parser.lexer.line_num); pn.addChild("body").addChild(blk); RESULT=pn; :} | SESE variable_declarator_id:id block:blk {: - ParseNode pn = new ParseNode("sese"); + ParseNode pn = new ParseNode("sese",parser.lexer.line_num); pn.addChild("body").addChild(blk); pn.addChild("identifier").addChild(id); RESULT=pn; :} | RBLOCK block:blk {: - ParseNode pn = new ParseNode("sese"); + ParseNode pn = new ParseNode("sese",parser.lexer.line_num); pn.addChild("body").addChild(blk); RESULT=pn; :} | RBLOCK variable_declarator_id:id block:blk {: - ParseNode pn = new ParseNode("sese"); + ParseNode pn = new ParseNode("sese",parser.lexer.line_num); pn.addChild("body").addChild(blk); pn.addChild("identifier").addChild(id); RESULT=pn; @@ -1813,14 +1813,14 @@ sese_statement ::= try_statement ::= TRY block:bk catches:ca {: - ParseNode pn=new ParseNode("trycatchstatement"); + ParseNode pn=new ParseNode("trycatchstatement",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("trycatchstatement",parser.lexer.line_num); pn.addChild("tryblock").addChild(bk); pn.addChild("catchblock").addChild(ca); pn.addChild("finallyblock").addChild(fi); @@ -1828,13 +1828,13 @@ try_statement ::= :} ; catches_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | catches:ca {: RESULT=ca; :} ; catches ::= catch_clause:ca {: - ParseNode pn=new ParseNode("catchlist"); + ParseNode pn=new ParseNode("catchlist",parser.lexer.line_num); pn.addChild(ca); RESULT=pn; :} @@ -1847,7 +1847,7 @@ catches ::= catch_clause:ca catch_clause ::= CATCH LPAREN formal_parameter:fp RPAREN block:bk {: - ParseNode pn=new ParseNode("catchclause"); + ParseNode pn=new ParseNode("catchclause",parser.lexer.line_num); pn.addChild("parameter").addChild(fp); pn.addChild("block").addChild(bk); RESULT=pn; @@ -1875,30 +1875,30 @@ primary ::= primary_no_new_array:st {: ; primary_no_new_array ::= literal:lit {: RESULT=lit; :} - | THIS {: RESULT=new ParseNode("this"); :} + | THIS {: RESULT=new ParseNode("this",parser.lexer.line_num); :} | 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"); + ParseNode pn=new ParseNode("isavailable",parser.lexer.line_num); pn.addChild(id); RESULT=pn; :} // | primitive_type:pt DOT CLASS {: -// ParseNode pn=new ParseNode("class_type"); +// ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); // pn.addChild(pt); // RESULT=pn; // :} // | VOID DOT CLASS // | array_type:at DOT CLASS {: -// ParseNode pn=new ParseNode("class_type"); +// ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); // pn.addChild(at); // RESULT=pn; // :} | name:name DOT CLASS {: - ParseNode pn=new ParseNode("class_type"); + ParseNode pn=new ParseNode("class_type",parser.lexer.line_num); pn.addChild("type").addChild("class").addChild(name); RESULT=pn; :} @@ -1906,7 +1906,7 @@ primary_no_new_array ::= ; class_instance_creation_expression ::= NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(feo); @@ -1914,7 +1914,7 @@ class_instance_creation_expression ::= :} //Global object | GLOBAL NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(feo); @@ -1922,7 +1922,7 @@ class_instance_creation_expression ::= RESULT=pn; :} | SCRATCH NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(feo); @@ -1931,7 +1931,7 @@ 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 flag_list_opt:feo {: - ParseNode pn=new ParseNode("createobject"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(feo); @@ -1939,14 +1939,14 @@ class_instance_creation_expression ::= RESULT=pn; :} | NEW class_or_interface_type:type LPAREN argument_list_opt:args RPAREN LBRACE RBRACE LBRACE tag_list:tl RBRACE {: - ParseNode pn=new ParseNode("createobject"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(tl); RESULT=pn; :} | NEW 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"); + ParseNode pn=new ParseNode("createobject",parser.lexer.line_num); pn.addChild(type); pn.addChild(args); pn.addChild(fl); @@ -1967,20 +1967,20 @@ class_instance_creation_expression ::= // LPAREN argument_list_opt RPAREN class_body ; cons_argument_list_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | cons_argument_list:args {: RESULT=args; :} ; cons_argument_list ::= IDENTIFIER:id COLON expression:exp {: - ParseNode pn=new ParseNode("cons_argument_list"); + ParseNode pn=new ParseNode("cons_argument_list",parser.lexer.line_num); 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"); + ParseNode pnarg=new ParseNode("binding",parser.lexer.line_num); pnarg.addChild("var").addChild(id); pnarg.addChild("exp").addChild(exp); list.addChild(pnarg); @@ -1989,13 +1989,13 @@ cons_argument_list ::= ; argument_list_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | argument_list:args {: RESULT=args; :} ; argument_list ::= expression:exp {: - ParseNode pn=new ParseNode("argument_list"); + ParseNode pn=new ParseNode("argument_list",parser.lexer.line_num); pn.addChild(exp); RESULT=pn; :} @@ -2006,21 +2006,21 @@ argument_list ::= ; array_creation_uninit ::= NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2028,7 +2028,7 @@ array_creation_uninit ::= RESULT=pn; :} | SCRATCH NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2036,7 +2036,7 @@ array_creation_uninit ::= RESULT=pn; :} | DISJOINT IDENTIFIER:id NEW primitive_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2044,7 +2044,7 @@ array_creation_uninit ::= RESULT=pn; :} | GLOBAL NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2052,7 +2052,7 @@ array_creation_uninit ::= RESULT=pn; :} | SCRATCH NEW class_or_interface_type:type dim_exprs:dimexpr dims_opt:dims {: - ParseNode pn=new ParseNode("createarray"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2060,7 +2060,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"); + ParseNode pn=new ParseNode("createarray",parser.lexer.line_num); pn.addChild(type); pn.addChild(dimexpr); pn.addChild("dims_opt").setLiteral(dims); @@ -2070,14 +2070,14 @@ array_creation_uninit ::= ; array_creation_init ::= NEW primitive_type:type dims:dims array_initializer:ai {: - ParseNode pn=new ParseNode("createarray2"); + ParseNode pn=new ParseNode("createarray2",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("createarray2",parser.lexer.line_num); pn.addChild(type); pn.addChild("dims_opt").setLiteral(dims); pn.addChild("initializer").addChild(ai); @@ -2085,7 +2085,7 @@ array_creation_init ::= :} ; dim_exprs ::= dim_expr:exp {: - ParseNode pn=new ParseNode("dim_exprs"); + ParseNode pn=new ParseNode("dim_exprs",parser.lexer.line_num); pn.addChild(exp); RESULT=pn; :} | dim_exprs:base dim_expr:exp {: @@ -2105,7 +2105,7 @@ dims ::= LBRACK RBRACK {: RESULT=new Integer(1); :} field_access ::= primary:base DOT IDENTIFIER:id {: - ParseNode pn=new ParseNode("fieldaccess"); + ParseNode pn=new ParseNode("fieldaccess",parser.lexer.line_num); pn.addChild("base").addChild(base); pn.addChild("field").addChild(id); RESULT=pn; @@ -2115,23 +2115,23 @@ field_access ::= ; method_invocation ::= name:name LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("methodinvoke1"); + ParseNode pn=new ParseNode("methodinvoke1",parser.lexer.line_num); pn.addChild(name); pn.addChild(args); RESULT=pn; :} | primary:base DOT IDENTIFIER:name LPAREN argument_list_opt:args RPAREN {: - ParseNode pn=new ParseNode("methodinvoke2"); + ParseNode pn=new ParseNode("methodinvoke2",parser.lexer.line_num); 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"); + ParseNode name=new ParseNode("name",parser.lexer.line_num); name.addChild("base").addChild("name").addChild("identifier").addChild("super"); name.addChild("identifier").addChild(id); - ParseNode pn=new ParseNode("methodinvoke1"); + ParseNode pn=new ParseNode("methodinvoke1",parser.lexer.line_num); pn.addChild(name); pn.addChild(args); RESULT=pn; @@ -2140,19 +2140,19 @@ method_invocation ::= ; array_access ::= name:name LBRACK expression:exp RBRACK {: - ParseNode pn=new ParseNode("arrayaccess"); + ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); 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"); +// ParseNode pn=new ParseNode("arrayaccess",parser.lexer.line_num); // pn.addChild("init").addChild(init); // pn.addChild("index").addChild(exp); // RESULT=pn; @@ -2168,43 +2168,43 @@ postfix_expression ::= ; postincrement_expression ::= postfix_expression:exp PLUSPLUS - {: RESULT=(new ParseNode("postinc")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("postinc",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; postdecrement_expression ::= postfix_expression:exp MINUSMINUS - {: RESULT=(new ParseNode("postdec")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("postdec",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; unary_expression ::= preincrement_expression:exp {: RESULT=exp; :} | predecrement_expression:exp {: RESULT=exp; :} | PLUS unary_expression:exp - {: RESULT=(new ParseNode("unaryplus")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("unaryplus",parser.lexer.line_num)).addChild(exp).getRoot(); :} | MINUS unary_expression:exp - {: RESULT=(new ParseNode("unaryminus")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("unaryminus",parser.lexer.line_num)).addChild(exp).getRoot(); :} | unary_expression_not_plus_minus:exp {: RESULT=exp; :} ; preincrement_expression ::= PLUSPLUS unary_expression:exp - {: RESULT=(new ParseNode("preinc")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("preinc",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; predecrement_expression ::= MINUSMINUS unary_expression:exp - {: RESULT=(new ParseNode("predec")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("predec",parser.lexer.line_num)).addChild(exp).getRoot(); :} ; unary_expression_not_plus_minus ::= postfix_expression:exp {: RESULT=exp; :} | COMP unary_expression:exp - {: RESULT=(new ParseNode("comp")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("comp",parser.lexer.line_num)).addChild(exp).getRoot(); :} | NOT unary_expression:exp - {: RESULT=(new ParseNode("not")).addChild(exp).getRoot(); :} + {: RESULT=(new ParseNode("not",parser.lexer.line_num)).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"); + ParseNode pn=new ParseNode("cast1",parser.lexer.line_num); if (dims.intValue()==0) pn.addChild("type").addChild(type); else { @@ -2216,14 +2216,14 @@ else { RESULT=pn; :} | LPAREN expression:type RPAREN unary_expression_not_plus_minus:exp {: - ParseNode pn=new ParseNode("cast2"); + ParseNode pn=new ParseNode("cast2",parser.lexer.line_num); 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"); + ParseNode pn=new ParseNode("cast1",parser.lexer.line_num); if (dims.intValue()==0) pn.addChild("type").addChild("class").addChild(name); else { @@ -2240,19 +2240,19 @@ multiplicative_expression ::= unary_expression:exp {: RESULT=exp; :} | multiplicative_expression:exp1 MULT unary_expression:exp2 {: - ParseNode pn=new ParseNode("mult"); + ParseNode pn=new ParseNode("mult",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | multiplicative_expression:exp1 DIV unary_expression:exp2 {: - ParseNode pn=new ParseNode("div"); + ParseNode pn=new ParseNode("div",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | multiplicative_expression:exp1 MOD unary_expression:exp2 {: - ParseNode pn=new ParseNode("mod"); + ParseNode pn=new ParseNode("mod",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2262,13 +2262,13 @@ additive_expression ::= multiplicative_expression:exp {: RESULT=exp; :} | additive_expression:exp1 PLUS multiplicative_expression:exp2 {: - ParseNode pn=new ParseNode("add"); + ParseNode pn=new ParseNode("add",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | additive_expression:exp1 MINUS multiplicative_expression:exp2 {: - ParseNode pn=new ParseNode("sub"); + ParseNode pn=new ParseNode("sub",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2278,19 +2278,19 @@ shift_expression ::= additive_expression:exp {: RESULT=exp; :} | shift_expression:exp1 LSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("leftshift"); + ParseNode pn=new ParseNode("leftshift",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | shift_expression:exp1 RSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("rightshift"); + ParseNode pn=new ParseNode("rightshift",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | shift_expression:exp1 URSHIFT additive_expression:exp2 {: - ParseNode pn=new ParseNode("urightshift"); + ParseNode pn=new ParseNode("urightshift",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2300,31 +2300,31 @@ relational_expression ::= shift_expression:exp {: RESULT=exp; :} | relational_expression:exp1 LT shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_lt"); + ParseNode pn=new ParseNode("comp_lt",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 GT shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_gt"); + ParseNode pn=new ParseNode("comp_gt",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 LTEQ shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_lte"); + ParseNode pn=new ParseNode("comp_lte",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp1 GTEQ shift_expression:exp2 {: - ParseNode pn=new ParseNode("comp_gte"); + ParseNode pn=new ParseNode("comp_gte",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | relational_expression:exp INSTANCEOF reference_type:type {: - ParseNode pn=new ParseNode("instanceof"); + ParseNode pn=new ParseNode("instanceof",parser.lexer.line_num); pn.addChild("exp").addChild(exp); pn.addChild(type); RESULT=pn; @@ -2335,13 +2335,13 @@ equality_expression ::= relational_expression:exp {: RESULT=exp; :} | equality_expression:exp1 EQEQ relational_expression:exp2 {: - ParseNode pn=new ParseNode("equal"); + ParseNode pn=new ParseNode("equal",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; :} | equality_expression:exp1 NOTEQ relational_expression:exp2 {: - ParseNode pn=new ParseNode("not_equal"); + ParseNode pn=new ParseNode("not_equal",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2351,7 +2351,7 @@ and_expression ::= equality_expression:exp {: RESULT=exp; :} | and_expression:exp1 AND equality_expression:exp2 {: - ParseNode pn=new ParseNode("bitwise_and"); + ParseNode pn=new ParseNode("bitwise_and",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2362,7 +2362,7 @@ exclusive_or_expression ::= RESULT=expr; :} | exclusive_or_expression:exp1 XOR and_expression:exp2 {: - ParseNode pn=new ParseNode("bitwise_xor"); + ParseNode pn=new ParseNode("bitwise_xor",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2372,7 +2372,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"); + ParseNode pn=new ParseNode("bitwise_or",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2382,7 +2382,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"); + ParseNode pn=new ParseNode("logical_and",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2392,7 +2392,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"); + ParseNode pn=new ParseNode("logical_or",parser.lexer.line_num); pn.addChild(exp1); pn.addChild(exp2); RESULT=pn; @@ -2403,7 +2403,7 @@ conditional_expression ::= RESULT=condor; :} | conditional_or_expression:condor QUESTION expression:exptrue COLON conditional_expression:expfalse {: - ParseNode pn=new ParseNode("tert"); + ParseNode pn=new ParseNode("tert",parser.lexer.line_num); pn.addChild("cond").addChild(condor); pn.addChild("trueexpr").addChild(exptrue); pn.addChild("falseexpr").addChild(expfalse); @@ -2412,7 +2412,7 @@ conditional_expression ::= ; getoffset_expression ::= GETOFFSET LBRACE class_or_interface_type:type COMMA IDENTIFIER:id RBRACE {: - ParseNode pn = new ParseNode("getoffset"); + ParseNode pn = new ParseNode("getoffset",parser.lexer.line_num); pn.addChild(type); pn.addChild("field").addChild(id); RESULT = pn; @@ -2431,7 +2431,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"); + ParseNode pn=new ParseNode("assignment",parser.lexer.line_num); pn.addChild("op").addChild(op); ParseNode pnargs=pn.addChild("args"); pnargs.addChild(lvalue); @@ -2440,21 +2440,21 @@ assignment ::= postfix_expression:lvalue assignment_operator:op assignment_expre :} ; assignment_operator ::= - EQ {: RESULT=new ParseNode("eq"); :} - | MULTEQ {: RESULT=new ParseNode("multeq"); :} - | DIVEQ {: RESULT=new ParseNode("diveq"); :} - | MODEQ {: RESULT=new ParseNode("modeq"); :} - | PLUSEQ {: RESULT=new ParseNode("pluseq"); :} - | MINUSEQ {: RESULT=new ParseNode("minuseq"); :} - | LSHIFTEQ {: RESULT=new ParseNode("lshifteq"); :} - | RSHIFTEQ {: RESULT=new ParseNode("rshifteq"); :} - | URSHIFTEQ {: RESULT=new ParseNode("urshifteq"); :} - | ANDEQ {: RESULT=new ParseNode("andeq"); :} - | XOREQ {: RESULT=new ParseNode("xoreq"); :} - | OREQ {: RESULT=new ParseNode("oreq"); :} + 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); :} ; expression_opt ::= - {: RESULT=new ParseNode("empty"); :} + {: RESULT=new ParseNode("empty",parser.lexer.line_num); :} | expression:exp {: RESULT=exp; :} ; @@ -2466,7 +2466,7 @@ expression ::= assignment_expression:exp {: constant_expression ::= expression:exp {: - ParseNode pn = new ParseNode("constant_expression"); + ParseNode pn = new ParseNode("constant_expression",parser.lexer.line_num); pn.addChild(exp); RESULT=pn; :} @@ -2475,7 +2475,7 @@ constant_expression ::= genreach_statement ::= GENREACH IDENTIFIER:graphName SEMICOLON {: - ParseNode pn=new ParseNode("genreach"); + ParseNode pn=new ParseNode("genreach",parser.lexer.line_num); pn.addChild("graphName").addChild(graphName); RESULT=pn; :} ; -- 2.34.1