Home | History | Annotate | Download | only in simplecTreeParser
      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 lexer : SimpleCLexerLexer
      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 "SimpleCLexer.h"
     21 /* ----------------------------------------- */
     22 
     23 
     24 /* ============================================================================= */
     25 /* =============================================================================
     26  * Start of recognizer
     27  */
     28 
     29 /** As per Terence: No returns for lexer rules! */
     30 @implementation SimpleCLexer // line 330
     31 
     32 + (void) initialize
     33 {
     34     [ANTLRBaseRecognizer setGrammarFileName:@"SimpleC.g"];
     35 }
     36 
     37 + (NSString *) tokenNameForType:(NSInteger)aTokenType
     38 {
     39     return [[self getTokenNames] objectAtIndex:aTokenType];
     40 }
     41 
     42 + (SimpleCLexer *)newSimpleCLexerWithCharStream:(id<ANTLRCharStream>)anInput
     43 {
     44     return [[SimpleCLexer alloc] initWithCharStream:anInput];
     45 }
     46 
     47 - (id) initWithCharStream:(id<ANTLRCharStream>)anInput
     48 {
     49     self = [super initWithCharStream:anInput State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:18+1] retain]];
     50     if ( self != nil ) {
     51     }
     52     return self;
     53 }
     54 
     55 - (void) dealloc
     56 {
     57     [super dealloc];
     58 }
     59 
     60 /* ObjC Start of actions.lexer.methods */
     61 /* ObjC end of actions.lexer.methods */
     62 /* ObjC start methods() */
     63 /* ObjC end methods() */
     64 
     65 /* Start of Rules */
     66 // $ANTLR start "K_FOR"
     67 - (void) mK_FOR
     68 {
     69     //
     70     /* my ruleScopeSetUp */
     71     /* Terence's stuff */
     72 
     73     @try {
     74         NSInteger _type = K_FOR;
     75         NSInteger _channel = ANTLRTokenChannelDefault;
     76         // SimpleC.g:91:7: ( 'for' ) // ruleBlockSingleAlt
     77         // SimpleC.g:91:9: 'for' // alt
     78         {
     79         [self matchString:@"for"];
     80 
     81 
     82 
     83         }
     84 
     85         // token+rule list labels
     86 
     87         state.type = _type;
     88         state.channel = _channel;
     89     }
     90     @finally {
     91         //
     92         /* Terence's stuff */
     93 
     94     }
     95     return;
     96 }
     97 /* $ANTLR end "K_FOR" */
     98 
     99 // $ANTLR start "K_CHAR"
    100 - (void) mK_CHAR
    101 {
    102     //
    103     /* my ruleScopeSetUp */
    104     /* Terence's stuff */
    105 
    106     @try {
    107         NSInteger _type = K_CHAR;
    108         NSInteger _channel = ANTLRTokenChannelDefault;
    109         // SimpleC.g:92:7: ( 'char' ) // ruleBlockSingleAlt
    110         // SimpleC.g:92:9: 'char' // alt
    111         {
    112         [self matchString:@"char"];
    113 
    114 
    115 
    116         }
    117 
    118         // token+rule list labels
    119 
    120         state.type = _type;
    121         state.channel = _channel;
    122     }
    123     @finally {
    124         //
    125         /* Terence's stuff */
    126 
    127     }
    128     return;
    129 }
    130 /* $ANTLR end "K_CHAR" */
    131 
    132 // $ANTLR start "K_INT_TYPE"
    133 - (void) mK_INT_TYPE
    134 {
    135     //
    136     /* my ruleScopeSetUp */
    137     /* Terence's stuff */
    138 
    139     @try {
    140         NSInteger _type = K_INT_TYPE;
    141         NSInteger _channel = ANTLRTokenChannelDefault;
    142         // SimpleC.g:93:12: ( 'int' ) // ruleBlockSingleAlt
    143         // SimpleC.g:93:14: 'int' // alt
    144         {
    145         [self matchString:@"int"];
    146 
    147 
    148 
    149         }
    150 
    151         // token+rule list labels
    152 
    153         state.type = _type;
    154         state.channel = _channel;
    155     }
    156     @finally {
    157         //
    158         /* Terence's stuff */
    159 
    160     }
    161     return;
    162 }
    163 /* $ANTLR end "K_INT_TYPE" */
    164 
    165 // $ANTLR start "K_VOID"
    166 - (void) mK_VOID
    167 {
    168     //
    169     /* my ruleScopeSetUp */
    170     /* Terence's stuff */
    171 
    172     @try {
    173         NSInteger _type = K_VOID;
    174         NSInteger _channel = ANTLRTokenChannelDefault;
    175         // SimpleC.g:94:7: ( 'void' ) // ruleBlockSingleAlt
    176         // SimpleC.g:94:9: 'void' // alt
    177         {
    178         [self matchString:@"void"];
    179 
    180 
    181 
    182         }
    183 
    184         // token+rule list labels
    185 
    186         state.type = _type;
    187         state.channel = _channel;
    188     }
    189     @finally {
    190         //
    191         /* Terence's stuff */
    192 
    193     }
    194     return;
    195 }
    196 /* $ANTLR end "K_VOID" */
    197 
    198 // $ANTLR start "K_ID"
    199 - (void) mK_ID
    200 {
    201     //
    202     /* my ruleScopeSetUp */
    203     /* Terence's stuff */
    204 
    205     @try {
    206         NSInteger _type = K_ID;
    207         NSInteger _channel = ANTLRTokenChannelDefault;
    208         // SimpleC.g:96:7: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) // ruleBlockSingleAlt
    209         // SimpleC.g:96:11: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* // alt
    210         {
    211         if ((([input LA:1] >= 'A') && ([input LA:1] <= 'Z'))||[input LA:1] == '_'||(([input LA:1] >= 'a') && ([input LA:1] <= 'z'))) {
    212             [input consume];
    213         } else {
    214             ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    215             [self recover:mse];
    216             @throw mse;
    217         }
    218 
    219 
    220         do {
    221             NSInteger alt1=2;
    222             NSInteger LA1_0 = [input LA:1];
    223             if ( ((LA1_0 >= '0' && LA1_0 <= '9')||(LA1_0 >= 'A' && LA1_0 <= 'Z')||LA1_0=='_'||(LA1_0 >= 'a' && LA1_0 <= 'z')) ) {
    224                 alt1=1;
    225             }
    226 
    227 
    228             switch (alt1) {
    229                 case 1 : ;
    230                     // SimpleC.g: // alt
    231                     {
    232                     if ((([input LA:1] >= '0') && ([input LA:1] <= '9'))||(([input LA:1] >= 'A') && ([input LA:1] <= 'Z'))||[input LA:1] == '_'||(([input LA:1] >= 'a') && ([input LA:1] <= 'z'))) {
    233                         [input consume];
    234                     } else {
    235                         ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    236                         [self recover:mse];
    237                         @throw mse;
    238                     }
    239 
    240 
    241                     }
    242                     break;
    243 
    244                 default :
    245                     goto loop1;
    246             }
    247         } while (YES);
    248         loop1: ;
    249 
    250 
    251         }
    252 
    253         // token+rule list labels
    254 
    255         state.type = _type;
    256         state.channel = _channel;
    257     }
    258     @finally {
    259         //
    260         /* Terence's stuff */
    261 
    262     }
    263     return;
    264 }
    265 /* $ANTLR end "K_ID" */
    266 
    267 // $ANTLR start "K_INT"
    268 - (void) mK_INT
    269 {
    270     //
    271     /* my ruleScopeSetUp */
    272     /* Terence's stuff */
    273 
    274     @try {
    275         NSInteger _type = K_INT;
    276         NSInteger _channel = ANTLRTokenChannelDefault;
    277         ANTLRCommonToken *anInt=nil;
    278         AMutableArray *list_anInt=nil;
    279         // SimpleC.g:99:7: ( (anInt+= ( '0' .. '9' ) )+ ) // ruleBlockSingleAlt
    280         // SimpleC.g:99:9: (anInt+= ( '0' .. '9' ) )+ // alt
    281         {
    282         // SimpleC.g:99:14: (anInt+= ( '0' .. '9' ) )+ // positiveClosureBlock
    283         NSInteger cnt2 = 0;
    284         do {
    285             NSInteger alt2 = 2;
    286             NSInteger LA2_0 = [input LA:1];
    287             if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) {
    288                 alt2=1;
    289             }
    290 
    291 
    292             switch (alt2) {
    293                 case 1 : ;
    294                     // SimpleC.g:99:14: anInt+= ( '0' .. '9' ) // alt
    295                     {
    296                     anInt = [input LA:1];
    297 
    298                     if ((([input LA:1] >= '0') && ([input LA:1] <= '9'))) {
    299                         [input consume];
    300                     } else {
    301                         ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    302                         mse.c = anInt;
    303                         [self recover:mse];
    304                         @throw mse;
    305                     }
    306 
    307 
    308                     }
    309                     break;
    310 
    311                 default :
    312                     if ( cnt2 >= 1 )
    313                         goto loop2;
    314                     ANTLREarlyExitException *eee =
    315                         [ANTLREarlyExitException newException:input decisionNumber:2];
    316                     @throw eee;
    317             }
    318             cnt2++;
    319         } while (YES);
    320         loop2: ;
    321 
    322 
    323         NSLog(@"%@", list_anInt);
    324 
    325 
    326         }
    327 
    328         // token+rule list labels
    329         [list_anInt release];
    330 
    331         state.type = _type;
    332         state.channel = _channel;
    333     }
    334     @finally {
    335         //
    336         /* Terence's stuff */
    337 
    338     }
    339     return;
    340 }
    341 /* $ANTLR end "K_INT" */
    342 
    343 // $ANTLR start "K_LCURVE"
    344 - (void) mK_LCURVE
    345 {
    346     //
    347     /* my ruleScopeSetUp */
    348     /* Terence's stuff */
    349 
    350     @try {
    351         NSInteger _type = K_LCURVE;
    352         NSInteger _channel = ANTLRTokenChannelDefault;
    353         // SimpleC.g:102:10: ( '(' ) // ruleBlockSingleAlt
    354         // SimpleC.g:102:12: '(' // alt
    355         {
    356         [self matchChar:'('];
    357 
    358 
    359         }
    360 
    361         // token+rule list labels
    362 
    363         state.type = _type;
    364         state.channel = _channel;
    365     }
    366     @finally {
    367         //
    368         /* Terence's stuff */
    369 
    370     }
    371     return;
    372 }
    373 /* $ANTLR end "K_LCURVE" */
    374 
    375 // $ANTLR start "K_RCURVE"
    376 - (void) mK_RCURVE
    377 {
    378     //
    379     /* my ruleScopeSetUp */
    380     /* Terence's stuff */
    381 
    382     @try {
    383         NSInteger _type = K_RCURVE;
    384         NSInteger _channel = ANTLRTokenChannelDefault;
    385         // SimpleC.g:103:10: ( ')' ) // ruleBlockSingleAlt
    386         // SimpleC.g:103:12: ')' // alt
    387         {
    388         [self matchChar:')'];
    389 
    390 
    391         }
    392 
    393         // token+rule list labels
    394 
    395         state.type = _type;
    396         state.channel = _channel;
    397     }
    398     @finally {
    399         //
    400         /* Terence's stuff */
    401 
    402     }
    403     return;
    404 }
    405 /* $ANTLR end "K_RCURVE" */
    406 
    407 // $ANTLR start "K_PLUS"
    408 - (void) mK_PLUS
    409 {
    410     //
    411     /* my ruleScopeSetUp */
    412     /* Terence's stuff */
    413 
    414     @try {
    415         NSInteger _type = K_PLUS;
    416         NSInteger _channel = ANTLRTokenChannelDefault;
    417         // SimpleC.g:104:8: ( '+' ) // ruleBlockSingleAlt
    418         // SimpleC.g:104:10: '+' // alt
    419         {
    420         [self matchChar:'+'];
    421 
    422 
    423         }
    424 
    425         // token+rule list labels
    426 
    427         state.type = _type;
    428         state.channel = _channel;
    429     }
    430     @finally {
    431         //
    432         /* Terence's stuff */
    433 
    434     }
    435     return;
    436 }
    437 /* $ANTLR end "K_PLUS" */
    438 
    439 // $ANTLR start "K_COMMA"
    440 - (void) mK_COMMA
    441 {
    442     //
    443     /* my ruleScopeSetUp */
    444     /* Terence's stuff */
    445 
    446     @try {
    447         NSInteger _type = K_COMMA;
    448         NSInteger _channel = ANTLRTokenChannelDefault;
    449         // SimpleC.g:105:9: ( ',' ) // ruleBlockSingleAlt
    450         // SimpleC.g:105:11: ',' // alt
    451         {
    452         [self matchChar:','];
    453 
    454 
    455         }
    456 
    457         // token+rule list labels
    458 
    459         state.type = _type;
    460         state.channel = _channel;
    461     }
    462     @finally {
    463         //
    464         /* Terence's stuff */
    465 
    466     }
    467     return;
    468 }
    469 /* $ANTLR end "K_COMMA" */
    470 
    471 // $ANTLR start "K_SEMICOLON"
    472 - (void) mK_SEMICOLON
    473 {
    474     //
    475     /* my ruleScopeSetUp */
    476     /* Terence's stuff */
    477 
    478     @try {
    479         NSInteger _type = K_SEMICOLON;
    480         NSInteger _channel = ANTLRTokenChannelDefault;
    481         // SimpleC.g:106:13: ( ';' ) // ruleBlockSingleAlt
    482         // SimpleC.g:106:15: ';' // alt
    483         {
    484         [self matchChar:';'];
    485 
    486 
    487         }
    488 
    489         // token+rule list labels
    490 
    491         state.type = _type;
    492         state.channel = _channel;
    493     }
    494     @finally {
    495         //
    496         /* Terence's stuff */
    497 
    498     }
    499     return;
    500 }
    501 /* $ANTLR end "K_SEMICOLON" */
    502 
    503 // $ANTLR start "K_LT"
    504 - (void) mK_LT
    505 {
    506     //
    507     /* my ruleScopeSetUp */
    508     /* Terence's stuff */
    509 
    510     @try {
    511         NSInteger _type = K_LT;
    512         NSInteger _channel = ANTLRTokenChannelDefault;
    513         // SimpleC.g:107:8: ( '<' ) // ruleBlockSingleAlt
    514         // SimpleC.g:107:10: '<' // alt
    515         {
    516         [self matchChar:'<'];
    517 
    518 
    519         }
    520 
    521         // token+rule list labels
    522 
    523         state.type = _type;
    524         state.channel = _channel;
    525     }
    526     @finally {
    527         //
    528         /* Terence's stuff */
    529 
    530     }
    531     return;
    532 }
    533 /* $ANTLR end "K_LT" */
    534 
    535 // $ANTLR start "K_EQ"
    536 - (void) mK_EQ
    537 {
    538     //
    539     /* my ruleScopeSetUp */
    540     /* Terence's stuff */
    541 
    542     @try {
    543         NSInteger _type = K_EQ;
    544         NSInteger _channel = ANTLRTokenChannelDefault;
    545         // SimpleC.g:108:8: ( '=' ) // ruleBlockSingleAlt
    546         // SimpleC.g:108:10: '=' // alt
    547         {
    548         [self matchChar:'='];
    549 
    550 
    551         }
    552 
    553         // token+rule list labels
    554 
    555         state.type = _type;
    556         state.channel = _channel;
    557     }
    558     @finally {
    559         //
    560         /* Terence's stuff */
    561 
    562     }
    563     return;
    564 }
    565 /* $ANTLR end "K_EQ" */
    566 
    567 // $ANTLR start "K_EQEQ"
    568 - (void) mK_EQEQ
    569 {
    570     //
    571     /* my ruleScopeSetUp */
    572     /* Terence's stuff */
    573 
    574     @try {
    575         NSInteger _type = K_EQEQ;
    576         NSInteger _channel = ANTLRTokenChannelDefault;
    577         // SimpleC.g:109:8: ( '==' ) // ruleBlockSingleAlt
    578         // SimpleC.g:109:10: '==' // alt
    579         {
    580         [self matchString:@"=="];
    581 
    582 
    583 
    584         }
    585 
    586         // token+rule list labels
    587 
    588         state.type = _type;
    589         state.channel = _channel;
    590     }
    591     @finally {
    592         //
    593         /* Terence's stuff */
    594 
    595     }
    596     return;
    597 }
    598 /* $ANTLR end "K_EQEQ" */
    599 
    600 // $ANTLR start "K_LCURLY"
    601 - (void) mK_LCURLY
    602 {
    603     //
    604     /* my ruleScopeSetUp */
    605     /* Terence's stuff */
    606 
    607     @try {
    608         NSInteger _type = K_LCURLY;
    609         NSInteger _channel = ANTLRTokenChannelDefault;
    610         // SimpleC.g:110:10: ( '{' ) // ruleBlockSingleAlt
    611         // SimpleC.g:110:12: '{' // alt
    612         {
    613         [self matchChar:'{'];
    614 
    615 
    616         }
    617 
    618         // token+rule list labels
    619 
    620         state.type = _type;
    621         state.channel = _channel;
    622     }
    623     @finally {
    624         //
    625         /* Terence's stuff */
    626 
    627     }
    628     return;
    629 }
    630 /* $ANTLR end "K_LCURLY" */
    631 
    632 // $ANTLR start "K_RCURLY"
    633 - (void) mK_RCURLY
    634 {
    635     //
    636     /* my ruleScopeSetUp */
    637     /* Terence's stuff */
    638 
    639     @try {
    640         NSInteger _type = K_RCURLY;
    641         NSInteger _channel = ANTLRTokenChannelDefault;
    642         // SimpleC.g:111:10: ( '}' ) // ruleBlockSingleAlt
    643         // SimpleC.g:111:12: '}' // alt
    644         {
    645         [self matchChar:'}'];
    646 
    647 
    648         }
    649 
    650         // token+rule list labels
    651 
    652         state.type = _type;
    653         state.channel = _channel;
    654     }
    655     @finally {
    656         //
    657         /* Terence's stuff */
    658 
    659     }
    660     return;
    661 }
    662 /* $ANTLR end "K_RCURLY" */
    663 
    664 // $ANTLR start "WS"
    665 - (void) mWS
    666 {
    667     //
    668     /* my ruleScopeSetUp */
    669     /* Terence's stuff */
    670 
    671     @try {
    672         NSInteger _type = WS;
    673         NSInteger _channel = ANTLRTokenChannelDefault;
    674         // SimpleC.g:113:5: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) // ruleBlockSingleAlt
    675         // SimpleC.g:113:9: ( ' ' | '\\t' | '\\r' | '\\n' )+ // alt
    676         {
    677         // SimpleC.g:113:9: ( ' ' | '\\t' | '\\r' | '\\n' )+ // positiveClosureBlock
    678         NSInteger cnt3 = 0;
    679         do {
    680             NSInteger alt3 = 2;
    681             NSInteger LA3_0 = [input LA:1];
    682             if ( ((LA3_0 >= '\t' && LA3_0 <= '\n')||LA3_0=='\r'||LA3_0==' ') ) {
    683                 alt3=1;
    684             }
    685 
    686 
    687             switch (alt3) {
    688                 case 1 : ;
    689                     // SimpleC.g: // alt
    690                     {
    691                     if ((([input LA:1] >= '\t') && ([input LA:1] <= '\n'))||[input LA:1] == '\r'||[input LA:1] == ' ') {
    692                         [input consume];
    693                     } else {
    694                         ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    695                         [self recover:mse];
    696                         @throw mse;
    697                     }
    698 
    699 
    700                     }
    701                     break;
    702 
    703                 default :
    704                     if ( cnt3 >= 1 )
    705                         goto loop3;
    706                     ANTLREarlyExitException *eee =
    707                         [ANTLREarlyExitException newException:input decisionNumber:3];
    708                     @throw eee;
    709             }
    710             cnt3++;
    711         } while (YES);
    712         loop3: ;
    713 
    714 
    715          _channel=HIDDEN;
    716 
    717 
    718         }
    719 
    720         // token+rule list labels
    721 
    722         state.type = _type;
    723         state.channel = _channel;
    724     }
    725     @finally {
    726         //
    727         /* Terence's stuff */
    728 
    729     }
    730     return;
    731 }
    732 /* $ANTLR end "WS" */
    733 
    734 - (void) mTokens
    735 {
    736     // SimpleC.g:1:8: ( K_FOR | K_CHAR | K_INT_TYPE | K_VOID | K_ID | K_INT | K_LCURVE | K_RCURVE | K_PLUS | K_COMMA | K_SEMICOLON | K_LT | K_EQ | K_EQEQ | K_LCURLY | K_RCURLY | WS ) //ruleblock
    737     NSInteger alt4=17;
    738     unichar charLA4 = [input LA:1];
    739     switch (charLA4) {
    740         case 'f': ;
    741             {
    742             NSInteger LA4_1 = [input LA:2];
    743 
    744             if ( (LA4_1=='o') ) {
    745                 NSInteger LA4_17 = [input LA:3];
    746 
    747                 if ( (LA4_17=='r') ) {
    748                     NSInteger LA4_23 = [input LA:4];
    749 
    750                     if ( ((LA4_23 >= '0' && LA4_23 <= '9')||(LA4_23 >= 'A' && LA4_23 <= 'Z')||LA4_23=='_'||(LA4_23 >= 'a' && LA4_23 <= 'z')) ) {
    751                         alt4=5;
    752                     }
    753                     else {
    754                         alt4 = 1;
    755                     }
    756                 }
    757                 else {
    758                     alt4 = 5;
    759                 }
    760             }
    761             else {
    762                 alt4 = 5;
    763             }
    764             }
    765             break;
    766         case 'c': ;
    767             {
    768             NSInteger LA4_2 = [input LA:2];
    769 
    770             if ( (LA4_2=='h') ) {
    771                 NSInteger LA4_18 = [input LA:3];
    772 
    773                 if ( (LA4_18=='a') ) {
    774                     NSInteger LA4_24 = [input LA:4];
    775 
    776                     if ( (LA4_24=='r') ) {
    777                         NSInteger LA4_28 = [input LA:5];
    778 
    779                         if ( ((LA4_28 >= '0' && LA4_28 <= '9')||(LA4_28 >= 'A' && LA4_28 <= 'Z')||LA4_28=='_'||(LA4_28 >= 'a' && LA4_28 <= 'z')) ) {
    780                             alt4=5;
    781                         }
    782                         else {
    783                             alt4 = 2;
    784                         }
    785                     }
    786                     else {
    787                         alt4 = 5;
    788                     }
    789                 }
    790                 else {
    791                     alt4 = 5;
    792                 }
    793             }
    794             else {
    795                 alt4 = 5;
    796             }
    797             }
    798             break;
    799         case 'i': ;
    800             {
    801             NSInteger LA4_3 = [input LA:2];
    802 
    803             if ( (LA4_3=='n') ) {
    804                 NSInteger LA4_19 = [input LA:3];
    805 
    806                 if ( (LA4_19=='t') ) {
    807                     NSInteger LA4_25 = [input LA:4];
    808 
    809                     if ( ((LA4_25 >= '0' && LA4_25 <= '9')||(LA4_25 >= 'A' && LA4_25 <= 'Z')||LA4_25=='_'||(LA4_25 >= 'a' && LA4_25 <= 'z')) ) {
    810                         alt4=5;
    811                     }
    812                     else {
    813                         alt4 = 3;
    814                     }
    815                 }
    816                 else {
    817                     alt4 = 5;
    818                 }
    819             }
    820             else {
    821                 alt4 = 5;
    822             }
    823             }
    824             break;
    825         case 'v': ;
    826             {
    827             NSInteger LA4_4 = [input LA:2];
    828 
    829             if ( (LA4_4=='o') ) {
    830                 NSInteger LA4_20 = [input LA:3];
    831 
    832                 if ( (LA4_20=='i') ) {
    833                     NSInteger LA4_26 = [input LA:4];
    834 
    835                     if ( (LA4_26=='d') ) {
    836                         NSInteger LA4_30 = [input LA:5];
    837 
    838                         if ( ((LA4_30 >= '0' && LA4_30 <= '9')||(LA4_30 >= 'A' && LA4_30 <= 'Z')||LA4_30=='_'||(LA4_30 >= 'a' && LA4_30 <= 'z')) ) {
    839                             alt4=5;
    840                         }
    841                         else {
    842                             alt4 = 4;
    843                         }
    844                     }
    845                     else {
    846                         alt4 = 5;
    847                     }
    848                 }
    849                 else {
    850                     alt4 = 5;
    851                 }
    852             }
    853             else {
    854                 alt4 = 5;
    855             }
    856             }
    857             break;
    858         case 'A': ;
    859         case 'B': ;
    860         case 'C': ;
    861         case 'D': ;
    862         case 'E': ;
    863         case 'F': ;
    864         case 'G': ;
    865         case 'H': ;
    866         case 'I': ;
    867         case 'J': ;
    868         case 'K': ;
    869         case 'L': ;
    870         case 'M': ;
    871         case 'N': ;
    872         case 'O': ;
    873         case 'P': ;
    874         case 'Q': ;
    875         case 'R': ;
    876         case 'S': ;
    877         case 'T': ;
    878         case 'U': ;
    879         case 'V': ;
    880         case 'W': ;
    881         case 'X': ;
    882         case 'Y': ;
    883         case 'Z': ;
    884         case '_': ;
    885         case 'a': ;
    886         case 'b': ;
    887         case 'd': ;
    888         case 'e': ;
    889         case 'g': ;
    890         case 'h': ;
    891         case 'j': ;
    892         case 'k': ;
    893         case 'l': ;
    894         case 'm': ;
    895         case 'n': ;
    896         case 'o': ;
    897         case 'p': ;
    898         case 'q': ;
    899         case 'r': ;
    900         case 's': ;
    901         case 't': ;
    902         case 'u': ;
    903         case 'w': ;
    904         case 'x': ;
    905         case 'y': ;
    906         case 'z': ;
    907             {
    908             alt4=5;
    909             }
    910             break;
    911         case '0': ;
    912         case '1': ;
    913         case '2': ;
    914         case '3': ;
    915         case '4': ;
    916         case '5': ;
    917         case '6': ;
    918         case '7': ;
    919         case '8': ;
    920         case '9': ;
    921             {
    922             alt4=6;
    923             }
    924             break;
    925         case '(': ;
    926             {
    927             alt4=7;
    928             }
    929             break;
    930         case ')': ;
    931             {
    932             alt4=8;
    933             }
    934             break;
    935         case '+': ;
    936             {
    937             alt4=9;
    938             }
    939             break;
    940         case ',': ;
    941             {
    942             alt4=10;
    943             }
    944             break;
    945         case ';': ;
    946             {
    947             alt4=11;
    948             }
    949             break;
    950         case '<': ;
    951             {
    952             alt4=12;
    953             }
    954             break;
    955         case '=': ;
    956             {
    957             NSInteger LA4_13 = [input LA:2];
    958 
    959             if ( (LA4_13=='=') ) {
    960                 alt4=14;
    961             }
    962             else {
    963                 alt4 = 13;
    964             }
    965             }
    966             break;
    967         case '{': ;
    968             {
    969             alt4=15;
    970             }
    971             break;
    972         case '}': ;
    973             {
    974             alt4=16;
    975             }
    976             break;
    977         case '\t': ;
    978         case '\n': ;
    979         case '\r': ;
    980         case ' ': ;
    981             {
    982             alt4=17;
    983             }
    984             break;
    985 
    986     default: ;
    987         ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:4 state:0 stream:input];
    988         nvae.c = charLA4;
    989         @throw nvae;
    990 
    991     }
    992 
    993     switch (alt4) {
    994         case 1 : ;
    995             // SimpleC.g:1:10: K_FOR // alt
    996             {
    997             [self mK_FOR];
    998 
    999 
   1000 
   1001             }
   1002             break;
   1003         case 2 : ;
   1004             // SimpleC.g:1:16: K_CHAR // alt
   1005             {
   1006             [self mK_CHAR];
   1007 
   1008 
   1009 
   1010             }
   1011             break;
   1012         case 3 : ;
   1013             // SimpleC.g:1:23: K_INT_TYPE // alt
   1014             {
   1015             [self mK_INT_TYPE];
   1016 
   1017 
   1018 
   1019             }
   1020             break;
   1021         case 4 : ;
   1022             // SimpleC.g:1:34: K_VOID // alt
   1023             {
   1024             [self mK_VOID];
   1025 
   1026 
   1027 
   1028             }
   1029             break;
   1030         case 5 : ;
   1031             // SimpleC.g:1:41: K_ID // alt
   1032             {
   1033             [self mK_ID];
   1034 
   1035 
   1036 
   1037             }
   1038             break;
   1039         case 6 : ;
   1040             // SimpleC.g:1:46: K_INT // alt
   1041             {
   1042             [self mK_INT];
   1043 
   1044 
   1045 
   1046             }
   1047             break;
   1048         case 7 : ;
   1049             // SimpleC.g:1:52: K_LCURVE // alt
   1050             {
   1051             [self mK_LCURVE];
   1052 
   1053 
   1054 
   1055             }
   1056             break;
   1057         case 8 : ;
   1058             // SimpleC.g:1:61: K_RCURVE // alt
   1059             {
   1060             [self mK_RCURVE];
   1061 
   1062 
   1063 
   1064             }
   1065             break;
   1066         case 9 : ;
   1067             // SimpleC.g:1:70: K_PLUS // alt
   1068             {
   1069             [self mK_PLUS];
   1070 
   1071 
   1072 
   1073             }
   1074             break;
   1075         case 10 : ;
   1076             // SimpleC.g:1:77: K_COMMA // alt
   1077             {
   1078             [self mK_COMMA];
   1079 
   1080 
   1081 
   1082             }
   1083             break;
   1084         case 11 : ;
   1085             // SimpleC.g:1:85: K_SEMICOLON // alt
   1086             {
   1087             [self mK_SEMICOLON];
   1088 
   1089 
   1090 
   1091             }
   1092             break;
   1093         case 12 : ;
   1094             // SimpleC.g:1:97: K_LT // alt
   1095             {
   1096             [self mK_LT];
   1097 
   1098 
   1099 
   1100             }
   1101             break;
   1102         case 13 : ;
   1103             // SimpleC.g:1:102: K_EQ // alt
   1104             {
   1105             [self mK_EQ];
   1106 
   1107 
   1108 
   1109             }
   1110             break;
   1111         case 14 : ;
   1112             // SimpleC.g:1:107: K_EQEQ // alt
   1113             {
   1114             [self mK_EQEQ];
   1115 
   1116 
   1117 
   1118             }
   1119             break;
   1120         case 15 : ;
   1121             // SimpleC.g:1:114: K_LCURLY // alt
   1122             {
   1123             [self mK_LCURLY];
   1124 
   1125 
   1126 
   1127             }
   1128             break;
   1129         case 16 : ;
   1130             // SimpleC.g:1:123: K_RCURLY // alt
   1131             {
   1132             [self mK_RCURLY];
   1133 
   1134 
   1135 
   1136             }
   1137             break;
   1138         case 17 : ;
   1139             // SimpleC.g:1:132: WS // alt
   1140             {
   1141             [self mWS];
   1142 
   1143 
   1144 
   1145             }
   1146             break;
   1147 
   1148     }
   1149 
   1150 }
   1151 
   1152 @end /* end of SimpleCLexer implementation line 397 */