Home | History | Annotate | Download | only in polydiff
      1 /** \file
      2  *  This OBJC source file was generated by $ANTLR version 3.4
      3  *
      4  *     -  From the grammar source file : /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g
      5  *     -                            On : 2012-02-16 18:10:10
      6  *     -                for the parser : PolyParserParser
      7  *
      8  * Editing it, at least manually, is not wise.
      9  *
     10  * ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com.
     11  *
     12  *
     13 */
     14 // $ANTLR 3.4 /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g 2012-02-16 18:10:10
     15 
     16 
     17 /* -----------------------------------------
     18  * Include the ANTLR3 generated header file.
     19  */
     20 #import "PolyParser.h"
     21 /* ----------------------------------------- */
     22 
     23 
     24 /* ============================================================================= */
     25 /* =============================================================================
     26  * Start of recognizer
     27  */
     28 
     29 #pragma mark Bitsets
     30 static ANTLRBitSet *FOLLOW_term_in_poly43;
     31 static const unsigned long long FOLLOW_term_in_poly43_data[] = { 0x0000000000000102LL};
     32 static ANTLRBitSet *FOLLOW_8_in_poly46;
     33 static const unsigned long long FOLLOW_8_in_poly46_data[] = { 0x0000000000000030LL};
     34 static ANTLRBitSet *FOLLOW_term_in_poly49;
     35 static const unsigned long long FOLLOW_term_in_poly49_data[] = { 0x0000000000000102LL};
     36 static ANTLRBitSet *FOLLOW_INT_in_term63;
     37 static const unsigned long long FOLLOW_INT_in_term63_data[] = { 0x0000000000000010LL};
     38 static ANTLRBitSet *FOLLOW_ID_in_term65;
     39 static const unsigned long long FOLLOW_ID_in_term65_data[] = { 0x0000000000000002LL};
     40 static ANTLRBitSet *FOLLOW_INT_in_term85;
     41 static const unsigned long long FOLLOW_INT_in_term85_data[] = { 0x0000000000000010LL};
     42 static ANTLRBitSet *FOLLOW_exp_in_term87;
     43 static const unsigned long long FOLLOW_exp_in_term87_data[] = { 0x0000000000000002LL};
     44 static ANTLRBitSet *FOLLOW_exp_in_term106;
     45 static const unsigned long long FOLLOW_exp_in_term106_data[] = { 0x0000000000000002LL};
     46 static ANTLRBitSet *FOLLOW_INT_in_term114;
     47 static const unsigned long long FOLLOW_INT_in_term114_data[] = { 0x0000000000000002LL};
     48 static ANTLRBitSet *FOLLOW_ID_in_term119;
     49 static const unsigned long long FOLLOW_ID_in_term119_data[] = { 0x0000000000000002LL};
     50 static ANTLRBitSet *FOLLOW_ID_in_exp132;
     51 static const unsigned long long FOLLOW_ID_in_exp132_data[] = { 0x0000000000000200LL};
     52 static ANTLRBitSet *FOLLOW_9_in_exp134;
     53 static const unsigned long long FOLLOW_9_in_exp134_data[] = { 0x0000000000000020LL};
     54 static ANTLRBitSet *FOLLOW_INT_in_exp137;
     55 static const unsigned long long FOLLOW_INT_in_exp137_data[] = { 0x0000000000000002LL};
     56 
     57 
     58 #pragma mark Dynamic Global globalAttributeScopeImplementation
     59 
     60 #pragma mark Dynamic Rule Scopes ruleAttributeScopeImplementation
     61 
     62 #pragma mark Rule Return Scopes returnScopeImplementation
     63 @implementation PolyParser_poly_return /* returnScopeImplementation */
     64 /* AST returnScope.synthesize */
     65 @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */
     66 + (PolyParser_poly_return *)newPolyParser_poly_return
     67 {
     68 return [[[PolyParser_poly_return alloc] init] retain];
     69 }
     70 
     71 - (id) init
     72 {
     73 self = [super init];
     74 return self;
     75 }
     76 
     77 /* AST returnScope.methods */
     78 - (CommonTree *)getTree
     79 {
     80     return tree;
     81 }
     82 
     83 - (void) setTree:(CommonTree *)aTree
     84 {
     85     if (tree != aTree) {
     86         if (tree != nil) [tree release];
     87         if (aTree != nil) [aTree retain];
     88         tree = aTree;
     89     }
     90 }
     91 
     92 - (void) dealloc
     93 {
     94     self.tree = nil;
     95     [super dealloc];
     96 }
     97 
     98 
     99 @end /* end of returnScope implementation */
    100 
    101 @implementation PolyParser_term_return /* returnScopeImplementation */
    102 /* AST returnScope.synthesize */
    103 @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */
    104 + (PolyParser_term_return *)newPolyParser_term_return
    105 {
    106 return [[[PolyParser_term_return alloc] init] retain];
    107 }
    108 
    109 - (id) init
    110 {
    111 self = [super init];
    112 return self;
    113 }
    114 
    115 /* AST returnScope.methods */
    116 - (CommonTree *)getTree
    117 {
    118     return tree;
    119 }
    120 
    121 - (void) setTree:(CommonTree *)aTree
    122 {
    123     if (tree != aTree) {
    124         if (tree != nil) [tree release];
    125         if (aTree != nil) [aTree retain];
    126         tree = aTree;
    127     }
    128 }
    129 
    130 - (void) dealloc
    131 {
    132     self.tree = nil;
    133     [super dealloc];
    134 }
    135 
    136 
    137 @end /* end of returnScope implementation */
    138 
    139 @implementation PolyParser_exp_return /* returnScopeImplementation */
    140 /* AST returnScope.synthesize */
    141 @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */
    142 + (PolyParser_exp_return *)newPolyParser_exp_return
    143 {
    144 return [[[PolyParser_exp_return alloc] init] retain];
    145 }
    146 
    147 - (id) init
    148 {
    149 self = [super init];
    150 return self;
    151 }
    152 
    153 /* AST returnScope.methods */
    154 - (CommonTree *)getTree
    155 {
    156     return tree;
    157 }
    158 
    159 - (void) setTree:(CommonTree *)aTree
    160 {
    161     if (tree != aTree) {
    162         if (tree != nil) [tree release];
    163         if (aTree != nil) [aTree retain];
    164         tree = aTree;
    165     }
    166 }
    167 
    168 - (void) dealloc
    169 {
    170     self.tree = nil;
    171     [super dealloc];
    172 }
    173 
    174 
    175 @end /* end of returnScope implementation */
    176 
    177 
    178 
    179 @implementation PolyParser  // line 637
    180 
    181 /* ObjC start of ruleAttributeScope */
    182 #pragma mark Dynamic Rule Scopes ruleAttributeScope
    183 /* ObjC end of ruleAttributeScope */
    184 #pragma mark global Attribute Scopes globalAttributeScope
    185 /* ObjC start globalAttributeScope */
    186 /* ObjC end globalAttributeScope */
    187 /* ObjC start actions.(actionScope).synthesize */
    188 /* ObjC start synthesize() */
    189 /* AST genericParser.synthesize */
    190 /* AST parserProperties */
    191 @synthesize treeAdaptor;
    192 
    193 + (void) initialize
    194 {
    195     #pragma mark Bitsets
    196     FOLLOW_term_in_poly43 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_term_in_poly43_data Count:(NSUInteger)1] retain];
    197     FOLLOW_8_in_poly46 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly46_data Count:(NSUInteger)1] retain];
    198     FOLLOW_term_in_poly49 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_term_in_poly49_data Count:(NSUInteger)1] retain];
    199     FOLLOW_INT_in_term63 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term63_data Count:(NSUInteger)1] retain];
    200     FOLLOW_ID_in_term65 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_term65_data Count:(NSUInteger)1] retain];
    201     FOLLOW_INT_in_term85 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term85_data Count:(NSUInteger)1] retain];
    202     FOLLOW_exp_in_term87 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_exp_in_term87_data Count:(NSUInteger)1] retain];
    203     FOLLOW_exp_in_term106 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_exp_in_term106_data Count:(NSUInteger)1] retain];
    204     FOLLOW_INT_in_term114 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term114_data Count:(NSUInteger)1] retain];
    205     FOLLOW_ID_in_term119 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_term119_data Count:(NSUInteger)1] retain];
    206     FOLLOW_ID_in_exp132 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_exp132_data Count:(NSUInteger)1] retain];
    207     FOLLOW_9_in_exp134 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_9_in_exp134_data Count:(NSUInteger)1] retain];
    208     FOLLOW_INT_in_exp137 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_exp137_data Count:(NSUInteger)1] retain];
    209 
    210     [BaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>",
    211  @"ID", @"INT", @"MULT", @"WS", @"'+'", @"'^'", nil] retain]];
    212     [BaseRecognizer setGrammarFileName:@"/Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g"];
    213 }
    214 
    215 + (PolyParser *)newPolyParser:(id<TokenStream>)aStream
    216 {
    217     return [[PolyParser alloc] initWithTokenStream:aStream];
    218 }
    219 
    220 - (id) initWithTokenStream:(id<TokenStream>)aStream
    221 {
    222     self = [super initWithTokenStream:aStream State:[[RecognizerSharedState newRecognizerSharedStateWithRuleLen:3+1] retain]];
    223     if ( self != nil ) {
    224         /* start of actions-actionScope-init */
    225         /* start of init */
    226         /* AST genericParser.init */
    227         [self setTreeAdaptor:[[CommonTreeAdaptor newTreeAdaptor] retain]];
    228     }
    229     return self;
    230 }
    231 
    232 - (void) dealloc
    233 {
    234     /* AST genericParser.dealloc */
    235     [self setTreeAdaptor:nil];
    236 
    237     [super dealloc];
    238 }
    239 
    240 /* ObjC start actions.(actionScope).methods */
    241 /* ObjC end actions.(actionScope).methods */
    242 /* ObjC start methods() */
    243 /* AST genericParser.methods */
    244 /* AST parserMethods */
    245 - (id<TreeAdaptor>) getTreeAdaptor
    246 {
    247 	return treeAdaptor;
    248 }
    249 
    250 - (void) setTreeAdaptor:(id<TreeAdaptor>)aTreeAdaptor
    251 {
    252 	if (aTreeAdaptor != treeAdaptor) {
    253 		treeAdaptor = aTreeAdaptor;
    254 	}
    255 }
    256 /* ObjC end methods() */
    257 /* ObjC start rules */
    258 /*
    259  * $ANTLR start poly
    260  * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:1: poly : term ( '+' ^ term )* ;
    261  */
    262 - (PolyParser_poly_return *) poly
    263 {
    264     /* ruleScopeSetUp */
    265 
    266     /* AST ruleDeclarations */
    267     /* ruleDeclarations */
    268     PolyParser_poly_return * retval = [PolyParser_poly_return newPolyParser_poly_return];
    269     [retval setStart:[input LT:1]];
    270 
    271 
    272     CommonTree *root_0 = nil;
    273 
    274     @try {
    275         /* AST ruleLabelDefs */
    276         /* ruleLabelDefs entry */
    277         CommonToken *char_literal2 = nil;PolyParser_term_return * term1 = nil ;
    278 
    279         PolyParser_term_return * term3 = nil ;
    280 
    281 
    282         CommonTree *char_literal2_tree=nil;
    283 
    284         // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:5: ( term ( '+' ^ term )* ) // ruleBlockSingleAlt
    285         // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:7: term ( '+' ^ term )* // alt
    286         {
    287         root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    288 
    289 
    290 
    291         /* ASTParser ruleRef */
    292         /* ruleRef */
    293         [self pushFollow:FOLLOW_term_in_poly43];
    294         term1 = [self term];
    295 
    296         [self popFollow];
    297 
    298 
    299         [treeAdaptor addChild:[term1 getTree] toTree:root_0];
    300 
    301 
    302         do {
    303             NSInteger alt1=2;
    304             NSInteger LA1_0 = [input LA:1];
    305             if ( (LA1_0==8) ) {
    306                 alt1=1;
    307             }
    308 
    309 
    310             switch (alt1) {
    311                 case 1 : ;
    312                     // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:13: '+' ^ term // alt
    313                     {
    314 
    315                     char_literal2=(CommonToken *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly46];
    316                     char_literal2_tree = /* ASTParser createNodeFromToken */
    317                     (CommonTree *)[[treeAdaptor create:char_literal2] retain]
    318                     ;
    319                     root_0 = (CommonTree *)[treeAdaptor becomeRoot:char_literal2_tree old:root_0];
    320 
    321 
    322                     /* ASTParser ruleRef */
    323                     /* ruleRef */
    324                     [self pushFollow:FOLLOW_term_in_poly49];
    325                     term3 = [self term];
    326 
    327                     [self popFollow];
    328 
    329 
    330                     [treeAdaptor addChild:[term3 getTree] toTree:root_0];
    331 
    332                     }
    333                     break;
    334 
    335                 default :
    336                     goto loop1;
    337             }
    338         } while (YES);
    339         loop1: ;
    340 
    341 
    342         }
    343 
    344         /* ASTParser ruleCleanUp */
    345         /* AST ruleCleanUp */
    346         /* token+rule list labels */
    347         [retval setStop:[input LT:-1]];
    348 
    349 
    350 
    351             retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0];
    352             [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken];
    353 
    354     }
    355     @catch (RecognitionException *re) {
    356         [self reportError:re];
    357         [self recover:input Exception:re];
    358         /* ASTParser rule.setErrorReturnValue */
    359         retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re];
    360 
    361     }
    362 
    363     @finally {
    364         /* ruleScopeCleanUp */
    365 
    366     }
    367     return retval;
    368 }
    369 /* $ANTLR end poly */
    370 
    371 /*
    372  * $ANTLR start term
    373  * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:1: term : ( INT ID -> ^( MULT[@\"*\"] INT ID ) | INT exp -> ^( MULT[@\"*\"] INT exp ) | exp | INT | ID );
    374  */
    375 - (PolyParser_term_return *) term
    376 {
    377     /* ruleScopeSetUp */
    378 
    379     /* AST ruleDeclarations */
    380     /* ruleDeclarations */
    381     PolyParser_term_return * retval = [PolyParser_term_return newPolyParser_term_return];
    382     [retval setStart:[input LT:1]];
    383 
    384 
    385     CommonTree *root_0 = nil;
    386 
    387     @try {
    388         /* AST ruleLabelDefs */
    389         /* ruleLabelDefs entry */
    390         CommonToken *INT4 = nil;
    391         CommonToken *ID5 = nil;
    392         CommonToken *INT6 = nil;
    393         CommonToken *INT9 = nil;
    394         CommonToken *ID10 = nil;PolyParser_exp_return * exp7 = nil ;
    395 
    396         PolyParser_exp_return * exp8 = nil ;
    397 
    398 
    399         CommonTree *INT4_tree=nil;
    400         CommonTree *ID5_tree=nil;
    401         CommonTree *INT6_tree=nil;
    402         CommonTree *INT9_tree=nil;
    403         CommonTree *ID10_tree=nil;
    404         RewriteRuleTokenStream *stream_INT =
    405             [[RewriteRuleTokenStream newRewriteRuleTokenStream:treeAdaptor
    406                                                              description:@"token INT"] retain];
    407         RewriteRuleTokenStream *stream_ID =
    408             [[RewriteRuleTokenStream newRewriteRuleTokenStream:treeAdaptor
    409                                                              description:@"token ID"] retain];
    410         RewriteRuleSubtreeStream *stream_exp =
    411             [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor
    412                                                                 description:@"rule exp"] retain];
    413         // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:5: ( INT ID -> ^( MULT[@\"*\"] INT ID ) | INT exp -> ^( MULT[@\"*\"] INT exp ) | exp | INT | ID ) //ruleblock
    414         NSInteger alt2=5;
    415         NSInteger LA2_0 = [input LA:1];
    416 
    417         if ( (LA2_0==INT) ) {
    418             NSInteger LA2_1 = [input LA:2];
    419 
    420             if ( (LA2_1==ID) ) {
    421                 NSInteger LA2_3 = [input LA:3];
    422 
    423                 if ( (LA2_3==9) ) {
    424                     alt2=2;
    425                 }
    426                 else if ( (LA2_3==EOF||LA2_3==8) ) {
    427                     alt2=1;
    428                 }
    429                 else {
    430                     NoViableAltException *nvae = [NoViableAltException newException:2 state:3 stream:input];
    431                     nvae.c = LA2_3;
    432                     @throw nvae;
    433 
    434                 }
    435             }
    436             else if ( (LA2_1==EOF||LA2_1==8) ) {
    437                 alt2=4;
    438             }
    439             else {
    440                 NoViableAltException *nvae = [NoViableAltException newException:2 state:1 stream:input];
    441                 nvae.c = LA2_1;
    442                 @throw nvae;
    443 
    444             }
    445         }
    446         else if ( (LA2_0==ID) ) {
    447             NSInteger LA2_2 = [input LA:2];
    448 
    449             if ( (LA2_2==9) ) {
    450                 alt2=3;
    451             }
    452             else if ( (LA2_2==EOF||LA2_2==8) ) {
    453                 alt2=5;
    454             }
    455             else {
    456                 NoViableAltException *nvae = [NoViableAltException newException:2 state:2 stream:input];
    457                 nvae.c = LA2_2;
    458                 @throw nvae;
    459 
    460             }
    461         }
    462         else {
    463             NoViableAltException *nvae = [NoViableAltException newException:2 state:0 stream:input];
    464             nvae.c = LA2_0;
    465             @throw nvae;
    466 
    467         }
    468         switch (alt2) {
    469             case 1 : ;
    470                 // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:7: INT ID // alt
    471                 {
    472 
    473                 INT4=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term63];
    474                     [stream_INT addElement:INT4];
    475 
    476 
    477                 ID5=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_term65];
    478                     [stream_ID addElement:ID5];
    479 
    480 
    481                 // AST REWRITE
    482                 // elements: ID, INT
    483                 // token labels:
    484                 // rule labels: retval
    485                 // token list labels:
    486                 // rule list labels:
    487                 // wildcard labels:
    488                 retval.tree = root_0;
    489 
    490                 RewriteRuleSubtreeStream *stream_retval =
    491                     [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor
    492                         description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain];
    493 
    494                 root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    495 
    496                 // 11:15: -> ^( MULT[@\"*\"] INT ID )
    497                 {
    498                     // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:18: ^( MULT[@\"*\"] INT ID )
    499                     {
    500                         CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    501                         root_1 = (CommonTree *)[treeAdaptor becomeRoot:
    502                                 [[treeAdaptor createTree:MULT FromToken:@"*" Text:@"MULT"] retain]
    503                          old:root_1];
    504 
    505                          // TODO: args:
    506                         [treeAdaptor addChild:
    507                                     [stream_INT nextNode]
    508                          toTree:root_1];
    509 
    510                          // TODO: args:
    511                         [treeAdaptor addChild:
    512                                     [stream_ID nextNode]
    513                          toTree:root_1];
    514 
    515                         [treeAdaptor addChild:root_1 toTree:root_0];
    516                     }
    517 
    518                 }
    519 
    520 
    521                 retval.tree = root_0;
    522 
    523 
    524                 }
    525                 break;
    526             case 2 : ;
    527                 // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:12:7: INT exp // alt
    528                 {
    529 
    530                 INT6=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term85];
    531                     [stream_INT addElement:INT6];
    532 
    533 
    534                 /* ruleRef */
    535                 [self pushFollow:FOLLOW_exp_in_term87];
    536                 exp7 = [self exp];
    537 
    538                 [self popFollow];
    539 
    540 
    541                 [stream_exp addElement:[exp7 getTree]];
    542 
    543                 // AST REWRITE
    544                 // elements: exp, INT
    545                 // token labels:
    546                 // rule labels: retval
    547                 // token list labels:
    548                 // rule list labels:
    549                 // wildcard labels:
    550                 retval.tree = root_0;
    551 
    552                 RewriteRuleSubtreeStream *stream_retval =
    553                     [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor
    554                         description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain];
    555 
    556                 root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    557 
    558                 // 12:15: -> ^( MULT[@\"*\"] INT exp )
    559                 {
    560                     // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:12:18: ^( MULT[@\"*\"] INT exp )
    561                     {
    562                         CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    563                         root_1 = (CommonTree *)[treeAdaptor becomeRoot:
    564                                 [[treeAdaptor createTree:MULT FromToken:@"*" Text:@"MULT"] retain]
    565                          old:root_1];
    566 
    567                          // TODO: args:
    568                         [treeAdaptor addChild:
    569                                     [stream_INT nextNode]
    570                          toTree:root_1];
    571 
    572                         [treeAdaptor addChild:[stream_exp nextTree] toTree:root_1];
    573 
    574                         [treeAdaptor addChild:root_1 toTree:root_0];
    575                     }
    576 
    577                 }
    578 
    579 
    580                 retval.tree = root_0;
    581 
    582 
    583                 }
    584                 break;
    585             case 3 : ;
    586                 // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:13:7: exp // alt
    587                 {
    588                 root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    589 
    590 
    591 
    592                 /* ASTParser ruleRef */
    593                 /* ruleRef */
    594                 [self pushFollow:FOLLOW_exp_in_term106];
    595                 exp8 = [self exp];
    596 
    597                 [self popFollow];
    598 
    599 
    600                 [treeAdaptor addChild:[exp8 getTree] toTree:root_0];
    601 
    602                 }
    603                 break;
    604             case 4 : ;
    605                 // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:14:7: INT // alt
    606                 {
    607                 root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    608 
    609 
    610 
    611                 /* ASTParser tokenRef */
    612                 INT9=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term114];
    613                 INT9_tree = /* ASTParser createNodeFromToken */
    614                 (CommonTree *)[[treeAdaptor create:INT9] retain]
    615                 ;
    616                 [treeAdaptor addChild:INT9_tree  toTree:root_0];
    617 
    618 
    619                 }
    620                 break;
    621             case 5 : ;
    622                 // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:15:4: ID // alt
    623                 {
    624                 root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    625 
    626 
    627 
    628                 /* ASTParser tokenRef */
    629                 ID10=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_term119];
    630                 ID10_tree = /* ASTParser createNodeFromToken */
    631                 (CommonTree *)[[treeAdaptor create:ID10] retain]
    632                 ;
    633                 [treeAdaptor addChild:ID10_tree  toTree:root_0];
    634 
    635 
    636                 }
    637                 break;
    638 
    639         }
    640         /* ASTParser ruleCleanUp */
    641         /* AST ruleCleanUp */
    642         /* token+rule list labels */
    643         [retval setStop:[input LT:-1]];
    644 
    645 
    646         [stream_INT release];
    647         [stream_ID release];
    648         [stream_exp release];
    649 
    650             retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0];
    651             [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken];
    652 
    653     }
    654     @catch (RecognitionException *re) {
    655         [self reportError:re];
    656         [self recover:input Exception:re];
    657         /* ASTParser rule.setErrorReturnValue */
    658         retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re];
    659 
    660     }
    661 
    662     @finally {
    663         /* ruleScopeCleanUp */
    664 
    665     }
    666     return retval;
    667 }
    668 /* $ANTLR end term */
    669 
    670 /*
    671  * $ANTLR start exp
    672  * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:1: exp : ID '^' ^ INT ;
    673  */
    674 - (PolyParser_exp_return *) exp
    675 {
    676     /* ruleScopeSetUp */
    677 
    678     /* AST ruleDeclarations */
    679     /* ruleDeclarations */
    680     PolyParser_exp_return * retval = [PolyParser_exp_return newPolyParser_exp_return];
    681     [retval setStart:[input LT:1]];
    682 
    683 
    684     CommonTree *root_0 = nil;
    685 
    686     @try {
    687         /* AST ruleLabelDefs */
    688         /* ruleLabelDefs entry */
    689         CommonToken *ID11 = nil;
    690         CommonToken *char_literal12 = nil;
    691         CommonToken *INT13 = nil;
    692 
    693         CommonTree *ID11_tree=nil;
    694         CommonTree *char_literal12_tree=nil;
    695         CommonTree *INT13_tree=nil;
    696 
    697         // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:5: ( ID '^' ^ INT ) // ruleBlockSingleAlt
    698         // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:7: ID '^' ^ INT // alt
    699         {
    700         root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
    701 
    702 
    703 
    704         /* ASTParser tokenRef */
    705         ID11=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_exp132];
    706         ID11_tree = /* ASTParser createNodeFromToken */
    707         (CommonTree *)[[treeAdaptor create:ID11] retain]
    708         ;
    709         [treeAdaptor addChild:ID11_tree  toTree:root_0];
    710 
    711 
    712         char_literal12=(CommonToken *)[self match:input TokenType:9 Follow:FOLLOW_9_in_exp134];
    713         char_literal12_tree = /* ASTParser createNodeFromToken */
    714         (CommonTree *)[[treeAdaptor create:char_literal12] retain]
    715         ;
    716         root_0 = (CommonTree *)[treeAdaptor becomeRoot:char_literal12_tree old:root_0];
    717 
    718 
    719         /* ASTParser tokenRef */
    720         INT13=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_exp137];
    721         INT13_tree = /* ASTParser createNodeFromToken */
    722         (CommonTree *)[[treeAdaptor create:INT13] retain]
    723         ;
    724         [treeAdaptor addChild:INT13_tree  toTree:root_0];
    725 
    726 
    727         }
    728 
    729         /* ASTParser ruleCleanUp */
    730         /* AST ruleCleanUp */
    731         /* token+rule list labels */
    732         [retval setStop:[input LT:-1]];
    733 
    734 
    735 
    736             retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0];
    737             [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken];
    738 
    739     }
    740     @catch (RecognitionException *re) {
    741         [self reportError:re];
    742         [self recover:input Exception:re];
    743         /* ASTParser rule.setErrorReturnValue */
    744         retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re];
    745 
    746     }
    747 
    748     @finally {
    749         /* ruleScopeCleanUp */
    750 
    751     }
    752     return retval;
    753 }
    754 /* $ANTLR end exp */
    755 /* ObjC end rules */
    756 
    757 @end /* end of PolyParser implementation line 692 */
    758