Home | History | Annotate | Download | only in simplecTreeParser
      1 // $ANTLR 3.2 Aug 13, 2010 14:19:31 SimpleCTP.g 2010-08-13 14:29:19
      2 
      3 import org.antlr.runtime.*;
      4 import org.antlr.runtime.tree.*;import java.util.Stack;
      5 import java.util.List;
      6 import java.util.ArrayList;
      7 
      8 public class SimpleCTP extends TreeParser {
      9     public static final String[] tokenNames = new String[] {
     10         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VAR_DEF", "ARG_DEF", "FUNC_HDR", "FUNC_DECL", "FUNC_DEF", "BLOCK", "ID", "EQ", "INT", "FOR", "INT_TYPE", "CHAR", "VOID", "EQEQ", "LT", "PLUS", "WS", "';'", "'('", "','", "')'", "'{'", "'}'"
     11     };
     12     public static final int LT=18;
     13     public static final int T__26=26;
     14     public static final int T__25=25;
     15     public static final int T__24=24;
     16     public static final int T__23=23;
     17     public static final int T__22=22;
     18     public static final int T__21=21;
     19     public static final int CHAR=15;
     20     public static final int FOR=13;
     21     public static final int FUNC_HDR=6;
     22     public static final int INT=12;
     23     public static final int FUNC_DEF=8;
     24     public static final int INT_TYPE=14;
     25     public static final int ID=10;
     26     public static final int EOF=-1;
     27     public static final int FUNC_DECL=7;
     28     public static final int ARG_DEF=5;
     29     public static final int WS=20;
     30     public static final int BLOCK=9;
     31     public static final int PLUS=19;
     32     public static final int VOID=16;
     33     public static final int EQ=11;
     34     public static final int VAR_DEF=4;
     35     public static final int EQEQ=17;
     36 
     37     // delegates
     38     // delegators
     39 
     40 
     41         public SimpleCTP(TreeNodeStream input) {
     42             this(input, new RecognizerSharedState());
     43         }
     44         public SimpleCTP(TreeNodeStream input, RecognizerSharedState state) {
     45             super(input, state);
     46 
     47         }
     48 
     49 
     50     public String[] getTokenNames() { return SimpleCTP.tokenNames; }
     51     public String getGrammarFileName() { return "SimpleCTP.g"; }
     52 
     53 
     54 
     55     // $ANTLR start "program"
     56     // SimpleCTP.g:8:1: program : ( declaration )+ ;
     57     public final void program() throws RecognitionException {
     58         try {
     59             // SimpleCTP.g:9:5: ( ( declaration )+ )
     60             // SimpleCTP.g:9:9: ( declaration )+
     61             {
     62             // SimpleCTP.g:9:9: ( declaration )+
     63             int cnt1=0;
     64             loop1:
     65             do {
     66                 int alt1=2;
     67                 int LA1_0 = input.LA(1);
     68 
     69                 if ( (LA1_0==VAR_DEF||(LA1_0>=FUNC_DECL && LA1_0<=FUNC_DEF)) ) {
     70                     alt1=1;
     71                 }
     72 
     73 
     74                 switch (alt1) {
     75             	case 1 :
     76             	    // SimpleCTP.g:9:9: declaration
     77             	    {
     78             	    pushFollow(FOLLOW_declaration_in_program43);
     79             	    declaration();
     80 
     81             	    state._fsp--;
     82 
     83 
     84             	    }
     85             	    break;
     86 
     87             	default :
     88             	    if ( cnt1 >= 1 ) break loop1;
     89                         EarlyExitException eee =
     90                             new EarlyExitException(1, input);
     91                         throw eee;
     92                 }
     93                 cnt1++;
     94             } while (true);
     95 
     96 
     97             }
     98 
     99         }
    100         catch (RecognitionException re) {
    101             reportError(re);
    102             recover(input,re);
    103         }
    104         finally {
    105         }
    106         return ;
    107     }
    108     // $ANTLR end "program"
    109 
    110 
    111     // $ANTLR start "declaration"
    112     // SimpleCTP.g:12:1: declaration : ( variable | ^( FUNC_DECL functionHeader ) | ^( FUNC_DEF functionHeader block ) );
    113     public final void declaration() throws RecognitionException {
    114         try {
    115             // SimpleCTP.g:13:5: ( variable | ^( FUNC_DECL functionHeader ) | ^( FUNC_DEF functionHeader block ) )
    116             int alt2=3;
    117             switch ( input.LA(1) ) {
    118             case VAR_DEF:
    119                 {
    120                 alt2=1;
    121                 }
    122                 break;
    123             case FUNC_DECL:
    124                 {
    125                 alt2=2;
    126                 }
    127                 break;
    128             case FUNC_DEF:
    129                 {
    130                 alt2=3;
    131                 }
    132                 break;
    133             default:
    134                 NoViableAltException nvae =
    135                     new NoViableAltException("", 2, 0, input);
    136 
    137                 throw nvae;
    138             }
    139 
    140             switch (alt2) {
    141                 case 1 :
    142                     // SimpleCTP.g:13:9: variable
    143                     {
    144                     pushFollow(FOLLOW_variable_in_declaration63);
    145                     variable();
    146 
    147                     state._fsp--;
    148 
    149 
    150                     }
    151                     break;
    152                 case 2 :
    153                     // SimpleCTP.g:14:9: ^( FUNC_DECL functionHeader )
    154                     {
    155                     match(input,FUNC_DECL,FOLLOW_FUNC_DECL_in_declaration74);
    156 
    157                     match(input, Token.DOWN, null);
    158                     pushFollow(FOLLOW_functionHeader_in_declaration76);
    159                     functionHeader();
    160 
    161                     state._fsp--;
    162 
    163 
    164                     match(input, Token.UP, null);
    165 
    166                     }
    167                     break;
    168                 case 3 :
    169                     // SimpleCTP.g:15:9: ^( FUNC_DEF functionHeader block )
    170                     {
    171                     match(input,FUNC_DEF,FOLLOW_FUNC_DEF_in_declaration88);
    172 
    173                     match(input, Token.DOWN, null);
    174                     pushFollow(FOLLOW_functionHeader_in_declaration90);
    175                     functionHeader();
    176 
    177                     state._fsp--;
    178 
    179                     pushFollow(FOLLOW_block_in_declaration92);
    180                     block();
    181 
    182                     state._fsp--;
    183 
    184 
    185                     match(input, Token.UP, null);
    186 
    187                     }
    188                     break;
    189 
    190             }
    191         }
    192         catch (RecognitionException re) {
    193             reportError(re);
    194             recover(input,re);
    195         }
    196         finally {
    197         }
    198         return ;
    199     }
    200     // $ANTLR end "declaration"
    201 
    202 
    203     // $ANTLR start "variable"
    204     // SimpleCTP.g:18:1: variable : ^( VAR_DEF type declarator ) ;
    205     public final void variable() throws RecognitionException {
    206         try {
    207             // SimpleCTP.g:19:5: ( ^( VAR_DEF type declarator ) )
    208             // SimpleCTP.g:19:9: ^( VAR_DEF type declarator )
    209             {
    210             match(input,VAR_DEF,FOLLOW_VAR_DEF_in_variable113);
    211 
    212             match(input, Token.DOWN, null);
    213             pushFollow(FOLLOW_type_in_variable115);
    214             type();
    215 
    216             state._fsp--;
    217 
    218             pushFollow(FOLLOW_declarator_in_variable117);
    219             declarator();
    220 
    221             state._fsp--;
    222 
    223 
    224             match(input, Token.UP, null);
    225 
    226             }
    227 
    228         }
    229         catch (RecognitionException re) {
    230             reportError(re);
    231             recover(input,re);
    232         }
    233         finally {
    234         }
    235         return ;
    236     }
    237     // $ANTLR end "variable"
    238 
    239 
    240     // $ANTLR start "declarator"
    241     // SimpleCTP.g:22:1: declarator : ID ;
    242     public final void declarator() throws RecognitionException {
    243         try {
    244             // SimpleCTP.g:23:5: ( ID )
    245             // SimpleCTP.g:23:9: ID
    246             {
    247             match(input,ID,FOLLOW_ID_in_declarator137);
    248 
    249             }
    250 
    251         }
    252         catch (RecognitionException re) {
    253             reportError(re);
    254             recover(input,re);
    255         }
    256         finally {
    257         }
    258         return ;
    259     }
    260     // $ANTLR end "declarator"
    261 
    262 
    263     // $ANTLR start "functionHeader"
    264     // SimpleCTP.g:26:1: functionHeader : ^( FUNC_HDR type ID ( formalParameter )+ ) ;
    265     public final void functionHeader() throws RecognitionException {
    266         try {
    267             // SimpleCTP.g:27:5: ( ^( FUNC_HDR type ID ( formalParameter )+ ) )
    268             // SimpleCTP.g:27:9: ^( FUNC_HDR type ID ( formalParameter )+ )
    269             {
    270             match(input,FUNC_HDR,FOLLOW_FUNC_HDR_in_functionHeader158);
    271 
    272             match(input, Token.DOWN, null);
    273             pushFollow(FOLLOW_type_in_functionHeader160);
    274             type();
    275 
    276             state._fsp--;
    277 
    278             match(input,ID,FOLLOW_ID_in_functionHeader162);
    279             // SimpleCTP.g:27:28: ( formalParameter )+
    280             int cnt3=0;
    281             loop3:
    282             do {
    283                 int alt3=2;
    284                 int LA3_0 = input.LA(1);
    285 
    286                 if ( (LA3_0==ARG_DEF) ) {
    287                     alt3=1;
    288                 }
    289 
    290 
    291                 switch (alt3) {
    292             	case 1 :
    293             	    // SimpleCTP.g:27:28: formalParameter
    294             	    {
    295             	    pushFollow(FOLLOW_formalParameter_in_functionHeader164);
    296             	    formalParameter();
    297 
    298             	    state._fsp--;
    299 
    300 
    301             	    }
    302             	    break;
    303 
    304             	default :
    305             	    if ( cnt3 >= 1 ) break loop3;
    306                         EarlyExitException eee =
    307                             new EarlyExitException(3, input);
    308                         throw eee;
    309                 }
    310                 cnt3++;
    311             } while (true);
    312 
    313 
    314             match(input, Token.UP, null);
    315 
    316             }
    317 
    318         }
    319         catch (RecognitionException re) {
    320             reportError(re);
    321             recover(input,re);
    322         }
    323         finally {
    324         }
    325         return ;
    326     }
    327     // $ANTLR end "functionHeader"
    328 
    329 
    330     // $ANTLR start "formalParameter"
    331     // SimpleCTP.g:30:1: formalParameter : ^( ARG_DEF type declarator ) ;
    332     public final void formalParameter() throws RecognitionException {
    333         try {
    334             // SimpleCTP.g:31:5: ( ^( ARG_DEF type declarator ) )
    335             // SimpleCTP.g:31:9: ^( ARG_DEF type declarator )
    336             {
    337             match(input,ARG_DEF,FOLLOW_ARG_DEF_in_formalParameter186);
    338 
    339             match(input, Token.DOWN, null);
    340             pushFollow(FOLLOW_type_in_formalParameter188);
    341             type();
    342 
    343             state._fsp--;
    344 
    345             pushFollow(FOLLOW_declarator_in_formalParameter190);
    346             declarator();
    347 
    348             state._fsp--;
    349 
    350 
    351             match(input, Token.UP, null);
    352 
    353             }
    354 
    355         }
    356         catch (RecognitionException re) {
    357             reportError(re);
    358             recover(input,re);
    359         }
    360         finally {
    361         }
    362         return ;
    363     }
    364     // $ANTLR end "formalParameter"
    365 
    366 
    367     // $ANTLR start "type"
    368     // SimpleCTP.g:34:1: type : ( 'int' | 'char' | 'void' | ID );
    369     public final void type() throws RecognitionException {
    370         try {
    371             // SimpleCTP.g:35:5: ( 'int' | 'char' | 'void' | ID )
    372             // SimpleCTP.g:
    373             {
    374             if ( input.LA(1)==ID||(input.LA(1)>=INT_TYPE && input.LA(1)<=VOID) ) {
    375                 input.consume();
    376                 state.errorRecovery=false;
    377             }
    378             else {
    379                 MismatchedSetException mse = new MismatchedSetException(null,input);
    380                 throw mse;
    381             }
    382 
    383 
    384             }
    385 
    386         }
    387         catch (RecognitionException re) {
    388             reportError(re);
    389             recover(input,re);
    390         }
    391         finally {
    392         }
    393         return ;
    394     }
    395     // $ANTLR end "type"
    396 
    397 
    398     // $ANTLR start "block"
    399     // SimpleCTP.g:41:1: block : ^( BLOCK ( variable )* ( stat )* ) ;
    400     public final void block() throws RecognitionException {
    401         try {
    402             // SimpleCTP.g:42:5: ( ^( BLOCK ( variable )* ( stat )* ) )
    403             // SimpleCTP.g:42:9: ^( BLOCK ( variable )* ( stat )* )
    404             {
    405             match(input,BLOCK,FOLLOW_BLOCK_in_block273);
    406 
    407             if ( input.LA(1)==Token.DOWN ) {
    408                 match(input, Token.DOWN, null);
    409                 // SimpleCTP.g:42:17: ( variable )*
    410                 loop4:
    411                 do {
    412                     int alt4=2;
    413                     int LA4_0 = input.LA(1);
    414 
    415                     if ( (LA4_0==VAR_DEF) ) {
    416                         alt4=1;
    417                     }
    418 
    419 
    420                     switch (alt4) {
    421                 	case 1 :
    422                 	    // SimpleCTP.g:42:17: variable
    423                 	    {
    424                 	    pushFollow(FOLLOW_variable_in_block275);
    425                 	    variable();
    426 
    427                 	    state._fsp--;
    428 
    429 
    430                 	    }
    431                 	    break;
    432 
    433                 	default :
    434                 	    break loop4;
    435                     }
    436                 } while (true);
    437 
    438                 // SimpleCTP.g:42:27: ( stat )*
    439                 loop5:
    440                 do {
    441                     int alt5=2;
    442                     int LA5_0 = input.LA(1);
    443 
    444                     if ( ((LA5_0>=BLOCK && LA5_0<=FOR)||(LA5_0>=EQEQ && LA5_0<=PLUS)) ) {
    445                         alt5=1;
    446                     }
    447 
    448 
    449                     switch (alt5) {
    450                 	case 1 :
    451                 	    // SimpleCTP.g:42:27: stat
    452                 	    {
    453                 	    pushFollow(FOLLOW_stat_in_block278);
    454                 	    stat();
    455 
    456                 	    state._fsp--;
    457 
    458 
    459                 	    }
    460                 	    break;
    461 
    462                 	default :
    463                 	    break loop5;
    464                     }
    465                 } while (true);
    466 
    467 
    468                 match(input, Token.UP, null);
    469             }
    470 
    471             }
    472 
    473         }
    474         catch (RecognitionException re) {
    475             reportError(re);
    476             recover(input,re);
    477         }
    478         finally {
    479         }
    480         return ;
    481     }
    482     // $ANTLR end "block"
    483 
    484 
    485     // $ANTLR start "stat"
    486     // SimpleCTP.g:45:1: stat : ( forStat | expr | block );
    487     public final void stat() throws RecognitionException {
    488         try {
    489             // SimpleCTP.g:45:5: ( forStat | expr | block )
    490             int alt6=3;
    491             switch ( input.LA(1) ) {
    492             case FOR:
    493                 {
    494                 alt6=1;
    495                 }
    496                 break;
    497             case ID:
    498             case EQ:
    499             case INT:
    500             case EQEQ:
    501             case LT:
    502             case PLUS:
    503                 {
    504                 alt6=2;
    505                 }
    506                 break;
    507             case BLOCK:
    508                 {
    509                 alt6=3;
    510                 }
    511                 break;
    512             default:
    513                 NoViableAltException nvae =
    514                     new NoViableAltException("", 6, 0, input);
    515 
    516                 throw nvae;
    517             }
    518 
    519             switch (alt6) {
    520                 case 1 :
    521                     // SimpleCTP.g:45:7: forStat
    522                     {
    523                     pushFollow(FOLLOW_forStat_in_stat292);
    524                     forStat();
    525 
    526                     state._fsp--;
    527 
    528 
    529                     }
    530                     break;
    531                 case 2 :
    532                     // SimpleCTP.g:46:7: expr
    533                     {
    534                     pushFollow(FOLLOW_expr_in_stat300);
    535                     expr();
    536 
    537                     state._fsp--;
    538 
    539 
    540                     }
    541                     break;
    542                 case 3 :
    543                     // SimpleCTP.g:47:7: block
    544                     {
    545                     pushFollow(FOLLOW_block_in_stat308);
    546                     block();
    547 
    548                     state._fsp--;
    549 
    550 
    551                     }
    552                     break;
    553 
    554             }
    555         }
    556         catch (RecognitionException re) {
    557             reportError(re);
    558             recover(input,re);
    559         }
    560         finally {
    561         }
    562         return ;
    563     }
    564     // $ANTLR end "stat"
    565 
    566 
    567     // $ANTLR start "forStat"
    568     // SimpleCTP.g:50:1: forStat : ^( 'for' expr expr expr block ) ;
    569     public final void forStat() throws RecognitionException {
    570         try {
    571             // SimpleCTP.g:51:5: ( ^( 'for' expr expr expr block ) )
    572             // SimpleCTP.g:51:9: ^( 'for' expr expr expr block )
    573             {
    574             match(input,FOR,FOLLOW_FOR_in_forStat328);
    575 
    576             match(input, Token.DOWN, null);
    577             pushFollow(FOLLOW_expr_in_forStat330);
    578             expr();
    579 
    580             state._fsp--;
    581 
    582             pushFollow(FOLLOW_expr_in_forStat332);
    583             expr();
    584 
    585             state._fsp--;
    586 
    587             pushFollow(FOLLOW_expr_in_forStat334);
    588             expr();
    589 
    590             state._fsp--;
    591 
    592             pushFollow(FOLLOW_block_in_forStat336);
    593             block();
    594 
    595             state._fsp--;
    596 
    597 
    598             match(input, Token.UP, null);
    599 
    600             }
    601 
    602         }
    603         catch (RecognitionException re) {
    604             reportError(re);
    605             recover(input,re);
    606         }
    607         finally {
    608         }
    609         return ;
    610     }
    611     // $ANTLR end "forStat"
    612 
    613     public static class expr_return extends TreeRuleReturnScope {
    614     };
    615 
    616     // $ANTLR start "expr"
    617     // SimpleCTP.g:54:1: expr : ( ^( EQEQ expr expr ) | ^( LT expr expr ) | ^( PLUS expr expr ) | ^( EQ ID e= expr ) | atom );
    618     public final SimpleCTP.expr_return expr() throws RecognitionException {
    619         SimpleCTP.expr_return retval = new SimpleCTP.expr_return();
    620         retval.start = input.LT(1);
    621 
    622         ANTLRCommonTree ID1=null;
    623         SimpleCTP.expr_return e = null;
    624 
    625 
    626         try {
    627             // SimpleCTP.g:54:5: ( ^( EQEQ expr expr ) | ^( LT expr expr ) | ^( PLUS expr expr ) | ^( EQ ID e= expr ) | atom )
    628             int alt7=5;
    629             switch ( input.LA(1) ) {
    630             case EQEQ:
    631                 {
    632                 alt7=1;
    633                 }
    634                 break;
    635             case LT:
    636                 {
    637                 alt7=2;
    638                 }
    639                 break;
    640             case PLUS:
    641                 {
    642                 alt7=3;
    643                 }
    644                 break;
    645             case EQ:
    646                 {
    647                 alt7=4;
    648                 }
    649                 break;
    650             case ID:
    651             case INT:
    652                 {
    653                 alt7=5;
    654                 }
    655                 break;
    656             default:
    657                 NoViableAltException nvae =
    658                     new NoViableAltException("", 7, 0, input);
    659 
    660                 throw nvae;
    661             }
    662 
    663             switch (alt7) {
    664                 case 1 :
    665                     // SimpleCTP.g:54:9: ^( EQEQ expr expr )
    666                     {
    667                     match(input,EQEQ,FOLLOW_EQEQ_in_expr352);
    668 
    669                     match(input, Token.DOWN, null);
    670                     pushFollow(FOLLOW_expr_in_expr354);
    671                     expr();
    672 
    673                     state._fsp--;
    674 
    675                     pushFollow(FOLLOW_expr_in_expr356);
    676                     expr();
    677 
    678                     state._fsp--;
    679 
    680 
    681                     match(input, Token.UP, null);
    682 
    683                     }
    684                     break;
    685                 case 2 :
    686                     // SimpleCTP.g:55:9: ^( LT expr expr )
    687                     {
    688                     match(input,LT,FOLLOW_LT_in_expr368);
    689 
    690                     match(input, Token.DOWN, null);
    691                     pushFollow(FOLLOW_expr_in_expr370);
    692                     expr();
    693 
    694                     state._fsp--;
    695 
    696                     pushFollow(FOLLOW_expr_in_expr372);
    697                     expr();
    698 
    699                     state._fsp--;
    700 
    701 
    702                     match(input, Token.UP, null);
    703 
    704                     }
    705                     break;
    706                 case 3 :
    707                     // SimpleCTP.g:56:9: ^( PLUS expr expr )
    708                     {
    709                     match(input,PLUS,FOLLOW_PLUS_in_expr384);
    710 
    711                     match(input, Token.DOWN, null);
    712                     pushFollow(FOLLOW_expr_in_expr386);
    713                     expr();
    714 
    715                     state._fsp--;
    716 
    717                     pushFollow(FOLLOW_expr_in_expr388);
    718                     expr();
    719 
    720                     state._fsp--;
    721 
    722 
    723                     match(input, Token.UP, null);
    724 
    725                     }
    726                     break;
    727                 case 4 :
    728                     // SimpleCTP.g:57:9: ^( EQ ID e= expr )
    729                     {
    730                     match(input,EQ,FOLLOW_EQ_in_expr400);
    731 
    732                     match(input, Token.DOWN, null);
    733                     ID1=(ANTLRCommonTree)match(input,ID,FOLLOW_ID_in_expr402);
    734                     pushFollow(FOLLOW_expr_in_expr406);
    735                     e=expr();
    736 
    737                     state._fsp--;
    738 
    739 
    740                     match(input, Token.UP, null);
    741                      NSLog(@"assigning %@ to variable %@", (e!=null?(input.getTokenStream().toString(
    742                       input.getTreeAdaptor().getTokenStartIndex(e.start),
    743                       input.getTreeAdaptor().getTokenStopIndex(e.start))):null), (ID1!=null?ID1.getText():null));
    744 
    745                     }
    746                     break;
    747                 case 5 :
    748                     // SimpleCTP.g:58:9: atom
    749                     {
    750                     pushFollow(FOLLOW_atom_in_expr419);
    751                     atom();
    752 
    753                     state._fsp--;
    754 
    755 
    756                     }
    757                     break;
    758 
    759             }
    760         }
    761         catch (RecognitionException re) {
    762             reportError(re);
    763             recover(input,re);
    764         }
    765         finally {
    766         }
    767         return retval;
    768     }
    769     // $ANTLR end "expr"
    770 
    771 
    772     // $ANTLR start "atom"
    773     // SimpleCTP.g:61:1: atom : ( ID | INT );
    774     public final void atom() throws RecognitionException {
    775         try {
    776             // SimpleCTP.g:62:5: ( ID | INT )
    777             // SimpleCTP.g:
    778             {
    779             if ( input.LA(1)==ID||input.LA(1)==INT ) {
    780                 input.consume();
    781                 state.errorRecovery=false;
    782             }
    783             else {
    784                 MismatchedSetException mse = new MismatchedSetException(null,input);
    785                 throw mse;
    786             }
    787 
    788 
    789             }
    790 
    791         }
    792         catch (RecognitionException re) {
    793             reportError(re);
    794             recover(input,re);
    795         }
    796         finally {
    797         }
    798         return ;
    799     }
    800     // $ANTLR end "atom"
    801 
    802     // Delegated rules
    803 
    804 
    805 
    806 
    807     public static final BitSet FOLLOW_declaration_in_program43 = new BitSet(new long[]{0x0000000000000192L});
    808     public static final BitSet FOLLOW_variable_in_declaration63 = new BitSet(new long[]{0x0000000000000002L});
    809     public static final BitSet FOLLOW_FUNC_DECL_in_declaration74 = new BitSet(new long[]{0x0000000000000004L});
    810     public static final BitSet FOLLOW_functionHeader_in_declaration76 = new BitSet(new long[]{0x0000000000000008L});
    811     public static final BitSet FOLLOW_FUNC_DEF_in_declaration88 = new BitSet(new long[]{0x0000000000000004L});
    812     public static final BitSet FOLLOW_functionHeader_in_declaration90 = new BitSet(new long[]{0x0000000000000200L});
    813     public static final BitSet FOLLOW_block_in_declaration92 = new BitSet(new long[]{0x0000000000000008L});
    814     public static final BitSet FOLLOW_VAR_DEF_in_variable113 = new BitSet(new long[]{0x0000000000000004L});
    815     public static final BitSet FOLLOW_type_in_variable115 = new BitSet(new long[]{0x0000000000000400L});
    816     public static final BitSet FOLLOW_declarator_in_variable117 = new BitSet(new long[]{0x0000000000000008L});
    817     public static final BitSet FOLLOW_ID_in_declarator137 = new BitSet(new long[]{0x0000000000000002L});
    818     public static final BitSet FOLLOW_FUNC_HDR_in_functionHeader158 = new BitSet(new long[]{0x0000000000000004L});
    819     public static final BitSet FOLLOW_type_in_functionHeader160 = new BitSet(new long[]{0x0000000000000400L});
    820     public static final BitSet FOLLOW_ID_in_functionHeader162 = new BitSet(new long[]{0x0000000000000020L});
    821     public static final BitSet FOLLOW_formalParameter_in_functionHeader164 = new BitSet(new long[]{0x0000000000000028L});
    822     public static final BitSet FOLLOW_ARG_DEF_in_formalParameter186 = new BitSet(new long[]{0x0000000000000004L});
    823     public static final BitSet FOLLOW_type_in_formalParameter188 = new BitSet(new long[]{0x0000000000000400L});
    824     public static final BitSet FOLLOW_declarator_in_formalParameter190 = new BitSet(new long[]{0x0000000000000008L});
    825     public static final BitSet FOLLOW_set_in_type0 = new BitSet(new long[]{0x0000000000000002L});
    826     public static final BitSet FOLLOW_BLOCK_in_block273 = new BitSet(new long[]{0x0000000000000004L});
    827     public static final BitSet FOLLOW_variable_in_block275 = new BitSet(new long[]{0x00000000000E3E18L});
    828     public static final BitSet FOLLOW_stat_in_block278 = new BitSet(new long[]{0x00000000000E3E08L});
    829     public static final BitSet FOLLOW_forStat_in_stat292 = new BitSet(new long[]{0x0000000000000002L});
    830     public static final BitSet FOLLOW_expr_in_stat300 = new BitSet(new long[]{0x0000000000000002L});
    831     public static final BitSet FOLLOW_block_in_stat308 = new BitSet(new long[]{0x0000000000000002L});
    832     public static final BitSet FOLLOW_FOR_in_forStat328 = new BitSet(new long[]{0x0000000000000004L});
    833     public static final BitSet FOLLOW_expr_in_forStat330 = new BitSet(new long[]{0x00000000000E1C00L});
    834     public static final BitSet FOLLOW_expr_in_forStat332 = new BitSet(new long[]{0x00000000000E1C00L});
    835     public static final BitSet FOLLOW_expr_in_forStat334 = new BitSet(new long[]{0x0000000000000200L});
    836     public static final BitSet FOLLOW_block_in_forStat336 = new BitSet(new long[]{0x0000000000000008L});
    837     public static final BitSet FOLLOW_EQEQ_in_expr352 = new BitSet(new long[]{0x0000000000000004L});
    838     public static final BitSet FOLLOW_expr_in_expr354 = new BitSet(new long[]{0x00000000000E1C00L});
    839     public static final BitSet FOLLOW_expr_in_expr356 = new BitSet(new long[]{0x0000000000000008L});
    840     public static final BitSet FOLLOW_LT_in_expr368 = new BitSet(new long[]{0x0000000000000004L});
    841     public static final BitSet FOLLOW_expr_in_expr370 = new BitSet(new long[]{0x00000000000E1C00L});
    842     public static final BitSet FOLLOW_expr_in_expr372 = new BitSet(new long[]{0x0000000000000008L});
    843     public static final BitSet FOLLOW_PLUS_in_expr384 = new BitSet(new long[]{0x0000000000000004L});
    844     public static final BitSet FOLLOW_expr_in_expr386 = new BitSet(new long[]{0x00000000000E1C00L});
    845     public static final BitSet FOLLOW_expr_in_expr388 = new BitSet(new long[]{0x0000000000000008L});
    846     public static final BitSet FOLLOW_EQ_in_expr400 = new BitSet(new long[]{0x0000000000000004L});
    847     public static final BitSet FOLLOW_ID_in_expr402 = new BitSet(new long[]{0x00000000000E1C00L});
    848     public static final BitSet FOLLOW_expr_in_expr406 = new BitSet(new long[]{0x0000000000000008L});
    849     public static final BitSet FOLLOW_atom_in_expr419 = new BitSet(new long[]{0x0000000000000002L});
    850     public static final BitSet FOLLOW_set_in_atom0 = new BitSet(new long[]{0x0000000000000002L});
    851 
    852 }