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