1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// $ANTLR 3.2 Aug 13, 2010 14:19:31 SimpleC.g 2010-08-13 14:29:19
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport org.antlr.runtime.*;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.util.Stack;
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.util.List;
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.util.ArrayList;
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport org.antlr.runtime.tree.*;
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic class SimpleCParser extends Parser {
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final String[] tokenNames = new String[] {
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "<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", "';'", "'('", "','", "')'", "'{'", "'}'"
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int LT=18;
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__26=26;
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__25=25;
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__24=24;
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__23=23;
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__22=22;
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int T__21=21;
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int CHAR=15;
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int FOR=13;
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int FUNC_HDR=6;
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int INT=12;
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int FUNC_DEF=8;
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int INT_TYPE=14;
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int ID=10;
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int EOF=-1;
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int FUNC_DECL=7;
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int ARG_DEF=5;
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int WS=20;
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int BLOCK=9;
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int PLUS=19;
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int VOID=16;
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int EQ=11;
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int VAR_DEF=4;
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final int EQEQ=17;
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // delegates
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // delegators
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public SimpleCParser(TokenStream input) {
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this(input, new RecognizerSharedState());
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public SimpleCParser(TokenStream input, RecognizerSharedState state) {
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            super(input, state);
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public void setTreeAdaptor(TreeAdaptor adaptor) {
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        this.adaptor = adaptor;
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public TreeAdaptor getTreeAdaptor() {
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return adaptor;
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public String[] getTokenNames() { return SimpleCParser.tokenNames; }
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public String getGrammarFileName() { return "SimpleC.g"; }
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class program_return extends ParserRuleReturnScope {
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "program"
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:16:1: program : ( declaration )+ ;
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.program_return program() throws RecognitionException {
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.program_return retval = new SimpleCParser.program_return();
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.declaration_return declaration1 = null;
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:17:5: ( ( declaration )+ )
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:17:9: ( declaration )+
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:17:9: ( declaration )+
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int cnt1=0;
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            loop1:
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            do {
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int alt1=2;
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int LA1_0 = input.LA(1);
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( (LA1_0==ID||(LA1_0>=INT_TYPE && LA1_0<=VOID)) ) {
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt1=1;
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                switch (alt1) {
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	case 1 :
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    // SimpleC.g:17:9: declaration
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    {
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    pushFollow(FOLLOW_declaration_in_program85);
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    declaration1=declaration();
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    state._fsp--;
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    adaptor.addChild(root_0, declaration1.getTree());
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    }
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break;
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	default :
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    if ( cnt1 >= 1 ) break loop1;
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        EarlyExitException eee =
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            new EarlyExitException(1, input);
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        throw eee;
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                cnt1++;
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            } while (true);
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "program"
143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class declaration_return extends ParserRuleReturnScope {
145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "declaration"
150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );
151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.declaration_return declaration() throws RecognitionException {
152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.declaration_return retval = new SimpleCParser.declaration_return();
153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal4=null;
158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.variable_return variable2 = null;
159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.functionHeader_return functionHeader3 = null;
161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.functionHeader_return functionHeader5 = null;
163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.block_return block6 = null;
165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal4_tree=null;
168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21");
169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_functionHeader=new RewriteRuleSubtreeStream(adaptor,"rule functionHeader");
170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:21:5: ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) )
173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int alt2=3;
174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            alt2 = dfa2.predict(input);
175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch (alt2) {
176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 1 :
177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:21:9: variable
178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_variable_in_declaration105);
182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    variable2=variable();
183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, variable2.getTree());
187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 2 :
191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:22:9: functionHeader ';'
192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_functionHeader_in_declaration115);
194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    functionHeader3=functionHeader();
195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_functionHeader.add(functionHeader3.getTree());
199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal4=(Token)match(input,21,FOLLOW_21_in_declaration117);
200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_21.add(char_literal4);
201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // AST REWRITE
205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // elements: functionHeader
206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token labels:
207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule labels: retval
208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token list labels:
209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule list labels:
210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // wildcard labels:
211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // 22:28: -> ^( FUNC_DECL functionHeader )
216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        // SimpleC.g:22:31: ^( FUNC_DECL functionHeader )
218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        {
219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        Object root_1 = (Object)adaptor.nil();
220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_DECL, "FUNC_DECL"), root_1);
221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_1, stream_functionHeader.nextTree());
223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_0, root_1);
225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        }
226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 3 :
233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:23:9: functionHeader block
234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_functionHeader_in_declaration135);
236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    functionHeader5=functionHeader();
237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_functionHeader.add(functionHeader5.getTree());
241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_block_in_declaration137);
242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    block6=block();
243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_block.add(block6.getTree());
247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // AST REWRITE
250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // elements: block, functionHeader
251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token labels:
252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule labels: retval
253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token list labels:
254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule list labels:
255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // wildcard labels:
256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // 23:30: -> ^( FUNC_DEF functionHeader block )
261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        // SimpleC.g:23:33: ^( FUNC_DEF functionHeader block )
263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        {
264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        Object root_1 = (Object)adaptor.nil();
265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_DEF, "FUNC_DEF"), root_1);
266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_1, stream_functionHeader.nextTree());
268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_1, stream_block.nextTree());
269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_0, root_1);
271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        }
272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "declaration"
297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class variable_return extends ParserRuleReturnScope {
299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "variable"
304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:26:1: variable : type declarator ';' -> ^( VAR_DEF type declarator ) ;
305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.variable_return variable() throws RecognitionException {
306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.variable_return retval = new SimpleCParser.variable_return();
307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal9=null;
312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.type_return type7 = null;
313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.declarator_return declarator8 = null;
315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal9_tree=null;
318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21");
319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:27:5: ( type declarator ';' -> ^( VAR_DEF type declarator ) )
323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:27:9: type declarator ';'
324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_type_in_variable166);
326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            type7=type();
327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_type.add(type7.getTree());
331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_declarator_in_variable168);
332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            declarator8=declarator();
333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_declarator.add(declarator8.getTree());
337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal9=(Token)match(input,21,FOLLOW_21_in_variable170);
338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_21.add(char_literal9);
339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: declarator, type
344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval
346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 27:29: -> ^( VAR_DEF type declarator )
354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:27:32: ^( VAR_DEF type declarator )
356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VAR_DEF, "VAR_DEF"), root_1);
359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_type.nextTree());
361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_declarator.nextTree());
362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "variable"
388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class declarator_return extends ParserRuleReturnScope {
390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "declarator"
395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:30:1: declarator : ID ;
396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.declarator_return declarator() throws RecognitionException {
397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.declarator_return retval = new SimpleCParser.declarator_return();
398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token ID10=null;
403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object ID10_tree=null;
405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:31:5: ( ID )
408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:31:9: ID
409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ID10=(Token)match(input,ID,FOLLOW_ID_in_declarator199);
413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ID10_tree = (Object)adaptor.create(ID10);
414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.addChild(root_0, ID10_tree);
415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "declarator"
436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class functionHeader_return extends ParserRuleReturnScope {
438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "functionHeader"
443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:34:1: functionHeader : type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) ;
444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.functionHeader_return functionHeader() throws RecognitionException {
445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.functionHeader_return retval = new SimpleCParser.functionHeader_return();
446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token ID12=null;
451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal13=null;
452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal15=null;
453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal17=null;
454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.type_return type11 = null;
455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.formalParameter_return formalParameter14 = null;
457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.formalParameter_return formalParameter16 = null;
459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object ID12_tree=null;
462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal13_tree=null;
463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal15_tree=null;
464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal17_tree=null;
465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22");
467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_23=new RewriteRuleTokenStream(adaptor,"token 23");
468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24");
469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_formalParameter=new RewriteRuleSubtreeStream(adaptor,"rule formalParameter");
470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:35:5: ( type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) )
473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:35:9: type ID '(' ( formalParameter ( ',' formalParameter )* )? ')'
474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_type_in_functionHeader219);
476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            type11=type();
477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_type.add(type11.getTree());
481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ID12=(Token)match(input,ID,FOLLOW_ID_in_functionHeader221);
482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_ID.add(ID12);
483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal13=(Token)match(input,22,FOLLOW_22_in_functionHeader223);
485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_22.add(char_literal13);
486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:35:21: ( formalParameter ( ',' formalParameter )* )?
488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int alt4=2;
489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int LA4_0 = input.LA(1);
490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            if ( (LA4_0==ID||(LA4_0>=INT_TYPE && LA4_0<=VOID)) ) {
492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt4=1;
493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch (alt4) {
495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 1 :
496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:35:23: formalParameter ( ',' formalParameter )*
497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_formalParameter_in_functionHeader227);
499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    formalParameter14=formalParameter();
500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_formalParameter.add(formalParameter14.getTree());
504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:35:39: ( ',' formalParameter )*
505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    loop3:
506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    do {
507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        int alt3=2;
508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        int LA3_0 = input.LA(1);
509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        if ( (LA3_0==23) ) {
511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            alt3=1;
512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        }
513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        switch (alt3) {
516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	case 1 :
517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    // SimpleC.g:35:41: ',' formalParameter
518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    {
519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    char_literal15=(Token)match(input,23,FOLLOW_23_in_functionHeader231);
520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    stream_23.add(char_literal15);
521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    pushFollow(FOLLOW_formalParameter_in_functionHeader233);
523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    formalParameter16=formalParameter();
524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    state._fsp--;
526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    stream_formalParameter.add(formalParameter16.getTree());
528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    }
530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    break;
531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	default :
533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    	    break loop3;
534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        }
535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    } while (true);
536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal17=(Token)match(input,24,FOLLOW_24_in_functionHeader241);
544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_24.add(char_literal17);
545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: ID, formalParameter, type
550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval
552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 36:9: -> ^( FUNC_HDR type ID ( formalParameter )+ )
560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:36:12: ^( FUNC_HDR type ID ( formalParameter )+ )
562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC_HDR, "FUNC_HDR"), root_1);
565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_type.nextTree());
567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_ID.nextNode());
568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( !(stream_formalParameter.hasNext()) ) {
569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    throw new RewriteEarlyExitException();
570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                while ( stream_formalParameter.hasNext() ) {
572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_1, stream_formalParameter.nextTree());
573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                stream_formalParameter.reset();
576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "functionHeader"
602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class formalParameter_return extends ParserRuleReturnScope {
604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "formalParameter"
609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:39:1: formalParameter : type declarator -> ^( ARG_DEF type declarator ) ;
610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.formalParameter_return formalParameter() throws RecognitionException {
611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.formalParameter_return retval = new SimpleCParser.formalParameter_return();
612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.type_return type18 = null;
617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.declarator_return declarator19 = null;
619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type");
623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:40:5: ( type declarator -> ^( ARG_DEF type declarator ) )
625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:40:9: type declarator
626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_type_in_formalParameter281);
628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            type18=type();
629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_type.add(type18.getTree());
633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_declarator_in_formalParameter283);
634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            declarator19=declarator();
635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_declarator.add(declarator19.getTree());
639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: declarator, type
643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval
645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 40:25: -> ^( ARG_DEF type declarator )
653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:40:28: ^( ARG_DEF type declarator )
655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARG_DEF, "ARG_DEF"), root_1);
658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_type.nextTree());
660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_declarator.nextTree());
661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
662324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
663324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
664324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
665324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
666324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
667324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
668324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
669324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
670324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
671324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
672324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
673324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
674324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
675324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
676324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
677324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
678324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
679324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
680324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
681324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
682324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
683324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
684324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
685324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
686324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "formalParameter"
687324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
688324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class type_return extends ParserRuleReturnScope {
689324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
690324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
691324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
692324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
693324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "type"
694324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:43:1: type : ( 'int' | 'char' | 'void' | ID );
695324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.type_return type() throws RecognitionException {
696324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.type_return retval = new SimpleCParser.type_return();
697324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
698324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
699324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
700324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
701324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token set20=null;
702324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
703324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object set20_tree=null;
704324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
705324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
706324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:44:5: ( 'int' | 'char' | 'void' | ID )
707324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:
708324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
709324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
710324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
711324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            set20=(Token)input.LT(1);
712324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            if ( input.LA(1)==ID||(input.LA(1)>=INT_TYPE && input.LA(1)<=VOID) ) {
713324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                input.consume();
714324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, (Object)adaptor.create(set20));
715324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                state.errorRecovery=false;
716324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
717324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            else {
718324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                MismatchedSetException mse = new MismatchedSetException(null,input);
719324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                throw mse;
720324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
721324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
722324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
723324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
724324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
725324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
726324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
727324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
728324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
729324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
730324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
731324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
732324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
733324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
734324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
735324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
736324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
737324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
738324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
739324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
740324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
741324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "type"
742324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
743324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class block_return extends ParserRuleReturnScope {
744324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
745324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
746324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
747324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
748324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "block"
749324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:50:1: block : lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ;
750324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.block_return block() throws RecognitionException {
751324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.block_return retval = new SimpleCParser.block_return();
752324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
753324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
754324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
755324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
756324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token lc=null;
757324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal23=null;
758324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.variable_return variable21 = null;
759324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
760324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.stat_return stat22 = null;
761324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
762324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
763324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object lc_tree=null;
764324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal23_tree=null;
765324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25");
766324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_26=new RewriteRuleTokenStream(adaptor,"token 26");
767324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_variable=new RewriteRuleSubtreeStream(adaptor,"rule variable");
768324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_stat=new RewriteRuleSubtreeStream(adaptor,"rule stat");
769324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
770324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:51:5: (lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) )
771324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:51:9: lc= '{' ( variable )* ( stat )* '}'
772324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
773324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            lc=(Token)match(input,25,FOLLOW_25_in_block376);
774324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_25.add(lc);
775324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
776324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:52:13: ( variable )*
777324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            loop5:
778324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            do {
779324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int alt5=2;
780324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int LA5_0 = input.LA(1);
781324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
782324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( (LA5_0==ID) ) {
783324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    int LA5_2 = input.LA(2);
784324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
785324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    if ( (LA5_2==ID) ) {
786324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        alt5=1;
787324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
788324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
789324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
790324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
791324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                else if ( ((LA5_0>=INT_TYPE && LA5_0<=VOID)) ) {
792324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt5=1;
793324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
794324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
795324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
796324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                switch (alt5) {
797324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	case 1 :
798324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    // SimpleC.g:52:13: variable
799324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    {
800324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    pushFollow(FOLLOW_variable_in_block390);
801324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    variable21=variable();
802324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
803324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    state._fsp--;
804324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
805324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    stream_variable.add(variable21.getTree());
806324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
807324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    }
808324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break;
809324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
810324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	default :
811324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break loop5;
812324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
813324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            } while (true);
814324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
815324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:53:13: ( stat )*
816324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            loop6:
817324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            do {
818324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int alt6=2;
819324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int LA6_0 = input.LA(1);
820324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
821324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( (LA6_0==ID||(LA6_0>=INT && LA6_0<=FOR)||(LA6_0>=21 && LA6_0<=22)||LA6_0==25) ) {
822324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt6=1;
823324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
824324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
825324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
826324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                switch (alt6) {
827324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	case 1 :
828324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    // SimpleC.g:53:13: stat
829324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    {
830324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    pushFollow(FOLLOW_stat_in_block405);
831324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    stat22=stat();
832324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
833324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    state._fsp--;
834324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
835324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    stream_stat.add(stat22.getTree());
836324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
837324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    }
838324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break;
839324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
840324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	default :
841324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break loop6;
842324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
843324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            } while (true);
844324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
845324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal23=(Token)match(input,26,FOLLOW_26_in_block416);
846324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_26.add(char_literal23);
847324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
848324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
849324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
850324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
851324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: stat, variable
852324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
853324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval
854324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
855324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
856324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
857324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
858324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
859324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
860324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
861324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 55:9: -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* )
862324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
863324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:55:12: ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* )
864324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
865324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
866324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(BLOCK, lc, @"BLOCK"), root_1);
867324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
868324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:55:34: ( variable )*
869324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                while ( stream_variable.hasNext() ) {
870324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_1, stream_variable.nextTree());
871324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
872324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
873324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                stream_variable.reset();
874324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:55:44: ( stat )*
875324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                while ( stream_stat.hasNext() ) {
876324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_1, stream_stat.nextTree());
877324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
878324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
879324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                stream_stat.reset();
880324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
881324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
882324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
883324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
884324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
885324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
886324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
887324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
888324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
889324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
890324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
891324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
892324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
893324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
894324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
895324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
896324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
897324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
898324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
899324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
900324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
901324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
902324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
903324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
904324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
905324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "block"
906324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
907324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class stat_return extends ParserRuleReturnScope {
908324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
909324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
910324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
911324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
912324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "stat"
913324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:58:1: stat : ( forStat | expr ';' | block | assignStat ';' | ';' );
914324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.stat_return stat() throws RecognitionException {
915324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.stat_return retval = new SimpleCParser.stat_return();
916324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
917324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
918324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
919324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
920324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal26=null;
921324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal29=null;
922324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal30=null;
923324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.forStat_return forStat24 = null;
924324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
925324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.expr_return expr25 = null;
926324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
927324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.block_return block27 = null;
928324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
929324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.assignStat_return assignStat28 = null;
930324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
931324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
932324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal26_tree=null;
933324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal29_tree=null;
934324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal30_tree=null;
935324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
936324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
937324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:58:5: ( forStat | expr ';' | block | assignStat ';' | ';' )
938324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int alt7=5;
939324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch ( input.LA(1) ) {
940324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case FOR:
941324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
942324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt7=1;
943324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
944324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
945324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case ID:
946324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
947324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int LA7_2 = input.LA(2);
948324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
949324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( (LA7_2==EQ) ) {
950324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt7=4;
951324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
952324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                else if ( ((LA7_2>=EQEQ && LA7_2<=PLUS)||LA7_2==21) ) {
953324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt7=2;
954324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
955324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                else {
956324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    NoViableAltException nvae =
957324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        new NoViableAltException("", 7, 2, input);
958324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
959324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    throw nvae;
960324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
961324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
962324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
963324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case INT:
964324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case 22:
965324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
966324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt7=2;
967324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
968324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
969324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case 25:
970324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
971324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt7=3;
972324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
973324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
974324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case 21:
975324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
976324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt7=5;
977324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
978324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
979324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            default:
980324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                NoViableAltException nvae =
981324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    new NoViableAltException("", 7, 0, input);
982324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
983324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                throw nvae;
984324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
985324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
986324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch (alt7) {
987324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 1 :
988324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:58:7: forStat
989324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
990324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
991324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
992324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_forStat_in_stat449);
993324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    forStat24=forStat();
994324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
995324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
996324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
997324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, forStat24.getTree());
998324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
999324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1000324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1001324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 2 :
1002324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:59:7: expr ';'
1003324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1004324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1005324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1006324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_expr_in_stat457);
1007324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    expr25=expr();
1008324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1009324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
1010324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1011324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, expr25.getTree());
1012324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal26=(Token)match(input,21,FOLLOW_21_in_stat459);
1013324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1014324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1015324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1016324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 3 :
1017324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:60:7: block
1018324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1019324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1020324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1021324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_block_in_stat468);
1022324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    block27=block();
1023324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1024324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
1025324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1026324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, block27.getTree());
1027324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1028324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1029324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1030324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 4 :
1031324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:61:7: assignStat ';'
1032324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1033324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1034324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1035324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_assignStat_in_stat476);
1036324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    assignStat28=assignStat();
1037324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1038324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
1039324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1040324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, assignStat28.getTree());
1041324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal29=(Token)match(input,21,FOLLOW_21_in_stat478);
1042324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1043324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1044324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1045324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 5 :
1046324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:62:7: ';'
1047324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1048324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1049324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1050324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal30=(Token)match(input,21,FOLLOW_21_in_stat487);
1051324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1052324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1053324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1054324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1055324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1056324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1057324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1058324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1059324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1060324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1061324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1062324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1063324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1064324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1065324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1066324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1067324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1068324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1069324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1070324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1071324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1072324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "stat"
1073324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1074324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class forStat_return extends ParserRuleReturnScope {
1075324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1076324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1077324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1078324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1079324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "forStat"
1080324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:65:1: forStat : 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ;
1081324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.forStat_return forStat() throws RecognitionException {
1082324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.forStat_return retval = new SimpleCParser.forStat_return();
1083324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1084324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1085324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1086324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1087324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token string_literal31=null;
1088324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal32=null;
1089324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal33=null;
1090324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal35=null;
1091324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal36=null;
1092324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.assignStat_return start = null;
1093324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1094324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.assignStat_return next = null;
1095324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1096324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.expr_return expr34 = null;
1097324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1098324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.block_return block37 = null;
1099324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object string_literal31_tree=null;
1102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal32_tree=null;
1103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal33_tree=null;
1104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal35_tree=null;
1105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal36_tree=null;
1106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_21=new RewriteRuleTokenStream(adaptor,"token 21");
1107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_FOR=new RewriteRuleTokenStream(adaptor,"token FOR");
1108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22");
1109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24");
1110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_assignStat=new RewriteRuleSubtreeStream(adaptor,"rule assignStat");
1111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
1112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
1113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:66:5: ( 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) )
1115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:66:9: 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block
1116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            string_literal31=(Token)match(input,FOR,FOLLOW_FOR_in_forStat507);
1118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_FOR.add(string_literal31);
1119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal32=(Token)match(input,22,FOLLOW_22_in_forStat509);
1121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_22.add(char_literal32);
1122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_assignStat_in_forStat513);
1124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            start=assignStat();
1125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_assignStat.add(start.getTree());
1129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal33=(Token)match(input,21,FOLLOW_21_in_forStat515);
1130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_21.add(char_literal33);
1131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_expr_in_forStat517);
1133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            expr34=expr();
1134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_expr.add(expr34.getTree());
1138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal35=(Token)match(input,21,FOLLOW_21_in_forStat519);
1139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_21.add(char_literal35);
1140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_assignStat_in_forStat523);
1142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            next=assignStat();
1143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_assignStat.add(next.getTree());
1147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            char_literal36=(Token)match(input,24,FOLLOW_24_in_forStat525);
1148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_24.add(char_literal36);
1149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_block_in_forStat527);
1151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            block37=block();
1152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_block.add(block37.getTree());
1156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
1159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: next, start, FOR, block, expr
1160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
1161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval, start, next
1162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
1163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
1164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
1165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
1166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_start=new RewriteRuleSubtreeStream(adaptor,"rule start",start!=null?start.tree:null);
1168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_next=new RewriteRuleSubtreeStream(adaptor,"rule next",next!=null?next.tree:null);
1169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
1171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 67:9: -> ^( 'for' $start expr $next block )
1172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:67:12: ^( 'for' $start expr $next block )
1174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
1175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
1176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot(stream_FOR.nextNode(), root_1);
1177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_start.nextTree());
1179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_expr.nextTree());
1180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_next.nextTree());
1181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_block.nextTree());
1182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
1184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
1189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "forStat"
1208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class assignStat_return extends ParserRuleReturnScope {
1210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "assignStat"
1215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:70:1: assignStat : ID EQ expr -> ^( EQ ID expr ) ;
1216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.assignStat_return assignStat() throws RecognitionException {
1217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.assignStat_return retval = new SimpleCParser.assignStat_return();
1218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token ID38=null;
1223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token EQ39=null;
1224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.expr_return expr40 = null;
1225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object ID38_tree=null;
1228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object EQ39_tree=null;
1229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_EQ=new RewriteRuleTokenStream(adaptor,"token EQ");
1230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
1231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
1232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:71:5: ( ID EQ expr -> ^( EQ ID expr ) )
1234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:71:9: ID EQ expr
1235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ID38=(Token)match(input,ID,FOLLOW_ID_in_assignStat570);
1237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_ID.add(ID38);
1238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            EQ39=(Token)match(input,EQ,FOLLOW_EQ_in_assignStat572);
1240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_EQ.add(EQ39);
1241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_expr_in_assignStat574);
1243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            expr40=expr();
1244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            stream_expr.add(expr40.getTree());
1248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // AST REWRITE
1251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // elements: EQ, ID, expr
1252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token labels:
1253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule labels: retval
1254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // token list labels:
1255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // rule list labels:
1256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // wildcard labels:
1257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
1258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
1261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // 71:20: -> ^( EQ ID expr )
1262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                // SimpleC.g:71:23: ^( EQ ID expr )
1264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
1265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                Object root_1 = (Object)adaptor.nil();
1266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                root_1 = (Object)adaptor.becomeRoot(stream_EQ.nextNode(), root_1);
1267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_ID.nextNode());
1269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_1, stream_expr.nextTree());
1270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                adaptor.addChild(root_0, root_1);
1272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = root_0;
1277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "assignStat"
1296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class expr_return extends ParserRuleReturnScope {
1298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "expr"
1303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:74:1: expr : condExpr ;
1304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.expr_return expr() throws RecognitionException {
1305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.expr_return retval = new SimpleCParser.expr_return();
1306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.condExpr_return condExpr41 = null;
1311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:74:5: ( condExpr )
1316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:74:9: condExpr
1317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
1319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_condExpr_in_expr598);
1321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            condExpr41=condExpr();
1322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.addChild(root_0, condExpr41.getTree());
1326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "expr"
1346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class condExpr_return extends ParserRuleReturnScope {
1348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "condExpr"
1353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:77:1: condExpr : aexpr ( ( '==' | '<' ) aexpr )? ;
1354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.condExpr_return condExpr() throws RecognitionException {
1355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.condExpr_return retval = new SimpleCParser.condExpr_return();
1356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token string_literal43=null;
1361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal44=null;
1362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.aexpr_return aexpr42 = null;
1363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.aexpr_return aexpr45 = null;
1365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object string_literal43_tree=null;
1368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal44_tree=null;
1369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:78:5: ( aexpr ( ( '==' | '<' ) aexpr )? )
1372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:78:9: aexpr ( ( '==' | '<' ) aexpr )?
1373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
1375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_aexpr_in_condExpr617);
1377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            aexpr42=aexpr();
1378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.addChild(root_0, aexpr42.getTree());
1382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:78:15: ( ( '==' | '<' ) aexpr )?
1383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int alt9=2;
1384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int LA9_0 = input.LA(1);
1385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            if ( ((LA9_0>=EQEQ && LA9_0<=LT)) ) {
1387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt9=1;
1388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch (alt9) {
1390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 1 :
1391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:78:17: ( '==' | '<' ) aexpr
1392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:78:17: ( '==' | '<' )
1394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    int alt8=2;
1395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    int LA8_0 = input.LA(1);
1396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    if ( (LA8_0==EQEQ) ) {
1398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        alt8=1;
1399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    else if ( (LA8_0==LT) ) {
1401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        alt8=2;
1402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    else {
1404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        NoViableAltException nvae =
1405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            new NoViableAltException("", 8, 0, input);
1406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        throw nvae;
1408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    switch (alt8) {
1410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        case 1 :
1411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            // SimpleC.g:78:18: '=='
1412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            {
1413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            string_literal43=(Token)match(input,EQEQ,FOLLOW_EQEQ_in_condExpr622);
1414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            string_literal43_tree = (Object)adaptor.create(string_literal43);
1415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            root_0 = (Object)adaptor.becomeRoot(string_literal43_tree, root_0);
1416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            }
1419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            break;
1420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        case 2 :
1421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            // SimpleC.g:78:26: '<'
1422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            {
1423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            char_literal44=(Token)match(input,LT,FOLLOW_LT_in_condExpr627);
1424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            char_literal44_tree = (Object)adaptor.create(char_literal44);
1425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            root_0 = (Object)adaptor.becomeRoot(char_literal44_tree, root_0);
1426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            }
1429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            break;
1430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_aexpr_in_condExpr631);
1434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    aexpr45=aexpr();
1435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
1437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, aexpr45.getTree());
1439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "condExpr"
1465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class aexpr_return extends ParserRuleReturnScope {
1467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "aexpr"
1472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:81:1: aexpr : atom ( '+' atom )* ;
1473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.aexpr_return aexpr() throws RecognitionException {
1474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.aexpr_return retval = new SimpleCParser.aexpr_return();
1475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal47=null;
1480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.atom_return atom46 = null;
1481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.atom_return atom48 = null;
1483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal47_tree=null;
1486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:82:5: ( atom ( '+' atom )* )
1489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:82:9: atom ( '+' atom )*
1490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
1491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            root_0 = (Object)adaptor.nil();
1492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            pushFollow(FOLLOW_atom_in_aexpr653);
1494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            atom46=atom();
1495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            state._fsp--;
1497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.addChild(root_0, atom46.getTree());
1499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:82:14: ( '+' atom )*
1500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            loop10:
1501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            do {
1502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int alt10=2;
1503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                int LA10_0 = input.LA(1);
1504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                if ( (LA10_0==PLUS) ) {
1506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    alt10=1;
1507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                switch (alt10) {
1511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	case 1 :
1512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    // SimpleC.g:82:16: '+' atom
1513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    {
1514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    char_literal47=(Token)match(input,PLUS,FOLLOW_PLUS_in_aexpr657);
1515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    char_literal47_tree = (Object)adaptor.create(char_literal47);
1516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    root_0 = (Object)adaptor.becomeRoot(char_literal47_tree, root_0);
1517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    pushFollow(FOLLOW_atom_in_aexpr660);
1519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    atom48=atom();
1520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    state._fsp--;
1522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    adaptor.addChild(root_0, atom48.getTree());
1524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    }
1526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break;
1527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	default :
1529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            	    break loop10;
1530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            } while (true);
1532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "aexpr"
1553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static class atom_return extends ParserRuleReturnScope {
1555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object tree;
1556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public Object getTree() { return tree; }
1557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR start "atom"
1560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // SimpleC.g:85:1: atom : ( ID | INT | '(' expr ')' -> expr );
1561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public final SimpleCParser.atom_return atom() throws RecognitionException {
1562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.atom_return retval = new SimpleCParser.atom_return();
1563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        retval.start = input.LT(1);
1564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object root_0 = null;
1566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token ID49=null;
1568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token INT50=null;
1569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal51=null;
1570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Token char_literal53=null;
1571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SimpleCParser.expr_return expr52 = null;
1572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object ID49_tree=null;
1575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object INT50_tree=null;
1576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal51_tree=null;
1577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        Object char_literal53_tree=null;
1578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_22=new RewriteRuleTokenStream(adaptor,"token 22");
1579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24");
1580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
1581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
1582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            // SimpleC.g:86:5: ( ID | INT | '(' expr ')' -> expr )
1583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            int alt11=3;
1584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch ( input.LA(1) ) {
1585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case ID:
1586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
1587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt11=1;
1588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
1590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case INT:
1591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
1592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt11=2;
1593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
1595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            case 22:
1596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                {
1597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                alt11=3;
1598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                }
1599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                break;
1600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            default:
1601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                NoViableAltException nvae =
1602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    new NoViableAltException("", 11, 0, input);
1603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                throw nvae;
1605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            switch (alt11) {
1608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 1 :
1609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:86:7: ID
1610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    ID49=(Token)match(input,ID,FOLLOW_ID_in_atom680);
1614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    ID49_tree = (Object)adaptor.create(ID49);
1615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, ID49_tree);
1616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 2 :
1621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:87:7: INT
1622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    INT50=(Token)match(input,INT,FOLLOW_INT_in_atom694);
1626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    INT50_tree = (Object)adaptor.create(INT50);
1627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    adaptor.addChild(root_0, INT50_tree);
1628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                case 3 :
1633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // SimpleC.g:88:7: '(' expr ')'
1634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal51=(Token)match(input,22,FOLLOW_22_in_atom708);
1636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_22.add(char_literal51);
1637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    pushFollow(FOLLOW_expr_in_atom710);
1639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    expr52=expr();
1640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    state._fsp--;
1642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_expr.add(expr52.getTree());
1644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    char_literal53=(Token)match(input,24,FOLLOW_24_in_atom712);
1645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    stream_24.add(char_literal53);
1646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // AST REWRITE
1650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // elements: expr
1651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token labels:
1652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule labels: retval
1653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // token list labels:
1654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // rule list labels:
1655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // wildcard labels:
1656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
1657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    root_0 = (Object)adaptor.nil();
1660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    // 88:20: -> expr
1661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    {
1662324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                        adaptor.addChild(root_0, stream_expr.nextTree());
1663324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1664324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1665324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1666324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    retval.tree = root_0;
1667324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    }
1668324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                    break;
1669324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1670324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
1671324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.stop = input.LT(-1);
1672324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1673324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1674324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1675324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1676324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1677324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        catch (RecognitionException re) {
1678324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            reportError(re);
1679324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            recover(input,re);
1680324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1681324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1682324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1683324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        finally {
1684324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1685324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return retval;
1686324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1687324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // $ANTLR end "atom"
1688324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1689324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    // Delegated rules
1690324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1691324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1692324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    protected DFA2 dfa2 = new DFA2(this);
1693324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_eotS =
1694324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\15\uffff";
1695324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_eofS =
1696324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\15\uffff";
1697324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_minS =
1698324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\2\12\1\25\1\12\1\uffff\1\12\1\25\1\27\2\uffff\2\12\1\27";
1699324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_maxS =
1700324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\1\20\1\12\1\26\1\30\1\uffff\1\12\1\31\1\30\2\uffff\1\20\1\12\1"+
1701324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\30";
1702324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_acceptS =
1703324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\4\uffff\1\1\3\uffff\1\3\1\2\3\uffff";
1704324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String DFA2_specialS =
1705324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        "\15\uffff}>";
1706324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final String[] DFA2_transitionS = {
1707324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\1\3\uffff\3\1",
1708324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\2",
1709324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\4\1\3",
1710324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\5\3\uffff\3\5\7\uffff\1\6",
1711324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "",
1712324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\7",
1713324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\11\3\uffff\1\10",
1714324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\12\1\6",
1715324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "",
1716324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "",
1717324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\13\3\uffff\3\13",
1718324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\14",
1719324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            "\1\12\1\6"
1720324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    };
1721324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1722324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
1723324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
1724324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
1725324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
1726324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
1727324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
1728324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static final short[][] DFA2_transition;
1729324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1730324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    static {
1731324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        int numStates = DFA2_transitionS.length;
1732324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        DFA2_transition = new short[numStates][];
1733324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        for (int i=0; i<numStates; i++) {
1734324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
1735324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1736324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1737324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1738324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    class DFA2 extends DFA {
1739324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1740324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public DFA2(BaseRecognizer recognizer) {
1741324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.recognizer = recognizer;
1742324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.decisionNumber = 2;
1743324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.eot = DFA2_eot;
1744324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.eof = DFA2_eof;
1745324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.min = DFA2_min;
1746324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.max = DFA2_max;
1747324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.accept = DFA2_accept;
1748324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.special = DFA2_special;
1749324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            this.transition = DFA2_transition;
1750324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1751324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public String getDescription() {
1752324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            return "20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );";
1753324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
1754324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
1755324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1756324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1757324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_declaration_in_program85 = new BitSet(new long[]{0x000000000001C402L});
1758324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_variable_in_declaration105 = new BitSet(new long[]{0x0000000000000002L});
1759324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_functionHeader_in_declaration115 = new BitSet(new long[]{0x0000000000200000L});
1760324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_declaration117 = new BitSet(new long[]{0x0000000000000002L});
1761324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_functionHeader_in_declaration135 = new BitSet(new long[]{0x0000000002000000L});
1762324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_block_in_declaration137 = new BitSet(new long[]{0x0000000000000002L});
1763324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_type_in_variable166 = new BitSet(new long[]{0x0000000000000400L});
1764324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_declarator_in_variable168 = new BitSet(new long[]{0x0000000000200000L});
1765324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_variable170 = new BitSet(new long[]{0x0000000000000002L});
1766324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_ID_in_declarator199 = new BitSet(new long[]{0x0000000000000002L});
1767324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_type_in_functionHeader219 = new BitSet(new long[]{0x0000000000000400L});
1768324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_ID_in_functionHeader221 = new BitSet(new long[]{0x0000000000400000L});
1769324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_22_in_functionHeader223 = new BitSet(new long[]{0x000000000101C400L});
1770324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_formalParameter_in_functionHeader227 = new BitSet(new long[]{0x0000000001800000L});
1771324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_23_in_functionHeader231 = new BitSet(new long[]{0x000000000001C400L});
1772324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_formalParameter_in_functionHeader233 = new BitSet(new long[]{0x0000000001800000L});
1773324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_24_in_functionHeader241 = new BitSet(new long[]{0x0000000000000002L});
1774324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_type_in_formalParameter281 = new BitSet(new long[]{0x0000000000000400L});
1775324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_declarator_in_formalParameter283 = new BitSet(new long[]{0x0000000000000002L});
1776324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_set_in_type0 = new BitSet(new long[]{0x0000000000000002L});
1777324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_25_in_block376 = new BitSet(new long[]{0x000000000661F400L});
1778324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_variable_in_block390 = new BitSet(new long[]{0x000000000661F400L});
1779324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_stat_in_block405 = new BitSet(new long[]{0x0000000006603400L});
1780324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_26_in_block416 = new BitSet(new long[]{0x0000000000000002L});
1781324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_forStat_in_stat449 = new BitSet(new long[]{0x0000000000000002L});
1782324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_expr_in_stat457 = new BitSet(new long[]{0x0000000000200000L});
1783324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_stat459 = new BitSet(new long[]{0x0000000000000002L});
1784324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_block_in_stat468 = new BitSet(new long[]{0x0000000000000002L});
1785324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_assignStat_in_stat476 = new BitSet(new long[]{0x0000000000200000L});
1786324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_stat478 = new BitSet(new long[]{0x0000000000000002L});
1787324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_stat487 = new BitSet(new long[]{0x0000000000000002L});
1788324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_FOR_in_forStat507 = new BitSet(new long[]{0x0000000000400000L});
1789324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_22_in_forStat509 = new BitSet(new long[]{0x0000000000000400L});
1790324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_assignStat_in_forStat513 = new BitSet(new long[]{0x0000000000200000L});
1791324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_forStat515 = new BitSet(new long[]{0x0000000000401400L});
1792324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_expr_in_forStat517 = new BitSet(new long[]{0x0000000000200000L});
1793324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_21_in_forStat519 = new BitSet(new long[]{0x0000000000000400L});
1794324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_assignStat_in_forStat523 = new BitSet(new long[]{0x0000000001000000L});
1795324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_24_in_forStat525 = new BitSet(new long[]{0x0000000002000000L});
1796324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_block_in_forStat527 = new BitSet(new long[]{0x0000000000000002L});
1797324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_ID_in_assignStat570 = new BitSet(new long[]{0x0000000000000800L});
1798324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_EQ_in_assignStat572 = new BitSet(new long[]{0x0000000000401400L});
1799324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_expr_in_assignStat574 = new BitSet(new long[]{0x0000000000000002L});
1800324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_condExpr_in_expr598 = new BitSet(new long[]{0x0000000000000002L});
1801324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_aexpr_in_condExpr617 = new BitSet(new long[]{0x0000000000060002L});
1802324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_EQEQ_in_condExpr622 = new BitSet(new long[]{0x0000000000401400L});
1803324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_LT_in_condExpr627 = new BitSet(new long[]{0x0000000000401400L});
1804324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_aexpr_in_condExpr631 = new BitSet(new long[]{0x0000000000000002L});
1805324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_atom_in_aexpr653 = new BitSet(new long[]{0x0000000000080002L});
1806324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_PLUS_in_aexpr657 = new BitSet(new long[]{0x0000000000401400L});
1807324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_atom_in_aexpr660 = new BitSet(new long[]{0x0000000000080002L});
1808324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_ID_in_atom680 = new BitSet(new long[]{0x0000000000000002L});
1809324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_INT_in_atom694 = new BitSet(new long[]{0x0000000000000002L});
1810324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_22_in_atom708 = new BitSet(new long[]{0x0000000000401400L});
1811324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_expr_in_atom710 = new BitSet(new long[]{0x0000000001000000L});
1812324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static final BitSet FOLLOW_24_in_atom712 = new BitSet(new long[]{0x0000000000000002L});
1813324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
1814324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}