1/** \file
2 *  This OBJC source file was generated by $ANTLR version 3.2 Aug 07, 2010 22:08:38
3 *
4 *     -  From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g
5 *     -                            On : 2010-08-11 13:41:44
6 *     -                 for the lexer : TestLexerLexer *
7 * Editing it, at least manually, is not wise.
8 *
9 * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
10 *
11 *
12*/
13// [The "BSD licence"]
14// Copyright (c) 2010 Alan Condit
15//
16// All rights reserved.
17//
18// Redistribution and use in source and binary forms, with or without
19// modification, are permitted provided that the following conditions
20// are met:
21// 1. Redistributions of source code must retain the above copyright
22//    notice, this list of conditions and the following disclaimer.
23// 2. Redistributions in binary form must reproduce the above copyright
24//    notice, this list of conditions and the following disclaimer in the
25//    documentation and/or other materials provided with the distribution.
26// 3. The name of the author may not be used to endorse or promote products
27//    derived from this software without specific prior written permission.
28//
29// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
30// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
31// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
32// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
33// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
34// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
38// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
40// $ANTLR 3.2 Aug 07, 2010 22:08:38 /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g 2010-08-11 13:41:44
41
42/* -----------------------------------------
43 * Include the ANTLR3 generated header file.
44 */
45#import "TestLexer.h"
46/* ----------------------------------------- */
47
48
49/* ============================================================================= */
50
51/* =============================================================================
52 * Start of recognizer
53 */
54
55
56/** As per Terence: No returns for lexer rules!
57#pragma mark Rule return scopes start
58#pragma mark Rule return scopes end
59*/
60@implementation TestLexer
61
62
63+ (void) initialize
64{
65    [ANTLRBaseRecognizer setGrammarFileName:@"/usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g"];
66}
67
68- (id) initWithCharStream:(id<ANTLRCharStream>)anInput
69{
70    if ((self = [super initWithCharStream:anInput State:[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:4+1]]) != nil) {
71    }
72    return self;
73}
74
75- (void) dealloc
76{
77    [super dealloc];
78}
79
80+ (NSString *) tokenNameForType:(NSInteger)aTokenType
81{
82    return [[self getTokenNames] objectAtIndex:aTokenType];
83}
84
85// $ANTLR start "ID"
86- (void) mID
87{
88    //
89    // This is not in the Java.stg
90
91    @try {
92        NSInteger _type = ID;
93        NSInteger _channel = ANTLRTokenChannelDefault;
94        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:8:4: ( LETTER ( LETTER | DIGIT )* ) // ruleBlockSingleAlt
95        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:8:6: LETTER ( LETTER | DIGIT )* // alt
96        {
97            [self mLETTER];
98
99          /* element() */
100        do {
101            NSInteger alt1=2;
102            {
103                NSInteger LA1_0 = [input LA:1];
104                if ( (LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z') ) {
105                    alt1=1;
106                }
107
108            }
109            switch (alt1) {
110                case 1 :
111                    // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g: // alt
112                    {
113                    if (([input LA:1]>='0' && [input LA:1]<='9')||([input LA:1]>='A' && [input LA:1]<='Z')||([input LA:1]>='a' && [input LA:1]<='z')) {
114                        [input consume];
115
116                    } else {
117                        ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException exceptionWithSet:nil stream:input];
118                        [self recover:mse];
119                        @throw mse;}
120                      /* element() */
121                     /* elements */
122                    }
123                    break;
124
125                default :
126                    goto loop1;
127            }
128        } while (YES);
129        loop1: ;
130          /* element() */
131         /* elements */
132        }
133
134        // token+rule list labels
135
136        [state setType:_type];
137
138        state.channel = _channel;
139    }
140    @finally {
141        //
142    }
143    return;
144}
145// $ANTLR end ID
146
147// $ANTLR start "DIGIT"
148- (void) mDIGIT
149{
150    //
151    // This is not in the Java.stg
152
153    @try {
154        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:11:16: ( '0' .. '9' ) // ruleBlockSingleAlt
155        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:11:18: '0' .. '9' // alt
156        {
157        [self matchRangeFromChar:'0' to:'9'];   /* element() */
158         /* elements */
159        }
160
161    }
162    @finally {
163        //
164    }
165    return;
166}
167// $ANTLR end DIGIT
168
169// $ANTLR start "LETTER"
170- (void) mLETTER
171{
172    //
173    // This is not in the Java.stg
174
175    @try {
176        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:15:2: ( 'a' .. 'z' | 'A' .. 'Z' ) // ruleBlockSingleAlt
177        // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g: // alt
178        {
179        if (([input LA:1]>='A' && [input LA:1]<='Z')||([input LA:1]>='a' && [input LA:1]<='z')) {
180            [input consume];
181
182        } else {
183            ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException exceptionWithSet:nil stream:input];
184            [self recover:mse];
185            @throw mse;}
186          /* element() */
187         /* elements */
188        }
189
190    }
191    @finally {
192        //
193    }
194    return;
195}
196// $ANTLR end LETTER
197
198- (void) mTokens
199{
200    // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:1:8: ( ID ) // ruleBlockSingleAlt
201    // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/lexertest-simple/TestLexer.g:1:10: ID // alt
202    {
203        [self mID];
204
205      /* element() */
206     /* elements */
207    }
208
209
210}
211
212@end // end of TestLexer implementation
213
214/* End of code
215 * =============================================================================
216 */
217