1/** \file
2 *  This OBJC source file was generated by $ANTLR version 3.2 Aug 23, 2010 07:48:06
3 *
4 *     -  From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g
5 *     -                            On : 2010-08-23 07:55:04
6 *     -           for the tree parser : SimpleCTPTreeParser *
7 * Editing it, at least manually, is not wise.
8 *
9 * ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com.
10 *
11 *
12*/
13// [The "BSD licence"]
14// Copyright (c) 2010 Alan Condit
15//
16// All rights reserved.
17//
18// Redistribution and use in source and binary forms, with or without
19// modification, are permitted provided that the following conditions
20// are met:
21// 1. Redistributions of source code must retain the above copyright
22//    notice, this list of conditions and the following disclaimer.
23// 2. Redistributions in binary form must reproduce the above copyright
24//    notice, this list of conditions and the following disclaimer in the
25//    documentation and/or other materials provided with the distribution.
26// 3. The name of the author may not be used to endorse or promote products
27//    derived from this software without specific prior written permission.
28//
29// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
30// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
31// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
32// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
33// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
34// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
38// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
40// $ANTLR 3.2 Aug 23, 2010 07:48:06 /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g 2010-08-23 07:55:04
41
42/* -----------------------------------------
43 * Include the ANTLR3 generated header file.
44 */
45#import "SimpleCTP.h"
46/* ----------------------------------------- */
47
48
49/* ============================================================================= */
50
51/* =============================================================================
52 * Start of recognizer
53 */
54
55
56
57#pragma mark Bitsets
58static ANTLRBitSet *FOLLOW_declaration_in_program56;
59static const unsigned long long FOLLOW_declaration_in_program56_data[] = { 0x0000000000000192LL};
60static ANTLRBitSet *FOLLOW_variable_in_declaration76;
61static const unsigned long long FOLLOW_variable_in_declaration76_data[] = { 0x0000000000000002LL};
62static ANTLRBitSet *FOLLOW_FUNC_DECL_in_declaration87;
63static const unsigned long long FOLLOW_FUNC_DECL_in_declaration87_data[] = { 0x0000000000000004LL};
64static ANTLRBitSet *FOLLOW_functionHeader_in_declaration89;
65static const unsigned long long FOLLOW_functionHeader_in_declaration89_data[] = { 0x0000000000000008LL};
66static ANTLRBitSet *FOLLOW_FUNC_DEF_in_declaration101;
67static const unsigned long long FOLLOW_FUNC_DEF_in_declaration101_data[] = { 0x0000000000000004LL};
68static ANTLRBitSet *FOLLOW_functionHeader_in_declaration103;
69static const unsigned long long FOLLOW_functionHeader_in_declaration103_data[] = { 0x0000000000000200LL};
70static ANTLRBitSet *FOLLOW_block_in_declaration105;
71static const unsigned long long FOLLOW_block_in_declaration105_data[] = { 0x0000000000000008LL};
72static ANTLRBitSet *FOLLOW_VAR_DEF_in_variable126;
73static const unsigned long long FOLLOW_VAR_DEF_in_variable126_data[] = { 0x0000000000000004LL};
74static ANTLRBitSet *FOLLOW_type_in_variable128;
75static const unsigned long long FOLLOW_type_in_variable128_data[] = { 0x0000000000000400LL};
76static ANTLRBitSet *FOLLOW_declarator_in_variable130;
77static const unsigned long long FOLLOW_declarator_in_variable130_data[] = { 0x0000000000000008LL};
78static ANTLRBitSet *FOLLOW_K_ID_in_declarator150;
79static const unsigned long long FOLLOW_K_ID_in_declarator150_data[] = { 0x0000000000000002LL};
80static ANTLRBitSet *FOLLOW_FUNC_HDR_in_functionHeader171;
81static const unsigned long long FOLLOW_FUNC_HDR_in_functionHeader171_data[] = { 0x0000000000000004LL};
82static ANTLRBitSet *FOLLOW_type_in_functionHeader173;
83static const unsigned long long FOLLOW_type_in_functionHeader173_data[] = { 0x0000000000000400LL};
84static ANTLRBitSet *FOLLOW_K_ID_in_functionHeader175;
85static const unsigned long long FOLLOW_K_ID_in_functionHeader175_data[] = { 0x0000000000000020LL};
86static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader177;
87static const unsigned long long FOLLOW_formalParameter_in_functionHeader177_data[] = { 0x0000000000000028LL};
88static ANTLRBitSet *FOLLOW_ARG_DEF_in_formalParameter199;
89static const unsigned long long FOLLOW_ARG_DEF_in_formalParameter199_data[] = { 0x0000000000000004LL};
90static ANTLRBitSet *FOLLOW_type_in_formalParameter201;
91static const unsigned long long FOLLOW_type_in_formalParameter201_data[] = { 0x0000000000000400LL};
92static ANTLRBitSet *FOLLOW_declarator_in_formalParameter203;
93static const unsigned long long FOLLOW_declarator_in_formalParameter203_data[] = { 0x0000000000000008LL};
94static ANTLRBitSet *FOLLOW_set_in_type0;
95static const unsigned long long FOLLOW_set_in_type0_data[] = { 0x0000000000000002LL};
96static ANTLRBitSet *FOLLOW_BLOCK_in_block286;
97static const unsigned long long FOLLOW_BLOCK_in_block286_data[] = { 0x0000000000000004LL};
98static ANTLRBitSet *FOLLOW_variable_in_block288;
99static const unsigned long long FOLLOW_variable_in_block288_data[] = { 0x000000000007CE18LL};
100static ANTLRBitSet *FOLLOW_stat_in_block291;
101static const unsigned long long FOLLOW_stat_in_block291_data[] = { 0x000000000007CE08LL};
102static ANTLRBitSet *FOLLOW_forStat_in_stat305;
103static const unsigned long long FOLLOW_forStat_in_stat305_data[] = { 0x0000000000000002LL};
104static ANTLRBitSet *FOLLOW_expr_in_stat313;
105static const unsigned long long FOLLOW_expr_in_stat313_data[] = { 0x0000000000000002LL};
106static ANTLRBitSet *FOLLOW_block_in_stat321;
107static const unsigned long long FOLLOW_block_in_stat321_data[] = { 0x0000000000000002LL};
108static ANTLRBitSet *FOLLOW_K_FOR_in_forStat341;
109static const unsigned long long FOLLOW_K_FOR_in_forStat341_data[] = { 0x0000000000000004LL};
110static ANTLRBitSet *FOLLOW_expr_in_forStat343;
111static const unsigned long long FOLLOW_expr_in_forStat343_data[] = { 0x0000000000078C00LL};
112static ANTLRBitSet *FOLLOW_expr_in_forStat345;
113static const unsigned long long FOLLOW_expr_in_forStat345_data[] = { 0x0000000000078C00LL};
114static ANTLRBitSet *FOLLOW_expr_in_forStat347;
115static const unsigned long long FOLLOW_expr_in_forStat347_data[] = { 0x0000000000000200LL};
116static ANTLRBitSet *FOLLOW_block_in_forStat349;
117static const unsigned long long FOLLOW_block_in_forStat349_data[] = { 0x0000000000000008LL};
118static ANTLRBitSet *FOLLOW_K_EQEQ_in_expr365;
119static const unsigned long long FOLLOW_K_EQEQ_in_expr365_data[] = { 0x0000000000000004LL};
120static ANTLRBitSet *FOLLOW_expr_in_expr367;
121static const unsigned long long FOLLOW_expr_in_expr367_data[] = { 0x0000000000078C00LL};
122static ANTLRBitSet *FOLLOW_expr_in_expr369;
123static const unsigned long long FOLLOW_expr_in_expr369_data[] = { 0x0000000000000008LL};
124static ANTLRBitSet *FOLLOW_K_LT_in_expr381;
125static const unsigned long long FOLLOW_K_LT_in_expr381_data[] = { 0x0000000000000004LL};
126static ANTLRBitSet *FOLLOW_expr_in_expr383;
127static const unsigned long long FOLLOW_expr_in_expr383_data[] = { 0x0000000000078C00LL};
128static ANTLRBitSet *FOLLOW_expr_in_expr385;
129static const unsigned long long FOLLOW_expr_in_expr385_data[] = { 0x0000000000000008LL};
130static ANTLRBitSet *FOLLOW_K_PLUS_in_expr397;
131static const unsigned long long FOLLOW_K_PLUS_in_expr397_data[] = { 0x0000000000000004LL};
132static ANTLRBitSet *FOLLOW_expr_in_expr399;
133static const unsigned long long FOLLOW_expr_in_expr399_data[] = { 0x0000000000078C00LL};
134static ANTLRBitSet *FOLLOW_expr_in_expr401;
135static const unsigned long long FOLLOW_expr_in_expr401_data[] = { 0x0000000000000008LL};
136static ANTLRBitSet *FOLLOW_K_EQ_in_expr413;
137static const unsigned long long FOLLOW_K_EQ_in_expr413_data[] = { 0x0000000000000004LL};
138static ANTLRBitSet *FOLLOW_K_ID_in_expr415;
139static const unsigned long long FOLLOW_K_ID_in_expr415_data[] = { 0x0000000000078C00LL};
140static ANTLRBitSet *FOLLOW_expr_in_expr419;
141static const unsigned long long FOLLOW_expr_in_expr419_data[] = { 0x0000000000000008LL};
142static ANTLRBitSet *FOLLOW_atom_in_expr432;
143static const unsigned long long FOLLOW_atom_in_expr432_data[] = { 0x0000000000000002LL};
144static ANTLRBitSet *FOLLOW_set_in_atom0;
145static const unsigned long long FOLLOW_set_in_atom0_data[] = { 0x0000000000000002LL};
146
147
148#pragma mark Dynamic Global Scopes
149@implementation Symbols_Scope  /* globalAttributeScopeImpl */
150/* start of synthesize -- OBJC-Line 1750 */
151
152@synthesize tree;
153+ (Symbols_Scope *)newSymbols_Scope
154{
155    return [[[Symbols_Scope alloc] init] retain];
156}
157/* start of iterate get and set functions */
158
159- (ANTLRCommonTree *)gettree { return( tree ); }
160
161- (void)settree:(ANTLRCommonTree *)aVal { tree = aVal; }
162
163
164
165/* End of iterate get and set functions */
166
167@end /* end of Symbols_Scope implementation */
168
169
170#pragma mark Dynamic Rule Scopes
171
172#pragma mark Rule return scopes start
173@implementation SimpleCTP_expr_return
174+ (SimpleCTP_expr_return *)newSimpleCTP_expr_return
175{
176    return [[[SimpleCTP_expr_return alloc] init] retain];
177}
178
179
180
181
182@end /* end of returnScope implementation */
183
184
185
186@implementation SimpleCTP  // line 610
187
188+ (void) initialize
189{
190    #pragma mark Bitsets
191    FOLLOW_declaration_in_program56 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declaration_in_program56_data Count:(NSUInteger)1] retain];
192    FOLLOW_variable_in_declaration76 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_declaration76_data Count:(NSUInteger)1] retain];
193    FOLLOW_FUNC_DECL_in_declaration87 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_FUNC_DECL_in_declaration87_data Count:(NSUInteger)1] retain];
194    FOLLOW_functionHeader_in_declaration89 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration89_data Count:(NSUInteger)1] retain];
195    FOLLOW_FUNC_DEF_in_declaration101 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_FUNC_DEF_in_declaration101_data Count:(NSUInteger)1] retain];
196    FOLLOW_functionHeader_in_declaration103 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration103_data Count:(NSUInteger)1] retain];
197    FOLLOW_block_in_declaration105 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_declaration105_data Count:(NSUInteger)1] retain];
198    FOLLOW_VAR_DEF_in_variable126 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_VAR_DEF_in_variable126_data Count:(NSUInteger)1] retain];
199    FOLLOW_type_in_variable128 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_variable128_data Count:(NSUInteger)1] retain];
200    FOLLOW_declarator_in_variable130 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_variable130_data Count:(NSUInteger)1] retain];
201    FOLLOW_K_ID_in_declarator150 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_declarator150_data Count:(NSUInteger)1] retain];
202    FOLLOW_FUNC_HDR_in_functionHeader171 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_FUNC_HDR_in_functionHeader171_data Count:(NSUInteger)1] retain];
203    FOLLOW_type_in_functionHeader173 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_functionHeader173_data Count:(NSUInteger)1] retain];
204    FOLLOW_K_ID_in_functionHeader175 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_functionHeader175_data Count:(NSUInteger)1] retain];
205    FOLLOW_formalParameter_in_functionHeader177 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader177_data Count:(NSUInteger)1] retain];
206    FOLLOW_ARG_DEF_in_formalParameter199 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ARG_DEF_in_formalParameter199_data Count:(NSUInteger)1] retain];
207    FOLLOW_type_in_formalParameter201 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_formalParameter201_data Count:(NSUInteger)1] retain];
208    FOLLOW_declarator_in_formalParameter203 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_formalParameter203_data Count:(NSUInteger)1] retain];
209    FOLLOW_set_in_type0 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_set_in_type0_data Count:(NSUInteger)1] retain];
210    FOLLOW_BLOCK_in_block286 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_BLOCK_in_block286_data Count:(NSUInteger)1] retain];
211    FOLLOW_variable_in_block288 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_block288_data Count:(NSUInteger)1] retain];
212    FOLLOW_stat_in_block291 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_stat_in_block291_data Count:(NSUInteger)1] retain];
213    FOLLOW_forStat_in_stat305 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_forStat_in_stat305_data Count:(NSUInteger)1] retain];
214    FOLLOW_expr_in_stat313 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_stat313_data Count:(NSUInteger)1] retain];
215    FOLLOW_block_in_stat321 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_stat321_data Count:(NSUInteger)1] retain];
216    FOLLOW_K_FOR_in_forStat341 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_FOR_in_forStat341_data Count:(NSUInteger)1] retain];
217    FOLLOW_expr_in_forStat343 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat343_data Count:(NSUInteger)1] retain];
218    FOLLOW_expr_in_forStat345 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat345_data Count:(NSUInteger)1] retain];
219    FOLLOW_expr_in_forStat347 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat347_data Count:(NSUInteger)1] retain];
220    FOLLOW_block_in_forStat349 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_forStat349_data Count:(NSUInteger)1] retain];
221    FOLLOW_K_EQEQ_in_expr365 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQEQ_in_expr365_data Count:(NSUInteger)1] retain];
222    FOLLOW_expr_in_expr367 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr367_data Count:(NSUInteger)1] retain];
223    FOLLOW_expr_in_expr369 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr369_data Count:(NSUInteger)1] retain];
224    FOLLOW_K_LT_in_expr381 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LT_in_expr381_data Count:(NSUInteger)1] retain];
225    FOLLOW_expr_in_expr383 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr383_data Count:(NSUInteger)1] retain];
226    FOLLOW_expr_in_expr385 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr385_data Count:(NSUInteger)1] retain];
227    FOLLOW_K_PLUS_in_expr397 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_PLUS_in_expr397_data Count:(NSUInteger)1] retain];
228    FOLLOW_expr_in_expr399 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr399_data Count:(NSUInteger)1] retain];
229    FOLLOW_expr_in_expr401 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr401_data Count:(NSUInteger)1] retain];
230    FOLLOW_K_EQ_in_expr413 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQ_in_expr413_data Count:(NSUInteger)1] retain];
231    FOLLOW_K_ID_in_expr415 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_expr415_data Count:(NSUInteger)1] retain];
232    FOLLOW_expr_in_expr419 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_expr419_data Count:(NSUInteger)1] retain];
233    FOLLOW_atom_in_expr432 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_expr432_data Count:(NSUInteger)1] retain];
234    FOLLOW_set_in_atom0 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_set_in_atom0_data Count:(NSUInteger)1] retain];
235
236    [ANTLRBaseRecognizer setTokenNames:[[[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>",
237 @"VAR_DEF", @"ARG_DEF", @"FUNC_HDR", @"FUNC_DECL", @"FUNC_DEF", @"BLOCK",
238 @"K_ID", @"K_INT", @"K_CHAR", @"K_VOID", @"K_FOR", @"K_EQ", @"K_EQEQ",
239 @"K_LT", @"K_PLUS", @"K_INT_TYPE", @"WS", @"';'", @"'('", @"','", @"')'",
240 @"'{'", @"'}'", nil] retain]];
241}
242
243+ (SimpleCTP *)newSimpleCTP:(id<ANTLRTreeNodeStream>)aStream
244{
245
246    return [[SimpleCTP alloc] initWithStream:aStream];
247
248}
249
250
251- (id) initWithStream:(id<ANTLRTreeNodeStream>)aStream
252{
253    if ((self = [super initWithStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:12+1] retain]]) != nil) {
254
255
256
257        /* start of actions-actionScope-init */
258        /* start of init */
259    }
260    return self;
261}
262
263- (void) dealloc
264{
265    [Symbols_scope release];
266    [super dealloc];
267}
268// start actions.actionScope.methods
269// start methods()
270// start rules
271/*
272 * $ANTLR start program
273 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:13:1: program : ( declaration )+ ;
274 */
275- (void) program
276{
277    /* ruleScopeSetUp */
278
279    @try {
280        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:14:5: ( ( declaration )+ ) // ruleBlockSingleAlt
281        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:14:9: ( declaration )+ // alt
282        {
283        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:14:9: ( declaration )+ // positiveClosureBlock
284        NSInteger cnt1=0;
285        do {
286            NSInteger alt1=2;
287            NSInteger LA1_0 = [input LA:1];
288            if ( (LA1_0==VAR_DEF||(LA1_0>=FUNC_DECL && LA1_0<=FUNC_DEF)) ) {
289                alt1=1;
290            }
291
292
293            switch (alt1) {
294                case 1 : ;
295                    // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:14:9: declaration // alt
296                    {
297                    [self pushFollow:FOLLOW_declaration_in_program56];
298                    [self declaration];
299                    [self popFollow];
300
301                      /* element() */
302                     /* elements */
303                    }
304                    break;
305
306                default :
307                    if ( cnt1 >= 1 )
308                        goto loop1;
309                    ANTLREarlyExitException *eee = [ANTLREarlyExitException exceptionWithStream:input decisionNumber:1];
310                    @throw eee;
311            }
312            cnt1++;
313        } while (YES);
314        loop1: ;
315          /* element() */
316         /* elements */
317        }
318
319        // token+rule list labels
320
321    }
322    @catch (ANTLRRecognitionException *re) {
323        [self reportError:re];
324        [self recover:input Exception:re];
325    }    @finally {
326    }
327    return ;
328}
329/* $ANTLR end program */
330/*
331 * $ANTLR start declaration
332 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:17:1: declaration : ( variable | ^( FUNC_DECL functionHeader ) | ^( FUNC_DEF functionHeader block ) );
333 */
334- (void) declaration
335{
336    /* ruleScopeSetUp */
337
338    @try {
339        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:18:5: ( variable | ^( FUNC_DECL functionHeader ) | ^( FUNC_DEF functionHeader block ) ) //ruleblock
340        NSInteger alt2=3;
341        switch ([input LA:1]) {
342            case VAR_DEF: ;
343                {
344                alt2=1;
345                }
346                break;
347            case FUNC_DECL: ;
348                {
349                alt2=2;
350                }
351                break;
352            case FUNC_DEF: ;
353                {
354                alt2=3;
355                }
356                break;
357
358        default: ;
359            ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:2 state:0 stream:input];
360            @throw nvae;
361        }
362
363        switch (alt2) {
364            case 1 : ;
365                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:18:9: variable // alt
366                {
367                [self pushFollow:FOLLOW_variable_in_declaration76];
368                [self variable];
369                [self popFollow];
370
371                  /* element() */
372                 /* elements */
373                }
374                break;
375            case 2 : ;
376                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:19:9: ^( FUNC_DECL functionHeader ) // alt
377                {
378                [self match:input TokenType:FUNC_DECL Follow:FOLLOW_FUNC_DECL_in_declaration87];   /* element() */
379
380                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
381                    [self pushFollow:FOLLOW_functionHeader_in_declaration89];
382                    [self functionHeader];
383                    [self popFollow];
384
385                      /* element() */
386
387                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
388                 /* elements */
389                }
390                break;
391            case 3 : ;
392                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:20:9: ^( FUNC_DEF functionHeader block ) // alt
393                {
394                [self match:input TokenType:FUNC_DEF Follow:FOLLOW_FUNC_DEF_in_declaration101];   /* element() */
395
396                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
397                    [self pushFollow:FOLLOW_functionHeader_in_declaration103];
398                    [self functionHeader];
399                    [self popFollow];
400
401                      /* element() */
402                    [self pushFollow:FOLLOW_block_in_declaration105];
403                    [self block];
404                    [self popFollow];
405
406                      /* element() */
407
408                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
409                 /* elements */
410                }
411                break;
412
413        }
414        // token+rule list labels
415
416    }
417    @catch (ANTLRRecognitionException *re) {
418        [self reportError:re];
419        [self recover:input Exception:re];
420    }    @finally {
421    }
422    return ;
423}
424/* $ANTLR end declaration */
425/*
426 * $ANTLR start variable
427 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:23:1: variable : ^( VAR_DEF type declarator ) ;
428 */
429- (void) variable
430{
431    /* ruleScopeSetUp */
432
433    @try {
434        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:24:5: ( ^( VAR_DEF type declarator ) ) // ruleBlockSingleAlt
435        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:24:9: ^( VAR_DEF type declarator ) // alt
436        {
437        [self match:input TokenType:VAR_DEF Follow:FOLLOW_VAR_DEF_in_variable126];   /* element() */
438
439            [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
440            [self pushFollow:FOLLOW_type_in_variable128];
441            [self type];
442            [self popFollow];
443
444              /* element() */
445            [self pushFollow:FOLLOW_declarator_in_variable130];
446            [self declarator];
447            [self popFollow];
448
449              /* element() */
450
451            [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
452         /* elements */
453        }
454
455        // token+rule list labels
456
457    }
458    @catch (ANTLRRecognitionException *re) {
459        [self reportError:re];
460        [self recover:input Exception:re];
461    }    @finally {
462    }
463    return ;
464}
465/* $ANTLR end variable */
466/*
467 * $ANTLR start declarator
468 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:27:1: declarator : K_ID ;
469 */
470- (void) declarator
471{
472    /* ruleScopeSetUp */
473
474    @try {
475        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:28:5: ( K_ID ) // ruleBlockSingleAlt
476        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:28:9: K_ID // alt
477        {
478        [self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_declarator150];   /* element() */
479         /* elements */
480        }
481
482        // token+rule list labels
483
484    }
485    @catch (ANTLRRecognitionException *re) {
486        [self reportError:re];
487        [self recover:input Exception:re];
488    }    @finally {
489    }
490    return ;
491}
492/* $ANTLR end declarator */
493/*
494 * $ANTLR start functionHeader
495 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:31:1: functionHeader : ^( FUNC_HDR type K_ID ( formalParameter )+ ) ;
496 */
497- (void) functionHeader
498{
499    /* ruleScopeSetUp */
500
501    @try {
502        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:32:5: ( ^( FUNC_HDR type K_ID ( formalParameter )+ ) ) // ruleBlockSingleAlt
503        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:32:9: ^( FUNC_HDR type K_ID ( formalParameter )+ ) // alt
504        {
505        [self match:input TokenType:FUNC_HDR Follow:FOLLOW_FUNC_HDR_in_functionHeader171];   /* element() */
506
507            [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
508            [self pushFollow:FOLLOW_type_in_functionHeader173];
509            [self type];
510            [self popFollow];
511
512              /* element() */
513            [self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_functionHeader175];   /* element() */
514            // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:32:30: ( formalParameter )+ // positiveClosureBlock
515            NSInteger cnt3=0;
516            do {
517                NSInteger alt3=2;
518                NSInteger LA3_0 = [input LA:1];
519                if ( (LA3_0==ARG_DEF) ) {
520                    alt3=1;
521                }
522
523
524                switch (alt3) {
525                    case 1 : ;
526                        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:32:30: formalParameter // alt
527                        {
528                        [self pushFollow:FOLLOW_formalParameter_in_functionHeader177];
529                        [self formalParameter];
530                        [self popFollow];
531
532                          /* element() */
533                         /* elements */
534                        }
535                        break;
536
537                    default :
538                        if ( cnt3 >= 1 )
539                            goto loop3;
540                        ANTLREarlyExitException *eee = [ANTLREarlyExitException exceptionWithStream:input decisionNumber:3];
541                        @throw eee;
542                }
543                cnt3++;
544            } while (YES);
545            loop3: ;
546              /* element() */
547
548            [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
549         /* elements */
550        }
551
552        // token+rule list labels
553
554    }
555    @catch (ANTLRRecognitionException *re) {
556        [self reportError:re];
557        [self recover:input Exception:re];
558    }    @finally {
559    }
560    return ;
561}
562/* $ANTLR end functionHeader */
563/*
564 * $ANTLR start formalParameter
565 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:35:1: formalParameter : ^( ARG_DEF type declarator ) ;
566 */
567- (void) formalParameter
568{
569    /* ruleScopeSetUp */
570
571    @try {
572        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:36:5: ( ^( ARG_DEF type declarator ) ) // ruleBlockSingleAlt
573        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:36:9: ^( ARG_DEF type declarator ) // alt
574        {
575        [self match:input TokenType:ARG_DEF Follow:FOLLOW_ARG_DEF_in_formalParameter199];   /* element() */
576
577            [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
578            [self pushFollow:FOLLOW_type_in_formalParameter201];
579            [self type];
580            [self popFollow];
581
582              /* element() */
583            [self pushFollow:FOLLOW_declarator_in_formalParameter203];
584            [self declarator];
585            [self popFollow];
586
587              /* element() */
588
589            [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
590         /* elements */
591        }
592
593        // token+rule list labels
594
595    }
596    @catch (ANTLRRecognitionException *re) {
597        [self reportError:re];
598        [self recover:input Exception:re];
599    }    @finally {
600    }
601    return ;
602}
603/* $ANTLR end formalParameter */
604/*
605 * $ANTLR start type
606 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:39:1: type : ( K_INT | K_CHAR | K_VOID | K_ID );
607 */
608- (void) type
609{
610    /* ruleScopeSetUp */
611
612    @try {
613        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:40:5: ( K_INT | K_CHAR | K_VOID | K_ID ) // ruleBlockSingleAlt
614        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g: // alt
615        {
616        if ((([input LA:1] >= K_ID) && ([input LA:1] <= K_VOID))) {
617            [input consume];
618            [state setIsErrorRecovery:NO];
619        } else {
620            ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException exceptionWithSet:nil stream:input];
621            @throw mse;
622        }
623          /* element() */
624         /* elements */
625        }
626
627        // token+rule list labels
628
629    }
630    @catch (ANTLRRecognitionException *re) {
631        [self reportError:re];
632        [self recover:input Exception:re];
633    }    @finally {
634    }
635    return ;
636}
637/* $ANTLR end type */
638/*
639 * $ANTLR start block
640 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:46:1: block : ^( BLOCK ( variable )* ( stat )* ) ;
641 */
642- (void) block
643{
644    /* ruleScopeSetUp */
645
646    @try {
647        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:47:5: ( ^( BLOCK ( variable )* ( stat )* ) ) // ruleBlockSingleAlt
648        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:47:9: ^( BLOCK ( variable )* ( stat )* ) // alt
649        {
650        [self match:input TokenType:BLOCK Follow:FOLLOW_BLOCK_in_block286];   /* element() */
651
652        if ( [input LA:1] == ANTLRTokenTypeDOWN ) {
653            [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
654            do {
655                NSInteger alt4=2;
656                NSInteger LA4_0 = [input LA:1];
657                if ( (LA4_0==VAR_DEF) ) {
658                    alt4=1;
659                }
660
661
662                switch (alt4) {
663                    case 1 : ;
664                        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:47:17: variable // alt
665                        {
666                        [self pushFollow:FOLLOW_variable_in_block288];
667                        [self variable];
668                        [self popFollow];
669
670                          /* element() */
671                         /* elements */
672                        }
673                        break;
674
675                    default :
676                        goto loop4;
677                }
678            } while (YES);
679            loop4: ;
680              /* element() */
681            do {
682                NSInteger alt5=2;
683                NSInteger LA5_0 = [input LA:1];
684                if ( ((LA5_0>=BLOCK && LA5_0<=K_INT)||(LA5_0>=K_FOR && LA5_0<=K_PLUS)) ) {
685                    alt5=1;
686                }
687
688
689                switch (alt5) {
690                    case 1 : ;
691                        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:47:27: stat // alt
692                        {
693                        [self pushFollow:FOLLOW_stat_in_block291];
694                        [self stat];
695                        [self popFollow];
696
697                          /* element() */
698                         /* elements */
699                        }
700                        break;
701
702                    default :
703                        goto loop5;
704                }
705            } while (YES);
706            loop5: ;
707              /* element() */
708
709            [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];
710        }  /* element() */
711         /* elements */
712        }
713
714        // token+rule list labels
715
716    }
717    @catch (ANTLRRecognitionException *re) {
718        [self reportError:re];
719        [self recover:input Exception:re];
720    }    @finally {
721    }
722    return ;
723}
724/* $ANTLR end block */
725/*
726 * $ANTLR start stat
727 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:50:1: stat : ( forStat | expr | block );
728 */
729- (void) stat
730{
731    /* ruleScopeSetUp */
732
733    @try {
734        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:50:5: ( forStat | expr | block ) //ruleblock
735        NSInteger alt6=3;
736        switch ([input LA:1]) {
737            case K_FOR: ;
738                {
739                alt6=1;
740                }
741                break;
742            case K_ID: ;
743            case K_INT: ;
744            case K_EQ: ;
745            case K_EQEQ: ;
746            case K_LT: ;
747            case K_PLUS: ;
748                {
749                alt6=2;
750                }
751                break;
752            case BLOCK: ;
753                {
754                alt6=3;
755                }
756                break;
757
758        default: ;
759            ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:6 state:0 stream:input];
760            @throw nvae;
761        }
762
763        switch (alt6) {
764            case 1 : ;
765                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:50:7: forStat // alt
766                {
767                [self pushFollow:FOLLOW_forStat_in_stat305];
768                [self forStat];
769                [self popFollow];
770
771                  /* element() */
772                 /* elements */
773                }
774                break;
775            case 2 : ;
776                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:51:7: expr // alt
777                {
778                [self pushFollow:FOLLOW_expr_in_stat313];
779                [self expr];
780                [self popFollow];
781
782                  /* element() */
783                 /* elements */
784                }
785                break;
786            case 3 : ;
787                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:52:7: block // alt
788                {
789                [self pushFollow:FOLLOW_block_in_stat321];
790                [self block];
791                [self popFollow];
792
793                  /* element() */
794                 /* elements */
795                }
796                break;
797
798        }
799        // token+rule list labels
800
801    }
802    @catch (ANTLRRecognitionException *re) {
803        [self reportError:re];
804        [self recover:input Exception:re];
805    }    @finally {
806    }
807    return ;
808}
809/* $ANTLR end stat */
810/*
811 * $ANTLR start forStat
812 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:55:1: forStat : ^( K_FOR expr expr expr block ) ;
813 */
814- (void) forStat
815{
816    /* ruleScopeSetUp */
817
818    @try {
819        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:56:5: ( ^( K_FOR expr expr expr block ) ) // ruleBlockSingleAlt
820        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:56:9: ^( K_FOR expr expr expr block ) // alt
821        {
822        [self match:input TokenType:K_FOR Follow:FOLLOW_K_FOR_in_forStat341];   /* element() */
823
824            [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
825            [self pushFollow:FOLLOW_expr_in_forStat343];
826            [self expr];
827            [self popFollow];
828
829              /* element() */
830            [self pushFollow:FOLLOW_expr_in_forStat345];
831            [self expr];
832            [self popFollow];
833
834              /* element() */
835            [self pushFollow:FOLLOW_expr_in_forStat347];
836            [self expr];
837            [self popFollow];
838
839              /* element() */
840            [self pushFollow:FOLLOW_block_in_forStat349];
841            [self block];
842            [self popFollow];
843
844              /* element() */
845
846            [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
847         /* elements */
848        }
849
850        // token+rule list labels
851
852    }
853    @catch (ANTLRRecognitionException *re) {
854        [self reportError:re];
855        [self recover:input Exception:re];
856    }    @finally {
857    }
858    return ;
859}
860/* $ANTLR end forStat */
861/*
862 * $ANTLR start expr
863 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:59:1: expr : ( ^( K_EQEQ expr expr ) | ^( K_LT expr expr ) | ^( K_PLUS expr expr ) | ^( K_EQ K_ID e= expr ) | atom );
864 */
865- (SimpleCTP_expr_return *) expr
866{
867    /* ruleScopeSetUp */
868
869    SimpleCTP_expr_return * retval = [SimpleCTP_expr_return newSimpleCTP_expr_return];
870    [retval setStart:[input LT:1]];
871
872    @try {
873        ANTLRCommonTree *K_ID1 = nil;
874        SimpleCTP_expr_return * e = nil;
875
876
877        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:59:5: ( ^( K_EQEQ expr expr ) | ^( K_LT expr expr ) | ^( K_PLUS expr expr ) | ^( K_EQ K_ID e= expr ) | atom ) //ruleblock
878        NSInteger alt7=5;
879        switch ([input LA:1]) {
880            case K_EQEQ: ;
881                {
882                alt7=1;
883                }
884                break;
885            case K_LT: ;
886                {
887                alt7=2;
888                }
889                break;
890            case K_PLUS: ;
891                {
892                alt7=3;
893                }
894                break;
895            case K_EQ: ;
896                {
897                alt7=4;
898                }
899                break;
900            case K_ID: ;
901            case K_INT: ;
902                {
903                alt7=5;
904                }
905                break;
906
907        default: ;
908            ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:7 state:0 stream:input];
909            @throw nvae;
910        }
911
912        switch (alt7) {
913            case 1 : ;
914                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:59:9: ^( K_EQEQ expr expr ) // alt
915                {
916                [self match:input TokenType:K_EQEQ Follow:FOLLOW_K_EQEQ_in_expr365];   /* element() */
917
918                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
919                    [self pushFollow:FOLLOW_expr_in_expr367];
920                    [self expr];
921                    [self popFollow];
922
923                      /* element() */
924                    [self pushFollow:FOLLOW_expr_in_expr369];
925                    [self expr];
926                    [self popFollow];
927
928                      /* element() */
929
930                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
931                 /* elements */
932                }
933                break;
934            case 2 : ;
935                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:60:9: ^( K_LT expr expr ) // alt
936                {
937                [self match:input TokenType:K_LT Follow:FOLLOW_K_LT_in_expr381];   /* element() */
938
939                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
940                    [self pushFollow:FOLLOW_expr_in_expr383];
941                    [self expr];
942                    [self popFollow];
943
944                      /* element() */
945                    [self pushFollow:FOLLOW_expr_in_expr385];
946                    [self expr];
947                    [self popFollow];
948
949                      /* element() */
950
951                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
952                 /* elements */
953                }
954                break;
955            case 3 : ;
956                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:61:9: ^( K_PLUS expr expr ) // alt
957                {
958                [self match:input TokenType:K_PLUS Follow:FOLLOW_K_PLUS_in_expr397];   /* element() */
959
960                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
961                    [self pushFollow:FOLLOW_expr_in_expr399];
962                    [self expr];
963                    [self popFollow];
964
965                      /* element() */
966                    [self pushFollow:FOLLOW_expr_in_expr401];
967                    [self expr];
968                    [self popFollow];
969
970                      /* element() */
971
972                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
973                 /* elements */
974                }
975                break;
976            case 4 : ;
977                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:62:9: ^( K_EQ K_ID e= expr ) // alt
978                {
979                [self match:input TokenType:K_EQ Follow:FOLLOW_K_EQ_in_expr413];   /* element() */
980
981                    [self match:input TokenType:ANTLRTokenTypeDOWN Follow:nil];
982                    K_ID1=(ANTLRCommonTree *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_expr415];   /* element() */
983                    [self pushFollow:FOLLOW_expr_in_expr419];
984                    e = [self expr];
985                    [self popFollow];
986
987                      /* element() */
988
989                    [self match:input TokenType:ANTLRTokenTypeUP Follow:nil];   /* element() */
990                 NSLog(@"assigning %@ to variable %@", (e!=nil?[[input getTokenStream] toStringFromStart:[[input getTreeAdaptor] getTokenStartIndex:[e getStart]]
991                         ToEnd:[[input getTreeAdaptor] getTokenStopIndex:[e getStart]]]:nil), (K_ID1!=nil?[K_ID1 getText]:0));   /* element() */
992                 /* elements */
993                }
994                break;
995            case 5 : ;
996                // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:63:9: atom // alt
997                {
998                [self pushFollow:FOLLOW_atom_in_expr432];
999                [self atom];
1000                [self popFollow];
1001
1002                  /* element() */
1003                 /* elements */
1004                }
1005                break;
1006
1007        }
1008        // token+rule list labels
1009
1010    }
1011    @catch (ANTLRRecognitionException *re) {
1012        [self reportError:re];
1013        [self recover:input Exception:re];
1014    }    @finally {
1015    }
1016    return retval;
1017}
1018/* $ANTLR end expr */
1019/*
1020 * $ANTLR start atom
1021 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:66:1: atom : ( K_ID | K_INT );
1022 */
1023- (void) atom
1024{
1025    /* ruleScopeSetUp */
1026
1027    @try {
1028        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g:67:5: ( K_ID | K_INT ) // ruleBlockSingleAlt
1029        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleCTP.g: // alt
1030        {
1031        if ((([input LA:1] >= K_ID) && ([input LA:1] <= K_INT))) {
1032            [input consume];
1033            [state setIsErrorRecovery:NO];
1034        } else {
1035            ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException exceptionWithSet:nil stream:input];
1036            @throw mse;
1037        }
1038          /* element() */
1039         /* elements */
1040        }
1041
1042        // token+rule list labels
1043
1044    }
1045    @catch (ANTLRRecognitionException *re) {
1046        [self reportError:re];
1047        [self recover:input Exception:re];
1048    }    @finally {
1049    }
1050    return ;
1051}
1052/* $ANTLR end atom */
1053
1054@end /* end of SimpleCTP implementation line 669 */
1055
1056
1057/* End of code
1058 * =============================================================================
1059 */
1060