001    // $ANTLR 2.7.5 (20050128): "../src/csheets/core/formula/compiler/FormulaCompiler.g" -> "FormulaLexer.java"$
002    package csheets.core.formula.compiler;
003    import java.io.InputStream;
004    import java.io.Reader;
005    import java.util.Hashtable;
006    
007    import antlr.ByteBuffer;
008    import antlr.CharBuffer;
009    import antlr.CharStreamException;
010    import antlr.CharStreamIOException;
011    import antlr.InputBuffer;
012    import antlr.LexerSharedInputState;
013    import antlr.NoViableAltForCharException;
014    import antlr.RecognitionException;
015    import antlr.Token;
016    import antlr.TokenStream;
017    import antlr.TokenStreamException;
018    import antlr.TokenStreamIOException;
019    import antlr.TokenStreamRecognitionException;
020    import antlr.collections.impl.BitSet;
021    import csheets.core.formula.lang.Language;
022    
023    /**
024     * A lexer that splits a string into a list of lexical tokens.
025     * @author Einar Pehrson
026     */
027    @SuppressWarnings("all")
028    public class FormulaLexer extends antlr.CharScanner implements FormulaParserTokenTypes, TokenStream
029     {
030    public FormulaLexer(InputStream in) {
031            this(new ByteBuffer(in));
032    }
033    public FormulaLexer(Reader in) {
034            this(new CharBuffer(in));
035    }
036    public FormulaLexer(InputBuffer ib) {
037            this(new LexerSharedInputState(ib));
038    }
039    public FormulaLexer(LexerSharedInputState state) {
040            super(state);
041            caseSensitiveLiterals = false;
042            setCaseSensitive(false);
043            literals = new Hashtable();
044    }
045    
046    public Token nextToken() throws TokenStreamException {
047            Token theRetToken=null;
048    tryAgain:
049            for (;;) {
050                    Token _token = null;
051                    int _ttype = Token.INVALID_TYPE;
052                    resetText();
053                    try {   // for char stream error handling
054                            try {   // for lexical error handling
055                                    switch ( LA(1)) {
056                                    case '$':  case 'a':  case 'b':  case 'c':
057                                    case 'd':  case 'e':  case 'f':  case 'g':
058                                    case 'h':  case 'i':  case 'j':  case 'k':
059                                    case 'l':  case 'm':  case 'n':  case 'o':
060                                    case 'p':  case 'q':  case 'r':  case 's':
061                                    case 't':  case 'u':  case 'v':  case 'w':
062                                    case 'x':  case 'y':  case 'z':
063                                    {
064                                            mALPHABETICAL(true);
065                                            theRetToken=_returnToken;
066                                            break;
067                                    }
068                                    case '(':
069                                    {
070                                            mLPAR(true);
071                                            theRetToken=_returnToken;
072                                            break;
073                                    }
074                                    case '"':
075                                    {
076                                            mSTRING(true);
077                                            theRetToken=_returnToken;
078                                            break;
079                                    }
080                                    case '0':  case '1':  case '2':  case '3':
081                                    case '4':  case '5':  case '6':  case '7':
082                                    case '8':  case '9':
083                                    {
084                                            mNUMBER(true);
085                                            theRetToken=_returnToken;
086                                            break;
087                                    }
088                                    case ',':
089                                    {
090                                            mCOMMA(true);
091                                            theRetToken=_returnToken;
092                                            break;
093                                    }
094                                    case '=':
095                                    {
096                                            mEQ(true);
097                                            theRetToken=_returnToken;
098                                            break;
099                                    }
100                                    case '&':
101                                    {
102                                            mAMP(true);
103                                            theRetToken=_returnToken;
104                                            break;
105                                    }
106                                    case '+':
107                                    {
108                                            mPLUS(true);
109                                            theRetToken=_returnToken;
110                                            break;
111                                    }
112                                    case '-':
113                                    {
114                                            mMINUS(true);
115                                            theRetToken=_returnToken;
116                                            break;
117                                    }
118                                    case '*':
119                                    {
120                                            mMULTI(true);
121                                            theRetToken=_returnToken;
122                                            break;
123                                    }
124                                    case '/':
125                                    {
126                                            mDIV(true);
127                                            theRetToken=_returnToken;
128                                            break;
129                                    }
130                                    case '^':
131                                    {
132                                            mPOWER(true);
133                                            theRetToken=_returnToken;
134                                            break;
135                                    }
136                                    case '%':
137                                    {
138                                            mPERCENT(true);
139                                            theRetToken=_returnToken;
140                                            break;
141                                    }
142                                    case ':':
143                                    {
144                                            mCOLON(true);
145                                            theRetToken=_returnToken;
146                                            break;
147                                    }
148                                    case ';':
149                                    {
150                                            mSEMI(true);
151                                            theRetToken=_returnToken;
152                                            break;
153                                    }
154                                    case ')':
155                                    {
156                                            mRPAR(true);
157                                            theRetToken=_returnToken;
158                                            break;
159                                    }
160                                    case '\t':  case '\n':  case '\r':  case ' ':
161                                    {
162                                            mWS(true);
163                                            theRetToken=_returnToken;
164                                            break;
165                                    }
166                                    default:
167                                            if ((LA(1)=='<') && (LA(2)=='>')) {
168                                                    mNEQ(true);
169                                                    theRetToken=_returnToken;
170                                            }
171                                            else if ((LA(1)=='<') && (LA(2)=='=')) {
172                                                    mLTEQ(true);
173                                                    theRetToken=_returnToken;
174                                            }
175                                            else if ((LA(1)=='>') && (LA(2)=='=')) {
176                                                    mGTEQ(true);
177                                                    theRetToken=_returnToken;
178                                            }
179                                            else if ((LA(1)=='>') && (true)) {
180                                                    mGT(true);
181                                                    theRetToken=_returnToken;
182                                            }
183                                            else if ((LA(1)=='<') && (true)) {
184                                                    mLT(true);
185                                                    theRetToken=_returnToken;
186                                            }
187                                    else {
188                                            if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}
189                                    else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
190                                    }
191                                    }
192                                    if ( _returnToken==null ) continue tryAgain; // found SKIP token
193                                    _ttype = _returnToken.getType();
194                                    _ttype = testLiteralsTable(_ttype);
195                                    _returnToken.setType(_ttype);
196                                    return _returnToken;
197                            }
198                            catch (RecognitionException e) {
199                                    throw new TokenStreamRecognitionException(e);
200                            }
201                    }
202                    catch (CharStreamException cse) {
203                            if ( cse instanceof CharStreamIOException ) {
204                                    throw new TokenStreamIOException(((CharStreamIOException)cse).io);
205                            }
206                            else {
207                                    throw new TokenStreamException(cse.getMessage());
208                            }
209                    }
210            }
211    }
212    
213            protected final void mLETTER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
214                    int _ttype; Token _token=null; int _begin=text.length();
215                    _ttype = LETTER;
216                    int _saveIndex;
217                    
218                    {
219                    matchRange('a','z');
220                    }
221                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
222                            _token = makeToken(_ttype);
223                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
224                    }
225                    _returnToken = _token;
226            }
227            
228            public final void mALPHABETICAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
229                    int _ttype; Token _token=null; int _begin=text.length();
230                    _ttype = ALPHABETICAL;
231                    int _saveIndex;
232                    
233                    boolean synPredMatched37 = false;
234                    if ((((LA(1) >= 'a' && LA(1) <= 'z')) && (_tokenSet_0.member(LA(2))) && (true) && (true))) {
235                            int _m37 = mark();
236                            synPredMatched37 = true;
237                            inputState.guessing++;
238                            try {
239                                    {
240                                    {
241                                    int _cnt36=0;
242                                    _loop36:
243                                    do {
244                                            if (((LA(1) >= 'a' && LA(1) <= 'z'))) {
245                                                    mLETTER(false);
246                                            }
247                                            else {
248                                                    if ( _cnt36>=1 ) { break _loop36; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
249                                            }
250                                            
251                                            _cnt36++;
252                                    } while (true);
253                                    }
254                                    mLPAR(false);
255                                    }
256                            }
257                            catch (RecognitionException pe) {
258                                    synPredMatched37 = false;
259                            }
260                            rewind(_m37);
261                            inputState.guessing--;
262                    }
263                    if ( synPredMatched37 ) {
264                            {
265                            int _cnt39=0;
266                            _loop39:
267                            do {
268                                    if (((LA(1) >= 'a' && LA(1) <= 'z'))) {
269                                            mLETTER(false);
270                                    }
271                                    else {
272                                            if ( _cnt39>=1 ) { break _loop39; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
273                                    }
274                                    
275                                    _cnt39++;
276                            } while (true);
277                            }
278                            _saveIndex=text.length();
279                            mLPAR(false);
280                            text.setLength(_saveIndex);
281                            if ( inputState.guessing==0 ) {
282                                    
283                                                            try {
284                                                                    Language.getInstance().getFunction(getText());
285                                                                    _ttype = FUNCTION;
286                                                            } catch (Exception ex) {
287                                                                    throw new RecognitionException(ex.toString());
288                                                            }
289                                                    
290                            }
291                    }
292                    else if ((_tokenSet_1.member(LA(1))) && (_tokenSet_2.member(LA(2))) && (true) && (true)) {
293                            {
294                            switch ( LA(1)) {
295                            case '$':
296                            {
297                                    mABS(false);
298                                    break;
299                            }
300                            case 'a':  case 'b':  case 'c':  case 'd':
301                            case 'e':  case 'f':  case 'g':  case 'h':
302                            case 'i':  case 'j':  case 'k':  case 'l':
303                            case 'm':  case 'n':  case 'o':  case 'p':
304                            case 'q':  case 'r':  case 's':  case 't':
305                            case 'u':  case 'v':  case 'w':  case 'x':
306                            case 'y':  case 'z':
307                            {
308                                    break;
309                            }
310                            default:
311                            {
312                                    throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
313                            }
314                            }
315                            }
316                            mLETTER(false);
317                            {
318                            switch ( LA(1)) {
319                            case 'a':  case 'b':  case 'c':  case 'd':
320                            case 'e':  case 'f':  case 'g':  case 'h':
321                            case 'i':  case 'j':  case 'k':  case 'l':
322                            case 'm':  case 'n':  case 'o':  case 'p':
323                            case 'q':  case 'r':  case 's':  case 't':
324                            case 'u':  case 'v':  case 'w':  case 'x':
325                            case 'y':  case 'z':
326                            {
327                                    mLETTER(false);
328                                    break;
329                            }
330                            case '$':  case '0':  case '1':  case '2':
331                            case '3':  case '4':  case '5':  case '6':
332                            case '7':  case '8':  case '9':
333                            {
334                                    break;
335                            }
336                            default:
337                            {
338                                    throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
339                            }
340                            }
341                            }
342                            {
343                            switch ( LA(1)) {
344                            case '$':
345                            {
346                                    mABS(false);
347                                    break;
348                            }
349                            case '0':  case '1':  case '2':  case '3':
350                            case '4':  case '5':  case '6':  case '7':
351                            case '8':  case '9':
352                            {
353                                    break;
354                            }
355                            default:
356                            {
357                                    throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
358                            }
359                            }
360                            }
361                            {
362                            int _cnt44=0;
363                            _loop44:
364                            do {
365                                    if (((LA(1) >= '0' && LA(1) <= '9'))) {
366                                            mDIGIT(false);
367                                    }
368                                    else {
369                                            if ( _cnt44>=1 ) { break _loop44; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
370                                    }
371                                    
372                                    _cnt44++;
373                            } while (true);
374                            }
375                            if ( inputState.guessing==0 ) {
376                                    
377                                                            _ttype = CELL_REF;
378                                                    
379                            }
380                    }
381                    else {
382                            throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
383                    }
384                    
385                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
386                            _token = makeToken(_ttype);
387                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
388                    }
389                    _returnToken = _token;
390            }
391            
392            public final void mLPAR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
393                    int _ttype; Token _token=null; int _begin=text.length();
394                    _ttype = LPAR;
395                    int _saveIndex;
396                    
397                    match('(');
398                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
399                            _token = makeToken(_ttype);
400                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
401                    }
402                    _returnToken = _token;
403            }
404            
405            protected final void mABS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
406                    int _ttype; Token _token=null; int _begin=text.length();
407                    _ttype = ABS;
408                    int _saveIndex;
409                    
410                    match('$');
411                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
412                            _token = makeToken(_ttype);
413                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
414                    }
415                    _returnToken = _token;
416            }
417            
418            protected final void mDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
419                    int _ttype; Token _token=null; int _begin=text.length();
420                    _ttype = DIGIT;
421                    int _saveIndex;
422                    
423                    matchRange('0','9');
424                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
425                            _token = makeToken(_ttype);
426                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
427                    }
428                    _returnToken = _token;
429            }
430            
431            public final void mSTRING(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
432                    int _ttype; Token _token=null; int _begin=text.length();
433                    _ttype = STRING;
434                    int _saveIndex;
435                    
436                    _saveIndex=text.length();
437                    mQUOT(false);
438                    text.setLength(_saveIndex);
439                    {
440                    _loop47:
441                    do {
442                            // nongreedy exit test
443                            if ((LA(1)=='"') && (true)) break _loop47;
444                            if (((LA(1) >= '\u0000' && LA(1) <= '\u007f')) && ((LA(2) >= '\u0000' && LA(2) <= '\u007f'))) {
445                                    matchNot(EOF_CHAR);
446                            }
447                            else {
448                                    break _loop47;
449                            }
450                            
451                    } while (true);
452                    }
453                    _saveIndex=text.length();
454                    mQUOT(false);
455                    text.setLength(_saveIndex);
456                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
457                            _token = makeToken(_ttype);
458                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
459                    }
460                    _returnToken = _token;
461            }
462            
463            protected final void mQUOT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
464                    int _ttype; Token _token=null; int _begin=text.length();
465                    _ttype = QUOT;
466                    int _saveIndex;
467                    
468                    match('"');
469                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
470                            _token = makeToken(_ttype);
471                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
472                    }
473                    _returnToken = _token;
474            }
475            
476            public final void mNUMBER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
477                    int _ttype; Token _token=null; int _begin=text.length();
478                    _ttype = NUMBER;
479                    int _saveIndex;
480                    
481                    {
482                    int _cnt51=0;
483                    _loop51:
484                    do {
485                            if (((LA(1) >= '0' && LA(1) <= '9'))) {
486                                    mDIGIT(false);
487                            }
488                            else {
489                                    if ( _cnt51>=1 ) { break _loop51; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
490                            }
491                            
492                            _cnt51++;
493                    } while (true);
494                    }
495                    {
496                    if ((LA(1)==',')) {
497                            mCOMMA(false);
498                            {
499                            int _cnt54=0;
500                            _loop54:
501                            do {
502                                    if (((LA(1) >= '0' && LA(1) <= '9'))) {
503                                            mDIGIT(false);
504                                    }
505                                    else {
506                                            if ( _cnt54>=1 ) { break _loop54; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
507                                    }
508                                    
509                                    _cnt54++;
510                            } while (true);
511                            }
512                    }
513                    else {
514                    }
515                    
516                    }
517                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
518                            _token = makeToken(_ttype);
519                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
520                    }
521                    _returnToken = _token;
522            }
523            
524            public final void mCOMMA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
525                    int _ttype; Token _token=null; int _begin=text.length();
526                    _ttype = COMMA;
527                    int _saveIndex;
528                    
529                    match(',');
530                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
531                            _token = makeToken(_ttype);
532                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
533                    }
534                    _returnToken = _token;
535            }
536            
537            public final void mEQ(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
538                    int _ttype; Token _token=null; int _begin=text.length();
539                    _ttype = EQ;
540                    int _saveIndex;
541                    
542                    match("=");
543                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
544                            _token = makeToken(_ttype);
545                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
546                    }
547                    _returnToken = _token;
548            }
549            
550            public final void mNEQ(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
551                    int _ttype; Token _token=null; int _begin=text.length();
552                    _ttype = NEQ;
553                    int _saveIndex;
554                    
555                    match("<>");
556                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
557                            _token = makeToken(_ttype);
558                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
559                    }
560                    _returnToken = _token;
561            }
562            
563            public final void mLTEQ(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
564                    int _ttype; Token _token=null; int _begin=text.length();
565                    _ttype = LTEQ;
566                    int _saveIndex;
567                    
568                    match("<=");
569                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
570                            _token = makeToken(_ttype);
571                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
572                    }
573                    _returnToken = _token;
574            }
575            
576            public final void mGTEQ(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
577                    int _ttype; Token _token=null; int _begin=text.length();
578                    _ttype = GTEQ;
579                    int _saveIndex;
580                    
581                    match(">=");
582                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
583                            _token = makeToken(_ttype);
584                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
585                    }
586                    _returnToken = _token;
587            }
588            
589            public final void mGT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
590                    int _ttype; Token _token=null; int _begin=text.length();
591                    _ttype = GT;
592                    int _saveIndex;
593                    
594                    match('>');
595                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
596                            _token = makeToken(_ttype);
597                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
598                    }
599                    _returnToken = _token;
600            }
601            
602            public final void mLT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
603                    int _ttype; Token _token=null; int _begin=text.length();
604                    _ttype = LT;
605                    int _saveIndex;
606                    
607                    match('<');
608                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
609                            _token = makeToken(_ttype);
610                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
611                    }
612                    _returnToken = _token;
613            }
614            
615            public final void mAMP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
616                    int _ttype; Token _token=null; int _begin=text.length();
617                    _ttype = AMP;
618                    int _saveIndex;
619                    
620                    match('&');
621                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
622                            _token = makeToken(_ttype);
623                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
624                    }
625                    _returnToken = _token;
626            }
627            
628            public final void mPLUS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
629                    int _ttype; Token _token=null; int _begin=text.length();
630                    _ttype = PLUS;
631                    int _saveIndex;
632                    
633                    match('+');
634                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
635                            _token = makeToken(_ttype);
636                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
637                    }
638                    _returnToken = _token;
639            }
640            
641            public final void mMINUS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
642                    int _ttype; Token _token=null; int _begin=text.length();
643                    _ttype = MINUS;
644                    int _saveIndex;
645                    
646                    match('-');
647                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
648                            _token = makeToken(_ttype);
649                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
650                    }
651                    _returnToken = _token;
652            }
653            
654            public final void mMULTI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
655                    int _ttype; Token _token=null; int _begin=text.length();
656                    _ttype = MULTI;
657                    int _saveIndex;
658                    
659                    match('*');
660                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
661                            _token = makeToken(_ttype);
662                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
663                    }
664                    _returnToken = _token;
665            }
666            
667            public final void mDIV(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
668                    int _ttype; Token _token=null; int _begin=text.length();
669                    _ttype = DIV;
670                    int _saveIndex;
671                    
672                    match('/');
673                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
674                            _token = makeToken(_ttype);
675                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
676                    }
677                    _returnToken = _token;
678            }
679            
680            public final void mPOWER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
681                    int _ttype; Token _token=null; int _begin=text.length();
682                    _ttype = POWER;
683                    int _saveIndex;
684                    
685                    match('^');
686                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
687                            _token = makeToken(_ttype);
688                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
689                    }
690                    _returnToken = _token;
691            }
692            
693            public final void mPERCENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
694                    int _ttype; Token _token=null; int _begin=text.length();
695                    _ttype = PERCENT;
696                    int _saveIndex;
697                    
698                    match('%');
699                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
700                            _token = makeToken(_ttype);
701                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
702                    }
703                    _returnToken = _token;
704            }
705            
706            protected final void mEXCL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
707                    int _ttype; Token _token=null; int _begin=text.length();
708                    _ttype = EXCL;
709                    int _saveIndex;
710                    
711                    match('!');
712                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
713                            _token = makeToken(_ttype);
714                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
715                    }
716                    _returnToken = _token;
717            }
718            
719            public final void mCOLON(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
720                    int _ttype; Token _token=null; int _begin=text.length();
721                    _ttype = COLON;
722                    int _saveIndex;
723                    
724                    match(':');
725                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
726                            _token = makeToken(_ttype);
727                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
728                    }
729                    _returnToken = _token;
730            }
731            
732            public final void mSEMI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
733                    int _ttype; Token _token=null; int _begin=text.length();
734                    _ttype = SEMI;
735                    int _saveIndex;
736                    
737                    match(';');
738                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
739                            _token = makeToken(_ttype);
740                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
741                    }
742                    _returnToken = _token;
743            }
744            
745            public final void mRPAR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
746                    int _ttype; Token _token=null; int _begin=text.length();
747                    _ttype = RPAR;
748                    int _saveIndex;
749                    
750                    match(')');
751                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
752                            _token = makeToken(_ttype);
753                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
754                    }
755                    _returnToken = _token;
756            }
757            
758            public final void mWS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
759                    int _ttype; Token _token=null; int _begin=text.length();
760                    _ttype = WS;
761                    int _saveIndex;
762                    
763                    {
764                    switch ( LA(1)) {
765                    case ' ':
766                    {
767                            match(' ');
768                            break;
769                    }
770                    case '\r':
771                    {
772                            match('\r');
773                            match('\n');
774                            break;
775                    }
776                    case '\n':
777                    {
778                            match('\n');
779                            break;
780                    }
781                    case '\t':
782                    {
783                            match('\t');
784                            break;
785                    }
786                    default:
787                    {
788                            throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
789                    }
790                    }
791                    }
792                    if ( inputState.guessing==0 ) {
793                            _ttype = Token.SKIP;
794                    }
795                    if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
796                            _token = makeToken(_ttype);
797                            _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
798                    }
799                    _returnToken = _token;
800            }
801            
802            
803            private static final long[] mk_tokenSet_0() {
804                    long[] data = { 1099511627776L, 576460743713488896L, 0L, 0L};
805                    return data;
806            }
807            public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
808            private static final long[] mk_tokenSet_1() {
809                    long[] data = { 68719476736L, 576460743713488896L, 0L, 0L};
810                    return data;
811            }
812            public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
813            private static final long[] mk_tokenSet_2() {
814                    long[] data = { 287948969894477824L, 576460743713488896L, 0L, 0L};
815                    return data;
816            }
817            public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
818            
819            }