1/** \file 2 * This OBJC source file was generated by $ANTLR version ${project.version} ${buildNumber} 3 * 4 * - From the grammar source file : SimpleC.g 5 * - On : 2011-05-06 15:09:17 6 * - for the parser : SimpleCParserParser 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 ${project.version} ${buildNumber} SimpleC.g 2011-05-06 15:09:17 15 16 17/* ----------------------------------------- 18 * Include the ANTLR3 generated header file. 19 */ 20#import "SimpleCParser.h" 21/* ----------------------------------------- */ 22 23 24/* ============================================================================= */ 25/* ============================================================================= 26 * Start of recognizer 27 */ 28#pragma mark Cyclic DFA implementation start DFA2 29@implementation DFA2 30const static NSInteger dfa2_eot[13] = 31 {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; 32const static NSInteger dfa2_eof[13] = 33 {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; 34const static unichar dfa2_min[13] = 35 {9,14,18,9,0,14,17,10,0,0,9,14,10}; 36const static unichar dfa2_max[13] = 37 {24,14,23,24,0,14,23,22,0,0,24,14,22}; 38const static NSInteger dfa2_accept[13] = 39 {-1,-1,-1,-1,1,-1,-1,-1,2,3,-1,-1,-1}; 40const static NSInteger dfa2_special[13] = 41 {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; 42const static NSInteger dfa2_transition[] = {}; 43const static NSInteger dfa2_transition0[] = {9, -1, -1, -1, -1, -1, 8}; 44const static NSInteger dfa2_transition1[] = {10, -1, -1, -1, -1, -1, -1, 45 -1, -1, -1, -1, -1, 6}; 46const static NSInteger dfa2_transition2[] = {5, -1, -1, -1, -1, 5, -1, 5, 47 -1, -1, -1, -1, -1, 6, -1, 5}; 48const static NSInteger dfa2_transition3[] = {11, -1, -1, -1, -1, 11, -1, 49 11, -1, -1, -1, -1, -1, -1, -1, 11}; 50const static NSInteger dfa2_transition4[] = {3, -1, -1, -1, -1, 4}; 51const static NSInteger dfa2_transition5[] = {1, -1, -1, -1, -1, 1, -1, 1, 52 -1, -1, -1, -1, -1, -1, -1, 1}; 53const static NSInteger dfa2_transition6[] = {7}; 54const static NSInteger dfa2_transition7[] = {12}; 55const static NSInteger dfa2_transition8[] = {2}; 56 57 58+ (id) newDFA2WithRecognizer:(ANTLRBaseRecognizer *)aRecognizer 59{ 60 return [[[DFA2 alloc] initWithRecognizer:aRecognizer] retain]; 61} 62 63- (id) initWithRecognizer:(ANTLRBaseRecognizer *) theRecognizer 64{ 65 self = [super initWithRecognizer:theRecognizer]; 66 if ( self != nil ) { 67 decisionNumber = 2; 68 eot = dfa2_eot; 69 eof = dfa2_eof; 70 min = dfa2_min; 71 max = dfa2_max; 72 accept = dfa2_accept; 73 special = dfa2_special; 74 if (!(transition = calloc(13, sizeof(void*)))) { 75 [self release]; 76 return nil; 77 } 78 len = 13; 79 transition[0] = dfa2_transition5; 80 transition[1] = dfa2_transition8; 81 transition[2] = dfa2_transition4; 82 transition[3] = dfa2_transition2; 83 84 transition[4] = dfa2_transition6; 85 transition[5] = dfa2_transition0; 86 transition[6] = dfa2_transition1; 87 88 89 transition[7] = dfa2_transition3; 90 transition[8] = dfa2_transition7; 91 transition[9] = dfa2_transition1; 92 } 93 return self; 94} 95 96- (void) dealloc 97{ 98 free(transition); 99 [super dealloc]; 100} 101 102- (NSString *) description 103{ 104 return @"20:1: declaration : ( variable | functionHeader K_SEMICOLON -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );"; 105} 106 107 108@end /* end DFA2 implementation */ 109 110#pragma mark Cyclic DFA implementation end DFA2 111 112 113 114#pragma mark Bitsets 115static ANTLRBitSet *FOLLOW_declaration_in_program85; 116static const unsigned long long FOLLOW_declaration_in_program85_data[] = { 0x0000000001014202LL}; 117static ANTLRBitSet *FOLLOW_variable_in_declaration105; 118static const unsigned long long FOLLOW_variable_in_declaration105_data[] = { 0x0000000000000002LL}; 119static ANTLRBitSet *FOLLOW_functionHeader_in_declaration115; 120static const unsigned long long FOLLOW_functionHeader_in_declaration115_data[] = { 0x0000000000800000LL}; 121static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_declaration117; 122static const unsigned long long FOLLOW_K_SEMICOLON_in_declaration117_data[] = { 0x0000000000000002LL}; 123static ANTLRBitSet *FOLLOW_functionHeader_in_declaration135; 124static const unsigned long long FOLLOW_functionHeader_in_declaration135_data[] = { 0x0000000000020000LL}; 125static ANTLRBitSet *FOLLOW_block_in_declaration137; 126static const unsigned long long FOLLOW_block_in_declaration137_data[] = { 0x0000000000000002LL}; 127static ANTLRBitSet *FOLLOW_type_in_variable166; 128static const unsigned long long FOLLOW_type_in_variable166_data[] = { 0x0000000000004000LL}; 129static ANTLRBitSet *FOLLOW_declarator_in_variable168; 130static const unsigned long long FOLLOW_declarator_in_variable168_data[] = { 0x0000000000800000LL}; 131static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_variable170; 132static const unsigned long long FOLLOW_K_SEMICOLON_in_variable170_data[] = { 0x0000000000000002LL}; 133static ANTLRBitSet *FOLLOW_K_ID_in_declarator199; 134static const unsigned long long FOLLOW_K_ID_in_declarator199_data[] = { 0x0000000000000002LL}; 135static ANTLRBitSet *FOLLOW_type_in_functionHeader219; 136static const unsigned long long FOLLOW_type_in_functionHeader219_data[] = { 0x0000000000004000LL}; 137static ANTLRBitSet *FOLLOW_K_ID_in_functionHeader221; 138static const unsigned long long FOLLOW_K_ID_in_functionHeader221_data[] = { 0x0000000000040000LL}; 139static ANTLRBitSet *FOLLOW_K_LCURVE_in_functionHeader223; 140static const unsigned long long FOLLOW_K_LCURVE_in_functionHeader223_data[] = { 0x0000000001414200LL}; 141static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader227; 142static const unsigned long long FOLLOW_formalParameter_in_functionHeader227_data[] = { 0x0000000000400400LL}; 143static ANTLRBitSet *FOLLOW_K_COMMA_in_functionHeader231; 144static const unsigned long long FOLLOW_K_COMMA_in_functionHeader231_data[] = { 0x0000000001014200LL}; 145static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader233; 146static const unsigned long long FOLLOW_formalParameter_in_functionHeader233_data[] = { 0x0000000000400400LL}; 147static ANTLRBitSet *FOLLOW_K_RCURVE_in_functionHeader241; 148static const unsigned long long FOLLOW_K_RCURVE_in_functionHeader241_data[] = { 0x0000000000000002LL}; 149static ANTLRBitSet *FOLLOW_type_in_formalParameter281; 150static const unsigned long long FOLLOW_type_in_formalParameter281_data[] = { 0x0000000000004000LL}; 151static ANTLRBitSet *FOLLOW_declarator_in_formalParameter283; 152static const unsigned long long FOLLOW_declarator_in_formalParameter283_data[] = { 0x0000000000000002LL}; 153static ANTLRBitSet *FOLLOW_K_LCURLY_in_block376; 154static const unsigned long long FOLLOW_K_LCURLY_in_block376_data[] = { 0x0000000001A7E200LL}; 155static ANTLRBitSet *FOLLOW_variable_in_block390; 156static const unsigned long long FOLLOW_variable_in_block390_data[] = { 0x0000000001A7E200LL}; 157static ANTLRBitSet *FOLLOW_stat_in_block405; 158static const unsigned long long FOLLOW_stat_in_block405_data[] = { 0x0000000000A6E000LL}; 159static ANTLRBitSet *FOLLOW_K_RCURLY_in_block416; 160static const unsigned long long FOLLOW_K_RCURLY_in_block416_data[] = { 0x0000000000000002LL}; 161static ANTLRBitSet *FOLLOW_forStat_in_stat449; 162static const unsigned long long FOLLOW_forStat_in_stat449_data[] = { 0x0000000000000002LL}; 163static ANTLRBitSet *FOLLOW_expr_in_stat457; 164static const unsigned long long FOLLOW_expr_in_stat457_data[] = { 0x0000000000800000LL}; 165static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_stat459; 166static const unsigned long long FOLLOW_K_SEMICOLON_in_stat459_data[] = { 0x0000000000000002LL}; 167static ANTLRBitSet *FOLLOW_block_in_stat468; 168static const unsigned long long FOLLOW_block_in_stat468_data[] = { 0x0000000000000002LL}; 169static ANTLRBitSet *FOLLOW_assignStat_in_stat476; 170static const unsigned long long FOLLOW_assignStat_in_stat476_data[] = { 0x0000000000800000LL}; 171static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_stat478; 172static const unsigned long long FOLLOW_K_SEMICOLON_in_stat478_data[] = { 0x0000000000000002LL}; 173static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_stat487; 174static const unsigned long long FOLLOW_K_SEMICOLON_in_stat487_data[] = { 0x0000000000000002LL}; 175static ANTLRBitSet *FOLLOW_K_FOR_in_forStat507; 176static const unsigned long long FOLLOW_K_FOR_in_forStat507_data[] = { 0x0000000000040000LL}; 177static ANTLRBitSet *FOLLOW_K_LCURVE_in_forStat509; 178static const unsigned long long FOLLOW_K_LCURVE_in_forStat509_data[] = { 0x0000000000004000LL}; 179static ANTLRBitSet *FOLLOW_assignStat_in_forStat513; 180static const unsigned long long FOLLOW_assignStat_in_forStat513_data[] = { 0x0000000000800000LL}; 181static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_forStat515; 182static const unsigned long long FOLLOW_K_SEMICOLON_in_forStat515_data[] = { 0x000000000004C000LL}; 183static ANTLRBitSet *FOLLOW_expr_in_forStat517; 184static const unsigned long long FOLLOW_expr_in_forStat517_data[] = { 0x0000000000800000LL}; 185static ANTLRBitSet *FOLLOW_K_SEMICOLON_in_forStat519; 186static const unsigned long long FOLLOW_K_SEMICOLON_in_forStat519_data[] = { 0x0000000000004000LL}; 187static ANTLRBitSet *FOLLOW_assignStat_in_forStat523; 188static const unsigned long long FOLLOW_assignStat_in_forStat523_data[] = { 0x0000000000400000LL}; 189static ANTLRBitSet *FOLLOW_K_RCURVE_in_forStat525; 190static const unsigned long long FOLLOW_K_RCURVE_in_forStat525_data[] = { 0x0000000000020000LL}; 191static ANTLRBitSet *FOLLOW_block_in_forStat527; 192static const unsigned long long FOLLOW_block_in_forStat527_data[] = { 0x0000000000000002LL}; 193static ANTLRBitSet *FOLLOW_K_ID_in_assignStat570; 194static const unsigned long long FOLLOW_K_ID_in_assignStat570_data[] = { 0x0000000000000800LL}; 195static ANTLRBitSet *FOLLOW_K_EQ_in_assignStat572; 196static const unsigned long long FOLLOW_K_EQ_in_assignStat572_data[] = { 0x000000000004C000LL}; 197static ANTLRBitSet *FOLLOW_expr_in_assignStat574; 198static const unsigned long long FOLLOW_expr_in_assignStat574_data[] = { 0x0000000000000002LL}; 199static ANTLRBitSet *FOLLOW_condExpr_in_expr598; 200static const unsigned long long FOLLOW_condExpr_in_expr598_data[] = { 0x0000000000000002LL}; 201static ANTLRBitSet *FOLLOW_aexpr_in_condExpr617; 202static const unsigned long long FOLLOW_aexpr_in_condExpr617_data[] = { 0x0000000000081002LL}; 203static ANTLRBitSet *FOLLOW_K_EQEQ_in_condExpr622; 204static const unsigned long long FOLLOW_K_EQEQ_in_condExpr622_data[] = { 0x000000000004C000LL}; 205static ANTLRBitSet *FOLLOW_K_LT_in_condExpr627; 206static const unsigned long long FOLLOW_K_LT_in_condExpr627_data[] = { 0x000000000004C000LL}; 207static ANTLRBitSet *FOLLOW_aexpr_in_condExpr631; 208static const unsigned long long FOLLOW_aexpr_in_condExpr631_data[] = { 0x0000000000000002LL}; 209static ANTLRBitSet *FOLLOW_atom_in_aexpr653; 210static const unsigned long long FOLLOW_atom_in_aexpr653_data[] = { 0x0000000000100002LL}; 211static ANTLRBitSet *FOLLOW_K_PLUS_in_aexpr657; 212static const unsigned long long FOLLOW_K_PLUS_in_aexpr657_data[] = { 0x000000000004C000LL}; 213static ANTLRBitSet *FOLLOW_atom_in_aexpr660; 214static const unsigned long long FOLLOW_atom_in_aexpr660_data[] = { 0x0000000000100002LL}; 215static ANTLRBitSet *FOLLOW_K_ID_in_atom680; 216static const unsigned long long FOLLOW_K_ID_in_atom680_data[] = { 0x0000000000000002LL}; 217static ANTLRBitSet *FOLLOW_K_INT_in_atom694; 218static const unsigned long long FOLLOW_K_INT_in_atom694_data[] = { 0x0000000000000002LL}; 219static ANTLRBitSet *FOLLOW_K_LCURVE_in_atom708; 220static const unsigned long long FOLLOW_K_LCURVE_in_atom708_data[] = { 0x000000000004C000LL}; 221static ANTLRBitSet *FOLLOW_expr_in_atom710; 222static const unsigned long long FOLLOW_expr_in_atom710_data[] = { 0x0000000000400000LL}; 223static ANTLRBitSet *FOLLOW_K_RCURVE_in_atom712; 224static const unsigned long long FOLLOW_K_RCURVE_in_atom712_data[] = { 0x0000000000000002LL}; 225 226 227#pragma mark Dynamic Global Scopes 228 229#pragma mark Dynamic Rule Scopes 230 231#pragma mark Rule Return Scopes start 232@implementation SimpleCParser_program_return /* returnScope */ 233/* AST returnScope.synthesize */ 234@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 235+ (SimpleCParser_program_return *)newSimpleCParser_program_return 236{ 237 return [[[SimpleCParser_program_return alloc] init] retain]; 238} 239 240- (id) init 241{ 242 self = [super init]; 243 return self; 244} 245 246/* AST returnScope.methods */ 247- (ANTLRCommonTree *)getTree 248{ 249 return tree; 250} 251 252- (void) setTree:(ANTLRCommonTree *)aTree 253{ 254 if (tree != aTree) { 255 if (tree != nil) [tree release]; 256 if (aTree != nil) [aTree retain]; 257 tree = aTree; 258 } 259} 260 261- (void) dealloc 262{ 263 self.tree = nil; 264 [super dealloc]; 265} 266 267 268 269@end /* end of returnScope implementation */ 270 271 272@implementation SimpleCParser_declaration_return /* returnScope */ 273/* AST returnScope.synthesize */ 274@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 275+ (SimpleCParser_declaration_return *)newSimpleCParser_declaration_return 276{ 277 return [[[SimpleCParser_declaration_return alloc] init] retain]; 278} 279 280- (id) init 281{ 282 self = [super init]; 283 return self; 284} 285 286/* AST returnScope.methods */ 287- (ANTLRCommonTree *)getTree 288{ 289 return tree; 290} 291 292- (void) setTree:(ANTLRCommonTree *)aTree 293{ 294 if (tree != aTree) { 295 if (tree != nil) [tree release]; 296 if (aTree != nil) [aTree retain]; 297 tree = aTree; 298 } 299} 300 301- (void) dealloc 302{ 303 self.tree = nil; 304 [super dealloc]; 305} 306 307 308 309@end /* end of returnScope implementation */ 310 311 312@implementation SimpleCParser_variable_return /* returnScope */ 313/* AST returnScope.synthesize */ 314@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 315+ (SimpleCParser_variable_return *)newSimpleCParser_variable_return 316{ 317 return [[[SimpleCParser_variable_return alloc] init] retain]; 318} 319 320- (id) init 321{ 322 self = [super init]; 323 return self; 324} 325 326/* AST returnScope.methods */ 327- (ANTLRCommonTree *)getTree 328{ 329 return tree; 330} 331 332- (void) setTree:(ANTLRCommonTree *)aTree 333{ 334 if (tree != aTree) { 335 if (tree != nil) [tree release]; 336 if (aTree != nil) [aTree retain]; 337 tree = aTree; 338 } 339} 340 341- (void) dealloc 342{ 343 self.tree = nil; 344 [super dealloc]; 345} 346 347 348 349@end /* end of returnScope implementation */ 350 351 352@implementation SimpleCParser_declarator_return /* returnScope */ 353/* AST returnScope.synthesize */ 354@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 355+ (SimpleCParser_declarator_return *)newSimpleCParser_declarator_return 356{ 357 return [[[SimpleCParser_declarator_return alloc] init] retain]; 358} 359 360- (id) init 361{ 362 self = [super init]; 363 return self; 364} 365 366/* AST returnScope.methods */ 367- (ANTLRCommonTree *)getTree 368{ 369 return tree; 370} 371 372- (void) setTree:(ANTLRCommonTree *)aTree 373{ 374 if (tree != aTree) { 375 if (tree != nil) [tree release]; 376 if (aTree != nil) [aTree retain]; 377 tree = aTree; 378 } 379} 380 381- (void) dealloc 382{ 383 self.tree = nil; 384 [super dealloc]; 385} 386 387 388 389@end /* end of returnScope implementation */ 390 391 392@implementation SimpleCParser_functionHeader_return /* returnScope */ 393/* AST returnScope.synthesize */ 394@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 395+ (SimpleCParser_functionHeader_return *)newSimpleCParser_functionHeader_return 396{ 397 return [[[SimpleCParser_functionHeader_return alloc] init] retain]; 398} 399 400- (id) init 401{ 402 self = [super init]; 403 return self; 404} 405 406/* AST returnScope.methods */ 407- (ANTLRCommonTree *)getTree 408{ 409 return tree; 410} 411 412- (void) setTree:(ANTLRCommonTree *)aTree 413{ 414 if (tree != aTree) { 415 if (tree != nil) [tree release]; 416 if (aTree != nil) [aTree retain]; 417 tree = aTree; 418 } 419} 420 421- (void) dealloc 422{ 423 self.tree = nil; 424 [super dealloc]; 425} 426 427 428 429@end /* end of returnScope implementation */ 430 431 432@implementation SimpleCParser_formalParameter_return /* returnScope */ 433/* AST returnScope.synthesize */ 434@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 435+ (SimpleCParser_formalParameter_return *)newSimpleCParser_formalParameter_return 436{ 437 return [[[SimpleCParser_formalParameter_return alloc] init] retain]; 438} 439 440- (id) init 441{ 442 self = [super init]; 443 return self; 444} 445 446/* AST returnScope.methods */ 447- (ANTLRCommonTree *)getTree 448{ 449 return tree; 450} 451 452- (void) setTree:(ANTLRCommonTree *)aTree 453{ 454 if (tree != aTree) { 455 if (tree != nil) [tree release]; 456 if (aTree != nil) [aTree retain]; 457 tree = aTree; 458 } 459} 460 461- (void) dealloc 462{ 463 self.tree = nil; 464 [super dealloc]; 465} 466 467 468 469@end /* end of returnScope implementation */ 470 471 472@implementation SimpleCParser_type_return /* returnScope */ 473/* AST returnScope.synthesize */ 474@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 475+ (SimpleCParser_type_return *)newSimpleCParser_type_return 476{ 477 return [[[SimpleCParser_type_return alloc] init] retain]; 478} 479 480- (id) init 481{ 482 self = [super init]; 483 return self; 484} 485 486/* AST returnScope.methods */ 487- (ANTLRCommonTree *)getTree 488{ 489 return tree; 490} 491 492- (void) setTree:(ANTLRCommonTree *)aTree 493{ 494 if (tree != aTree) { 495 if (tree != nil) [tree release]; 496 if (aTree != nil) [aTree retain]; 497 tree = aTree; 498 } 499} 500 501- (void) dealloc 502{ 503 self.tree = nil; 504 [super dealloc]; 505} 506 507 508 509@end /* end of returnScope implementation */ 510 511 512@implementation SimpleCParser_block_return /* returnScope */ 513/* AST returnScope.synthesize */ 514@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 515+ (SimpleCParser_block_return *)newSimpleCParser_block_return 516{ 517 return [[[SimpleCParser_block_return alloc] init] retain]; 518} 519 520- (id) init 521{ 522 self = [super init]; 523 return self; 524} 525 526/* AST returnScope.methods */ 527- (ANTLRCommonTree *)getTree 528{ 529 return tree; 530} 531 532- (void) setTree:(ANTLRCommonTree *)aTree 533{ 534 if (tree != aTree) { 535 if (tree != nil) [tree release]; 536 if (aTree != nil) [aTree retain]; 537 tree = aTree; 538 } 539} 540 541- (void) dealloc 542{ 543 self.tree = nil; 544 [super dealloc]; 545} 546 547 548 549@end /* end of returnScope implementation */ 550 551 552@implementation SimpleCParser_stat_return /* returnScope */ 553/* AST returnScope.synthesize */ 554@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 555+ (SimpleCParser_stat_return *)newSimpleCParser_stat_return 556{ 557 return [[[SimpleCParser_stat_return alloc] init] retain]; 558} 559 560- (id) init 561{ 562 self = [super init]; 563 return self; 564} 565 566/* AST returnScope.methods */ 567- (ANTLRCommonTree *)getTree 568{ 569 return tree; 570} 571 572- (void) setTree:(ANTLRCommonTree *)aTree 573{ 574 if (tree != aTree) { 575 if (tree != nil) [tree release]; 576 if (aTree != nil) [aTree retain]; 577 tree = aTree; 578 } 579} 580 581- (void) dealloc 582{ 583 self.tree = nil; 584 [super dealloc]; 585} 586 587 588 589@end /* end of returnScope implementation */ 590 591 592@implementation SimpleCParser_forStat_return /* returnScope */ 593/* AST returnScope.synthesize */ 594@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 595+ (SimpleCParser_forStat_return *)newSimpleCParser_forStat_return 596{ 597 return [[[SimpleCParser_forStat_return alloc] init] retain]; 598} 599 600- (id) init 601{ 602 self = [super init]; 603 return self; 604} 605 606/* AST returnScope.methods */ 607- (ANTLRCommonTree *)getTree 608{ 609 return tree; 610} 611 612- (void) setTree:(ANTLRCommonTree *)aTree 613{ 614 if (tree != aTree) { 615 if (tree != nil) [tree release]; 616 if (aTree != nil) [aTree retain]; 617 tree = aTree; 618 } 619} 620 621- (void) dealloc 622{ 623 self.tree = nil; 624 [super dealloc]; 625} 626 627 628 629@end /* end of returnScope implementation */ 630 631 632@implementation SimpleCParser_assignStat_return /* returnScope */ 633/* AST returnScope.synthesize */ 634@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 635+ (SimpleCParser_assignStat_return *)newSimpleCParser_assignStat_return 636{ 637 return [[[SimpleCParser_assignStat_return alloc] init] retain]; 638} 639 640- (id) init 641{ 642 self = [super init]; 643 return self; 644} 645 646/* AST returnScope.methods */ 647- (ANTLRCommonTree *)getTree 648{ 649 return tree; 650} 651 652- (void) setTree:(ANTLRCommonTree *)aTree 653{ 654 if (tree != aTree) { 655 if (tree != nil) [tree release]; 656 if (aTree != nil) [aTree retain]; 657 tree = aTree; 658 } 659} 660 661- (void) dealloc 662{ 663 self.tree = nil; 664 [super dealloc]; 665} 666 667 668 669@end /* end of returnScope implementation */ 670 671 672@implementation SimpleCParser_expr_return /* returnScope */ 673/* AST returnScope.synthesize */ 674@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 675+ (SimpleCParser_expr_return *)newSimpleCParser_expr_return 676{ 677 return [[[SimpleCParser_expr_return alloc] init] retain]; 678} 679 680- (id) init 681{ 682 self = [super init]; 683 return self; 684} 685 686/* AST returnScope.methods */ 687- (ANTLRCommonTree *)getTree 688{ 689 return tree; 690} 691 692- (void) setTree:(ANTLRCommonTree *)aTree 693{ 694 if (tree != aTree) { 695 if (tree != nil) [tree release]; 696 if (aTree != nil) [aTree retain]; 697 tree = aTree; 698 } 699} 700 701- (void) dealloc 702{ 703 self.tree = nil; 704 [super dealloc]; 705} 706 707 708 709@end /* end of returnScope implementation */ 710 711 712@implementation SimpleCParser_condExpr_return /* returnScope */ 713/* AST returnScope.synthesize */ 714@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 715+ (SimpleCParser_condExpr_return *)newSimpleCParser_condExpr_return 716{ 717 return [[[SimpleCParser_condExpr_return alloc] init] retain]; 718} 719 720- (id) init 721{ 722 self = [super init]; 723 return self; 724} 725 726/* AST returnScope.methods */ 727- (ANTLRCommonTree *)getTree 728{ 729 return tree; 730} 731 732- (void) setTree:(ANTLRCommonTree *)aTree 733{ 734 if (tree != aTree) { 735 if (tree != nil) [tree release]; 736 if (aTree != nil) [aTree retain]; 737 tree = aTree; 738 } 739} 740 741- (void) dealloc 742{ 743 self.tree = nil; 744 [super dealloc]; 745} 746 747 748 749@end /* end of returnScope implementation */ 750 751 752@implementation SimpleCParser_aexpr_return /* returnScope */ 753/* AST returnScope.synthesize */ 754@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 755+ (SimpleCParser_aexpr_return *)newSimpleCParser_aexpr_return 756{ 757 return [[[SimpleCParser_aexpr_return alloc] init] retain]; 758} 759 760- (id) init 761{ 762 self = [super init]; 763 return self; 764} 765 766/* AST returnScope.methods */ 767- (ANTLRCommonTree *)getTree 768{ 769 return tree; 770} 771 772- (void) setTree:(ANTLRCommonTree *)aTree 773{ 774 if (tree != aTree) { 775 if (tree != nil) [tree release]; 776 if (aTree != nil) [aTree retain]; 777 tree = aTree; 778 } 779} 780 781- (void) dealloc 782{ 783 self.tree = nil; 784 [super dealloc]; 785} 786 787 788 789@end /* end of returnScope implementation */ 790 791 792@implementation SimpleCParser_atom_return /* returnScope */ 793/* AST returnScope.synthesize */ 794@synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ 795+ (SimpleCParser_atom_return *)newSimpleCParser_atom_return 796{ 797 return [[[SimpleCParser_atom_return alloc] init] retain]; 798} 799 800- (id) init 801{ 802 self = [super init]; 803 return self; 804} 805 806/* AST returnScope.methods */ 807- (ANTLRCommonTree *)getTree 808{ 809 return tree; 810} 811 812- (void) setTree:(ANTLRCommonTree *)aTree 813{ 814 if (tree != aTree) { 815 if (tree != nil) [tree release]; 816 if (aTree != nil) [aTree retain]; 817 tree = aTree; 818 } 819} 820 821- (void) dealloc 822{ 823 self.tree = nil; 824 [super dealloc]; 825} 826 827 828 829@end /* end of returnScope implementation */ 830 831 832//#pragma mark Rule return scopes start 833// 834 835#pragma mark Rule return scopes start 836 837@implementation SimpleCParser // line 637 838 839/* ObjC start of ruleAttributeScope */ 840#pragma mark Dynamic Rule Scopes 841/* ObjC end of ruleAttributeScope */ 842#pragma mark global Attribute Scopes 843/* ObjC start globalAttributeScope */ 844/* ObjC end globalAttributeScope */ 845/* ObjC start actions.(actionScope).synthesize */ 846/* ObjC end actions.(actionScope).synthesize */ 847/* ObjC start synthesize() */ 848/* AST genericParser.synthesize */ 849/* AST parserProperties */ 850@synthesize treeAdaptor; 851/* ObjC end synthesize() */ 852 853+ (void) initialize 854{ 855 #pragma mark Bitsets 856 FOLLOW_declaration_in_program85 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declaration_in_program85_data Count:(NSUInteger)1] retain]; 857 FOLLOW_variable_in_declaration105 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_declaration105_data Count:(NSUInteger)1] retain]; 858 FOLLOW_functionHeader_in_declaration115 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration115_data Count:(NSUInteger)1] retain]; 859 FOLLOW_K_SEMICOLON_in_declaration117 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_declaration117_data Count:(NSUInteger)1] retain]; 860 FOLLOW_functionHeader_in_declaration135 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration135_data Count:(NSUInteger)1] retain]; 861 FOLLOW_block_in_declaration137 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_declaration137_data Count:(NSUInteger)1] retain]; 862 FOLLOW_type_in_variable166 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_variable166_data Count:(NSUInteger)1] retain]; 863 FOLLOW_declarator_in_variable168 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_variable168_data Count:(NSUInteger)1] retain]; 864 FOLLOW_K_SEMICOLON_in_variable170 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_variable170_data Count:(NSUInteger)1] retain]; 865 FOLLOW_K_ID_in_declarator199 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_declarator199_data Count:(NSUInteger)1] retain]; 866 FOLLOW_type_in_functionHeader219 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_functionHeader219_data Count:(NSUInteger)1] retain]; 867 FOLLOW_K_ID_in_functionHeader221 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_functionHeader221_data Count:(NSUInteger)1] retain]; 868 FOLLOW_K_LCURVE_in_functionHeader223 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LCURVE_in_functionHeader223_data Count:(NSUInteger)1] retain]; 869 FOLLOW_formalParameter_in_functionHeader227 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader227_data Count:(NSUInteger)1] retain]; 870 FOLLOW_K_COMMA_in_functionHeader231 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_COMMA_in_functionHeader231_data Count:(NSUInteger)1] retain]; 871 FOLLOW_formalParameter_in_functionHeader233 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader233_data Count:(NSUInteger)1] retain]; 872 FOLLOW_K_RCURVE_in_functionHeader241 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_RCURVE_in_functionHeader241_data Count:(NSUInteger)1] retain]; 873 FOLLOW_type_in_formalParameter281 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_formalParameter281_data Count:(NSUInteger)1] retain]; 874 FOLLOW_declarator_in_formalParameter283 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_formalParameter283_data Count:(NSUInteger)1] retain]; 875 FOLLOW_K_LCURLY_in_block376 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LCURLY_in_block376_data Count:(NSUInteger)1] retain]; 876 FOLLOW_variable_in_block390 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_block390_data Count:(NSUInteger)1] retain]; 877 FOLLOW_stat_in_block405 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_stat_in_block405_data Count:(NSUInteger)1] retain]; 878 FOLLOW_K_RCURLY_in_block416 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_RCURLY_in_block416_data Count:(NSUInteger)1] retain]; 879 FOLLOW_forStat_in_stat449 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_forStat_in_stat449_data Count:(NSUInteger)1] retain]; 880 FOLLOW_expr_in_stat457 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_stat457_data Count:(NSUInteger)1] retain]; 881 FOLLOW_K_SEMICOLON_in_stat459 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_stat459_data Count:(NSUInteger)1] retain]; 882 FOLLOW_block_in_stat468 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_stat468_data Count:(NSUInteger)1] retain]; 883 FOLLOW_assignStat_in_stat476 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_stat476_data Count:(NSUInteger)1] retain]; 884 FOLLOW_K_SEMICOLON_in_stat478 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_stat478_data Count:(NSUInteger)1] retain]; 885 FOLLOW_K_SEMICOLON_in_stat487 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_stat487_data Count:(NSUInteger)1] retain]; 886 FOLLOW_K_FOR_in_forStat507 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_FOR_in_forStat507_data Count:(NSUInteger)1] retain]; 887 FOLLOW_K_LCURVE_in_forStat509 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LCURVE_in_forStat509_data Count:(NSUInteger)1] retain]; 888 FOLLOW_assignStat_in_forStat513 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat513_data Count:(NSUInteger)1] retain]; 889 FOLLOW_K_SEMICOLON_in_forStat515 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_forStat515_data Count:(NSUInteger)1] retain]; 890 FOLLOW_expr_in_forStat517 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat517_data Count:(NSUInteger)1] retain]; 891 FOLLOW_K_SEMICOLON_in_forStat519 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_SEMICOLON_in_forStat519_data Count:(NSUInteger)1] retain]; 892 FOLLOW_assignStat_in_forStat523 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat523_data Count:(NSUInteger)1] retain]; 893 FOLLOW_K_RCURVE_in_forStat525 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_RCURVE_in_forStat525_data Count:(NSUInteger)1] retain]; 894 FOLLOW_block_in_forStat527 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_forStat527_data Count:(NSUInteger)1] retain]; 895 FOLLOW_K_ID_in_assignStat570 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_assignStat570_data Count:(NSUInteger)1] retain]; 896 FOLLOW_K_EQ_in_assignStat572 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQ_in_assignStat572_data Count:(NSUInteger)1] retain]; 897 FOLLOW_expr_in_assignStat574 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_assignStat574_data Count:(NSUInteger)1] retain]; 898 FOLLOW_condExpr_in_expr598 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_condExpr_in_expr598_data Count:(NSUInteger)1] retain]; 899 FOLLOW_aexpr_in_condExpr617 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr617_data Count:(NSUInteger)1] retain]; 900 FOLLOW_K_EQEQ_in_condExpr622 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQEQ_in_condExpr622_data Count:(NSUInteger)1] retain]; 901 FOLLOW_K_LT_in_condExpr627 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LT_in_condExpr627_data Count:(NSUInteger)1] retain]; 902 FOLLOW_aexpr_in_condExpr631 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr631_data Count:(NSUInteger)1] retain]; 903 FOLLOW_atom_in_aexpr653 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr653_data Count:(NSUInteger)1] retain]; 904 FOLLOW_K_PLUS_in_aexpr657 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_PLUS_in_aexpr657_data Count:(NSUInteger)1] retain]; 905 FOLLOW_atom_in_aexpr660 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr660_data Count:(NSUInteger)1] retain]; 906 FOLLOW_K_ID_in_atom680 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_atom680_data Count:(NSUInteger)1] retain]; 907 FOLLOW_K_INT_in_atom694 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_INT_in_atom694_data Count:(NSUInteger)1] retain]; 908 FOLLOW_K_LCURVE_in_atom708 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LCURVE_in_atom708_data Count:(NSUInteger)1] retain]; 909 FOLLOW_expr_in_atom710 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_atom710_data Count:(NSUInteger)1] retain]; 910 FOLLOW_K_RCURVE_in_atom712 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_RCURVE_in_atom712_data Count:(NSUInteger)1] retain]; 911 912 [ANTLRBaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", 913 @"ARG_DEF", @"BLOCK", @"FUNC_DECL", @"FUNC_DEF", @"FUNC_HDR", @"K_CHAR", 914 @"K_COMMA", @"K_EQ", @"K_EQEQ", @"K_FOR", @"K_ID", @"K_INT", @"K_INT_TYPE", 915 @"K_LCURLY", @"K_LCURVE", @"K_LT", @"K_PLUS", @"K_RCURLY", @"K_RCURVE", 916 @"K_SEMICOLON", @"K_VOID", @"VAR_DEF", @"WS", nil] retain]]; 917 [ANTLRBaseRecognizer setGrammarFileName:@"SimpleC.g"]; 918} 919 920+ (SimpleCParser *)newSimpleCParser:(id<ANTLRTokenStream>)aStream 921{ 922 return [[SimpleCParser alloc] initWithTokenStream:aStream]; 923 924 925} 926 927- (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream 928{ 929 self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:15+1] retain]]; 930 if ( self != nil ) { 931 932 933 dfa2 = [DFA2 newDFA2WithRecognizer:self]; 934 /* start of actions-actionScope-init */ 935 /* start of init */ 936 /* AST genericParser.init */ 937 [self setTreeAdaptor:[[ANTLRCommonTreeAdaptor newTreeAdaptor] retain]]; 938 } 939 return self; 940} 941 942- (void) dealloc 943{ 944 [dfa2 release]; 945 /* AST genericParser.dealloc */ 946 [self setTreeAdaptor:nil]; 947 948 [super dealloc]; 949} 950 951/* ObjC start members */ 952/* ObjC end members */ 953/* ObjC start actions.(actionScope).methods */ 954/* ObjC end actions.(actionScope).methods */ 955/* ObjC start methods() */ 956/* AST genericParser.methods */ 957/* AST parserMethods */ 958- (id<ANTLRTreeAdaptor>) getTreeAdaptor 959{ 960 return treeAdaptor; 961} 962 963- (void) setTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor 964{ 965 if (aTreeAdaptor != treeAdaptor) { 966 treeAdaptor = aTreeAdaptor; 967 } 968} 969/* ObjC end methods() */ 970/* ObjC start rules */ 971/* 972 * $ANTLR start program 973 * SimpleC.g:16:1: program : ( declaration )+ ; 974 */ 975- (SimpleCParser_program_return *) program 976{ 977 /* my ruleScopeSetUp */ 978 /* Terence's stuff */ 979 980 /* AST ruleDeclarations */ 981 SimpleCParser_program_return * retval = [SimpleCParser_program_return newSimpleCParser_program_return]; 982 [retval setStart:[input LT:1]]; 983 984 985 ANTLRCommonTree *root_0 = nil; 986 987 @try { 988 /* AST ruleLabelDefs */ 989 SimpleCParser_declaration_return * declaration1 = nil ; 990 991 992 993 // SimpleC.g:17:5: ( ( declaration )+ ) // ruleBlockSingleAlt 994 // SimpleC.g:17:9: ( declaration )+ // alt 995 { 996 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 997 998 999 // SimpleC.g:17:9: ( declaration )+ // positiveClosureBlock 1000 NSInteger cnt1 = 0; 1001 do { 1002 NSInteger alt1 = 2; 1003 NSInteger LA1_0 = [input LA:1]; 1004 if ( (LA1_0==K_CHAR||LA1_0==K_ID||LA1_0==K_INT_TYPE||LA1_0==K_VOID) ) { 1005 alt1=1; 1006 } 1007 1008 1009 switch (alt1) { 1010 case 1 : ; 1011 // SimpleC.g:17:9: declaration // alt 1012 { 1013 /* ASTParser ruleRef */ 1014 /* ruleRef */ 1015 [self pushFollow:FOLLOW_declaration_in_program85]; 1016 declaration1 = [self declaration]; 1017 1018 [self popFollow]; 1019 1020 1021 [treeAdaptor addChild:[declaration1 getTree] toTree:root_0]; 1022 1023 } 1024 break; 1025 1026 default : 1027 if ( cnt1 >= 1 ) 1028 goto loop1; 1029 ANTLREarlyExitException *eee = 1030 [ANTLREarlyExitException newException:input decisionNumber:1]; 1031 @throw eee; 1032 } 1033 cnt1++; 1034 } while (YES); 1035 loop1: ; 1036 1037 1038 } 1039 1040 /* ASTParser ruleCleanUp */ 1041 /* AST ruleCleanUp */ 1042 // token+rule list labels 1043 [retval setStop:[input LT:-1]]; 1044 1045 1046 1047 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1048 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1049 1050 } 1051 @catch (ANTLRRecognitionException *re) { 1052 [self reportError:re]; 1053 [self recover:input Exception:re]; 1054 /* ASTParser rule.setErrorReturnValue */ 1055 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1056 1057 } 1058 1059 @finally { 1060 /* Terence's stuff */ 1061 1062 } 1063 return retval; 1064} 1065/* $ANTLR end program */ 1066 1067/* 1068 * $ANTLR start declaration 1069 * SimpleC.g:20:1: declaration : ( variable | functionHeader K_SEMICOLON -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) ); 1070 */ 1071- (SimpleCParser_declaration_return *) declaration 1072{ 1073 /* my ruleScopeSetUp */ 1074 /* Terence's stuff */ 1075 1076 /* AST ruleDeclarations */ 1077 SimpleCParser_declaration_return * retval = [SimpleCParser_declaration_return newSimpleCParser_declaration_return]; 1078 [retval setStart:[input LT:1]]; 1079 1080 1081 ANTLRCommonTree *root_0 = nil; 1082 1083 @try { 1084 /* AST ruleLabelDefs */ 1085 ANTLRCommonToken *K_SEMICOLON4 = nil; 1086 SimpleCParser_variable_return * variable2 = nil ; 1087 1088 SimpleCParser_functionHeader_return * functionHeader3 = nil ; 1089 1090 SimpleCParser_functionHeader_return * functionHeader5 = nil ; 1091 1092 SimpleCParser_block_return * block6 = nil ; 1093 1094 1095 ANTLRCommonTree *K_SEMICOLON4_tree=nil; 1096 ANTLRRewriteRuleTokenStream *stream_K_SEMICOLON = 1097 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1098 description:@"token K_SEMICOLON"] retain]; 1099 ANTLRRewriteRuleSubtreeStream *stream_functionHeader = 1100 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1101 description:@"rule functionHeader"] retain]; 1102 ANTLRRewriteRuleSubtreeStream *stream_block = 1103 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1104 description:@"rule block"] retain]; 1105 // SimpleC.g:21:5: ( variable | functionHeader K_SEMICOLON -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) ) //ruleblock 1106 NSInteger alt2=3; 1107 alt2 = [dfa2 predict:input]; 1108 switch (alt2) { 1109 case 1 : ; 1110 // SimpleC.g:21:9: variable // alt 1111 { 1112 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1113 1114 1115 /* ASTParser ruleRef */ 1116 /* ruleRef */ 1117 [self pushFollow:FOLLOW_variable_in_declaration105]; 1118 variable2 = [self variable]; 1119 1120 [self popFollow]; 1121 1122 1123 [treeAdaptor addChild:[variable2 getTree] toTree:root_0]; 1124 1125 } 1126 break; 1127 case 2 : ; 1128 // SimpleC.g:22:9: functionHeader K_SEMICOLON // alt 1129 { 1130 /* ruleRef */ 1131 [self pushFollow:FOLLOW_functionHeader_in_declaration115]; 1132 functionHeader3 = [self functionHeader]; 1133 1134 [self popFollow]; 1135 1136 1137 [stream_functionHeader addElement:[functionHeader3 getTree]]; 1138 1139 K_SEMICOLON4=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_declaration117]; 1140 [stream_K_SEMICOLON addElement:K_SEMICOLON4]; 1141 1142 1143 // AST REWRITE 1144 // elements: functionHeader 1145 // token labels: 1146 // rule labels: retval 1147 // token list labels: 1148 // rule list labels: 1149 // wildcard labels: 1150 retval.tree = root_0; 1151 1152 ANTLRRewriteRuleSubtreeStream *stream_retval = 1153 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1154 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 1155 1156 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1157 1158 // 22:36: -> ^( FUNC_DECL functionHeader ) 1159 { 1160 // SimpleC.g:22:39: ^( FUNC_DECL functionHeader ) 1161 { 1162 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1163 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 1164 [treeAdaptor createTree:FUNC_DECL Text:@"FUNC_DECL"] 1165 old:root_1]; 1166 1167 [treeAdaptor addChild:[stream_functionHeader nextTree] toTree:root_1]; 1168 1169 [treeAdaptor addChild:root_1 toTree:root_0]; 1170 } 1171 1172 } 1173 1174 1175 retval.tree = root_0; 1176 1177 1178 } 1179 break; 1180 case 3 : ; 1181 // SimpleC.g:23:9: functionHeader block // alt 1182 { 1183 /* ruleRef */ 1184 [self pushFollow:FOLLOW_functionHeader_in_declaration135]; 1185 functionHeader5 = [self functionHeader]; 1186 1187 [self popFollow]; 1188 1189 1190 [stream_functionHeader addElement:[functionHeader5 getTree]]; 1191 1192 /* ruleRef */ 1193 [self pushFollow:FOLLOW_block_in_declaration137]; 1194 block6 = [self block]; 1195 1196 [self popFollow]; 1197 1198 1199 [stream_block addElement:[block6 getTree]]; 1200 1201 // AST REWRITE 1202 // elements: functionHeader, block 1203 // token labels: 1204 // rule labels: retval 1205 // token list labels: 1206 // rule list labels: 1207 // wildcard labels: 1208 retval.tree = root_0; 1209 1210 ANTLRRewriteRuleSubtreeStream *stream_retval = 1211 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1212 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 1213 1214 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1215 1216 // 23:30: -> ^( FUNC_DEF functionHeader block ) 1217 { 1218 // SimpleC.g:23:33: ^( FUNC_DEF functionHeader block ) 1219 { 1220 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1221 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 1222 [treeAdaptor createTree:FUNC_DEF Text:@"FUNC_DEF"] 1223 old:root_1]; 1224 1225 [treeAdaptor addChild:[stream_functionHeader nextTree] toTree:root_1]; 1226 1227 [treeAdaptor addChild:[stream_block nextTree] toTree:root_1]; 1228 1229 [treeAdaptor addChild:root_1 toTree:root_0]; 1230 } 1231 1232 } 1233 1234 1235 retval.tree = root_0; 1236 1237 1238 } 1239 break; 1240 1241 } 1242 /* ASTParser ruleCleanUp */ 1243 /* AST ruleCleanUp */ 1244 // token+rule list labels 1245 [retval setStop:[input LT:-1]]; 1246 1247 1248 [stream_K_SEMICOLON release]; 1249 [stream_functionHeader release]; 1250 [stream_block release]; 1251 1252 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1253 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1254 1255 } 1256 @catch (ANTLRRecognitionException *re) { 1257 [self reportError:re]; 1258 [self recover:input Exception:re]; 1259 /* ASTParser rule.setErrorReturnValue */ 1260 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1261 1262 } 1263 1264 @finally { 1265 /* Terence's stuff */ 1266 1267 } 1268 return retval; 1269} 1270/* $ANTLR end declaration */ 1271 1272/* 1273 * $ANTLR start variable 1274 * SimpleC.g:26:1: variable : type declarator K_SEMICOLON -> ^( VAR_DEF type declarator ) ; 1275 */ 1276- (SimpleCParser_variable_return *) variable 1277{ 1278 /* my ruleScopeSetUp */ 1279 /* Terence's stuff */ 1280 1281 /* AST ruleDeclarations */ 1282 SimpleCParser_variable_return * retval = [SimpleCParser_variable_return newSimpleCParser_variable_return]; 1283 [retval setStart:[input LT:1]]; 1284 1285 1286 ANTLRCommonTree *root_0 = nil; 1287 1288 @try { 1289 /* AST ruleLabelDefs */ 1290 ANTLRCommonToken *K_SEMICOLON9 = nil; 1291 SimpleCParser_type_return * type7 = nil ; 1292 1293 SimpleCParser_declarator_return * declarator8 = nil ; 1294 1295 1296 ANTLRCommonTree *K_SEMICOLON9_tree=nil; 1297 ANTLRRewriteRuleTokenStream *stream_K_SEMICOLON = 1298 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1299 description:@"token K_SEMICOLON"] retain]; 1300 ANTLRRewriteRuleSubtreeStream *stream_declarator = 1301 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1302 description:@"rule declarator"] retain]; 1303 ANTLRRewriteRuleSubtreeStream *stream_type = 1304 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1305 description:@"rule type"] retain]; 1306 // SimpleC.g:27:5: ( type declarator K_SEMICOLON -> ^( VAR_DEF type declarator ) ) // ruleBlockSingleAlt 1307 // SimpleC.g:27:9: type declarator K_SEMICOLON // alt 1308 { 1309 /* ruleRef */ 1310 [self pushFollow:FOLLOW_type_in_variable166]; 1311 type7 = [self type]; 1312 1313 [self popFollow]; 1314 1315 1316 [stream_type addElement:[type7 getTree]]; 1317 1318 /* ruleRef */ 1319 [self pushFollow:FOLLOW_declarator_in_variable168]; 1320 declarator8 = [self declarator]; 1321 1322 [self popFollow]; 1323 1324 1325 [stream_declarator addElement:[declarator8 getTree]]; 1326 1327 K_SEMICOLON9=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_variable170]; 1328 [stream_K_SEMICOLON addElement:K_SEMICOLON9]; 1329 1330 1331 // AST REWRITE 1332 // elements: declarator, type 1333 // token labels: 1334 // rule labels: retval 1335 // token list labels: 1336 // rule list labels: 1337 // wildcard labels: 1338 retval.tree = root_0; 1339 1340 ANTLRRewriteRuleSubtreeStream *stream_retval = 1341 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1342 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 1343 1344 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1345 1346 // 27:37: -> ^( VAR_DEF type declarator ) 1347 { 1348 // SimpleC.g:27:40: ^( VAR_DEF type declarator ) 1349 { 1350 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1351 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 1352 [treeAdaptor createTree:VAR_DEF Text:@"VAR_DEF"] 1353 old:root_1]; 1354 1355 [treeAdaptor addChild:[stream_type nextTree] toTree:root_1]; 1356 1357 [treeAdaptor addChild:[stream_declarator nextTree] toTree:root_1]; 1358 1359 [treeAdaptor addChild:root_1 toTree:root_0]; 1360 } 1361 1362 } 1363 1364 1365 retval.tree = root_0; 1366 1367 1368 } 1369 1370 /* ASTParser ruleCleanUp */ 1371 /* AST ruleCleanUp */ 1372 // token+rule list labels 1373 [retval setStop:[input LT:-1]]; 1374 1375 1376 [stream_K_SEMICOLON release]; 1377 [stream_declarator release]; 1378 [stream_type release]; 1379 1380 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1381 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1382 1383 } 1384 @catch (ANTLRRecognitionException *re) { 1385 [self reportError:re]; 1386 [self recover:input Exception:re]; 1387 /* ASTParser rule.setErrorReturnValue */ 1388 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1389 1390 } 1391 1392 @finally { 1393 /* Terence's stuff */ 1394 1395 } 1396 return retval; 1397} 1398/* $ANTLR end variable */ 1399 1400/* 1401 * $ANTLR start declarator 1402 * SimpleC.g:30:1: declarator : K_ID ; 1403 */ 1404- (SimpleCParser_declarator_return *) declarator 1405{ 1406 /* my ruleScopeSetUp */ 1407 /* Terence's stuff */ 1408 1409 /* AST ruleDeclarations */ 1410 SimpleCParser_declarator_return * retval = [SimpleCParser_declarator_return newSimpleCParser_declarator_return]; 1411 [retval setStart:[input LT:1]]; 1412 1413 1414 ANTLRCommonTree *root_0 = nil; 1415 1416 @try { 1417 /* AST ruleLabelDefs */ 1418 ANTLRCommonToken *K_ID10 = nil; 1419 1420 ANTLRCommonTree *K_ID10_tree=nil; 1421 1422 // SimpleC.g:31:5: ( K_ID ) // ruleBlockSingleAlt 1423 // SimpleC.g:31:9: K_ID // alt 1424 { 1425 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1426 1427 1428 /* ASTParser tokenRef */ 1429 K_ID10=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_declarator199]; 1430 K_ID10_tree = /* ASTParser createNodeFromToken */ 1431 (ANTLRCommonTree *)[[treeAdaptor create:K_ID10] retain] 1432 ; 1433 [treeAdaptor addChild:K_ID10_tree toTree:root_0]; 1434 1435 1436 } 1437 1438 /* ASTParser ruleCleanUp */ 1439 /* AST ruleCleanUp */ 1440 // token+rule list labels 1441 [retval setStop:[input LT:-1]]; 1442 1443 1444 1445 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1446 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1447 1448 } 1449 @catch (ANTLRRecognitionException *re) { 1450 [self reportError:re]; 1451 [self recover:input Exception:re]; 1452 /* ASTParser rule.setErrorReturnValue */ 1453 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1454 1455 } 1456 1457 @finally { 1458 /* Terence's stuff */ 1459 1460 } 1461 return retval; 1462} 1463/* $ANTLR end declarator */ 1464 1465/* 1466 * $ANTLR start functionHeader 1467 * SimpleC.g:34:1: functionHeader : type K_ID K_LCURVE ( formalParameter ( K_COMMA formalParameter )* )? K_RCURVE -> ^( FUNC_HDR type K_ID ( formalParameter )+ ) ; 1468 */ 1469- (SimpleCParser_functionHeader_return *) functionHeader 1470{ 1471 /* my ruleScopeSetUp */ 1472 /* Terence's stuff */ 1473 1474 /* AST ruleDeclarations */ 1475 SimpleCParser_functionHeader_return * retval = [SimpleCParser_functionHeader_return newSimpleCParser_functionHeader_return]; 1476 [retval setStart:[input LT:1]]; 1477 1478 1479 ANTLRCommonTree *root_0 = nil; 1480 1481 @try { 1482 /* AST ruleLabelDefs */ 1483 ANTLRCommonToken *K_ID12 = nil; 1484 ANTLRCommonToken *K_LCURVE13 = nil; 1485 ANTLRCommonToken *K_COMMA15 = nil; 1486 ANTLRCommonToken *K_RCURVE17 = nil; 1487 SimpleCParser_type_return * type11 = nil ; 1488 1489 SimpleCParser_formalParameter_return * formalParameter14 = nil ; 1490 1491 SimpleCParser_formalParameter_return * formalParameter16 = nil ; 1492 1493 1494 ANTLRCommonTree *K_ID12_tree=nil; 1495 ANTLRCommonTree *K_LCURVE13_tree=nil; 1496 ANTLRCommonTree *K_COMMA15_tree=nil; 1497 ANTLRCommonTree *K_RCURVE17_tree=nil; 1498 ANTLRRewriteRuleTokenStream *stream_K_ID = 1499 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1500 description:@"token K_ID"] retain]; 1501 ANTLRRewriteRuleTokenStream *stream_K_LCURVE = 1502 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1503 description:@"token K_LCURVE"] retain]; 1504 ANTLRRewriteRuleTokenStream *stream_K_RCURVE = 1505 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1506 description:@"token K_RCURVE"] retain]; 1507 ANTLRRewriteRuleTokenStream *stream_K_COMMA = 1508 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1509 description:@"token K_COMMA"] retain]; 1510 ANTLRRewriteRuleSubtreeStream *stream_formalParameter = 1511 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1512 description:@"rule formalParameter"] retain]; 1513 ANTLRRewriteRuleSubtreeStream *stream_type = 1514 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1515 description:@"rule type"] retain]; 1516 // SimpleC.g:35:5: ( type K_ID K_LCURVE ( formalParameter ( K_COMMA formalParameter )* )? K_RCURVE -> ^( FUNC_HDR type K_ID ( formalParameter )+ ) ) // ruleBlockSingleAlt 1517 // SimpleC.g:35:9: type K_ID K_LCURVE ( formalParameter ( K_COMMA formalParameter )* )? K_RCURVE // alt 1518 { 1519 /* ruleRef */ 1520 [self pushFollow:FOLLOW_type_in_functionHeader219]; 1521 type11 = [self type]; 1522 1523 [self popFollow]; 1524 1525 1526 [stream_type addElement:[type11 getTree]]; 1527 1528 K_ID12=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_functionHeader221]; 1529 [stream_K_ID addElement:K_ID12]; 1530 1531 1532 K_LCURVE13=(ANTLRCommonToken *)[self match:input TokenType:K_LCURVE Follow:FOLLOW_K_LCURVE_in_functionHeader223]; 1533 [stream_K_LCURVE addElement:K_LCURVE13]; 1534 1535 1536 // SimpleC.g:35:28: ( formalParameter ( K_COMMA formalParameter )* )? // block 1537 NSInteger alt4=2; 1538 NSInteger LA4_0 = [input LA:1]; 1539 1540 if ( (LA4_0==K_CHAR||LA4_0==K_ID||LA4_0==K_INT_TYPE||LA4_0==K_VOID) ) { 1541 alt4=1; 1542 } 1543 switch (alt4) { 1544 case 1 : ; 1545 // SimpleC.g:35:30: formalParameter ( K_COMMA formalParameter )* // alt 1546 { 1547 /* ruleRef */ 1548 [self pushFollow:FOLLOW_formalParameter_in_functionHeader227]; 1549 formalParameter14 = [self formalParameter]; 1550 1551 [self popFollow]; 1552 1553 1554 [stream_formalParameter addElement:[formalParameter14 getTree]]; 1555 1556 do { 1557 NSInteger alt3=2; 1558 NSInteger LA3_0 = [input LA:1]; 1559 if ( (LA3_0==K_COMMA) ) { 1560 alt3=1; 1561 } 1562 1563 1564 switch (alt3) { 1565 case 1 : ; 1566 // SimpleC.g:35:48: K_COMMA formalParameter // alt 1567 { 1568 K_COMMA15=(ANTLRCommonToken *)[self match:input TokenType:K_COMMA Follow:FOLLOW_K_COMMA_in_functionHeader231]; 1569 [stream_K_COMMA addElement:K_COMMA15]; 1570 1571 1572 /* ruleRef */ 1573 [self pushFollow:FOLLOW_formalParameter_in_functionHeader233]; 1574 formalParameter16 = [self formalParameter]; 1575 1576 [self popFollow]; 1577 1578 1579 [stream_formalParameter addElement:[formalParameter16 getTree]]; 1580 1581 } 1582 break; 1583 1584 default : 1585 goto loop3; 1586 } 1587 } while (YES); 1588 loop3: ; 1589 1590 1591 } 1592 break; 1593 1594 } 1595 1596 1597 K_RCURVE17=(ANTLRCommonToken *)[self match:input TokenType:K_RCURVE Follow:FOLLOW_K_RCURVE_in_functionHeader241]; 1598 [stream_K_RCURVE addElement:K_RCURVE17]; 1599 1600 1601 // AST REWRITE 1602 // elements: formalParameter, type, K_ID 1603 // token labels: 1604 // rule labels: retval 1605 // token list labels: 1606 // rule list labels: 1607 // wildcard labels: 1608 retval.tree = root_0; 1609 1610 ANTLRRewriteRuleSubtreeStream *stream_retval = 1611 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1612 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 1613 1614 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1615 1616 // 36:9: -> ^( FUNC_HDR type K_ID ( formalParameter )+ ) 1617 { 1618 // SimpleC.g:36:12: ^( FUNC_HDR type K_ID ( formalParameter )+ ) 1619 { 1620 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1621 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 1622 [treeAdaptor createTree:FUNC_HDR Text:@"FUNC_HDR"] 1623 old:root_1]; 1624 1625 [treeAdaptor addChild:[stream_type nextTree] toTree:root_1]; 1626 1627 // TODO: args: 1628 [treeAdaptor addChild: 1629 [stream_K_ID nextNode] 1630 toTree:root_1]; 1631 1632 // SimpleC.g:36:33: ( formalParameter )+ 1633 { 1634 if ( !([stream_formalParameter hasNext]) ) { 1635 @throw [ANTLRRewriteEarlyExitException newException]; 1636 } 1637 while ( [stream_formalParameter hasNext] ) { 1638 [treeAdaptor addChild:[stream_formalParameter nextTree] toTree:root_1]; 1639 1640 } 1641 [stream_formalParameter reset]; 1642 1643 } 1644 [treeAdaptor addChild:root_1 toTree:root_0]; 1645 } 1646 1647 } 1648 1649 1650 retval.tree = root_0; 1651 1652 1653 } 1654 1655 /* ASTParser ruleCleanUp */ 1656 /* AST ruleCleanUp */ 1657 // token+rule list labels 1658 [retval setStop:[input LT:-1]]; 1659 1660 1661 [stream_K_ID release]; 1662 [stream_K_LCURVE release]; 1663 [stream_K_RCURVE release]; 1664 [stream_K_COMMA release]; 1665 [stream_formalParameter release]; 1666 [stream_type release]; 1667 1668 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1669 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1670 1671 } 1672 @catch (ANTLRRecognitionException *re) { 1673 [self reportError:re]; 1674 [self recover:input Exception:re]; 1675 /* ASTParser rule.setErrorReturnValue */ 1676 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1677 1678 } 1679 1680 @finally { 1681 /* Terence's stuff */ 1682 1683 } 1684 return retval; 1685} 1686/* $ANTLR end functionHeader */ 1687 1688/* 1689 * $ANTLR start formalParameter 1690 * SimpleC.g:39:1: formalParameter : type declarator -> ^( ARG_DEF type declarator ) ; 1691 */ 1692- (SimpleCParser_formalParameter_return *) formalParameter 1693{ 1694 /* my ruleScopeSetUp */ 1695 /* Terence's stuff */ 1696 1697 /* AST ruleDeclarations */ 1698 SimpleCParser_formalParameter_return * retval = [SimpleCParser_formalParameter_return newSimpleCParser_formalParameter_return]; 1699 [retval setStart:[input LT:1]]; 1700 1701 1702 ANTLRCommonTree *root_0 = nil; 1703 1704 @try { 1705 /* AST ruleLabelDefs */ 1706 SimpleCParser_type_return * type18 = nil ; 1707 1708 SimpleCParser_declarator_return * declarator19 = nil ; 1709 1710 1711 ANTLRRewriteRuleSubtreeStream *stream_declarator = 1712 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1713 description:@"rule declarator"] retain]; 1714 ANTLRRewriteRuleSubtreeStream *stream_type = 1715 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1716 description:@"rule type"] retain]; 1717 // SimpleC.g:40:5: ( type declarator -> ^( ARG_DEF type declarator ) ) // ruleBlockSingleAlt 1718 // SimpleC.g:40:9: type declarator // alt 1719 { 1720 /* ruleRef */ 1721 [self pushFollow:FOLLOW_type_in_formalParameter281]; 1722 type18 = [self type]; 1723 1724 [self popFollow]; 1725 1726 1727 [stream_type addElement:[type18 getTree]]; 1728 1729 /* ruleRef */ 1730 [self pushFollow:FOLLOW_declarator_in_formalParameter283]; 1731 declarator19 = [self declarator]; 1732 1733 [self popFollow]; 1734 1735 1736 [stream_declarator addElement:[declarator19 getTree]]; 1737 1738 // AST REWRITE 1739 // elements: declarator, type 1740 // token labels: 1741 // rule labels: retval 1742 // token list labels: 1743 // rule list labels: 1744 // wildcard labels: 1745 retval.tree = root_0; 1746 1747 ANTLRRewriteRuleSubtreeStream *stream_retval = 1748 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1749 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 1750 1751 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1752 1753 // 40:25: -> ^( ARG_DEF type declarator ) 1754 { 1755 // SimpleC.g:40:28: ^( ARG_DEF type declarator ) 1756 { 1757 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1758 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 1759 [treeAdaptor createTree:ARG_DEF Text:@"ARG_DEF"] 1760 old:root_1]; 1761 1762 [treeAdaptor addChild:[stream_type nextTree] toTree:root_1]; 1763 1764 [treeAdaptor addChild:[stream_declarator nextTree] toTree:root_1]; 1765 1766 [treeAdaptor addChild:root_1 toTree:root_0]; 1767 } 1768 1769 } 1770 1771 1772 retval.tree = root_0; 1773 1774 1775 } 1776 1777 /* ASTParser ruleCleanUp */ 1778 /* AST ruleCleanUp */ 1779 // token+rule list labels 1780 [retval setStop:[input LT:-1]]; 1781 1782 1783 [stream_declarator release]; 1784 [stream_type release]; 1785 1786 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1787 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1788 1789 } 1790 @catch (ANTLRRecognitionException *re) { 1791 [self reportError:re]; 1792 [self recover:input Exception:re]; 1793 /* ASTParser rule.setErrorReturnValue */ 1794 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1795 1796 } 1797 1798 @finally { 1799 /* Terence's stuff */ 1800 1801 } 1802 return retval; 1803} 1804/* $ANTLR end formalParameter */ 1805 1806/* 1807 * $ANTLR start type 1808 * SimpleC.g:43:1: type : ( K_INT_TYPE | K_CHAR | K_VOID | K_ID ); 1809 */ 1810- (SimpleCParser_type_return *) type 1811{ 1812 /* my ruleScopeSetUp */ 1813 /* Terence's stuff */ 1814 1815 /* AST ruleDeclarations */ 1816 SimpleCParser_type_return * retval = [SimpleCParser_type_return newSimpleCParser_type_return]; 1817 [retval setStart:[input LT:1]]; 1818 1819 1820 ANTLRCommonTree *root_0 = nil; 1821 1822 @try { 1823 /* AST ruleLabelDefs */ 1824 ANTLRCommonToken *set20 = nil; 1825 1826 ANTLRCommonTree *set20_tree=nil; 1827 1828 // SimpleC.g:44:5: ( K_INT_TYPE | K_CHAR | K_VOID | K_ID ) // ruleBlockSingleAlt 1829 // SimpleC.g: // alt 1830 { 1831 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 1832 1833 1834 /* ASTParser matchRuleBlockSet */ 1835 /* ASTParser matchSet */ 1836 set20 = (ANTLRCommonToken *)[input LT:1]; /* matchSet */ 1837 1838 if ([input LA:1] == K_CHAR||[input LA:1] == K_ID||[input LA:1] == K_INT_TYPE||[input LA:1] == K_VOID) { 1839 [input consume]; 1840 [treeAdaptor addChild:/* ASTParser createNodeFromToken */ 1841 (ANTLRCommonTree *)[[treeAdaptor create:set20] retain] 1842 toTree:root_0 ]; 1843 [state setIsErrorRecovery:NO]; 1844 } else { 1845 ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input]; 1846 @throw mse; 1847 } 1848 1849 1850 } 1851 1852 /* ASTParser ruleCleanUp */ 1853 /* AST ruleCleanUp */ 1854 // token+rule list labels 1855 [retval setStop:[input LT:-1]]; 1856 1857 1858 1859 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 1860 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 1861 1862 } 1863 @catch (ANTLRRecognitionException *re) { 1864 [self reportError:re]; 1865 [self recover:input Exception:re]; 1866 /* ASTParser rule.setErrorReturnValue */ 1867 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 1868 1869 } 1870 1871 @finally { 1872 /* Terence's stuff */ 1873 1874 } 1875 return retval; 1876} 1877/* $ANTLR end type */ 1878 1879/* 1880 * $ANTLR start block 1881 * SimpleC.g:50:1: block : lc= K_LCURLY ( variable )* ( stat )* K_RCURLY -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ; 1882 */ 1883- (SimpleCParser_block_return *) block 1884{ 1885 /* my ruleScopeSetUp */ 1886 /* Terence's stuff */ 1887 1888 /* AST ruleDeclarations */ 1889 SimpleCParser_block_return * retval = [SimpleCParser_block_return newSimpleCParser_block_return]; 1890 [retval setStart:[input LT:1]]; 1891 1892 1893 ANTLRCommonTree *root_0 = nil; 1894 1895 @try { 1896 /* AST ruleLabelDefs */ 1897 ANTLRCommonToken *lc = nil; 1898 ANTLRCommonToken *K_RCURLY23 = nil; 1899 SimpleCParser_variable_return * variable21 = nil ; 1900 1901 SimpleCParser_stat_return * stat22 = nil ; 1902 1903 1904 ANTLRCommonTree *lc_tree=nil; 1905 ANTLRCommonTree *K_RCURLY23_tree=nil; 1906 ANTLRRewriteRuleTokenStream *stream_K_LCURLY = 1907 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1908 description:@"token K_LCURLY"] retain]; 1909 ANTLRRewriteRuleTokenStream *stream_K_RCURLY = 1910 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 1911 description:@"token K_RCURLY"] retain]; 1912 ANTLRRewriteRuleSubtreeStream *stream_variable = 1913 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1914 description:@"rule variable"] retain]; 1915 ANTLRRewriteRuleSubtreeStream *stream_stat = 1916 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 1917 description:@"rule stat"] retain]; 1918 // SimpleC.g:51:5: (lc= K_LCURLY ( variable )* ( stat )* K_RCURLY -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ) // ruleBlockSingleAlt 1919 // SimpleC.g:51:9: lc= K_LCURLY ( variable )* ( stat )* K_RCURLY // alt 1920 { 1921 lc=(ANTLRCommonToken *)[self match:input TokenType:K_LCURLY Follow:FOLLOW_K_LCURLY_in_block376]; 1922 [stream_K_LCURLY addElement:lc]; 1923 1924 1925 do { 1926 NSInteger alt5=2; 1927 NSInteger LA5_0 = [input LA:1]; 1928 if ( (LA5_0==K_ID) ) { 1929 NSInteger LA5_2 = [input LA:2]; 1930 if ( (LA5_2==K_ID) ) { 1931 alt5=1; 1932 } 1933 1934 1935 } 1936 else if ( (LA5_0==K_CHAR||LA5_0==K_INT_TYPE||LA5_0==K_VOID) ) { 1937 alt5=1; 1938 } 1939 1940 1941 switch (alt5) { 1942 case 1 : ; 1943 // SimpleC.g:52:13: variable // alt 1944 { 1945 /* ruleRef */ 1946 [self pushFollow:FOLLOW_variable_in_block390]; 1947 variable21 = [self variable]; 1948 1949 [self popFollow]; 1950 1951 1952 [stream_variable addElement:[variable21 getTree]]; 1953 1954 } 1955 break; 1956 1957 default : 1958 goto loop5; 1959 } 1960 } while (YES); 1961 loop5: ; 1962 1963 1964 do { 1965 NSInteger alt6=2; 1966 NSInteger LA6_0 = [input LA:1]; 1967 if ( ((LA6_0 >= K_FOR && LA6_0 <= K_INT)||(LA6_0 >= K_LCURLY && LA6_0 <= K_LCURVE)||LA6_0==K_SEMICOLON) ) { 1968 alt6=1; 1969 } 1970 1971 1972 switch (alt6) { 1973 case 1 : ; 1974 // SimpleC.g:53:13: stat // alt 1975 { 1976 /* ruleRef */ 1977 [self pushFollow:FOLLOW_stat_in_block405]; 1978 stat22 = [self stat]; 1979 1980 [self popFollow]; 1981 1982 1983 [stream_stat addElement:[stat22 getTree]]; 1984 1985 } 1986 break; 1987 1988 default : 1989 goto loop6; 1990 } 1991 } while (YES); 1992 loop6: ; 1993 1994 1995 K_RCURLY23=(ANTLRCommonToken *)[self match:input TokenType:K_RCURLY Follow:FOLLOW_K_RCURLY_in_block416]; 1996 [stream_K_RCURLY addElement:K_RCURLY23]; 1997 1998 1999 // AST REWRITE 2000 // elements: stat, variable 2001 // token labels: 2002 // rule labels: retval 2003 // token list labels: 2004 // rule list labels: 2005 // wildcard labels: 2006 retval.tree = root_0; 2007 2008 ANTLRRewriteRuleSubtreeStream *stream_retval = 2009 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2010 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 2011 2012 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2013 2014 // 55:9: -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) 2015 { 2016 // SimpleC.g:55:12: ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) 2017 { 2018 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2019 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 2020 [treeAdaptor createTree:BLOCK FromToken:lc Text:@"BLOCK"] 2021 old:root_1]; 2022 2023 // SimpleC.g:55:34: ( variable )* 2024 while ( [stream_variable hasNext] ) { 2025 [treeAdaptor addChild:[stream_variable nextTree] toTree:root_1]; 2026 2027 } 2028 [stream_variable reset]; 2029 2030 // SimpleC.g:55:44: ( stat )* 2031 while ( [stream_stat hasNext] ) { 2032 [treeAdaptor addChild:[stream_stat nextTree] toTree:root_1]; 2033 2034 } 2035 [stream_stat reset]; 2036 2037 [treeAdaptor addChild:root_1 toTree:root_0]; 2038 } 2039 2040 } 2041 2042 2043 retval.tree = root_0; 2044 2045 2046 } 2047 2048 /* ASTParser ruleCleanUp */ 2049 /* AST ruleCleanUp */ 2050 // token+rule list labels 2051 [retval setStop:[input LT:-1]]; 2052 2053 2054 [stream_K_LCURLY release]; 2055 [stream_K_RCURLY release]; 2056 [stream_variable release]; 2057 [stream_stat release]; 2058 2059 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2060 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2061 2062 } 2063 @catch (ANTLRRecognitionException *re) { 2064 [self reportError:re]; 2065 [self recover:input Exception:re]; 2066 /* ASTParser rule.setErrorReturnValue */ 2067 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2068 2069 } 2070 2071 @finally { 2072 /* Terence's stuff */ 2073 2074 } 2075 return retval; 2076} 2077/* $ANTLR end block */ 2078 2079/* 2080 * $ANTLR start stat 2081 * SimpleC.g:58:1: stat : ( forStat | expr K_SEMICOLON !| block | assignStat K_SEMICOLON !| K_SEMICOLON !); 2082 */ 2083- (SimpleCParser_stat_return *) stat 2084{ 2085 /* my ruleScopeSetUp */ 2086 /* Terence's stuff */ 2087 2088 /* AST ruleDeclarations */ 2089 SimpleCParser_stat_return * retval = [SimpleCParser_stat_return newSimpleCParser_stat_return]; 2090 [retval setStart:[input LT:1]]; 2091 2092 2093 ANTLRCommonTree *root_0 = nil; 2094 2095 @try { 2096 /* AST ruleLabelDefs */ 2097 ANTLRCommonToken *K_SEMICOLON26 = nil; 2098 ANTLRCommonToken *K_SEMICOLON29 = nil; 2099 ANTLRCommonToken *K_SEMICOLON30 = nil; 2100 SimpleCParser_forStat_return * forStat24 = nil ; 2101 2102 SimpleCParser_expr_return * expr25 = nil ; 2103 2104 SimpleCParser_block_return * block27 = nil ; 2105 2106 SimpleCParser_assignStat_return * assignStat28 = nil ; 2107 2108 2109 ANTLRCommonTree *K_SEMICOLON26_tree=nil; 2110 ANTLRCommonTree *K_SEMICOLON29_tree=nil; 2111 ANTLRCommonTree *K_SEMICOLON30_tree=nil; 2112 2113 // SimpleC.g:58:5: ( forStat | expr K_SEMICOLON !| block | assignStat K_SEMICOLON !| K_SEMICOLON !) //ruleblock 2114 NSInteger alt7=5; 2115 unichar charLA7 = [input LA:1]; 2116 switch (charLA7) { 2117 case K_FOR: ; 2118 { 2119 alt7=1; 2120 } 2121 break; 2122 case K_ID: ; 2123 { 2124 NSInteger LA7_2 = [input LA:2]; 2125 2126 if ( (LA7_2==K_EQ) ) { 2127 alt7=4; 2128 } 2129 else if ( (LA7_2==K_EQEQ||(LA7_2 >= K_LT && LA7_2 <= K_PLUS)||LA7_2==K_SEMICOLON) ) { 2130 alt7=2; 2131 } 2132 else { 2133 ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:7 state:2 stream:input]; 2134 nvae.c = LA7_2; 2135 @throw nvae; 2136 2137 } 2138 } 2139 break; 2140 case K_INT: ; 2141 case K_LCURVE: ; 2142 { 2143 alt7=2; 2144 } 2145 break; 2146 case K_LCURLY: ; 2147 { 2148 alt7=3; 2149 } 2150 break; 2151 case K_SEMICOLON: ; 2152 { 2153 alt7=5; 2154 } 2155 break; 2156 2157 default: ; 2158 ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:7 state:0 stream:input]; 2159 nvae.c = charLA7; 2160 @throw nvae; 2161 2162 } 2163 2164 switch (alt7) { 2165 case 1 : ; 2166 // SimpleC.g:58:7: forStat // alt 2167 { 2168 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2169 2170 2171 /* ASTParser ruleRef */ 2172 /* ruleRef */ 2173 [self pushFollow:FOLLOW_forStat_in_stat449]; 2174 forStat24 = [self forStat]; 2175 2176 [self popFollow]; 2177 2178 2179 [treeAdaptor addChild:[forStat24 getTree] toTree:root_0]; 2180 2181 } 2182 break; 2183 case 2 : ; 2184 // SimpleC.g:59:7: expr K_SEMICOLON ! // alt 2185 { 2186 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2187 2188 2189 /* ASTParser ruleRef */ 2190 /* ruleRef */ 2191 [self pushFollow:FOLLOW_expr_in_stat457]; 2192 expr25 = [self expr]; 2193 2194 [self popFollow]; 2195 2196 2197 [treeAdaptor addChild:[expr25 getTree] toTree:root_0]; 2198 2199 K_SEMICOLON26=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_stat459]; 2200 2201 } 2202 break; 2203 case 3 : ; 2204 // SimpleC.g:60:7: block // alt 2205 { 2206 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2207 2208 2209 /* ASTParser ruleRef */ 2210 /* ruleRef */ 2211 [self pushFollow:FOLLOW_block_in_stat468]; 2212 block27 = [self block]; 2213 2214 [self popFollow]; 2215 2216 2217 [treeAdaptor addChild:[block27 getTree] toTree:root_0]; 2218 2219 } 2220 break; 2221 case 4 : ; 2222 // SimpleC.g:61:7: assignStat K_SEMICOLON ! // alt 2223 { 2224 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2225 2226 2227 /* ASTParser ruleRef */ 2228 /* ruleRef */ 2229 [self pushFollow:FOLLOW_assignStat_in_stat476]; 2230 assignStat28 = [self assignStat]; 2231 2232 [self popFollow]; 2233 2234 2235 [treeAdaptor addChild:[assignStat28 getTree] toTree:root_0]; 2236 2237 K_SEMICOLON29=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_stat478]; 2238 2239 } 2240 break; 2241 case 5 : ; 2242 // SimpleC.g:62:7: K_SEMICOLON ! // alt 2243 { 2244 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2245 2246 2247 K_SEMICOLON30=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_stat487]; 2248 2249 } 2250 break; 2251 2252 } 2253 /* ASTParser ruleCleanUp */ 2254 /* AST ruleCleanUp */ 2255 // token+rule list labels 2256 [retval setStop:[input LT:-1]]; 2257 2258 2259 2260 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2261 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2262 2263 } 2264 @catch (ANTLRRecognitionException *re) { 2265 [self reportError:re]; 2266 [self recover:input Exception:re]; 2267 /* ASTParser rule.setErrorReturnValue */ 2268 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2269 2270 } 2271 2272 @finally { 2273 /* Terence's stuff */ 2274 2275 } 2276 return retval; 2277} 2278/* $ANTLR end stat */ 2279 2280/* 2281 * $ANTLR start forStat 2282 * SimpleC.g:65:1: forStat : K_FOR K_LCURVE start= assignStat K_SEMICOLON expr K_SEMICOLON next= assignStat K_RCURVE block -> ^( K_FOR $start expr $next block ) ; 2283 */ 2284- (SimpleCParser_forStat_return *) forStat 2285{ 2286 /* my ruleScopeSetUp */ 2287 /* Terence's stuff */ 2288 2289 /* AST ruleDeclarations */ 2290 SimpleCParser_forStat_return * retval = [SimpleCParser_forStat_return newSimpleCParser_forStat_return]; 2291 [retval setStart:[input LT:1]]; 2292 2293 2294 ANTLRCommonTree *root_0 = nil; 2295 2296 @try { 2297 /* AST ruleLabelDefs */ 2298 ANTLRCommonToken *K_FOR31 = nil; 2299 ANTLRCommonToken *K_LCURVE32 = nil; 2300 ANTLRCommonToken *K_SEMICOLON33 = nil; 2301 ANTLRCommonToken *K_SEMICOLON35 = nil; 2302 ANTLRCommonToken *K_RCURVE36 = nil; 2303 SimpleCParser_assignStat_return * start = nil ; 2304 2305 SimpleCParser_assignStat_return * next = nil ; 2306 2307 SimpleCParser_expr_return * expr34 = nil ; 2308 2309 SimpleCParser_block_return * block37 = nil ; 2310 2311 2312 ANTLRCommonTree *K_FOR31_tree=nil; 2313 ANTLRCommonTree *K_LCURVE32_tree=nil; 2314 ANTLRCommonTree *K_SEMICOLON33_tree=nil; 2315 ANTLRCommonTree *K_SEMICOLON35_tree=nil; 2316 ANTLRCommonTree *K_RCURVE36_tree=nil; 2317 ANTLRRewriteRuleTokenStream *stream_K_LCURVE = 2318 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2319 description:@"token K_LCURVE"] retain]; 2320 ANTLRRewriteRuleTokenStream *stream_K_RCURVE = 2321 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2322 description:@"token K_RCURVE"] retain]; 2323 ANTLRRewriteRuleTokenStream *stream_K_SEMICOLON = 2324 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2325 description:@"token K_SEMICOLON"] retain]; 2326 ANTLRRewriteRuleTokenStream *stream_K_FOR = 2327 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2328 description:@"token K_FOR"] retain]; 2329 ANTLRRewriteRuleSubtreeStream *stream_assignStat = 2330 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2331 description:@"rule assignStat"] retain]; 2332 ANTLRRewriteRuleSubtreeStream *stream_block = 2333 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2334 description:@"rule block"] retain]; 2335 ANTLRRewriteRuleSubtreeStream *stream_expr = 2336 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2337 description:@"rule expr"] retain]; 2338 // SimpleC.g:66:5: ( K_FOR K_LCURVE start= assignStat K_SEMICOLON expr K_SEMICOLON next= assignStat K_RCURVE block -> ^( K_FOR $start expr $next block ) ) // ruleBlockSingleAlt 2339 // SimpleC.g:66:9: K_FOR K_LCURVE start= assignStat K_SEMICOLON expr K_SEMICOLON next= assignStat K_RCURVE block // alt 2340 { 2341 K_FOR31=(ANTLRCommonToken *)[self match:input TokenType:K_FOR Follow:FOLLOW_K_FOR_in_forStat507]; 2342 [stream_K_FOR addElement:K_FOR31]; 2343 2344 2345 K_LCURVE32=(ANTLRCommonToken *)[self match:input TokenType:K_LCURVE Follow:FOLLOW_K_LCURVE_in_forStat509]; 2346 [stream_K_LCURVE addElement:K_LCURVE32]; 2347 2348 2349 /* ruleRef */ 2350 [self pushFollow:FOLLOW_assignStat_in_forStat513]; 2351 start = [self assignStat]; 2352 2353 [self popFollow]; 2354 2355 2356 [stream_assignStat addElement:[start getTree]]; 2357 2358 K_SEMICOLON33=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_forStat515]; 2359 [stream_K_SEMICOLON addElement:K_SEMICOLON33]; 2360 2361 2362 /* ruleRef */ 2363 [self pushFollow:FOLLOW_expr_in_forStat517]; 2364 expr34 = [self expr]; 2365 2366 [self popFollow]; 2367 2368 2369 [stream_expr addElement:[expr34 getTree]]; 2370 2371 K_SEMICOLON35=(ANTLRCommonToken *)[self match:input TokenType:K_SEMICOLON Follow:FOLLOW_K_SEMICOLON_in_forStat519]; 2372 [stream_K_SEMICOLON addElement:K_SEMICOLON35]; 2373 2374 2375 /* ruleRef */ 2376 [self pushFollow:FOLLOW_assignStat_in_forStat523]; 2377 next = [self assignStat]; 2378 2379 [self popFollow]; 2380 2381 2382 [stream_assignStat addElement:[next getTree]]; 2383 2384 K_RCURVE36=(ANTLRCommonToken *)[self match:input TokenType:K_RCURVE Follow:FOLLOW_K_RCURVE_in_forStat525]; 2385 [stream_K_RCURVE addElement:K_RCURVE36]; 2386 2387 2388 /* ruleRef */ 2389 [self pushFollow:FOLLOW_block_in_forStat527]; 2390 block37 = [self block]; 2391 2392 [self popFollow]; 2393 2394 2395 [stream_block addElement:[block37 getTree]]; 2396 2397 // AST REWRITE 2398 // elements: start, next, expr, block, K_FOR 2399 // token labels: 2400 // rule labels: retval, start, next 2401 // token list labels: 2402 // rule list labels: 2403 // wildcard labels: 2404 retval.tree = root_0; 2405 2406 ANTLRRewriteRuleSubtreeStream *stream_retval = 2407 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2408 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 2409 ANTLRRewriteRuleSubtreeStream *stream_start = 2410 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2411 description:@"token start" element:start!=nil?[start getTree]:nil] retain]; 2412 ANTLRRewriteRuleSubtreeStream *stream_next = 2413 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2414 description:@"token next" element:next!=nil?[next getTree]:nil] retain]; 2415 2416 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2417 2418 // 67:9: -> ^( K_FOR $start expr $next block ) 2419 { 2420 // SimpleC.g:67:12: ^( K_FOR $start expr $next block ) 2421 { 2422 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2423 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 2424 [stream_K_FOR nextNode] 2425 old:root_1]; 2426 2427 [treeAdaptor addChild:[stream_start nextTree] toTree:root_1]; 2428 2429 [treeAdaptor addChild:[stream_expr nextTree] toTree:root_1]; 2430 2431 [treeAdaptor addChild:[stream_next nextTree] toTree:root_1]; 2432 2433 [treeAdaptor addChild:[stream_block nextTree] toTree:root_1]; 2434 2435 [treeAdaptor addChild:root_1 toTree:root_0]; 2436 } 2437 2438 } 2439 2440 2441 retval.tree = root_0; 2442 2443 2444 } 2445 2446 /* ASTParser ruleCleanUp */ 2447 /* AST ruleCleanUp */ 2448 // token+rule list labels 2449 [retval setStop:[input LT:-1]]; 2450 2451 2452 [stream_K_LCURVE release]; 2453 [stream_K_RCURVE release]; 2454 [stream_K_SEMICOLON release]; 2455 [stream_K_FOR release]; 2456 [stream_assignStat release]; 2457 [stream_block release]; 2458 [stream_expr release]; 2459 2460 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2461 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2462 2463 } 2464 @catch (ANTLRRecognitionException *re) { 2465 [self reportError:re]; 2466 [self recover:input Exception:re]; 2467 /* ASTParser rule.setErrorReturnValue */ 2468 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2469 2470 } 2471 2472 @finally { 2473 /* Terence's stuff */ 2474 2475 } 2476 return retval; 2477} 2478/* $ANTLR end forStat */ 2479 2480/* 2481 * $ANTLR start assignStat 2482 * SimpleC.g:70:1: assignStat : K_ID K_EQ expr -> ^( K_EQ K_ID expr ) ; 2483 */ 2484- (SimpleCParser_assignStat_return *) assignStat 2485{ 2486 /* my ruleScopeSetUp */ 2487 /* Terence's stuff */ 2488 2489 /* AST ruleDeclarations */ 2490 SimpleCParser_assignStat_return * retval = [SimpleCParser_assignStat_return newSimpleCParser_assignStat_return]; 2491 [retval setStart:[input LT:1]]; 2492 2493 2494 ANTLRCommonTree *root_0 = nil; 2495 2496 @try { 2497 /* AST ruleLabelDefs */ 2498 ANTLRCommonToken *K_ID38 = nil; 2499 ANTLRCommonToken *K_EQ39 = nil; 2500 SimpleCParser_expr_return * expr40 = nil ; 2501 2502 2503 ANTLRCommonTree *K_ID38_tree=nil; 2504 ANTLRCommonTree *K_EQ39_tree=nil; 2505 ANTLRRewriteRuleTokenStream *stream_K_ID = 2506 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2507 description:@"token K_ID"] retain]; 2508 ANTLRRewriteRuleTokenStream *stream_K_EQ = 2509 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2510 description:@"token K_EQ"] retain]; 2511 ANTLRRewriteRuleSubtreeStream *stream_expr = 2512 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2513 description:@"rule expr"] retain]; 2514 // SimpleC.g:71:5: ( K_ID K_EQ expr -> ^( K_EQ K_ID expr ) ) // ruleBlockSingleAlt 2515 // SimpleC.g:71:9: K_ID K_EQ expr // alt 2516 { 2517 K_ID38=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_assignStat570]; 2518 [stream_K_ID addElement:K_ID38]; 2519 2520 2521 K_EQ39=(ANTLRCommonToken *)[self match:input TokenType:K_EQ Follow:FOLLOW_K_EQ_in_assignStat572]; 2522 [stream_K_EQ addElement:K_EQ39]; 2523 2524 2525 /* ruleRef */ 2526 [self pushFollow:FOLLOW_expr_in_assignStat574]; 2527 expr40 = [self expr]; 2528 2529 [self popFollow]; 2530 2531 2532 [stream_expr addElement:[expr40 getTree]]; 2533 2534 // AST REWRITE 2535 // elements: K_ID, K_EQ, expr 2536 // token labels: 2537 // rule labels: retval 2538 // token list labels: 2539 // rule list labels: 2540 // wildcard labels: 2541 retval.tree = root_0; 2542 2543 ANTLRRewriteRuleSubtreeStream *stream_retval = 2544 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2545 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 2546 2547 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2548 2549 // 71:24: -> ^( K_EQ K_ID expr ) 2550 { 2551 // SimpleC.g:71:27: ^( K_EQ K_ID expr ) 2552 { 2553 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2554 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: 2555 [stream_K_EQ nextNode] 2556 old:root_1]; 2557 2558 // TODO: args: 2559 [treeAdaptor addChild: 2560 [stream_K_ID nextNode] 2561 toTree:root_1]; 2562 2563 [treeAdaptor addChild:[stream_expr nextTree] toTree:root_1]; 2564 2565 [treeAdaptor addChild:root_1 toTree:root_0]; 2566 } 2567 2568 } 2569 2570 2571 retval.tree = root_0; 2572 2573 2574 } 2575 2576 /* ASTParser ruleCleanUp */ 2577 /* AST ruleCleanUp */ 2578 // token+rule list labels 2579 [retval setStop:[input LT:-1]]; 2580 2581 2582 [stream_K_ID release]; 2583 [stream_K_EQ release]; 2584 [stream_expr release]; 2585 2586 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2587 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2588 2589 } 2590 @catch (ANTLRRecognitionException *re) { 2591 [self reportError:re]; 2592 [self recover:input Exception:re]; 2593 /* ASTParser rule.setErrorReturnValue */ 2594 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2595 2596 } 2597 2598 @finally { 2599 /* Terence's stuff */ 2600 2601 } 2602 return retval; 2603} 2604/* $ANTLR end assignStat */ 2605 2606/* 2607 * $ANTLR start expr 2608 * SimpleC.g:74:1: expr : condExpr ; 2609 */ 2610- (SimpleCParser_expr_return *) expr 2611{ 2612 /* my ruleScopeSetUp */ 2613 /* Terence's stuff */ 2614 2615 /* AST ruleDeclarations */ 2616 SimpleCParser_expr_return * retval = [SimpleCParser_expr_return newSimpleCParser_expr_return]; 2617 [retval setStart:[input LT:1]]; 2618 2619 2620 ANTLRCommonTree *root_0 = nil; 2621 2622 @try { 2623 /* AST ruleLabelDefs */ 2624 SimpleCParser_condExpr_return * condExpr41 = nil ; 2625 2626 2627 2628 // SimpleC.g:74:5: ( condExpr ) // ruleBlockSingleAlt 2629 // SimpleC.g:74:9: condExpr // alt 2630 { 2631 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2632 2633 2634 /* ASTParser ruleRef */ 2635 /* ruleRef */ 2636 [self pushFollow:FOLLOW_condExpr_in_expr598]; 2637 condExpr41 = [self condExpr]; 2638 2639 [self popFollow]; 2640 2641 2642 [treeAdaptor addChild:[condExpr41 getTree] toTree:root_0]; 2643 2644 } 2645 2646 /* ASTParser ruleCleanUp */ 2647 /* AST ruleCleanUp */ 2648 // token+rule list labels 2649 [retval setStop:[input LT:-1]]; 2650 2651 2652 2653 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2654 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2655 2656 } 2657 @catch (ANTLRRecognitionException *re) { 2658 [self reportError:re]; 2659 [self recover:input Exception:re]; 2660 /* ASTParser rule.setErrorReturnValue */ 2661 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2662 2663 } 2664 2665 @finally { 2666 /* Terence's stuff */ 2667 2668 } 2669 return retval; 2670} 2671/* $ANTLR end expr */ 2672 2673/* 2674 * $ANTLR start condExpr 2675 * SimpleC.g:77:1: condExpr : aexpr ( ( K_EQEQ ^| K_LT ^) aexpr )? ; 2676 */ 2677- (SimpleCParser_condExpr_return *) condExpr 2678{ 2679 /* my ruleScopeSetUp */ 2680 /* Terence's stuff */ 2681 2682 /* AST ruleDeclarations */ 2683 SimpleCParser_condExpr_return * retval = [SimpleCParser_condExpr_return newSimpleCParser_condExpr_return]; 2684 [retval setStart:[input LT:1]]; 2685 2686 2687 ANTLRCommonTree *root_0 = nil; 2688 2689 @try { 2690 /* AST ruleLabelDefs */ 2691 ANTLRCommonToken *K_EQEQ43 = nil; 2692 ANTLRCommonToken *K_LT44 = nil; 2693 SimpleCParser_aexpr_return * aexpr42 = nil ; 2694 2695 SimpleCParser_aexpr_return * aexpr45 = nil ; 2696 2697 2698 ANTLRCommonTree *K_EQEQ43_tree=nil; 2699 ANTLRCommonTree *K_LT44_tree=nil; 2700 2701 // SimpleC.g:78:5: ( aexpr ( ( K_EQEQ ^| K_LT ^) aexpr )? ) // ruleBlockSingleAlt 2702 // SimpleC.g:78:9: aexpr ( ( K_EQEQ ^| K_LT ^) aexpr )? // alt 2703 { 2704 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2705 2706 2707 /* ASTParser ruleRef */ 2708 /* ruleRef */ 2709 [self pushFollow:FOLLOW_aexpr_in_condExpr617]; 2710 aexpr42 = [self aexpr]; 2711 2712 [self popFollow]; 2713 2714 2715 [treeAdaptor addChild:[aexpr42 getTree] toTree:root_0]; 2716 2717 // SimpleC.g:78:15: ( ( K_EQEQ ^| K_LT ^) aexpr )? // block 2718 NSInteger alt9=2; 2719 NSInteger LA9_0 = [input LA:1]; 2720 2721 if ( (LA9_0==K_EQEQ||LA9_0==K_LT) ) { 2722 alt9=1; 2723 } 2724 switch (alt9) { 2725 case 1 : ; 2726 // SimpleC.g:78:17: ( K_EQEQ ^| K_LT ^) aexpr // alt 2727 { 2728 // SimpleC.g:78:17: ( K_EQEQ ^| K_LT ^) // block 2729 NSInteger alt8=2; 2730 NSInteger LA8_0 = [input LA:1]; 2731 2732 if ( (LA8_0==K_EQEQ) ) { 2733 alt8=1; 2734 } 2735 else if ( (LA8_0==K_LT) ) { 2736 alt8=2; 2737 } 2738 else { 2739 ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:8 state:0 stream:input]; 2740 nvae.c = LA8_0; 2741 @throw nvae; 2742 2743 } 2744 switch (alt8) { 2745 case 1 : ; 2746 // SimpleC.g:78:18: K_EQEQ ^ // alt 2747 { 2748 K_EQEQ43=(ANTLRCommonToken *)[self match:input TokenType:K_EQEQ Follow:FOLLOW_K_EQEQ_in_condExpr622]; 2749 K_EQEQ43_tree = /* ASTParser createNodeFromToken */ 2750 (ANTLRCommonTree *)[[treeAdaptor create:K_EQEQ43] retain] 2751 ; 2752 root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_EQEQ43_tree old:root_0]; 2753 2754 2755 } 2756 break; 2757 case 2 : ; 2758 // SimpleC.g:78:28: K_LT ^ // alt 2759 { 2760 K_LT44=(ANTLRCommonToken *)[self match:input TokenType:K_LT Follow:FOLLOW_K_LT_in_condExpr627]; 2761 K_LT44_tree = /* ASTParser createNodeFromToken */ 2762 (ANTLRCommonTree *)[[treeAdaptor create:K_LT44] retain] 2763 ; 2764 root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_LT44_tree old:root_0]; 2765 2766 2767 } 2768 break; 2769 2770 } 2771 2772 2773 /* ASTParser ruleRef */ 2774 /* ruleRef */ 2775 [self pushFollow:FOLLOW_aexpr_in_condExpr631]; 2776 aexpr45 = [self aexpr]; 2777 2778 [self popFollow]; 2779 2780 2781 [treeAdaptor addChild:[aexpr45 getTree] toTree:root_0]; 2782 2783 } 2784 break; 2785 2786 } 2787 2788 2789 } 2790 2791 /* ASTParser ruleCleanUp */ 2792 /* AST ruleCleanUp */ 2793 // token+rule list labels 2794 [retval setStop:[input LT:-1]]; 2795 2796 2797 2798 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2799 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2800 2801 } 2802 @catch (ANTLRRecognitionException *re) { 2803 [self reportError:re]; 2804 [self recover:input Exception:re]; 2805 /* ASTParser rule.setErrorReturnValue */ 2806 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2807 2808 } 2809 2810 @finally { 2811 /* Terence's stuff */ 2812 2813 } 2814 return retval; 2815} 2816/* $ANTLR end condExpr */ 2817 2818/* 2819 * $ANTLR start aexpr 2820 * SimpleC.g:81:1: aexpr : atom ( K_PLUS ^ atom )* ; 2821 */ 2822- (SimpleCParser_aexpr_return *) aexpr 2823{ 2824 /* my ruleScopeSetUp */ 2825 /* Terence's stuff */ 2826 2827 /* AST ruleDeclarations */ 2828 SimpleCParser_aexpr_return * retval = [SimpleCParser_aexpr_return newSimpleCParser_aexpr_return]; 2829 [retval setStart:[input LT:1]]; 2830 2831 2832 ANTLRCommonTree *root_0 = nil; 2833 2834 @try { 2835 /* AST ruleLabelDefs */ 2836 ANTLRCommonToken *K_PLUS47 = nil; 2837 SimpleCParser_atom_return * atom46 = nil ; 2838 2839 SimpleCParser_atom_return * atom48 = nil ; 2840 2841 2842 ANTLRCommonTree *K_PLUS47_tree=nil; 2843 2844 // SimpleC.g:82:5: ( atom ( K_PLUS ^ atom )* ) // ruleBlockSingleAlt 2845 // SimpleC.g:82:9: atom ( K_PLUS ^ atom )* // alt 2846 { 2847 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2848 2849 2850 /* ASTParser ruleRef */ 2851 /* ruleRef */ 2852 [self pushFollow:FOLLOW_atom_in_aexpr653]; 2853 atom46 = [self atom]; 2854 2855 [self popFollow]; 2856 2857 2858 [treeAdaptor addChild:[atom46 getTree] toTree:root_0]; 2859 2860 do { 2861 NSInteger alt10=2; 2862 NSInteger LA10_0 = [input LA:1]; 2863 if ( (LA10_0==K_PLUS) ) { 2864 alt10=1; 2865 } 2866 2867 2868 switch (alt10) { 2869 case 1 : ; 2870 // SimpleC.g:82:16: K_PLUS ^ atom // alt 2871 { 2872 K_PLUS47=(ANTLRCommonToken *)[self match:input TokenType:K_PLUS Follow:FOLLOW_K_PLUS_in_aexpr657]; 2873 K_PLUS47_tree = /* ASTParser createNodeFromToken */ 2874 (ANTLRCommonTree *)[[treeAdaptor create:K_PLUS47] retain] 2875 ; 2876 root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_PLUS47_tree old:root_0]; 2877 2878 2879 /* ASTParser ruleRef */ 2880 /* ruleRef */ 2881 [self pushFollow:FOLLOW_atom_in_aexpr660]; 2882 atom48 = [self atom]; 2883 2884 [self popFollow]; 2885 2886 2887 [treeAdaptor addChild:[atom48 getTree] toTree:root_0]; 2888 2889 } 2890 break; 2891 2892 default : 2893 goto loop10; 2894 } 2895 } while (YES); 2896 loop10: ; 2897 2898 2899 } 2900 2901 /* ASTParser ruleCleanUp */ 2902 /* AST ruleCleanUp */ 2903 // token+rule list labels 2904 [retval setStop:[input LT:-1]]; 2905 2906 2907 2908 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 2909 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 2910 2911 } 2912 @catch (ANTLRRecognitionException *re) { 2913 [self reportError:re]; 2914 [self recover:input Exception:re]; 2915 /* ASTParser rule.setErrorReturnValue */ 2916 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 2917 2918 } 2919 2920 @finally { 2921 /* Terence's stuff */ 2922 2923 } 2924 return retval; 2925} 2926/* $ANTLR end aexpr */ 2927 2928/* 2929 * $ANTLR start atom 2930 * SimpleC.g:85:1: atom : ( K_ID | K_INT | K_LCURVE expr K_RCURVE -> expr ); 2931 */ 2932- (SimpleCParser_atom_return *) atom 2933{ 2934 /* my ruleScopeSetUp */ 2935 /* Terence's stuff */ 2936 2937 /* AST ruleDeclarations */ 2938 SimpleCParser_atom_return * retval = [SimpleCParser_atom_return newSimpleCParser_atom_return]; 2939 [retval setStart:[input LT:1]]; 2940 2941 2942 ANTLRCommonTree *root_0 = nil; 2943 2944 @try { 2945 /* AST ruleLabelDefs */ 2946 ANTLRCommonToken *K_ID49 = nil; 2947 ANTLRCommonToken *K_INT50 = nil; 2948 ANTLRCommonToken *K_LCURVE51 = nil; 2949 ANTLRCommonToken *K_RCURVE53 = nil; 2950 SimpleCParser_expr_return * expr52 = nil ; 2951 2952 2953 ANTLRCommonTree *K_ID49_tree=nil; 2954 ANTLRCommonTree *K_INT50_tree=nil; 2955 ANTLRCommonTree *K_LCURVE51_tree=nil; 2956 ANTLRCommonTree *K_RCURVE53_tree=nil; 2957 ANTLRRewriteRuleTokenStream *stream_K_LCURVE = 2958 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2959 description:@"token K_LCURVE"] retain]; 2960 ANTLRRewriteRuleTokenStream *stream_K_RCURVE = 2961 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 2962 description:@"token K_RCURVE"] retain]; 2963 ANTLRRewriteRuleSubtreeStream *stream_expr = 2964 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 2965 description:@"rule expr"] retain]; 2966 // SimpleC.g:86:5: ( K_ID | K_INT | K_LCURVE expr K_RCURVE -> expr ) //ruleblock 2967 NSInteger alt11=3; 2968 unichar charLA11 = [input LA:1]; 2969 switch (charLA11) { 2970 case K_ID: ; 2971 { 2972 alt11=1; 2973 } 2974 break; 2975 case K_INT: ; 2976 { 2977 alt11=2; 2978 } 2979 break; 2980 case K_LCURVE: ; 2981 { 2982 alt11=3; 2983 } 2984 break; 2985 2986 default: ; 2987 ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:11 state:0 stream:input]; 2988 nvae.c = charLA11; 2989 @throw nvae; 2990 2991 } 2992 2993 switch (alt11) { 2994 case 1 : ; 2995 // SimpleC.g:86:7: K_ID // alt 2996 { 2997 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 2998 2999 3000 /* ASTParser tokenRef */ 3001 K_ID49=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_atom680]; 3002 K_ID49_tree = /* ASTParser createNodeFromToken */ 3003 (ANTLRCommonTree *)[[treeAdaptor create:K_ID49] retain] 3004 ; 3005 [treeAdaptor addChild:K_ID49_tree toTree:root_0]; 3006 3007 3008 } 3009 break; 3010 case 2 : ; 3011 // SimpleC.g:87:7: K_INT // alt 3012 { 3013 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 3014 3015 3016 /* ASTParser tokenRef */ 3017 K_INT50=(ANTLRCommonToken *)[self match:input TokenType:K_INT Follow:FOLLOW_K_INT_in_atom694]; 3018 K_INT50_tree = /* ASTParser createNodeFromToken */ 3019 (ANTLRCommonTree *)[[treeAdaptor create:K_INT50] retain] 3020 ; 3021 [treeAdaptor addChild:K_INT50_tree toTree:root_0]; 3022 3023 3024 } 3025 break; 3026 case 3 : ; 3027 // SimpleC.g:88:7: K_LCURVE expr K_RCURVE // alt 3028 { 3029 K_LCURVE51=(ANTLRCommonToken *)[self match:input TokenType:K_LCURVE Follow:FOLLOW_K_LCURVE_in_atom708]; 3030 [stream_K_LCURVE addElement:K_LCURVE51]; 3031 3032 3033 /* ruleRef */ 3034 [self pushFollow:FOLLOW_expr_in_atom710]; 3035 expr52 = [self expr]; 3036 3037 [self popFollow]; 3038 3039 3040 [stream_expr addElement:[expr52 getTree]]; 3041 3042 K_RCURVE53=(ANTLRCommonToken *)[self match:input TokenType:K_RCURVE Follow:FOLLOW_K_RCURVE_in_atom712]; 3043 [stream_K_RCURVE addElement:K_RCURVE53]; 3044 3045 3046 // AST REWRITE 3047 // elements: expr 3048 // token labels: 3049 // rule labels: retval 3050 // token list labels: 3051 // rule list labels: 3052 // wildcard labels: 3053 retval.tree = root_0; 3054 3055 ANTLRRewriteRuleSubtreeStream *stream_retval = 3056 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 3057 description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; 3058 3059 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 3060 3061 // 88:30: -> expr 3062 { 3063 [treeAdaptor addChild:[stream_expr nextTree] toTree:root_0]; 3064 3065 } 3066 3067 3068 retval.tree = root_0; 3069 3070 3071 } 3072 break; 3073 3074 } 3075 /* ASTParser ruleCleanUp */ 3076 /* AST ruleCleanUp */ 3077 // token+rule list labels 3078 [retval setStop:[input LT:-1]]; 3079 3080 3081 [stream_K_LCURVE release]; 3082 [stream_K_RCURVE release]; 3083 [stream_expr release]; 3084 3085 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 3086 [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; 3087 3088 } 3089 @catch (ANTLRRecognitionException *re) { 3090 [self reportError:re]; 3091 [self recover:input Exception:re]; 3092 /* ASTParser rule.setErrorReturnValue */ 3093 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; 3094 3095 } 3096 3097 @finally { 3098 /* Terence's stuff */ 3099 3100 } 3101 return retval; 3102} 3103/* $ANTLR end atom */ 3104/* ObjC end rules */ 3105 3106@end /* end of SimpleCParser implementation line 692 */ 3107