// $ANTLR 3.2 Aug 13, 2010 14:19:31 SimpleC.g 2010-08-13 14:29:19 import org.antlr.runtime.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; import org.antlr.runtime.tree.*; public class SimpleCParser extends Parser { public static final String[] tokenNames = new String[] { "<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", "';'", "'('", "','", "')'", "'{'", "'}'" }; public static final int LT=18; public static final int T__26=26; public static final int T__25=25; public static final int T__24=24; public static final int T__23=23; public static final int T__22=22; public static final int T__21=21; public static final int CHAR=15; public static final int FOR=13; public static final int FUNC_HDR=6; public static final int INT=12; public static final int FUNC_DEF=8; public static final int INT_TYPE=14; public static final int ID=10; public static final int EOF=-1; public static final int FUNC_DECL=7; public static final int ARG_DEF=5; public static final int WS=20; public static final int BLOCK=9; public static final int PLUS=19; public static final int VOID=16; public static final int EQ=11; public static final int VAR_DEF=4; public static final int EQEQ=17; // delegates // delegators public SimpleCParser(TokenStream input) { this(input, new RecognizerSharedState()); } public SimpleCParser(TokenStream input, RecognizerSharedState state) { super(input, state); } protected TreeAdaptor adaptor = new CommonTreeAdaptor(); public void setTreeAdaptor(TreeAdaptor adaptor) { this.adaptor = adaptor; } public TreeAdaptor getTreeAdaptor() { return adaptor; } public String[] getTokenNames() { return SimpleCParser.tokenNames; } public String getGrammarFileName() { return "SimpleC.g"; } public static class program_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "program" // SimpleC.g:16:1: program : ( declaration )+ ; public final SimpleCParser.program_return program() throws RecognitionException { SimpleCParser.program_return retval = new SimpleCParser.program_return(); retval.start = input.LT(1); Object root_0 = null; SimpleCParser.declaration_return declaration1 = null; try { // SimpleC.g:17:5: ( ( declaration )+ ) // SimpleC.g:17:9: ( declaration )+ { root_0 = (Object)adaptor.nil(); // SimpleC.g:17:9: ( declaration )+ int cnt1=0; loop1: do { int alt1=2; int LA1_0 = input.LA(1); if ( (LA1_0==ID||(LA1_0>=INT_TYPE && LA1_0<=VOID)) ) { alt1=1; } switch (alt1) { case 1 : // SimpleC.g:17:9: declaration { pushFollow(FOLLOW_declaration_in_program85); declaration1=declaration(); state._fsp--; adaptor.addChild(root_0, declaration1.getTree()); } break; default : if ( cnt1 >= 1 ) break loop1; EarlyExitException eee = new EarlyExitException(1, input); throw eee; } cnt1++; } while (true); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "program" public static class declaration_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "declaration" // SimpleC.g:20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) ); public final SimpleCParser.declaration_return declaration() throws RecognitionException { SimpleCParser.declaration_return retval = new SimpleCParser.declaration_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal4=null; SimpleCParser.variable_return variable2 = null; SimpleCParser.functionHeader_return functionHeader3 = null; SimpleCParser.functionHeader_return functionHeader5 = null; SimpleCParser.block_return block6 = null; Object char_literal4_tree=null; RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21"); RewriteRuleSubtreeStream stream_functionHeader=new RewriteRuleSubtreeStream(adaptor,"rule functionHeader"); RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block"); try { // SimpleC.g:21:5: ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) ) int alt2=3; alt2 = dfa2.predict(input); switch (alt2) { case 1 : // SimpleC.g:21:9: variable { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_variable_in_declaration105); variable2=variable(); state._fsp--; adaptor.addChild(root_0, variable2.getTree()); } break; case 2 : // SimpleC.g:22:9: functionHeader ';' { pushFollow(FOLLOW_functionHeader_in_declaration115); functionHeader3=functionHeader(); state._fsp--; stream_functionHeader.add(functionHeader3.getTree()); char_literal4=(Token)match(input,21,FOLLOW_21_in_declaration117); stream_21.add(char_literal4); // AST REWRITE // elements: functionHeader // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 22:28: -> ^( FUNC_DECL functionHeader ) { // SimpleC.g:22:31: ^( FUNC_DECL functionHeader ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_DECL, "FUNC_DECL"), root_1); adaptor.addChild(root_1, stream_functionHeader.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } break; case 3 : // SimpleC.g:23:9: functionHeader block { pushFollow(FOLLOW_functionHeader_in_declaration135); functionHeader5=functionHeader(); state._fsp--; stream_functionHeader.add(functionHeader5.getTree()); pushFollow(FOLLOW_block_in_declaration137); block6=block(); state._fsp--; stream_block.add(block6.getTree()); // AST REWRITE // elements: block, functionHeader // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 23:30: -> ^( FUNC_DEF functionHeader block ) { // SimpleC.g:23:33: ^( FUNC_DEF functionHeader block ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_DEF, "FUNC_DEF"), root_1); adaptor.addChild(root_1, stream_functionHeader.nextTree()); adaptor.addChild(root_1, stream_block.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "declaration" public static class variable_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "variable" // SimpleC.g:26:1: variable : type declarator ';' -> ^( VAR_DEF type declarator ) ; public final SimpleCParser.variable_return variable() throws RecognitionException { SimpleCParser.variable_return retval = new SimpleCParser.variable_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal9=null; SimpleCParser.type_return type7 = null; SimpleCParser.declarator_return declarator8 = null; Object char_literal9_tree=null; RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21"); RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator"); RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type"); try { // SimpleC.g:27:5: ( type declarator ';' -> ^( VAR_DEF type declarator ) ) // SimpleC.g:27:9: type declarator ';' { pushFollow(FOLLOW_type_in_variable166); type7=type(); state._fsp--; stream_type.add(type7.getTree()); pushFollow(FOLLOW_declarator_in_variable168); declarator8=declarator(); state._fsp--; stream_declarator.add(declarator8.getTree()); char_literal9=(Token)match(input,21,FOLLOW_21_in_variable170); stream_21.add(char_literal9); // AST REWRITE // elements: declarator, type // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 27:29: -> ^( VAR_DEF type declarator ) { // SimpleC.g:27:32: ^( VAR_DEF type declarator ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VAR_DEF, "VAR_DEF"), root_1); adaptor.addChild(root_1, stream_type.nextTree()); adaptor.addChild(root_1, stream_declarator.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "variable" public static class declarator_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "declarator" // SimpleC.g:30:1: declarator : ID ; public final SimpleCParser.declarator_return declarator() throws RecognitionException { SimpleCParser.declarator_return retval = new SimpleCParser.declarator_return(); retval.start = input.LT(1); Object root_0 = null; Token ID10=null; Object ID10_tree=null; try { // SimpleC.g:31:5: ( ID ) // SimpleC.g:31:9: ID { root_0 = (Object)adaptor.nil(); ID10=(Token)match(input,ID,FOLLOW_ID_in_declarator199); ID10_tree = (Object)adaptor.create(ID10); adaptor.addChild(root_0, ID10_tree); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "declarator" public static class functionHeader_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "functionHeader" // SimpleC.g:34:1: functionHeader : type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) ; public final SimpleCParser.functionHeader_return functionHeader() throws RecognitionException { SimpleCParser.functionHeader_return retval = new SimpleCParser.functionHeader_return(); retval.start = input.LT(1); Object root_0 = null; Token ID12=null; Token char_literal13=null; Token char_literal15=null; Token char_literal17=null; SimpleCParser.type_return type11 = null; SimpleCParser.formalParameter_return formalParameter14 = null; SimpleCParser.formalParameter_return formalParameter16 = null; Object ID12_tree=null; Object char_literal13_tree=null; Object char_literal15_tree=null; Object char_literal17_tree=null; RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23"); RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); RewriteRuleSubtreeStream stream_formalParameter=new RewriteRuleSubtreeStream(adaptor,"rule formalParameter"); RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type"); try { // SimpleC.g:35:5: ( type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) ) // SimpleC.g:35:9: type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' { pushFollow(FOLLOW_type_in_functionHeader219); type11=type(); state._fsp--; stream_type.add(type11.getTree()); ID12=(Token)match(input,ID,FOLLOW_ID_in_functionHeader221); stream_ID.add(ID12); char_literal13=(Token)match(input,22,FOLLOW_22_in_functionHeader223); stream_22.add(char_literal13); // SimpleC.g:35:21: ( formalParameter ( ',' formalParameter )* )? int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==ID||(LA4_0>=INT_TYPE && LA4_0<=VOID)) ) { alt4=1; } switch (alt4) { case 1 : // SimpleC.g:35:23: formalParameter ( ',' formalParameter )* { pushFollow(FOLLOW_formalParameter_in_functionHeader227); formalParameter14=formalParameter(); state._fsp--; stream_formalParameter.add(formalParameter14.getTree()); // SimpleC.g:35:39: ( ',' formalParameter )* loop3: do { int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==23) ) { alt3=1; } switch (alt3) { case 1 : // SimpleC.g:35:41: ',' formalParameter { char_literal15=(Token)match(input,23,FOLLOW_23_in_functionHeader231); stream_23.add(char_literal15); pushFollow(FOLLOW_formalParameter_in_functionHeader233); formalParameter16=formalParameter(); state._fsp--; stream_formalParameter.add(formalParameter16.getTree()); } break; default : break loop3; } } while (true); } break; } char_literal17=(Token)match(input,24,FOLLOW_24_in_functionHeader241); stream_24.add(char_literal17); // AST REWRITE // elements: ID, formalParameter, type // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 36:9: -> ^( FUNC_HDR type ID ( formalParameter )+ ) { // SimpleC.g:36:12: ^( FUNC_HDR type ID ( formalParameter )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_HDR, "FUNC_HDR"), root_1); adaptor.addChild(root_1, stream_type.nextTree()); adaptor.addChild(root_1, stream_ID.nextNode()); if ( !(stream_formalParameter.hasNext()) ) { throw new RewriteEarlyExitException(); } while ( stream_formalParameter.hasNext() ) { adaptor.addChild(root_1, stream_formalParameter.nextTree()); } stream_formalParameter.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "functionHeader" public static class formalParameter_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "formalParameter" // SimpleC.g:39:1: formalParameter : type declarator -> ^( ARG_DEF type declarator ) ; public final SimpleCParser.formalParameter_return formalParameter() throws RecognitionException { SimpleCParser.formalParameter_return retval = new SimpleCParser.formalParameter_return(); retval.start = input.LT(1); Object root_0 = null; SimpleCParser.type_return type18 = null; SimpleCParser.declarator_return declarator19 = null; RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator"); RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type"); try { // SimpleC.g:40:5: ( type declarator -> ^( ARG_DEF type declarator ) ) // SimpleC.g:40:9: type declarator { pushFollow(FOLLOW_type_in_formalParameter281); type18=type(); state._fsp--; stream_type.add(type18.getTree()); pushFollow(FOLLOW_declarator_in_formalParameter283); declarator19=declarator(); state._fsp--; stream_declarator.add(declarator19.getTree()); // AST REWRITE // elements: declarator, type // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 40:25: -> ^( ARG_DEF type declarator ) { // SimpleC.g:40:28: ^( ARG_DEF type declarator ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARG_DEF, "ARG_DEF"), root_1); adaptor.addChild(root_1, stream_type.nextTree()); adaptor.addChild(root_1, stream_declarator.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "formalParameter" public static class type_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "type" // SimpleC.g:43:1: type : ( 'int' | 'char' | 'void' | ID ); public final SimpleCParser.type_return type() throws RecognitionException { SimpleCParser.type_return retval = new SimpleCParser.type_return(); retval.start = input.LT(1); Object root_0 = null; Token set20=null; Object set20_tree=null; try { // SimpleC.g:44:5: ( 'int' | 'char' | 'void' | ID ) // SimpleC.g: { root_0 = (Object)adaptor.nil(); set20=(Token)input.LT(1); if ( input.LA(1)==ID||(input.LA(1)>=INT_TYPE && input.LA(1)<=VOID) ) { input.consume(); adaptor.addChild(root_0, (Object)adaptor.create(set20)); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "type" public static class block_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "block" // SimpleC.g:50:1: block : lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ; public final SimpleCParser.block_return block() throws RecognitionException { SimpleCParser.block_return retval = new SimpleCParser.block_return(); retval.start = input.LT(1); Object root_0 = null; Token lc=null; Token char_literal23=null; SimpleCParser.variable_return variable21 = null; SimpleCParser.stat_return stat22 = null; Object lc_tree=null; Object char_literal23_tree=null; RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); RewriteRuleTokenStream stream_26=new RewriteRuleTokenStream(adaptor,"token 26"); RewriteRuleSubtreeStream stream_variable=new RewriteRuleSubtreeStream(adaptor,"rule variable"); RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat"); try { // SimpleC.g:51:5: (lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ) // SimpleC.g:51:9: lc= '{' ( variable )* ( stat )* '}' { lc=(Token)match(input,25,FOLLOW_25_in_block376); stream_25.add(lc); // SimpleC.g:52:13: ( variable )* loop5: do { int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0==ID) ) { int LA5_2 = input.LA(2); if ( (LA5_2==ID) ) { alt5=1; } } else if ( ((LA5_0>=INT_TYPE && LA5_0<=VOID)) ) { alt5=1; } switch (alt5) { case 1 : // SimpleC.g:52:13: variable { pushFollow(FOLLOW_variable_in_block390); variable21=variable(); state._fsp--; stream_variable.add(variable21.getTree()); } break; default : break loop5; } } while (true); // SimpleC.g:53:13: ( stat )* loop6: do { int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==ID||(LA6_0>=INT && LA6_0<=FOR)||(LA6_0>=21 && LA6_0<=22)||LA6_0==25) ) { alt6=1; } switch (alt6) { case 1 : // SimpleC.g:53:13: stat { pushFollow(FOLLOW_stat_in_block405); stat22=stat(); state._fsp--; stream_stat.add(stat22.getTree()); } break; default : break loop6; } } while (true); char_literal23=(Token)match(input,26,FOLLOW_26_in_block416); stream_26.add(char_literal23); // AST REWRITE // elements: stat, variable // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 55:9: -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) { // SimpleC.g:55:12: ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(BLOCK, lc, @"BLOCK"), root_1); // SimpleC.g:55:34: ( variable )* while ( stream_variable.hasNext() ) { adaptor.addChild(root_1, stream_variable.nextTree()); } stream_variable.reset(); // SimpleC.g:55:44: ( stat )* while ( stream_stat.hasNext() ) { adaptor.addChild(root_1, stream_stat.nextTree()); } stream_stat.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "block" public static class stat_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "stat" // SimpleC.g:58:1: stat : ( forStat | expr ';' | block | assignStat ';' | ';' ); public final SimpleCParser.stat_return stat() throws RecognitionException { SimpleCParser.stat_return retval = new SimpleCParser.stat_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal26=null; Token char_literal29=null; Token char_literal30=null; SimpleCParser.forStat_return forStat24 = null; SimpleCParser.expr_return expr25 = null; SimpleCParser.block_return block27 = null; SimpleCParser.assignStat_return assignStat28 = null; Object char_literal26_tree=null; Object char_literal29_tree=null; Object char_literal30_tree=null; try { // SimpleC.g:58:5: ( forStat | expr ';' | block | assignStat ';' | ';' ) int alt7=5; switch ( input.LA(1) ) { case FOR: { alt7=1; } break; case ID: { int LA7_2 = input.LA(2); if ( (LA7_2==EQ) ) { alt7=4; } else if ( ((LA7_2>=EQEQ && LA7_2<=PLUS)||LA7_2==21) ) { alt7=2; } else { NoViableAltException nvae = new NoViableAltException("", 7, 2, input); throw nvae; } } break; case INT: case 22: { alt7=2; } break; case 25: { alt7=3; } break; case 21: { alt7=5; } break; default: NoViableAltException nvae = new NoViableAltException("", 7, 0, input); throw nvae; } switch (alt7) { case 1 : // SimpleC.g:58:7: forStat { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_forStat_in_stat449); forStat24=forStat(); state._fsp--; adaptor.addChild(root_0, forStat24.getTree()); } break; case 2 : // SimpleC.g:59:7: expr ';' { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_expr_in_stat457); expr25=expr(); state._fsp--; adaptor.addChild(root_0, expr25.getTree()); char_literal26=(Token)match(input,21,FOLLOW_21_in_stat459); } break; case 3 : // SimpleC.g:60:7: block { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_block_in_stat468); block27=block(); state._fsp--; adaptor.addChild(root_0, block27.getTree()); } break; case 4 : // SimpleC.g:61:7: assignStat ';' { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_assignStat_in_stat476); assignStat28=assignStat(); state._fsp--; adaptor.addChild(root_0, assignStat28.getTree()); char_literal29=(Token)match(input,21,FOLLOW_21_in_stat478); } break; case 5 : // SimpleC.g:62:7: ';' { root_0 = (Object)adaptor.nil(); char_literal30=(Token)match(input,21,FOLLOW_21_in_stat487); } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "stat" public static class forStat_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "forStat" // SimpleC.g:65:1: forStat : 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ; public final SimpleCParser.forStat_return forStat() throws RecognitionException { SimpleCParser.forStat_return retval = new SimpleCParser.forStat_return(); retval.start = input.LT(1); Object root_0 = null; Token string_literal31=null; Token char_literal32=null; Token char_literal33=null; Token char_literal35=null; Token char_literal36=null; SimpleCParser.assignStat_return start = null; SimpleCParser.assignStat_return next = null; SimpleCParser.expr_return expr34 = null; SimpleCParser.block_return block37 = null; Object string_literal31_tree=null; Object char_literal32_tree=null; Object char_literal33_tree=null; Object char_literal35_tree=null; Object char_literal36_tree=null; RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21"); RewriteRuleTokenStream stream_FOR=new RewriteRuleTokenStream(adaptor,"token FOR"); RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); RewriteRuleSubtreeStream stream_assignStat=new RewriteRuleSubtreeStream(adaptor,"rule assignStat"); RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { // SimpleC.g:66:5: ( 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ) // SimpleC.g:66:9: 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block { string_literal31=(Token)match(input,FOR,FOLLOW_FOR_in_forStat507); stream_FOR.add(string_literal31); char_literal32=(Token)match(input,22,FOLLOW_22_in_forStat509); stream_22.add(char_literal32); pushFollow(FOLLOW_assignStat_in_forStat513); start=assignStat(); state._fsp--; stream_assignStat.add(start.getTree()); char_literal33=(Token)match(input,21,FOLLOW_21_in_forStat515); stream_21.add(char_literal33); pushFollow(FOLLOW_expr_in_forStat517); expr34=expr(); state._fsp--; stream_expr.add(expr34.getTree()); char_literal35=(Token)match(input,21,FOLLOW_21_in_forStat519); stream_21.add(char_literal35); pushFollow(FOLLOW_assignStat_in_forStat523); next=assignStat(); state._fsp--; stream_assignStat.add(next.getTree()); char_literal36=(Token)match(input,24,FOLLOW_24_in_forStat525); stream_24.add(char_literal36); pushFollow(FOLLOW_block_in_forStat527); block37=block(); state._fsp--; stream_block.add(block37.getTree()); // AST REWRITE // elements: next, start, FOR, block, expr // token labels: // rule labels: retval, start, next // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); RewriteRuleSubtreeStream stream_start=new RewriteRuleSubtreeStream(adaptor,"rule start",start!=null?start.tree:null); RewriteRuleSubtreeStream stream_next=new RewriteRuleSubtreeStream(adaptor,"rule next",next!=null?next.tree:null); root_0 = (Object)adaptor.nil(); // 67:9: -> ^( 'for' $start expr $next block ) { // SimpleC.g:67:12: ^( 'for' $start expr $next block ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot(stream_FOR.nextNode(), root_1); adaptor.addChild(root_1, stream_start.nextTree()); adaptor.addChild(root_1, stream_expr.nextTree()); adaptor.addChild(root_1, stream_next.nextTree()); adaptor.addChild(root_1, stream_block.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "forStat" public static class assignStat_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "assignStat" // SimpleC.g:70:1: assignStat : ID EQ expr -> ^( EQ ID expr ) ; public final SimpleCParser.assignStat_return assignStat() throws RecognitionException { SimpleCParser.assignStat_return retval = new SimpleCParser.assignStat_return(); retval.start = input.LT(1); Object root_0 = null; Token ID38=null; Token EQ39=null; SimpleCParser.expr_return expr40 = null; Object ID38_tree=null; Object EQ39_tree=null; RewriteRuleTokenStream stream_EQ=new RewriteRuleTokenStream(adaptor,"token EQ"); RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { // SimpleC.g:71:5: ( ID EQ expr -> ^( EQ ID expr ) ) // SimpleC.g:71:9: ID EQ expr { ID38=(Token)match(input,ID,FOLLOW_ID_in_assignStat570); stream_ID.add(ID38); EQ39=(Token)match(input,EQ,FOLLOW_EQ_in_assignStat572); stream_EQ.add(EQ39); pushFollow(FOLLOW_expr_in_assignStat574); expr40=expr(); state._fsp--; stream_expr.add(expr40.getTree()); // AST REWRITE // elements: EQ, ID, expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 71:20: -> ^( EQ ID expr ) { // SimpleC.g:71:23: ^( EQ ID expr ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot(stream_EQ.nextNode(), root_1); adaptor.addChild(root_1, stream_ID.nextNode()); adaptor.addChild(root_1, stream_expr.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "assignStat" public static class expr_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "expr" // SimpleC.g:74:1: expr : condExpr ; public final SimpleCParser.expr_return expr() throws RecognitionException { SimpleCParser.expr_return retval = new SimpleCParser.expr_return(); retval.start = input.LT(1); Object root_0 = null; SimpleCParser.condExpr_return condExpr41 = null; try { // SimpleC.g:74:5: ( condExpr ) // SimpleC.g:74:9: condExpr { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_condExpr_in_expr598); condExpr41=condExpr(); state._fsp--; adaptor.addChild(root_0, condExpr41.getTree()); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "expr" public static class condExpr_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "condExpr" // SimpleC.g:77:1: condExpr : aexpr ( ( '==' | '<' ) aexpr )? ; public final SimpleCParser.condExpr_return condExpr() throws RecognitionException { SimpleCParser.condExpr_return retval = new SimpleCParser.condExpr_return(); retval.start = input.LT(1); Object root_0 = null; Token string_literal43=null; Token char_literal44=null; SimpleCParser.aexpr_return aexpr42 = null; SimpleCParser.aexpr_return aexpr45 = null; Object string_literal43_tree=null; Object char_literal44_tree=null; try { // SimpleC.g:78:5: ( aexpr ( ( '==' | '<' ) aexpr )? ) // SimpleC.g:78:9: aexpr ( ( '==' | '<' ) aexpr )? { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_aexpr_in_condExpr617); aexpr42=aexpr(); state._fsp--; adaptor.addChild(root_0, aexpr42.getTree()); // SimpleC.g:78:15: ( ( '==' | '<' ) aexpr )? int alt9=2; int LA9_0 = input.LA(1); if ( ((LA9_0>=EQEQ && LA9_0<=LT)) ) { alt9=1; } switch (alt9) { case 1 : // SimpleC.g:78:17: ( '==' | '<' ) aexpr { // SimpleC.g:78:17: ( '==' | '<' ) int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==EQEQ) ) { alt8=1; } else if ( (LA8_0==LT) ) { alt8=2; } else { NoViableAltException nvae = new NoViableAltException("", 8, 0, input); throw nvae; } switch (alt8) { case 1 : // SimpleC.g:78:18: '==' { string_literal43=(Token)match(input,EQEQ,FOLLOW_EQEQ_in_condExpr622); string_literal43_tree = (Object)adaptor.create(string_literal43); root_0 = (Object)adaptor.becomeRoot(string_literal43_tree, root_0); } break; case 2 : // SimpleC.g:78:26: '<' { char_literal44=(Token)match(input,LT,FOLLOW_LT_in_condExpr627); char_literal44_tree = (Object)adaptor.create(char_literal44); root_0 = (Object)adaptor.becomeRoot(char_literal44_tree, root_0); } break; } pushFollow(FOLLOW_aexpr_in_condExpr631); aexpr45=aexpr(); state._fsp--; adaptor.addChild(root_0, aexpr45.getTree()); } break; } } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "condExpr" public static class aexpr_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "aexpr" // SimpleC.g:81:1: aexpr : atom ( '+' atom )* ; public final SimpleCParser.aexpr_return aexpr() throws RecognitionException { SimpleCParser.aexpr_return retval = new SimpleCParser.aexpr_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal47=null; SimpleCParser.atom_return atom46 = null; SimpleCParser.atom_return atom48 = null; Object char_literal47_tree=null; try { // SimpleC.g:82:5: ( atom ( '+' atom )* ) // SimpleC.g:82:9: atom ( '+' atom )* { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_atom_in_aexpr653); atom46=atom(); state._fsp--; adaptor.addChild(root_0, atom46.getTree()); // SimpleC.g:82:14: ( '+' atom )* loop10: do { int alt10=2; int LA10_0 = input.LA(1); if ( (LA10_0==PLUS) ) { alt10=1; } switch (alt10) { case 1 : // SimpleC.g:82:16: '+' atom { char_literal47=(Token)match(input,PLUS,FOLLOW_PLUS_in_aexpr657); char_literal47_tree = (Object)adaptor.create(char_literal47); root_0 = (Object)adaptor.becomeRoot(char_literal47_tree, root_0); pushFollow(FOLLOW_atom_in_aexpr660); atom48=atom(); state._fsp--; adaptor.addChild(root_0, atom48.getTree()); } break; default : break loop10; } } while (true); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "aexpr" public static class atom_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "atom" // SimpleC.g:85:1: atom : ( ID | INT | '(' expr ')' -> expr ); public final SimpleCParser.atom_return atom() throws RecognitionException { SimpleCParser.atom_return retval = new SimpleCParser.atom_return(); retval.start = input.LT(1); Object root_0 = null; Token ID49=null; Token INT50=null; Token char_literal51=null; Token char_literal53=null; SimpleCParser.expr_return expr52 = null; Object ID49_tree=null; Object INT50_tree=null; Object char_literal51_tree=null; Object char_literal53_tree=null; RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22"); RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { // SimpleC.g:86:5: ( ID | INT | '(' expr ')' -> expr ) int alt11=3; switch ( input.LA(1) ) { case ID: { alt11=1; } break; case INT: { alt11=2; } break; case 22: { alt11=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 11, 0, input); throw nvae; } switch (alt11) { case 1 : // SimpleC.g:86:7: ID { root_0 = (Object)adaptor.nil(); ID49=(Token)match(input,ID,FOLLOW_ID_in_atom680); ID49_tree = (Object)adaptor.create(ID49); adaptor.addChild(root_0, ID49_tree); } break; case 2 : // SimpleC.g:87:7: INT { root_0 = (Object)adaptor.nil(); INT50=(Token)match(input,INT,FOLLOW_INT_in_atom694); INT50_tree = (Object)adaptor.create(INT50); adaptor.addChild(root_0, INT50_tree); } break; case 3 : // SimpleC.g:88:7: '(' expr ')' { char_literal51=(Token)match(input,22,FOLLOW_22_in_atom708); stream_22.add(char_literal51); pushFollow(FOLLOW_expr_in_atom710); expr52=expr(); state._fsp--; stream_expr.add(expr52.getTree()); char_literal53=(Token)match(input,24,FOLLOW_24_in_atom712); stream_24.add(char_literal53); // AST REWRITE // elements: expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 88:20: -> expr { adaptor.addChild(root_0, stream_expr.nextTree()); } retval.tree = root_0; } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "atom" // Delegated rules protected DFA2 dfa2 = new DFA2(this); static final String DFA2_eotS = "\15\uffff"; static final String DFA2_eofS = "\15\uffff"; static final String DFA2_minS = "\2\12\1\25\1\12\1\uffff\1\12\1\25\1\27\2\uffff\2\12\1\27"; static final String DFA2_maxS = "\1\20\1\12\1\26\1\30\1\uffff\1\12\1\31\1\30\2\uffff\1\20\1\12\1"+ "\30"; static final String DFA2_acceptS = "\4\uffff\1\1\3\uffff\1\3\1\2\3\uffff"; static final String DFA2_specialS = "\15\uffff}>"; static final String[] DFA2_transitionS = { "\1\1\3\uffff\3\1", "\1\2", "\1\4\1\3", "\1\5\3\uffff\3\5\7\uffff\1\6", "", "\1\7", "\1\11\3\uffff\1\10", "\1\12\1\6", "", "", "\1\13\3\uffff\3\13", "\1\14", "\1\12\1\6" }; static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS); static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS); static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS); static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS); static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS); static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS); static final short[][] DFA2_transition; static { int numStates = DFA2_transitionS.length; DFA2_transition = new short[numStates][]; for (int i=0; i<numStates; i++) { DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]); } } class DFA2 extends DFA { public DFA2(BaseRecognizer recognizer) { this.recognizer = recognizer; this.decisionNumber = 2; this.eot = DFA2_eot; this.eof = DFA2_eof; this.min = DFA2_min; this.max = DFA2_max; this.accept = DFA2_accept; this.special = DFA2_special; this.transition = DFA2_transition; } public String getDescription() { return "20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );"; } } public static final BitSet FOLLOW_declaration_in_program85 = new BitSet(new long[]{0x000000000001C402L}); public static final BitSet FOLLOW_variable_in_declaration105 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_functionHeader_in_declaration115 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_declaration117 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_functionHeader_in_declaration135 = new BitSet(new long[]{0x0000000002000000L}); public static final BitSet FOLLOW_block_in_declaration137 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_type_in_variable166 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_declarator_in_variable168 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_variable170 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_declarator199 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_type_in_functionHeader219 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_ID_in_functionHeader221 = new BitSet(new long[]{0x0000000000400000L}); public static final BitSet FOLLOW_22_in_functionHeader223 = new BitSet(new long[]{0x000000000101C400L}); public static final BitSet FOLLOW_formalParameter_in_functionHeader227 = new BitSet(new long[]{0x0000000001800000L}); public static final BitSet FOLLOW_23_in_functionHeader231 = new BitSet(new long[]{0x000000000001C400L}); public static final BitSet FOLLOW_formalParameter_in_functionHeader233 = new BitSet(new long[]{0x0000000001800000L}); public static final BitSet FOLLOW_24_in_functionHeader241 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_type_in_formalParameter281 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_declarator_in_formalParameter283 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_type0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_25_in_block376 = new BitSet(new long[]{0x000000000661F400L}); public static final BitSet FOLLOW_variable_in_block390 = new BitSet(new long[]{0x000000000661F400L}); public static final BitSet FOLLOW_stat_in_block405 = new BitSet(new long[]{0x0000000006603400L}); public static final BitSet FOLLOW_26_in_block416 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_forStat_in_stat449 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_expr_in_stat457 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_stat459 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_block_in_stat468 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_assignStat_in_stat476 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_stat478 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_21_in_stat487 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FOR_in_forStat507 = new BitSet(new long[]{0x0000000000400000L}); public static final BitSet FOLLOW_22_in_forStat509 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_assignStat_in_forStat513 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_forStat515 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_expr_in_forStat517 = new BitSet(new long[]{0x0000000000200000L}); public static final BitSet FOLLOW_21_in_forStat519 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_assignStat_in_forStat523 = new BitSet(new long[]{0x0000000001000000L}); public static final BitSet FOLLOW_24_in_forStat525 = new BitSet(new long[]{0x0000000002000000L}); public static final BitSet FOLLOW_block_in_forStat527 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_assignStat570 = new BitSet(new long[]{0x0000000000000800L}); public static final BitSet FOLLOW_EQ_in_assignStat572 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_expr_in_assignStat574 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_condExpr_in_expr598 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_aexpr_in_condExpr617 = new BitSet(new long[]{0x0000000000060002L}); public static final BitSet FOLLOW_EQEQ_in_condExpr622 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_LT_in_condExpr627 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_aexpr_in_condExpr631 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_atom_in_aexpr653 = new BitSet(new long[]{0x0000000000080002L}); public static final BitSet FOLLOW_PLUS_in_aexpr657 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_atom_in_aexpr660 = new BitSet(new long[]{0x0000000000080002L}); public static final BitSet FOLLOW_ID_in_atom680 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INT_in_atom694 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_22_in_atom708 = new BitSet(new long[]{0x0000000000401400L}); public static final BitSet FOLLOW_expr_in_atom710 = new BitSet(new long[]{0x0000000001000000L}); public static final BitSet FOLLOW_24_in_atom712 = new BitSet(new long[]{0x0000000000000002L}); }