Home | History | Annotate | Download | only in treeparser
      1 /** \file
      2  *  This OBJC source file was generated by $ANTLR version ${project.version} ${buildNumber}
      3  *
      4  *     -  From the grammar source file : Lang.g
      5  *     -                            On : 2011-05-06 17:38:52
      6  *     -                 for the lexer : LangLexerLexer
      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} Lang.g 2011-05-06 17:38:52
     15 
     16 
     17 /* -----------------------------------------
     18  * Include the ANTLR3 generated header file.
     19  */
     20 #import "LangLexer.h"
     21 /* ----------------------------------------- */
     22 
     23 
     24 /* ============================================================================= */
     25 /* =============================================================================
     26  * Start of recognizer
     27  */
     28 
     29 /** As per Terence: No returns for lexer rules! */
     30 @implementation LangLexer // line 330
     31 
     32 + (void) initialize
     33 {
     34     [ANTLRBaseRecognizer setGrammarFileName:@"Lang.g"];
     35 }
     36 
     37 + (NSString *) tokenNameForType:(NSInteger)aTokenType
     38 {
     39     return [[self getTokenNames] objectAtIndex:aTokenType];
     40 }
     41 
     42 + (LangLexer *)newLangLexerWithCharStream:(id<ANTLRCharStream>)anInput
     43 {
     44     return [[LangLexer alloc] initWithCharStream:anInput];
     45 }
     46 
     47 - (id) initWithCharStream:(id<ANTLRCharStream>)anInput
     48 {
     49     self = [super initWithCharStream:anInput State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:7+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__10"
     67 - (void) mT__10
     68 {
     69     //
     70     /* my ruleScopeSetUp */
     71     /* Terence's stuff */
     72 
     73     @try {
     74         NSInteger _type = T__10;
     75         NSInteger _channel = ANTLRTokenChannelDefault;
     76         // Lang.g:7:7: ( ';' ) // ruleBlockSingleAlt
     77         // Lang.g:7:9: ';' // 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         /* Terence's stuff */
     92 
     93     }
     94     return;
     95 }
     96 /* $ANTLR end "T__10" */
     97 
     98 // $ANTLR start "INTTYPE"
     99 - (void) mINTTYPE
    100 {
    101     //
    102     /* my ruleScopeSetUp */
    103     /* Terence's stuff */
    104 
    105     @try {
    106         NSInteger _type = INTTYPE;
    107         NSInteger _channel = ANTLRTokenChannelDefault;
    108         // Lang.g:18:9: ( 'int' ) // ruleBlockSingleAlt
    109         // Lang.g:18:11: 'int' // alt
    110         {
    111         [self matchString:@"int"];
    112 
    113 
    114 
    115         }
    116 
    117         // token+rule list labels
    118 
    119         state.type = _type;
    120         state.channel = _channel;
    121     }
    122     @finally {
    123         //
    124         /* Terence's stuff */
    125 
    126     }
    127     return;
    128 }
    129 /* $ANTLR end "INTTYPE" */
    130 
    131 // $ANTLR start "FLOATTYPE"
    132 - (void) mFLOATTYPE
    133 {
    134     //
    135     /* my ruleScopeSetUp */
    136     /* Terence's stuff */
    137 
    138     @try {
    139         NSInteger _type = FLOATTYPE;
    140         NSInteger _channel = ANTLRTokenChannelDefault;
    141         // Lang.g:19:11: ( 'float' ) // ruleBlockSingleAlt
    142         // Lang.g:19:13: 'float' // alt
    143         {
    144         [self matchString:@"float"];
    145 
    146 
    147 
    148         }
    149 
    150         // token+rule list labels
    151 
    152         state.type = _type;
    153         state.channel = _channel;
    154     }
    155     @finally {
    156         //
    157         /* Terence's stuff */
    158 
    159     }
    160     return;
    161 }
    162 /* $ANTLR end "FLOATTYPE" */
    163 
    164 // $ANTLR start "ID"
    165 - (void) mID
    166 {
    167     //
    168     /* my ruleScopeSetUp */
    169     /* Terence's stuff */
    170 
    171     @try {
    172         NSInteger _type = ID;
    173         NSInteger _channel = ANTLRTokenChannelDefault;
    174         // Lang.g:20:4: ( ( 'a' .. 'z' )+ ) // ruleBlockSingleAlt
    175         // Lang.g:20:6: ( 'a' .. 'z' )+ // alt
    176         {
    177         // Lang.g:20:6: ( 'a' .. 'z' )+ // positiveClosureBlock
    178         NSInteger cnt1 = 0;
    179         do {
    180             NSInteger alt1 = 2;
    181             NSInteger LA1_0 = [input LA:1];
    182             if ( ((LA1_0 >= 'a' && LA1_0 <= 'z')) ) {
    183                 alt1=1;
    184             }
    185 
    186 
    187             switch (alt1) {
    188                 case 1 : ;
    189                     // Lang.g: // alt
    190                     {
    191                     if ((([input LA:1] >= 'a') && ([input LA:1] <= 'z'))) {
    192                         [input consume];
    193                     } else {
    194                         ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    195                         [self recover:mse];
    196                         @throw mse;
    197                     }
    198 
    199 
    200                     }
    201                     break;
    202 
    203                 default :
    204                     if ( cnt1 >= 1 )
    205                         goto loop1;
    206                     ANTLREarlyExitException *eee =
    207                         [ANTLREarlyExitException newException:input decisionNumber:1];
    208                     @throw eee;
    209             }
    210             cnt1++;
    211         } while (YES);
    212         loop1: ;
    213 
    214 
    215         }
    216 
    217         // token+rule list labels
    218 
    219         state.type = _type;
    220         state.channel = _channel;
    221     }
    222     @finally {
    223         //
    224         /* Terence's stuff */
    225 
    226     }
    227     return;
    228 }
    229 /* $ANTLR end "ID" */
    230 
    231 // $ANTLR start "INT"
    232 - (void) mINT
    233 {
    234     //
    235     /* my ruleScopeSetUp */
    236     /* Terence's stuff */
    237 
    238     @try {
    239         NSInteger _type = INT;
    240         NSInteger _channel = ANTLRTokenChannelDefault;
    241         // Lang.g:21:5: ( ( '0' .. '9' )+ ) // ruleBlockSingleAlt
    242         // Lang.g:21:7: ( '0' .. '9' )+ // alt
    243         {
    244         // Lang.g:21:7: ( '0' .. '9' )+ // positiveClosureBlock
    245         NSInteger cnt2 = 0;
    246         do {
    247             NSInteger alt2 = 2;
    248             NSInteger LA2_0 = [input LA:1];
    249             if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) {
    250                 alt2=1;
    251             }
    252 
    253 
    254             switch (alt2) {
    255                 case 1 : ;
    256                     // Lang.g: // alt
    257                     {
    258                     if ((([input LA:1] >= '0') && ([input LA:1] <= '9'))) {
    259                         [input consume];
    260                     } else {
    261                         ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    262                         [self recover:mse];
    263                         @throw mse;
    264                     }
    265 
    266 
    267                     }
    268                     break;
    269 
    270                 default :
    271                     if ( cnt2 >= 1 )
    272                         goto loop2;
    273                     ANTLREarlyExitException *eee =
    274                         [ANTLREarlyExitException newException:input decisionNumber:2];
    275                     @throw eee;
    276             }
    277             cnt2++;
    278         } while (YES);
    279         loop2: ;
    280 
    281 
    282         }
    283 
    284         // token+rule list labels
    285 
    286         state.type = _type;
    287         state.channel = _channel;
    288     }
    289     @finally {
    290         //
    291         /* Terence's stuff */
    292 
    293     }
    294     return;
    295 }
    296 /* $ANTLR end "INT" */
    297 
    298 // $ANTLR start "WS"
    299 - (void) mWS
    300 {
    301     //
    302     /* my ruleScopeSetUp */
    303     /* Terence's stuff */
    304 
    305     @try {
    306         NSInteger _type = WS;
    307         NSInteger _channel = ANTLRTokenChannelDefault;
    308         // Lang.g:22:4: ( ( ' ' | '\\n' ) ) // ruleBlockSingleAlt
    309         // Lang.g:22:6: ( ' ' | '\\n' ) // alt
    310         {
    311         if ([input LA:1] == '\n'||[input LA:1] == ' ') {
    312             [input consume];
    313         } else {
    314             ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input];
    315             [self recover:mse];
    316             @throw mse;
    317         }
    318 
    319 
    320         _channel=HIDDEN;
    321 
    322 
    323         }
    324 
    325         // token+rule list labels
    326 
    327         state.type = _type;
    328         state.channel = _channel;
    329     }
    330     @finally {
    331         //
    332         /* Terence's stuff */
    333 
    334     }
    335     return;
    336 }
    337 /* $ANTLR end "WS" */
    338 
    339 - (void) mTokens
    340 {
    341     // Lang.g:1:8: ( T__10 | INTTYPE | FLOATTYPE | ID | INT | WS ) //ruleblock
    342     NSInteger alt3=6;
    343     unichar charLA3 = [input LA:1];
    344     switch (charLA3) {
    345         case ';': ;
    346             {
    347             alt3=1;
    348             }
    349             break;
    350         case 'i': ;
    351             {
    352             NSInteger LA3_2 = [input LA:2];
    353 
    354             if ( (LA3_2=='n') ) {
    355                 NSInteger LA3_7 = [input LA:3];
    356 
    357                 if ( (LA3_7=='t') ) {
    358                     NSInteger LA3_9 = [input LA:4];
    359 
    360                     if ( ((LA3_9 >= 'a' && LA3_9 <= 'z')) ) {
    361                         alt3=4;
    362                     }
    363                     else {
    364                         alt3 = 2;
    365                     }
    366                 }
    367                 else {
    368                     alt3 = 4;
    369                 }
    370             }
    371             else {
    372                 alt3 = 4;
    373             }
    374             }
    375             break;
    376         case 'f': ;
    377             {
    378             NSInteger LA3_3 = [input LA:2];
    379 
    380             if ( (LA3_3=='l') ) {
    381                 NSInteger LA3_8 = [input LA:3];
    382 
    383                 if ( (LA3_8=='o') ) {
    384                     NSInteger LA3_10 = [input LA:4];
    385 
    386                     if ( (LA3_10=='a') ) {
    387                         NSInteger LA3_12 = [input LA:5];
    388 
    389                         if ( (LA3_12=='t') ) {
    390                             NSInteger LA3_13 = [input LA:6];
    391 
    392                             if ( ((LA3_13 >= 'a' && LA3_13 <= 'z')) ) {
    393                                 alt3=4;
    394                             }
    395                             else {
    396                                 alt3 = 3;
    397                             }
    398                         }
    399                         else {
    400                             alt3 = 4;
    401                         }
    402                     }
    403                     else {
    404                         alt3 = 4;
    405                     }
    406                 }
    407                 else {
    408                     alt3 = 4;
    409                 }
    410             }
    411             else {
    412                 alt3 = 4;
    413             }
    414             }
    415             break;
    416         case 'a': ;
    417         case 'b': ;
    418         case 'c': ;
    419         case 'd': ;
    420         case 'e': ;
    421         case 'g': ;
    422         case 'h': ;
    423         case 'j': ;
    424         case 'k': ;
    425         case 'l': ;
    426         case 'm': ;
    427         case 'n': ;
    428         case 'o': ;
    429         case 'p': ;
    430         case 'q': ;
    431         case 'r': ;
    432         case 's': ;
    433         case 't': ;
    434         case 'u': ;
    435         case 'v': ;
    436         case 'w': ;
    437         case 'x': ;
    438         case 'y': ;
    439         case 'z': ;
    440             {
    441             alt3=4;
    442             }
    443             break;
    444         case '0': ;
    445         case '1': ;
    446         case '2': ;
    447         case '3': ;
    448         case '4': ;
    449         case '5': ;
    450         case '6': ;
    451         case '7': ;
    452         case '8': ;
    453         case '9': ;
    454             {
    455             alt3=5;
    456             }
    457             break;
    458         case '\n': ;
    459         case ' ': ;
    460             {
    461             alt3=6;
    462             }
    463             break;
    464 
    465     default: ;
    466         ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newException:3 state:0 stream:input];
    467         nvae.c = charLA3;
    468         @throw nvae;
    469 
    470     }
    471 
    472     switch (alt3) {
    473         case 1 : ;
    474             // Lang.g:1:10: T__10 // alt
    475             {
    476             [self mT__10];
    477 
    478 
    479 
    480             }
    481             break;
    482         case 2 : ;
    483             // Lang.g:1:16: INTTYPE // alt
    484             {
    485             [self mINTTYPE];
    486 
    487 
    488 
    489             }
    490             break;
    491         case 3 : ;
    492             // Lang.g:1:24: FLOATTYPE // alt
    493             {
    494             [self mFLOATTYPE];
    495 
    496 
    497 
    498             }
    499             break;
    500         case 4 : ;
    501             // Lang.g:1:34: ID // alt
    502             {
    503             [self mID];
    504 
    505 
    506 
    507             }
    508             break;
    509         case 5 : ;
    510             // Lang.g:1:37: INT // alt
    511             {
    512             [self mINT];
    513 
    514 
    515 
    516             }
    517             break;
    518         case 6 : ;
    519             // Lang.g:1:41: WS // alt
    520             {
    521             [self mWS];
    522 
    523 
    524 
    525             }
    526             break;
    527 
    528     }
    529 
    530 }
    531 
    532 @end /* end of LangLexer implementation line 397 */