ANTLR Tree Grammar -> Generated java class has errors (getText) -


when generate tree parser, errors says method gettext() undefined type object. can't enter whole class here since 500000 characters.

but these similar error lines is

public int specialstatetransition(int s, intstream _input) throws noviablealtexception {         treenodestream input = (treenodestream)_input;         int _s = s;         switch ( s ) {                 case 0 :                      int la3_11 = input.la(1);                       int index3_11 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_11);                     if ( s>=0 ) return s;                     break;                 case 1 :                      int la3_16 = input.la(1);                       int index3_16 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_16);                     if ( s>=0 ) return s;                     break;                 case 2 :                      int la3_20 = input.la(1);                       int index3_20 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_20);                     if ( s>=0 ) return s;                     break;                 case 3 :                      int la3_22 = input.la(1);                       int index3_22 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_22);                     if ( s>=0 ) return s;                     break;                 case 4 :                      int la3_23 = input.la(1);                       int index3_23 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_23);                     if ( s>=0 ) return s;                     break;                 case 5 :                      int la3_24 = input.la(1);                       int index3_24 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_24);                     if ( s>=0 ) return s;                     break;                 case 6 :                      int la3_25 = input.la(1);                       int index3_25 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_25);                     if ( s>=0 ) return s;                     break;                 case 7 :                      int la3_26 = input.la(1);                       int index3_26 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_26);                     if ( s>=0 ) return s;                     break;                 case 8 :                      int la3_27 = input.la(1);                       int index3_27 = input.index();                     input.rewind();                     s = -1;                     if ( ((synpred5_walker()&&(istypename(input.lt(1).gettext())))) ) {s = 1;}                      else if ( (true) ) {s = 8;}                       input.seek(index3_27);                     if ( s>=0 ) return s;                     break;         }         if (state.backtracking>0) {state.failed=true; return -1;}         noviablealtexception nvae =             new noviablealtexception(getdescription(), 3, _s, input);         error(nvae);         throw nvae;     } } 

my tree grammar


tree grammar walker;  options {    tokenvocab = c2p;   astlabeltype = commontree;   backtrack=true;        output=ast; }  @header {   package com.frankdaniel.compiler ;  }    translation_unit      :  external_declaration+     ;   external_declaration options {k=1;}     : (declaration_specifiers? declarator declaration* l_c_bracket! )=> function_definition //-> external_declarator function_definition     | declaration     ;    function_definition     :   declaration_specifiers? declarator (declaration+ compound_statement|compound_statement) //-> ^(functiondef declaration_specifiers? declarator (declaration+ compound_statement|compound_statement))      ;  declaration      : 'typedef' declaration_specifiers? init_declarator_list semicolon! // special case, looking typedef         | declaration_specifiers init_declarator_list? semicolon!     ;  declaration_specifiers     :   (   storage_class_specifier         |   type_specifier         |   type_qualifier         )+     ;  init_declarator_list     : ^(init_declarator_list init_declarator+)     ;  init_declarator     : declarator (assign^ initializer)?     ;  storage_class_specifier     : extern     | static     | auto     | register     ;  type_specifier     : void     | char     | int     | float     | type_id     ;  type_id     :   identifier //      {system.out.println($identifier.text+" type");}     ;   type_qualifier     : const      ;  declarator     : pointer? direct_declarator     | pointer     ;  direct_declarator     :   (identifier|lparen! declarator rparen!)         declarator_suffix*     ;  declarator_suffix     :   constant_expression     |   rbracket! lbracket!     |   parameter_type_list     |   identifier_list     |   lparen! rparen!     ;  pointer     : times type_qualifier+ pointer?     | times pointer     | times     ;  parameter_type_list     : parameter_list     ;  parameter_list     : ^(parameter_list parameter_declaration)     ;  parameter_declaration     : declaration_specifiers (declarator|abstract_declarator)*     ;  identifier_list     : ^(identifier_list identifier+)     ;  type_name     : specifier_qualifier_list abstract_declarator?     ; specifier_qualifier_list     : ( type_qualifier | type_specifier )+     ;  abstract_declarator     : pointer direct_abstract_declarator?     | direct_abstract_declarator     ;  direct_abstract_declarator     :   ( lparen! abstract_declarator rparen | abstract_declarator_suffix ) abstract_declarator_suffix*     ;  abstract_declarator_suffix     :   rbracket! lbracket!     |   constant_expression      |   lparen! rparen!     |   parameter_type_list     ;  initializer     : assignment_expression     | initializer_list     ;  initializer_list     :  ^(initializer_list initializer+)     ;  // expressions  argument_expression_list     :  ^(expression_list assignment_expression+)     ;  multiplicative_expression     : (cast_expression) (times^ cast_expression | div^ cast_expression | mod^ cast_expression)*      ;  additive_expression     : (multiplicative_expression) (plus^ multiplicative_expression | minus^ multiplicative_expression)*      ;   cast_expression     : ^(cast_expression type_name cast_expression)     | unary_expression      ;  unary_expression     : postfix_expression     | pplus unary_expression     | mminus unary_expression     | unary_operator cast_expression     ;  postfix_expression     :   primary_expression         (   rbracket! expression lbracket!         |   lparen! rparen!          |   lparen! argument_expression_list rparen!          |   dot! identifier //        |   pplus //        |   mminus         )*     ;  unary_operator     : bitwiseand     | times     | plus     | minus     | not     ;  primary_expression     : identifier     | constant     | expression     ;  constant      :   hex_literal     |   octal_literal     |   decimal_literal     |   character_literal     |   string_literal     |   floating_point_literal     ;                 expression     : ^(expression assignment_expression+)     ;  constant_expression     : conditional_expression     ;  assignment_expression     :^(assignment_operator lvalue assignment_expression)     | conditional_expression     ;  lvalue     :   unary_expression     ;  assignment_operator     : assign      ;  conditional_expression     : logical_or_expression (questionmark! expression colon! conditional_expression)?     ;  logical_or_expression     : logical_and_expression (or^ logical_and_expression)*     ;  logical_and_expression     : inclusive_or_expression (and^ inclusive_or_expression)*     ;  inclusive_or_expression     : exclusive_or_expression ('|'^ exclusive_or_expression)*     ;  exclusive_or_expression     : and_expression ('^'^ and_expression)*     ;  and_expression     : equality_expression ('&'^ equality_expression)*       ;  equality_expression     : relational_expression ((equal|nonequal)^ relational_expression)*  ;  relational_expression     : shift_expression ((st|gt|steq|gteq)^ shift_expression)*      ;  shift_expression     : additive_expression ((lshift|rshift)^ additive_expression)*     ;           // statements  statement     : labeled_statement     | compound_statement     | expression_statement     | selection_statement     | iteration_statement     | jump_statement     ;  labeled_statement     : identifier statement      | case constant_expression statement     | default statement     ;  compound_statement     : ^(statement declaration* statement_list? )     ;  statement_list     : statement+     ;  expression_statement     : expression     ;  selection_statement     :if^ lparen! expression rparen! i=statement (else^ e=statement)?      | ^(switch expression statement)     ;   iteration_statement     : ^(while expression statement)     | ^(do statement ^(while expression))     | ^(for expression_statement expression_statement expression? statement)     ;  jump_statement     : ^(goto identifier)     | continue     | break     | ^(return expression?)     ; 

