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