1/** \file
2 *  This OBJC source file was generated by $ANTLR version 3.4
3 *
4 *     -  From the grammar source file : /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g
5 *     -                            On : 2012-02-16 17:34:26
6 *     -                 for the lexer : TLexerLexer
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 3.4 /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g 2012-02-16 17:34:26
15
16
17/* -----------------------------------------
18 * Include the ANTLR3 generated header file.
19 */
20#import "TLexer.h"
21/* ----------------------------------------- */
22
23
24/* ============================================================================= */
25/* =============================================================================
26 * Start of recognizer
27 */
28
29/** As per Terence: No returns for lexer rules! */
30@implementation TLexer // line 330
31
32+ (void) initialize
33{
34    [BaseRecognizer setGrammarFileName:@"/Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g"];
35}
36
37+ (NSString *) tokenNameForType:(NSInteger)aTokenType
38{
39    return [[self getTokenNames] objectAtIndex:aTokenType];
40}
41
42+ (TLexer *)newTLexerWithCharStream:(id<CharStream>)anInput
43{
44    return [[TLexer alloc] initWithCharStream:anInput];
45}
46
47- (id) initWithCharStream:(id<CharStream>)anInput
48{
49    self = [super initWithCharStream:anInput State:[RecognizerSharedState newRecognizerSharedStateWithRuleLen:5+1]];
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    /* ruleScopeSetUp */
71
72    /* ruleDeclarations */
73
74    @try {
75        NSInteger _type = T__7;
76        NSInteger _channel = TokenChannelDefault;
77        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:7:6: ( 'enum' ) // ruleBlockSingleAlt
78        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:7:8: 'enum' // alt
79        {
80
81
82        [self matchString:@"enum"];
83
84
85
86        }
87
88        /* token+rule list labels */
89
90        state.type = _type;
91        state.channel = _channel;
92    }
93    @finally {
94        //
95        /* ruleScopeCleanUp */
96
97    }
98    return;
99}
100/* $ANTLR end "T__7" */
101// $ANTLR start "ID"
102- (void) mID
103{
104    //
105    /* ruleScopeSetUp */
106
107    /* ruleDeclarations */
108
109    @try {
110        NSInteger _type = ID;
111        NSInteger _channel = TokenChannelDefault;
112        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:37:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) // ruleBlockSingleAlt
113        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:37:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* // alt
114        {
115
116        if ((([input LA:1] >= 'A') && ([input LA:1] <= 'Z'))||[input LA:1] == '_'||(([input LA:1] >= 'a') && ([input LA:1] <= 'z'))) {
117            [input consume];
118        } else {
119            MismatchedSetException *mse = [MismatchedSetException newException:nil stream:input];
120            [self recover:mse];
121            @throw mse;
122        }
123
124
125
126        do {
127            NSInteger alt1=2;
128            NSInteger LA1_0 = [input LA:1];
129            if ( ((LA1_0 >= '0' && LA1_0 <= '9')||(LA1_0 >= 'A' && LA1_0 <= 'Z')||LA1_0=='_'||(LA1_0 >= 'a' && LA1_0 <= 'z')) ) {
130                alt1=1;
131            }
132
133
134            switch (alt1) {
135                case 1 : ;
136                    // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g: // alt
137                    {
138
139                    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'))) {
140                        [input consume];
141                    } else {
142                        MismatchedSetException *mse = [MismatchedSetException newException:nil stream:input];
143                        [self recover:mse];
144                        @throw mse;
145                    }
146
147
148                    }
149                    break;
150
151                default :
152                    goto loop1;
153            }
154        } while (YES);
155        loop1: ;
156
157
158        }
159
160        /* token+rule list labels */
161
162        state.type = _type;
163        state.channel = _channel;
164    }
165    @finally {
166        //
167        /* ruleScopeCleanUp */
168
169    }
170    return;
171}
172/* $ANTLR end "ID" */
173// $ANTLR start "INT"
174- (void) mINT
175{
176    //
177    /* ruleScopeSetUp */
178
179    /* ruleDeclarations */
180
181    @try {
182        NSInteger _type = INT;
183        NSInteger _channel = TokenChannelDefault;
184        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:40:5: ( ( '0' .. '9' )+ ) // ruleBlockSingleAlt
185        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:40:7: ( '0' .. '9' )+ // alt
186        {
187
188        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:40:7: ( '0' .. '9' )+ // positiveClosureBlock
189        NSInteger cnt2 = 0;
190        do {
191            NSInteger alt2 = 2;
192            NSInteger LA2_0 = [input LA:1];
193            if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) {
194                alt2=1;
195            }
196
197
198            switch (alt2) {
199                case 1 : ;
200                    // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g: // alt
201                    {
202
203                    if ((([input LA:1] >= '0') && ([input LA:1] <= '9'))) {
204                        [input consume];
205                    } else {
206                        MismatchedSetException *mse = [MismatchedSetException newException:nil stream:input];
207                        [self recover:mse];
208                        @throw mse;
209                    }
210
211
212                    }
213                    break;
214
215                default :
216                    if ( cnt2 >= 1 )
217                        goto loop2;
218                    EarlyExitException *eee =
219                        [EarlyExitException newException:input decisionNumber:2];
220                    @throw eee;
221            }
222            cnt2++;
223        } while (YES);
224        loop2: ;
225
226
227        }
228
229        /* token+rule list labels */
230
231        state.type = _type;
232        state.channel = _channel;
233    }
234    @finally {
235        //
236        /* ruleScopeCleanUp */
237
238    }
239    return;
240}
241/* $ANTLR end "INT" */
242// $ANTLR start "WS"
243- (void) mWS
244{
245    //
246    /* ruleScopeSetUp */
247
248    /* ruleDeclarations */
249
250    @try {
251        NSInteger _type = WS;
252        NSInteger _channel = TokenChannelDefault;
253        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:43:5: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) // ruleBlockSingleAlt
254        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:43:9: ( ' ' | '\\t' | '\\r' | '\\n' )+ // alt
255        {
256
257        // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:43:9: ( ' ' | '\\t' | '\\r' | '\\n' )+ // positiveClosureBlock
258        NSInteger cnt3 = 0;
259        do {
260            NSInteger alt3 = 2;
261            NSInteger LA3_0 = [input LA:1];
262            if ( ((LA3_0 >= '\t' && LA3_0 <= '\n')||LA3_0=='\r'||LA3_0==' ') ) {
263                alt3=1;
264            }
265
266
267            switch (alt3) {
268                case 1 : ;
269                    // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g: // alt
270                    {
271
272                    if ((([input LA:1] >= '\t') && ([input LA:1] <= '\n'))||[input LA:1] == '\r'||[input LA:1] == ' ') {
273                        [input consume];
274                    } else {
275                        MismatchedSetException *mse = [MismatchedSetException newException:nil stream:input];
276                        [self recover:mse];
277                        @throw mse;
278                    }
279
280
281                    }
282                    break;
283
284                default :
285                    if ( cnt3 >= 1 )
286                        goto loop3;
287                    EarlyExitException *eee =
288                        [EarlyExitException newException:input decisionNumber:3];
289                    @throw eee;
290            }
291            cnt3++;
292        } while (YES);
293        loop3: ;
294
295
296
297         _channel=99;
298
299
300        }
301
302        /* token+rule list labels */
303
304        state.type = _type;
305        state.channel = _channel;
306    }
307    @finally {
308        //
309        /* ruleScopeCleanUp */
310
311    }
312    return;
313}
314/* $ANTLR end "WS" */
315- (void) mTokens
316{
317    // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:1:8: ( T__7 | ID | INT | WS ) //ruleblock
318    NSInteger alt4=4;
319    unichar charLA4 = [input LA:1];
320    switch (charLA4) {
321        case 'e': ;
322            {
323            NSInteger LA4_1 = [input LA:2];
324
325            if ( (LA4_1=='n') ) {
326                NSInteger LA4_5 = [input LA:3];
327
328                if ( (LA4_5=='u') ) {
329                    NSInteger LA4_6 = [input LA:4];
330
331                    if ( (LA4_6=='m') ) {
332                        NSInteger LA4_7 = [input LA:5];
333
334                        if ( ((LA4_7 >= '0' && LA4_7 <= '9')||(LA4_7 >= 'A' && LA4_7 <= 'Z')||LA4_7=='_'||(LA4_7 >= 'a' && LA4_7 <= 'z')) ) {
335                            alt4=2;
336                        }
337                        else {
338                            alt4 = 1;
339                        }
340                    }
341                    else {
342                        alt4 = 2;
343                    }
344                }
345                else {
346                    alt4 = 2;
347                }
348            }
349            else {
350                alt4 = 2;
351            }
352            }
353            break;
354        case 'A': ;
355        case 'B': ;
356        case 'C': ;
357        case 'D': ;
358        case 'E': ;
359        case 'F': ;
360        case 'G': ;
361        case 'H': ;
362        case 'I': ;
363        case 'J': ;
364        case 'K': ;
365        case 'L': ;
366        case 'M': ;
367        case 'N': ;
368        case 'O': ;
369        case 'P': ;
370        case 'Q': ;
371        case 'R': ;
372        case 'S': ;
373        case 'T': ;
374        case 'U': ;
375        case 'V': ;
376        case 'W': ;
377        case 'X': ;
378        case 'Y': ;
379        case 'Z': ;
380        case '_': ;
381        case 'a': ;
382        case 'b': ;
383        case 'c': ;
384        case 'd': ;
385        case 'f': ;
386        case 'g': ;
387        case 'h': ;
388        case 'i': ;
389        case 'j': ;
390        case 'k': ;
391        case 'l': ;
392        case 'm': ;
393        case 'n': ;
394        case 'o': ;
395        case 'p': ;
396        case 'q': ;
397        case 'r': ;
398        case 's': ;
399        case 't': ;
400        case 'u': ;
401        case 'v': ;
402        case 'w': ;
403        case 'x': ;
404        case 'y': ;
405        case 'z': ;
406            {
407            alt4=2;
408            }
409            break;
410        case '0': ;
411        case '1': ;
412        case '2': ;
413        case '3': ;
414        case '4': ;
415        case '5': ;
416        case '6': ;
417        case '7': ;
418        case '8': ;
419        case '9': ;
420            {
421            alt4=3;
422            }
423            break;
424        case '\t': ;
425        case '\n': ;
426        case '\r': ;
427        case ' ': ;
428            {
429            alt4=4;
430            }
431            break;
432
433    default: ;
434        NoViableAltException *nvae = [NoViableAltException newException:4 state:0 stream:input];
435        nvae.c = charLA4;
436        @throw nvae;
437
438    }
439
440    switch (alt4) {
441        case 1 : ;
442            // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:1:10: T__7 // alt
443            {
444
445
446            [self mT__7];
447
448
449
450            }
451            break;
452        case 2 : ;
453            // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:1:15: ID // alt
454            {
455
456
457            [self mID];
458
459
460
461            }
462            break;
463        case 3 : ;
464            // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:1:18: INT // alt
465            {
466
467
468            [self mINT];
469
470
471
472            }
473            break;
474        case 4 : ;
475            // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/hoistedPredicates/T.g:1:22: WS // alt
476            {
477
478
479            [self mWS];
480
481
482
483            }
484            break;
485
486    }
487
488}
489
490@end /* end of TLexer implementation line 397 */