the test file


int main(void) {   int n;   int i;   int flag;    printf("enter value of n > ");   scanf("%d", &n);   flag = 1;   (i=2; (i<(n/2)) && flag; ) { /* may not need test             values of greater square root of n? */     if ((n % i) == 0) /* if true n divisible */       flag = 0;     else       i=i+1;   }    if (flag)     printf("%d prime\n", n);   else     printf("%d has %d factor\n", n, i);   return 0; } 

the error


compiler\walker.g: node after line 3:4 mismatched tree node: parameter_list expecting semicolon compiler\walker.g: node after line 3:9 mismatched tree node: expecting semicolon compiler\walker.g: node line 5:2 mismatched tree node: int expecting semicolon compiler\walker.g: node line 6:2 mismatched tree node: int expecting semicolon compiler\walker.g: node after line 6:6 mismatched tree node: expecting semicolon compiler\walker.g: node after line 8:2 mismatched tree node: expression_list expecting semicolon compiler\walker.g: node after line 9:2 mismatched tree node: expression_list expecting semicolon compiler\walker.g: node after line 9:15 mismatched tree node: expecting semicolon compiler\walker.g: node line 10:9 mismatched tree node: 1 expecting semicolon compiler\walker.g: node line 11:9 mismatched tree node: 2 expecting semicolon compiler\walker.g: node after line 11:13 mismatched tree node: expression expecting semicolon compiler\walker.g: node line 11:18 mismatched tree node: 2 expecting semicolon compiler\walker.g: node after line 11:25 mismatched tree node: expecting semicolon compiler\walker.g: node after line 13:13 mismatched tree node: expecting semicolon compiler\walker.g: node line 14:13 mismatched tree node: 0 expecting semicolon compiler\walker.g: node line 16:9 mismatched tree node: + expecting semicolon compiler\walker.g: node line 16:10 mismatched tree node: 1 expecting semicolon compiler\walker.g: node after line 19:6 mismatched tree node: expecting semicolon compiler\walker.g: node after line 20:4 mismatched tree node: expression_list expecting semicolon compiler\walker.g: node after line 20:28 mismatched tree node: expecting semicolon compiler\walker.g: node after line 22:4 mismatched tree node: expression_list expecting semicolon compiler\walker.g: node after line 22:41 mismatched tree node: expecting semicolon

you need specify ast node type. if unspecified, default used in generated code object.

options {     astlabeltype=commontree; } 

Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -