/** \file * This OBJC source file was generated by $ANTLR version ${project.version} ${buildNumber} * * - From the grammar source file : SimpleC.g * - On : 2011-05-06 13:53:12 * - for the parser : SimpleCParserParser * * Editing it, at least manually, is not wise. * * ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com. * * */ // $ANTLR ${project.version} ${buildNumber} SimpleC.g 2011-05-06 13:53:12 /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #import "SimpleCParser.h" /* ----------------------------------------- */ /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ #pragma mark Cyclic DFA implementation start DFA2 @implementation DFA2 const static NSInteger dfa2_eot[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; const static NSInteger dfa2_eof[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; const static unichar dfa2_min[13] = {4,4,7,4,0,4,11,8,0,0,4,4,8}; const static unichar dfa2_max[13] = {18,4,11,18,0,4,19,10,0,0,18,4,10}; const static NSInteger dfa2_accept[13] = {-1,-1,-1,-1,1,-1,-1,-1,2,3,-1,-1,-1}; const static NSInteger dfa2_special[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; const static NSInteger dfa2_transition[] = {}; const static NSInteger dfa2_transition0[] = {3, -1, -1, -1, 4}; const static NSInteger dfa2_transition1[] = {6, -1, 10}; const static NSInteger dfa2_transition2[] = {8, -1, -1, -1, -1, -1, -1, -1, 9}; const static NSInteger dfa2_transition3[] = {2}; const static NSInteger dfa2_transition4[] = {1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1}; const static NSInteger dfa2_transition5[] = {7}; const static NSInteger dfa2_transition6[] = {11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, 11, 11}; const static NSInteger dfa2_transition7[] = {12}; const static NSInteger dfa2_transition8[] = {5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 5, -1, 5, 5}; + (id) newDFA2WithRecognizer:(ANTLRBaseRecognizer *)aRecognizer { return [[[DFA2 alloc] initWithRecognizer:aRecognizer] retain]; } - (id) initWithRecognizer:(ANTLRBaseRecognizer *) theRecognizer { self = [super initWithRecognizer:theRecognizer]; if ( self != nil ) { decisionNumber = 2; eot = dfa2_eot; eof = dfa2_eof; min = dfa2_min; max = dfa2_max; accept = dfa2_accept; special = dfa2_special; if (!(transition = calloc(13, sizeof(void*)))) { [self release]; return nil; } len = 13; transition[0] = dfa2_transition4; transition[1] = dfa2_transition3; transition[2] = dfa2_transition0; transition[3] = dfa2_transition8; transition[4] = dfa2_transition5; transition[5] = dfa2_transition2; transition[6] = dfa2_transition1; transition[7] = dfa2_transition6; transition[8] = dfa2_transition7; transition[9] = dfa2_transition1; } return self; } - (void) dealloc { free(transition); [super dealloc]; } - (NSString *) description { return @"20:1: declaration : ( variable | functionHeader ';' | functionHeader block );"; } @end /* end DFA2 implementation */ #pragma mark Cyclic DFA implementation end DFA2 #pragma mark Bitsets static ANTLRBitSet *FOLLOW_declaration_in_program28; static const unsigned long long FOLLOW_declaration_in_program28_data[] = { 0x0000000000068012LL}; static ANTLRBitSet *FOLLOW_variable_in_declaration50; static const unsigned long long FOLLOW_variable_in_declaration50_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_functionHeader_in_declaration60; static const unsigned long long FOLLOW_functionHeader_in_declaration60_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_declaration62; static const unsigned long long FOLLOW_11_in_declaration62_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_functionHeader_in_declaration75; static const unsigned long long FOLLOW_functionHeader_in_declaration75_data[] = { 0x0000000000080000LL}; static ANTLRBitSet *FOLLOW_block_in_declaration77; static const unsigned long long FOLLOW_block_in_declaration77_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_type_in_variable99; static const unsigned long long FOLLOW_type_in_variable99_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_declarator_in_variable101; static const unsigned long long FOLLOW_declarator_in_variable101_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_variable103; static const unsigned long long FOLLOW_11_in_variable103_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_ID_in_declarator122; static const unsigned long long FOLLOW_ID_in_declarator122_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_type_in_functionHeader151; static const unsigned long long FOLLOW_type_in_functionHeader151_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_ID_in_functionHeader153; static const unsigned long long FOLLOW_ID_in_functionHeader153_data[] = { 0x0000000000000080LL}; static ANTLRBitSet *FOLLOW_7_in_functionHeader155; static const unsigned long long FOLLOW_7_in_functionHeader155_data[] = { 0x0000000000068110LL}; static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader159; static const unsigned long long FOLLOW_formalParameter_in_functionHeader159_data[] = { 0x0000000000000500LL}; static ANTLRBitSet *FOLLOW_10_in_functionHeader163; static const unsigned long long FOLLOW_10_in_functionHeader163_data[] = { 0x0000000000068010LL}; static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader165; static const unsigned long long FOLLOW_formalParameter_in_functionHeader165_data[] = { 0x0000000000000500LL}; static ANTLRBitSet *FOLLOW_8_in_functionHeader173; static const unsigned long long FOLLOW_8_in_functionHeader173_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_type_in_formalParameter195; static const unsigned long long FOLLOW_type_in_formalParameter195_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_declarator_in_formalParameter197; static const unsigned long long FOLLOW_declarator_in_formalParameter197_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_19_in_block286; static const unsigned long long FOLLOW_19_in_block286_data[] = { 0x00000000001F88B0LL}; static ANTLRBitSet *FOLLOW_variable_in_block300; static const unsigned long long FOLLOW_variable_in_block300_data[] = { 0x00000000001F88B0LL}; static ANTLRBitSet *FOLLOW_stat_in_block315; static const unsigned long long FOLLOW_stat_in_block315_data[] = { 0x00000000001908B0LL}; static ANTLRBitSet *FOLLOW_20_in_block326; static const unsigned long long FOLLOW_20_in_block326_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_forStat_in_stat338; static const unsigned long long FOLLOW_forStat_in_stat338_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_expr_in_stat346; static const unsigned long long FOLLOW_expr_in_stat346_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_stat348; static const unsigned long long FOLLOW_11_in_stat348_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_block_in_stat362; static const unsigned long long FOLLOW_block_in_stat362_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_assignStat_in_stat370; static const unsigned long long FOLLOW_assignStat_in_stat370_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_stat372; static const unsigned long long FOLLOW_11_in_stat372_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_11_in_stat380; static const unsigned long long FOLLOW_11_in_stat380_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_16_in_forStat399; static const unsigned long long FOLLOW_16_in_forStat399_data[] = { 0x0000000000000080LL}; static ANTLRBitSet *FOLLOW_7_in_forStat401; static const unsigned long long FOLLOW_7_in_forStat401_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_assignStat_in_forStat403; static const unsigned long long FOLLOW_assignStat_in_forStat403_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_forStat405; static const unsigned long long FOLLOW_11_in_forStat405_data[] = { 0x00000000000000B0LL}; static ANTLRBitSet *FOLLOW_expr_in_forStat407; static const unsigned long long FOLLOW_expr_in_forStat407_data[] = { 0x0000000000000800LL}; static ANTLRBitSet *FOLLOW_11_in_forStat409; static const unsigned long long FOLLOW_11_in_forStat409_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_assignStat_in_forStat411; static const unsigned long long FOLLOW_assignStat_in_forStat411_data[] = { 0x0000000000000100LL}; static ANTLRBitSet *FOLLOW_8_in_forStat413; static const unsigned long long FOLLOW_8_in_forStat413_data[] = { 0x0000000000080000LL}; static ANTLRBitSet *FOLLOW_block_in_forStat415; static const unsigned long long FOLLOW_block_in_forStat415_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_ID_in_assignStat442; static const unsigned long long FOLLOW_ID_in_assignStat442_data[] = { 0x0000000000002000LL}; static ANTLRBitSet *FOLLOW_13_in_assignStat444; static const unsigned long long FOLLOW_13_in_assignStat444_data[] = { 0x00000000000000B0LL}; static ANTLRBitSet *FOLLOW_expr_in_assignStat446; static const unsigned long long FOLLOW_expr_in_assignStat446_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_condExpr_in_expr468; static const unsigned long long FOLLOW_condExpr_in_expr468_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_aexpr_in_condExpr487; static const unsigned long long FOLLOW_aexpr_in_condExpr487_data[] = { 0x0000000000005002LL}; static ANTLRBitSet *FOLLOW_set_in_condExpr491; static const unsigned long long FOLLOW_set_in_condExpr491_data[] = { 0x00000000000000B0LL}; static ANTLRBitSet *FOLLOW_aexpr_in_condExpr499; static const unsigned long long FOLLOW_aexpr_in_condExpr499_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_atom_in_aexpr521; static const unsigned long long FOLLOW_atom_in_aexpr521_data[] = { 0x0000000000000202LL}; static ANTLRBitSet *FOLLOW_9_in_aexpr525; static const unsigned long long FOLLOW_9_in_aexpr525_data[] = { 0x00000000000000B0LL}; static ANTLRBitSet *FOLLOW_atom_in_aexpr527; static const unsigned long long FOLLOW_atom_in_aexpr527_data[] = { 0x0000000000000202LL}; static ANTLRBitSet *FOLLOW_ID_in_atom547; static const unsigned long long FOLLOW_ID_in_atom547_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_INT_in_atom561; static const unsigned long long FOLLOW_INT_in_atom561_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_7_in_atom575; static const unsigned long long FOLLOW_7_in_atom575_data[] = { 0x00000000000000B0LL}; static ANTLRBitSet *FOLLOW_expr_in_atom577; static const unsigned long long FOLLOW_expr_in_atom577_data[] = { 0x0000000000000100LL}; static ANTLRBitSet *FOLLOW_8_in_atom579; static const unsigned long long FOLLOW_8_in_atom579_data[] = { 0x0000000000000002LL}; #pragma mark Dynamic Global Scopes #pragma mark Dynamic Rule Scopes #pragma mark Rule Return Scopes start //#pragma mark Rule return scopes start // #pragma mark Rule return scopes start @implementation SimpleCParser // line 637 /* ObjC start of ruleAttributeScope */ #pragma mark Dynamic Rule Scopes /* ObjC end of ruleAttributeScope */ #pragma mark global Attribute Scopes /* ObjC start globalAttributeScope */ /* ObjC end globalAttributeScope */ /* ObjC start actions.(actionScope).synthesize */ /* ObjC end actions.(actionScope).synthesize */ /* ObjC start synthesize() */ /* ObjC end synthesize() */ + (void) initialize { #pragma mark Bitsets FOLLOW_declaration_in_program28 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declaration_in_program28_data Count:(NSUInteger)1] retain]; FOLLOW_variable_in_declaration50 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_declaration50_data Count:(NSUInteger)1] retain]; FOLLOW_functionHeader_in_declaration60 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration60_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_declaration62 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_declaration62_data Count:(NSUInteger)1] retain]; FOLLOW_functionHeader_in_declaration75 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration75_data Count:(NSUInteger)1] retain]; FOLLOW_block_in_declaration77 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_declaration77_data Count:(NSUInteger)1] retain]; FOLLOW_type_in_variable99 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_variable99_data Count:(NSUInteger)1] retain]; FOLLOW_declarator_in_variable101 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_variable101_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_variable103 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_variable103_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_declarator122 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_declarator122_data Count:(NSUInteger)1] retain]; FOLLOW_type_in_functionHeader151 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_functionHeader151_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_functionHeader153 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_functionHeader153_data Count:(NSUInteger)1] retain]; FOLLOW_7_in_functionHeader155 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_7_in_functionHeader155_data Count:(NSUInteger)1] retain]; FOLLOW_formalParameter_in_functionHeader159 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader159_data Count:(NSUInteger)1] retain]; FOLLOW_10_in_functionHeader163 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_10_in_functionHeader163_data Count:(NSUInteger)1] retain]; FOLLOW_formalParameter_in_functionHeader165 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader165_data Count:(NSUInteger)1] retain]; FOLLOW_8_in_functionHeader173 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_functionHeader173_data Count:(NSUInteger)1] retain]; FOLLOW_type_in_formalParameter195 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_formalParameter195_data Count:(NSUInteger)1] retain]; FOLLOW_declarator_in_formalParameter197 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_formalParameter197_data Count:(NSUInteger)1] retain]; FOLLOW_19_in_block286 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_19_in_block286_data Count:(NSUInteger)1] retain]; FOLLOW_variable_in_block300 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_block300_data Count:(NSUInteger)1] retain]; FOLLOW_stat_in_block315 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_stat_in_block315_data Count:(NSUInteger)1] retain]; FOLLOW_20_in_block326 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_20_in_block326_data Count:(NSUInteger)1] retain]; FOLLOW_forStat_in_stat338 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_forStat_in_stat338_data Count:(NSUInteger)1] retain]; FOLLOW_expr_in_stat346 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_stat346_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_stat348 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_stat348_data Count:(NSUInteger)1] retain]; FOLLOW_block_in_stat362 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_stat362_data Count:(NSUInteger)1] retain]; FOLLOW_assignStat_in_stat370 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_stat370_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_stat372 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_stat372_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_stat380 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_stat380_data Count:(NSUInteger)1] retain]; FOLLOW_16_in_forStat399 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_16_in_forStat399_data Count:(NSUInteger)1] retain]; FOLLOW_7_in_forStat401 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_7_in_forStat401_data Count:(NSUInteger)1] retain]; FOLLOW_assignStat_in_forStat403 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat403_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_forStat405 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_forStat405_data Count:(NSUInteger)1] retain]; FOLLOW_expr_in_forStat407 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat407_data Count:(NSUInteger)1] retain]; FOLLOW_11_in_forStat409 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_forStat409_data Count:(NSUInteger)1] retain]; FOLLOW_assignStat_in_forStat411 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat411_data Count:(NSUInteger)1] retain]; FOLLOW_8_in_forStat413 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_forStat413_data Count:(NSUInteger)1] retain]; FOLLOW_block_in_forStat415 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_forStat415_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_assignStat442 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_assignStat442_data Count:(NSUInteger)1] retain]; FOLLOW_13_in_assignStat444 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_13_in_assignStat444_data Count:(NSUInteger)1] retain]; FOLLOW_expr_in_assignStat446 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_assignStat446_data Count:(NSUInteger)1] retain]; FOLLOW_condExpr_in_expr468 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_condExpr_in_expr468_data Count:(NSUInteger)1] retain]; FOLLOW_aexpr_in_condExpr487 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr487_data Count:(NSUInteger)1] retain]; FOLLOW_set_in_condExpr491 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_set_in_condExpr491_data Count:(NSUInteger)1] retain]; FOLLOW_aexpr_in_condExpr499 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr499_data Count:(NSUInteger)1] retain]; FOLLOW_atom_in_aexpr521 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr521_data Count:(NSUInteger)1] retain]; FOLLOW_9_in_aexpr525 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_9_in_aexpr525_data Count:(NSUInteger)1] retain]; FOLLOW_atom_in_aexpr527 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr527_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_atom547 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_atom547_data Count:(NSUInteger)1] retain]; FOLLOW_INT_in_atom561 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_atom561_data Count:(NSUInteger)1] retain]; FOLLOW_7_in_atom575 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_7_in_atom575_data Count:(NSUInteger)1] retain]; FOLLOW_expr_in_atom577 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_atom577_data Count:(NSUInteger)1] retain]; FOLLOW_8_in_atom579 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_atom579_data Count:(NSUInteger)1] retain]; [ANTLRBaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"", @"", @"", @"", @"ID", @"INT", @"WS", @"'('", @"')'", @"'+'", @"','", @"';'", @"'<'", @"'='", @"'=='", @"'char'", @"'for'", @"'int'", @"'void'", @"'{'", @"'}'", nil] retain]]; [ANTLRBaseRecognizer setGrammarFileName:@"SimpleC.g"]; } + (SimpleCParser *)newSimpleCParser:(id)aStream { return [[SimpleCParser alloc] initWithTokenStream:aStream]; } - (id) initWithTokenStream:(id)aStream { self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:15+1] retain]]; if ( self != nil ) { dfa2 = [DFA2 newDFA2WithRecognizer:self]; /* start of actions-actionScope-init */ /* start of init */ } return self; } - (void) dealloc { [dfa2 release]; [super dealloc]; } /* ObjC start members */ /* ObjC end members */ /* ObjC start actions.(actionScope).methods */ /* ObjC end actions.(actionScope).methods */ /* ObjC start methods() */ /* ObjC end methods() */ /* ObjC start rules */ /* * $ANTLR start program * SimpleC.g:7:1: program : ( declaration )+ ; */ - (void) program { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:8:5: ( ( declaration )+ ) // ruleBlockSingleAlt // SimpleC.g:8:9: ( declaration )+ // alt { // SimpleC.g:8:9: ( declaration )+ // positiveClosureBlock NSInteger cnt1 = 0; do { NSInteger alt1 = 2; NSInteger LA1_0 = [input LA:1]; if ( (LA1_0==ID||LA1_0==15||(LA1_0 >= 17 && LA1_0 <= 18)) ) { alt1=1; } switch (alt1) { case 1 : ; // SimpleC.g:8:9: declaration // alt { /* ruleRef */ [self pushFollow:FOLLOW_declaration_in_program28]; [self declaration]; [self popFollow]; } break; default : if ( cnt1 >= 1 ) goto loop1; ANTLREarlyExitException *eee = [ANTLREarlyExitException newException:input decisionNumber:1]; @throw eee; } cnt1++; } while (YES); loop1: ; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end program */ /* * $ANTLR start declaration * SimpleC.g:20:1: declaration : ( variable | functionHeader ';' | functionHeader block ); */ - (void) declaration { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { NSString * functionHeader1 = nil ; NSString * functionHeader2 = nil ; // SimpleC.g:21:5: ( variable | functionHeader ';' | functionHeader block ) //ruleblock NSInteger alt2=3; alt2 = [dfa2 predict:input]; switch (alt2) { case 1 : ; // SimpleC.g:21:9: variable // alt { /* ruleRef */ [self pushFollow:FOLLOW_variable_in_declaration50]; [self variable]; [self popFollow]; } break; case 2 : ; // SimpleC.g:22:9: functionHeader ';' // alt { /* ruleRef */ [self pushFollow:FOLLOW_functionHeader_in_declaration60]; functionHeader1 = [self functionHeader]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_declaration62]; NSLog(@"%@ is a declaration\n", functionHeader1 ); } break; case 3 : ; // SimpleC.g:24:9: functionHeader block // alt { /* ruleRef */ [self pushFollow:FOLLOW_functionHeader_in_declaration75]; functionHeader2 = [self functionHeader]; [self popFollow]; /* ruleRef */ [self pushFollow:FOLLOW_block_in_declaration77]; [self block]; [self popFollow]; NSLog(@"%@ is a definition\n", functionHeader2 ); } break; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end declaration */ /* * $ANTLR start variable * SimpleC.g:28:1: variable : type declarator ';' ; */ - (void) variable { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:29:5: ( type declarator ';' ) // ruleBlockSingleAlt // SimpleC.g:29:9: type declarator ';' // alt { /* ruleRef */ [self pushFollow:FOLLOW_type_in_variable99]; [self type]; [self popFollow]; /* ruleRef */ [self pushFollow:FOLLOW_declarator_in_variable101]; [self declarator]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_variable103]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end variable */ /* * $ANTLR start declarator * SimpleC.g:32:1: declarator : ID ; */ - (void) declarator { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:33:5: ( ID ) // ruleBlockSingleAlt // SimpleC.g:33:9: ID // alt { [self match:input TokenType:ID Follow:FOLLOW_ID_in_declarator122]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end declarator */ /* * $ANTLR start functionHeader * SimpleC.g:36:1: functionHeader returns [NSString *name] : type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' ; */ - (NSString *) functionHeader { /* my ruleScopeSetUp */ /* Terence's stuff */ NSString * name = nil ; name=nil; // for now you must init here rather than in 'returns' @try { ANTLRCommonToken *ID3 = nil; // SimpleC.g:40:5: ( type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' ) // ruleBlockSingleAlt // SimpleC.g:40:9: type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' // alt { /* ruleRef */ [self pushFollow:FOLLOW_type_in_functionHeader151]; [self type]; [self popFollow]; ID3=(ANTLRCommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_functionHeader153]; [self match:input TokenType:7 Follow:FOLLOW_7_in_functionHeader155]; // SimpleC.g:40:21: ( formalParameter ( ',' formalParameter )* )? // block NSInteger alt4=2; NSInteger LA4_0 = [input LA:1]; if ( (LA4_0==ID||LA4_0==15||(LA4_0 >= 17 && LA4_0 <= 18)) ) { alt4=1; } switch (alt4) { case 1 : ; // SimpleC.g:40:23: formalParameter ( ',' formalParameter )* // alt { /* ruleRef */ [self pushFollow:FOLLOW_formalParameter_in_functionHeader159]; [self formalParameter]; [self popFollow]; do { NSInteger alt3=2; NSInteger LA3_0 = [input LA:1]; if ( (LA3_0==10) ) { alt3=1; } switch (alt3) { case 1 : ; // SimpleC.g:40:41: ',' formalParameter // alt { [self match:input TokenType:10 Follow:FOLLOW_10_in_functionHeader163]; /* ruleRef */ [self pushFollow:FOLLOW_formalParameter_in_functionHeader165]; [self formalParameter]; [self popFollow]; } break; default : goto loop3; } } while (YES); loop3: ; } break; } [self match:input TokenType:8 Follow:FOLLOW_8_in_functionHeader173]; name = (ID3!=nil?ID3.text:nil); } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return name; } /* $ANTLR end functionHeader */ /* * $ANTLR start formalParameter * SimpleC.g:44:1: formalParameter : type declarator ; */ - (void) formalParameter { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:45:5: ( type declarator ) // ruleBlockSingleAlt // SimpleC.g:45:9: type declarator // alt { /* ruleRef */ [self pushFollow:FOLLOW_type_in_formalParameter195]; [self type]; [self popFollow]; /* ruleRef */ [self pushFollow:FOLLOW_declarator_in_formalParameter197]; [self declarator]; [self popFollow]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end formalParameter */ /* * $ANTLR start type * SimpleC.g:48:1: type : ( 'int' | 'char' | 'void' | ID ); */ - (void) type { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:49:5: ( 'int' | 'char' | 'void' | ID ) // ruleBlockSingleAlt // SimpleC.g: // alt { if ([input LA:1] == ID||[input LA:1] == 15||(([input LA:1] >= 17) && ([input LA:1] <= 18))) { [input consume]; [state setIsErrorRecovery:NO]; } else { ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input]; @throw mse; } } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end type */ /* * $ANTLR start block * SimpleC.g:55:1: block : '{' ( variable )* ( stat )* '}' ; */ - (void) block { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:56:5: ( '{' ( variable )* ( stat )* '}' ) // ruleBlockSingleAlt // SimpleC.g:56:9: '{' ( variable )* ( stat )* '}' // alt { [self match:input TokenType:19 Follow:FOLLOW_19_in_block286]; do { NSInteger alt5=2; NSInteger LA5_0 = [input LA:1]; if ( (LA5_0==ID) ) { NSInteger LA5_2 = [input LA:2]; if ( (LA5_2==ID) ) { alt5=1; } } else if ( (LA5_0==15||(LA5_0 >= 17 && LA5_0 <= 18)) ) { alt5=1; } switch (alt5) { case 1 : ; // SimpleC.g:57:13: variable // alt { /* ruleRef */ [self pushFollow:FOLLOW_variable_in_block300]; [self variable]; [self popFollow]; } break; default : goto loop5; } } while (YES); loop5: ; do { NSInteger alt6=2; NSInteger LA6_0 = [input LA:1]; if ( ((LA6_0 >= ID && LA6_0 <= INT)||LA6_0==7||LA6_0==11||LA6_0==16||LA6_0==19) ) { alt6=1; } switch (alt6) { case 1 : ; // SimpleC.g:58:13: stat // alt { /* ruleRef */ [self pushFollow:FOLLOW_stat_in_block315]; [self stat]; [self popFollow]; } break; default : goto loop6; } } while (YES); loop6: ; [self match:input TokenType:20 Follow:FOLLOW_20_in_block326]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end block */ /* * $ANTLR start stat * SimpleC.g:62:1: stat : ( forStat | expr ';' | block | assignStat ';' | ';' ); */ - (void) stat { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:62:5: ( forStat | expr ';' | block | assignStat ';' | ';' ) //ruleblock NSInteger alt7=5; unichar charLA7 = [input LA:1]; switch (charLA7) { case 16: ; { alt7=1; } break; case ID: ; { NSInteger LA7_2 = [input LA:2]; if ( (LA7_2==13) ) { alt7=4; } else if ( (LA7_2==9||(LA7_2 >= 11 && LA7_2 <= 12)||LA7_2==14) ) { alt7=2; } else { ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:7 state:2 stream:input]; nvae.c = LA7_2; @throw nvae; } } break; case INT: ; case 7: ; { alt7=2; } break; case 19: ; { alt7=3; } break; case 11: ; { alt7=5; } break; default: ; ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:7 state:0 stream:input]; nvae.c = charLA7; @throw nvae; } switch (alt7) { case 1 : ; // SimpleC.g:62:7: forStat // alt { /* ruleRef */ [self pushFollow:FOLLOW_forStat_in_stat338]; [self forStat]; [self popFollow]; } break; case 2 : ; // SimpleC.g:63:7: expr ';' // alt { /* ruleRef */ [self pushFollow:FOLLOW_expr_in_stat346]; [self expr]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_stat348]; } break; case 3 : ; // SimpleC.g:64:7: block // alt { /* ruleRef */ [self pushFollow:FOLLOW_block_in_stat362]; [self block]; [self popFollow]; } break; case 4 : ; // SimpleC.g:65:7: assignStat ';' // alt { /* ruleRef */ [self pushFollow:FOLLOW_assignStat_in_stat370]; [self assignStat]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_stat372]; } break; case 5 : ; // SimpleC.g:66:7: ';' // alt { [self match:input TokenType:11 Follow:FOLLOW_11_in_stat380]; } break; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end stat */ /* * $ANTLR start forStat * SimpleC.g:69:1: forStat : 'for' '(' assignStat ';' expr ';' assignStat ')' block ; */ - (void) forStat { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:70:5: ( 'for' '(' assignStat ';' expr ';' assignStat ')' block ) // ruleBlockSingleAlt // SimpleC.g:70:9: 'for' '(' assignStat ';' expr ';' assignStat ')' block // alt { [self match:input TokenType:16 Follow:FOLLOW_16_in_forStat399]; [self match:input TokenType:7 Follow:FOLLOW_7_in_forStat401]; /* ruleRef */ [self pushFollow:FOLLOW_assignStat_in_forStat403]; [self assignStat]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_forStat405]; /* ruleRef */ [self pushFollow:FOLLOW_expr_in_forStat407]; [self expr]; [self popFollow]; [self match:input TokenType:11 Follow:FOLLOW_11_in_forStat409]; /* ruleRef */ [self pushFollow:FOLLOW_assignStat_in_forStat411]; [self assignStat]; [self popFollow]; [self match:input TokenType:8 Follow:FOLLOW_8_in_forStat413]; /* ruleRef */ [self pushFollow:FOLLOW_block_in_forStat415]; [self block]; [self popFollow]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end forStat */ /* * $ANTLR start assignStat * SimpleC.g:73:1: assignStat : ID '=' expr ; */ - (void) assignStat { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:74:5: ( ID '=' expr ) // ruleBlockSingleAlt // SimpleC.g:74:9: ID '=' expr // alt { [self match:input TokenType:ID Follow:FOLLOW_ID_in_assignStat442]; [self match:input TokenType:13 Follow:FOLLOW_13_in_assignStat444]; /* ruleRef */ [self pushFollow:FOLLOW_expr_in_assignStat446]; [self expr]; [self popFollow]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end assignStat */ /* * $ANTLR start expr * SimpleC.g:77:1: expr : condExpr ; */ - (void) expr { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:77:5: ( condExpr ) // ruleBlockSingleAlt // SimpleC.g:77:9: condExpr // alt { /* ruleRef */ [self pushFollow:FOLLOW_condExpr_in_expr468]; [self condExpr]; [self popFollow]; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end expr */ /* * $ANTLR start condExpr * SimpleC.g:80:1: condExpr : aexpr ( ( '==' | '<' ) aexpr )? ; */ - (void) condExpr { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:81:5: ( aexpr ( ( '==' | '<' ) aexpr )? ) // ruleBlockSingleAlt // SimpleC.g:81:9: aexpr ( ( '==' | '<' ) aexpr )? // alt { /* ruleRef */ [self pushFollow:FOLLOW_aexpr_in_condExpr487]; [self aexpr]; [self popFollow]; // SimpleC.g:81:15: ( ( '==' | '<' ) aexpr )? // block NSInteger alt8=2; NSInteger LA8_0 = [input LA:1]; if ( (LA8_0==12||LA8_0==14) ) { alt8=1; } switch (alt8) { case 1 : ; // SimpleC.g:81:17: ( '==' | '<' ) aexpr // alt { if ([input LA:1] == 12||[input LA:1] == 14) { [input consume]; [state setIsErrorRecovery:NO]; } else { ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input]; @throw mse; } /* ruleRef */ [self pushFollow:FOLLOW_aexpr_in_condExpr499]; [self aexpr]; [self popFollow]; } break; } } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end condExpr */ /* * $ANTLR start aexpr * SimpleC.g:84:1: aexpr : atom ( '+' atom )* ; */ - (void) aexpr { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:85:5: ( atom ( '+' atom )* ) // ruleBlockSingleAlt // SimpleC.g:85:9: atom ( '+' atom )* // alt { /* ruleRef */ [self pushFollow:FOLLOW_atom_in_aexpr521]; [self atom]; [self popFollow]; do { NSInteger alt9=2; NSInteger LA9_0 = [input LA:1]; if ( (LA9_0==9) ) { alt9=1; } switch (alt9) { case 1 : ; // SimpleC.g:85:16: '+' atom // alt { [self match:input TokenType:9 Follow:FOLLOW_9_in_aexpr525]; /* ruleRef */ [self pushFollow:FOLLOW_atom_in_aexpr527]; [self atom]; [self popFollow]; } break; default : goto loop9; } } while (YES); loop9: ; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end aexpr */ /* * $ANTLR start atom * SimpleC.g:88:1: atom : ( ID | INT | '(' expr ')' ); */ - (void) atom { /* my ruleScopeSetUp */ /* Terence's stuff */ @try { // SimpleC.g:89:5: ( ID | INT | '(' expr ')' ) //ruleblock NSInteger alt10=3; unichar charLA10 = [input LA:1]; switch (charLA10) { case ID: ; { alt10=1; } break; case INT: ; { alt10=2; } break; case 7: ; { alt10=3; } break; default: ; ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:10 state:0 stream:input]; nvae.c = charLA10; @throw nvae; } switch (alt10) { case 1 : ; // SimpleC.g:89:7: ID // alt { [self match:input TokenType:ID Follow:FOLLOW_ID_in_atom547]; } break; case 2 : ; // SimpleC.g:90:7: INT // alt { [self match:input TokenType:INT Follow:FOLLOW_INT_in_atom561]; } break; case 3 : ; // SimpleC.g:91:7: '(' expr ')' // alt { [self match:input TokenType:7 Follow:FOLLOW_7_in_atom575]; /* ruleRef */ [self pushFollow:FOLLOW_expr_in_atom577]; [self expr]; [self popFollow]; [self match:input TokenType:8 Follow:FOLLOW_8_in_atom579]; } break; } // token+rule list labels } @catch (ANTLRRecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; } @finally { /* my stuff */ /* Terence's stuff */ } return ; } /* $ANTLR end atom */ /* ObjC end rules */ @end /* end of SimpleCParser implementation line 692 */