001         package com.croftsoft.apps.compiler.mini.parse;
002         import java.io.*;
003         import java.text.*;
004         import java.util.*;
005         import java_cup.runtime.*;
006         /*********************************************************************
007         * Token scanner for the Mini programming language.
008         *
009         * <B>Reference:</B>
010         *
011         * <P>
012         *
013         * "JLex: A Lexical Analyzer Generator for Java"<BR>
014         * <A HREF="http://www.cs.princeton.edu/~appel/modern/java/JLex/">
015         * http://www.cs.princeton.edu/~appel/modern/java/JLex/</A>
016         *
017         * @author
018         *   <A HREF="http://www.alumni.caltech.edu/~croft/">David W. Croft</A>
019         * @version
020         *   1999-04-24
021         *********************************************************************/
022         //////////////////////////////////////////////////////////////////////
023         // Portions of this code machine-generated by JLex.
024         //////////////////////////////////////////////////////////////////////
025    
026    
027    public class MiniScanner implements MiniSymbols, CUPTokenScanner {
028            private final int YY_BUFFER_SIZE = 512;
029            private final int YY_F = -1;
030            private final int YY_NO_STATE = -1;
031            private final int YY_NOT_ACCEPT = 0;
032            private final int YY_START = 1;
033            private final int YY_END = 2;
034            private final int YY_NO_ANCHOR = 4;
035            private final char YYEOF = '\uFFFF';
036    
037         //////////////////////////////////////////////////////////////////////
038         //////////////////////////////////////////////////////////////////////
039         private static final String [ ]  TEST_FILES = {
040             "../test/Test.mini" };
041         //////////////////////////////////////////////////////////////////////
042         //////////////////////////////////////////////////////////////////////
043         public static void  main ( String [ ]  args )
044           throws Exception
045         //////////////////////////////////////////////////////////////////////
046         {
047           for ( int  i = 0; i < TEST_FILES.length; i++ )
048           {
049             test ( new FileReader ( TEST_FILES [ i ] ) );
050           }
051         }
052         public static void  test ( Reader  reader )
053           throws Exception
054         //////////////////////////////////////////////////////////////////////
055         {
056           MiniScanner  miniScanner = new MiniScanner ( reader );
057           Symbol  symbol = null;
058           loop:
059           while ( ( symbol = miniScanner.nextToken ( ) ).sym != EOF )
060           {
061             System.out.println (
062               "Symbol:  " + symbol + "  Value:  " + symbol.value );
063           }
064         }
065         public static Symbol  scanConstant ( String  text )
066         //////////////////////////////////////////////////////////////////////
067         {
068           try
069           {
070             return new Symbol ( CONSTANT, new Integer ( text ) );
071           }
072           catch ( NumberFormatException  ex )
073           {
074             return null;
075           }
076         }
077         //////////////////////////////////////////////////////////////////////
078         //////////////////////////////////////////////////////////////////////
079            private java.io.BufferedReader yy_reader;
080            private int yy_buffer_index;
081            private int yy_buffer_read;
082            private int yy_buffer_start;
083            private int yy_buffer_end;
084            private char yy_buffer[];
085            private int yychar;
086            private int yyline;
087            private int yy_lexical_state;
088    
089            public MiniScanner (java.io.Reader reader) {
090                    this ();
091                    if (null == reader) {
092                            throw (new Error("Error: Bad input stream initializer."));
093                    }
094                    yy_reader = new java.io.BufferedReader(reader);
095            }
096    
097            public MiniScanner (java.io.InputStream instream) {
098                    this ();
099                    if (null == instream) {
100                            throw (new Error("Error: Bad input stream initializer."));
101                    }
102                    yy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream));
103            }
104    
105            private MiniScanner () {
106                    yy_buffer = new char[YY_BUFFER_SIZE];
107                    yy_buffer_read = 0;
108                    yy_buffer_index = 0;
109                    yy_buffer_start = 0;
110                    yy_buffer_end = 0;
111                    yychar = 0;
112                    yyline = 0;
113                    yy_lexical_state = YYINITIAL;
114            }
115    
116            private boolean yy_eof_done = false;
117            private final int YYINITIAL = 0;
118            private final int yy_state_dtrans[] = {
119                    0
120            };
121            private void yybegin (int state) {
122                    yy_lexical_state = state;
123            }
124            private char yy_advance ()
125                    throws java.io.IOException {
126                    int next_read;
127                    int i;
128                    int j;
129    
130                    if (yy_buffer_index < yy_buffer_read) {
131                            return yy_buffer[yy_buffer_index++];
132                    }
133    
134                    if (0 != yy_buffer_start) {
135                            i = yy_buffer_start;
136                            j = 0;
137                            while (i < yy_buffer_read) {
138                                    yy_buffer[j] = yy_buffer[i];
139                                    ++i;
140                                    ++j;
141                            }
142                            yy_buffer_end = yy_buffer_end - yy_buffer_start;
143                            yy_buffer_start = 0;
144                            yy_buffer_read = j;
145                            yy_buffer_index = j;
146                            next_read = yy_reader.read(yy_buffer,
147                                            yy_buffer_read,
148                                            yy_buffer.length - yy_buffer_read);
149                            if (-1 == next_read) {
150                                    return YYEOF;
151                            }
152                            yy_buffer_read = yy_buffer_read + next_read;
153                    }
154    
155                    while (yy_buffer_index >= yy_buffer_read) {
156                            if (yy_buffer_index >= yy_buffer.length) {
157                                    yy_buffer = yy_double(yy_buffer);
158                            }
159                            next_read = yy_reader.read(yy_buffer,
160                                            yy_buffer_read,
161                                            yy_buffer.length - yy_buffer_read);
162                            if (-1 == next_read) {
163                                    return YYEOF;
164                            }
165                            yy_buffer_read = yy_buffer_read + next_read;
166                    }
167                    return yy_buffer[yy_buffer_index++];
168            }
169            private void yy_move_start () {
170                    if ((byte) '\n' == yy_buffer[yy_buffer_start]) {
171                            ++yyline;
172                    }
173                    ++yychar;
174                    ++yy_buffer_start;
175            }
176            private void yy_pushback () {
177                    --yy_buffer_end;
178            }
179            private void yy_mark_start () {
180                    int i;
181                    for (i = yy_buffer_start; i < yy_buffer_index; ++i) {
182                            if ((byte) '\n' == yy_buffer[i]) {
183                                    ++yyline;
184                            }
185                    }
186                    yychar = yychar
187                            + yy_buffer_index - yy_buffer_start;
188                    yy_buffer_start = yy_buffer_index;
189            }
190            private void yy_mark_end () {
191                    yy_buffer_end = yy_buffer_index;
192            }
193            private void yy_to_mark () {
194                    yy_buffer_index = yy_buffer_end;
195            }
196            private java.lang.String yytext () {
197                    return (new java.lang.String(yy_buffer,
198                            yy_buffer_start,
199                            yy_buffer_end - yy_buffer_start));
200            }
201            private int yylength () {
202                    return yy_buffer_end - yy_buffer_start;
203            }
204            private char[] yy_double (char buf[]) {
205                    int i;
206                    char newbuf[];
207                    newbuf = new char[2*buf.length];
208                    for (i = 0; i < buf.length; ++i) {
209                            newbuf[i] = buf[i];
210                    }
211                    return newbuf;
212            }
213            private final int YY_E_INTERNAL = 0;
214            private final int YY_E_MATCH = 1;
215            private java.lang.String yy_error_string[] = {
216                    "Error: Internal error.\n",
217                    "Error: Unmatched input.\n"
218            };
219            private void yy_error (int code,boolean fatal) {
220                    java.lang.System.out.print(yy_error_string[code]);
221                    java.lang.System.out.flush();
222                    if (fatal) {
223                            throw new Error("Fatal Error.\n");
224                    }
225            }
226    private int [][] unpackFromString(int size1, int size2, String st)
227        {
228          int colonIndex = -1;
229          String lengthString;
230          int sequenceLength = 0;
231          int sequenceInteger = 0;
232          int commaIndex;
233          String workString;
234          int res[][] = new int[size1][size2];
235          for (int i= 0; i < size1; i++)
236            for (int j= 0; j < size2; j++)
237              {
238                if (sequenceLength == 0) 
239                  { 
240                    commaIndex = st.indexOf(',');
241                    if (commaIndex == -1)
242                      workString = st;
243                    else
244                      workString = st.substring(0, commaIndex);
245                    st = st.substring(commaIndex+1);
246                    colonIndex = workString.indexOf(':');
247                    if (colonIndex == -1)
248                      {
249                        res[i][j] = Integer.parseInt(workString);
250                      }
251                    else 
252                      {
253                        lengthString = workString.substring(colonIndex+1);  
254                        sequenceLength = Integer.parseInt(lengthString);
255                        workString = workString.substring(0,colonIndex);
256                        sequenceInteger = Integer.parseInt(workString);
257                        res[i][j] = sequenceInteger;
258                        sequenceLength--;
259                      }
260                  }
261                else 
262                  {
263                    res[i][j] = sequenceInteger;
264                    sequenceLength--;
265                  }
266              }
267          return res;
268        }
269            private int yy_acpt[] = {
270                    YY_NOT_ACCEPT,
271                    YY_NO_ANCHOR,
272                    YY_NO_ANCHOR,
273                    YY_NO_ANCHOR,
274                    YY_NO_ANCHOR,
275                    YY_NO_ANCHOR,
276                    YY_NO_ANCHOR,
277                    YY_NO_ANCHOR,
278                    YY_NO_ANCHOR,
279                    YY_NO_ANCHOR,
280                    YY_NO_ANCHOR,
281                    YY_NO_ANCHOR,
282                    YY_NO_ANCHOR,
283                    YY_NO_ANCHOR,
284                    YY_NO_ANCHOR,
285                    YY_NO_ANCHOR,
286                    YY_NO_ANCHOR,
287                    YY_NO_ANCHOR,
288                    YY_NO_ANCHOR,
289                    YY_NO_ANCHOR,
290                    YY_NO_ANCHOR,
291                    YY_NO_ANCHOR,
292                    YY_NO_ANCHOR,
293                    YY_NO_ANCHOR,
294                    YY_NO_ANCHOR,
295                    YY_NO_ANCHOR,
296                    YY_NO_ANCHOR,
297                    YY_NO_ANCHOR,
298                    YY_NO_ANCHOR,
299                    YY_NO_ANCHOR,
300                    YY_NO_ANCHOR,
301                    YY_NO_ANCHOR,
302                    YY_NO_ANCHOR,
303                    YY_NO_ANCHOR,
304                    YY_NO_ANCHOR,
305                    YY_NO_ANCHOR,
306                    YY_NO_ANCHOR,
307                    YY_NO_ANCHOR,
308                    YY_NO_ANCHOR,
309                    YY_NO_ANCHOR,
310                    YY_NO_ANCHOR,
311                    YY_NO_ANCHOR,
312                    YY_NO_ANCHOR,
313                    YY_NO_ANCHOR,
314                    YY_NO_ANCHOR,
315                    YY_NO_ANCHOR,
316                    YY_NO_ANCHOR,
317                    YY_NO_ANCHOR,
318                    YY_NO_ANCHOR,
319                    YY_NO_ANCHOR,
320                    YY_NO_ANCHOR,
321                    YY_NO_ANCHOR,
322                    YY_NO_ANCHOR,
323                    YY_NO_ANCHOR,
324                    YY_NO_ANCHOR,
325                    YY_NO_ANCHOR,
326                    YY_NO_ANCHOR,
327                    YY_NO_ANCHOR,
328                    YY_NO_ANCHOR,
329                    YY_NO_ANCHOR,
330                    YY_NO_ANCHOR,
331                    YY_NO_ANCHOR,
332                    YY_NO_ANCHOR,
333                    YY_NO_ANCHOR,
334                    YY_NO_ANCHOR,
335                    YY_NO_ANCHOR,
336                    YY_NO_ANCHOR,
337                    YY_NO_ANCHOR,
338                    YY_NO_ANCHOR,
339                    YY_NO_ANCHOR,
340                    YY_NO_ANCHOR,
341                    YY_NO_ANCHOR,
342                    YY_NO_ANCHOR,
343                    YY_NO_ANCHOR,
344                    YY_NO_ANCHOR,
345                    YY_NO_ANCHOR
346            };
347            private int yy_cmap[] = {
348                    0, 0, 0, 0, 0, 0, 0, 0,
349                    0, 0, 0, 0, 0, 0, 0, 0,
350                    0, 0, 0, 0, 0, 0, 0, 0,
351                    0, 0, 0, 0, 0, 0, 0, 0,
352                    0, 0, 0, 0, 0, 1, 0, 0,
353                    2, 3, 4, 5, 6, 7, 0, 8,
354                    9, 9, 9, 9, 9, 9, 9, 9,
355                    9, 9, 10, 11, 12, 13, 14, 0,
356                    0, 0, 0, 0, 0, 0, 0, 0,
357                    0, 0, 0, 0, 0, 0, 0, 0,
358                    0, 0, 0, 0, 0, 0, 0, 0,
359                    0, 0, 0, 0, 0, 0, 15, 0,
360                    0, 16, 17, 18, 19, 20, 21, 22,
361                    23, 24, 25, 25, 26, 25, 27, 28,
362                    29, 25, 30, 31, 32, 33, 25, 34,
363                    25, 25, 25, 0, 0, 0, 0, 0
364                    
365            };
366            private int yy_rmap[] = {
367                    0, 1, 1, 1, 1, 1, 1, 1,
368                    1, 1, 2, 1, 3, 1, 4, 1,
369                    5, 1, 1, 1, 1, 5, 5, 5,
370                    5, 5, 5, 5, 5, 5, 5, 5,
371                    5, 5, 5, 6, 7, 8, 9, 10,
372                    11, 12, 13, 14, 15, 16, 17, 18,
373                    19, 20, 21, 22, 23, 24, 25, 26,
374                    27, 28, 29, 30, 31, 32, 33, 34,
375                    35, 36, 37, 38, 39, 40, 41, 42,
376                    43, 44, 45, 46 
377            };
378            private int yy_nxt[][] = unpackFromString(47,35,
379    "1,2,3,4,5,6,7,8,9,10,35,11,12,13,14,15,16,67,60,36,50,37,16:2,38,16:4,75,61,16,39,16,68,-1:44,10,-1:38,18,19,-1:33,20,-1:30,16,-1:6,16:19,-1:13,17,-1:30,16,-1:6,16:12,21,16:6,-1:9,16,-1:6,16:8,22,16:10,-1:9,16,-1:6,16:5,23,16:5,71,16:7,-1:9,16,-1:6,16:7,54,16:4,24,16:6,-1:9,16,-1:6,16:3,25,16:15,-1:9,16,-1:6,16:10,26,16:8,-1:9,16,-1:6,16:4,27,16:14,-1:9,16,-1:6,16:3,28,16:15,-1:9,16,-1:6,16:11,29,16:7,-1:9,16,-1:6,16:11,30,16:7,-1:9,16,-1:6,16:4,31,16:14,-1:9,16,-1:6,16:4,32,16:14,-1:9,16,-1:6,16:14,33,16:4,-1:9,16,-1:6,16:4,34,16:14,-1:9,16,-1:6,16:10,52,40,16:7,-1:9,16,-1:6,16:10,41,16:8,-1:9,16,-1:6,16:15,42,16:3,-1:9,16,-1:6,43,16:18,-1:9,16,-1:6,16:4,44,16:14,-1:9,16,-1:6,16:8,45,16:10,-1:9,16,-1:6,16:10,46,16:8,-1:9,16,-1:6,16:16,47,16:2,-1:9,16,-1:6,16:4,48,16:14,-1:9,16,-1:6,16:14,49,16:4,-1:9,16,-1:6,51,16:18,-1:9,16,-1:6,16:4,53,16:14,-1:9,16,-1:6,16:6,55,16:12,-1:9,16,-1:6,16:8,56,16:10,-1:9,16,-1:6,16:8,57,16:10,-1:9,16,-1:6,16:6,58,16:12,-1:9,16,-1:6,16:17,59,16,-1:9,16,-1:6,16:4,62,16:14,-1:9,16,-1:6,16:7,63,16:6,64,16:4,-1:9,16,-1:6,16:4,65,16:14,-1:9,16,-1:6,16:3,66,16:15,-1:9,16,-1:6,16:16,69,16:2,-1:9,16,-1:6,16:4,70,16:14,-1:9,16,-1:6,16:2,72,16:16,-1:9,16,-1:6,16:12,73,16:6,-1:9,16,-1:6,16:14,74,16:4");
380            public Symbol nextToken ()
381                    throws java.io.IOException {
382                    char yy_lookahead;
383                    int yy_anchor = YY_NO_ANCHOR;
384                    int yy_state = yy_state_dtrans[yy_lexical_state];
385                    int yy_next_state = YY_NO_STATE;
386                    int yy_last_accept_state = YY_NO_STATE;
387                    boolean yy_initial = true;
388                    int yy_this_accept;
389    
390                    yy_mark_start();
391                    yy_this_accept = yy_acpt[yy_state];
392                    if (YY_NOT_ACCEPT != yy_this_accept) {
393                            yy_last_accept_state = yy_state;
394                            yy_mark_end();
395                    }
396                    while (true) {
397                            yy_lookahead = yy_advance();
398                            yy_next_state = YY_F;
399                            if (YYEOF != yy_lookahead) {
400                                    yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]];
401                            }
402                            if (YY_F != yy_next_state) {
403                                    yy_state = yy_next_state;
404                                    yy_initial = false;
405                                    yy_this_accept = yy_acpt[yy_state];
406                                    if (YY_NOT_ACCEPT != yy_this_accept) {
407                                            yy_last_accept_state = yy_state;
408                                            yy_mark_end();
409                                    }
410                            }
411                            else {
412                                    if (YYEOF == yy_lookahead && true == yy_initial) {
413    
414      return new Symbol ( EOF );
415                                    }
416                                    else if (YY_NO_STATE == yy_last_accept_state) {
417                                            throw (new Error("Lexical Error: Unmatched Input."));
418                                    }
419                                    else {
420                                            yy_to_mark();
421                                            yy_anchor = yy_acpt[yy_last_accept_state];
422                                            if (0 != (YY_END & yy_anchor)) {
423                                                    yy_pushback();
424                                            }
425                                            if (0 != (YY_START & yy_anchor)) {
426                                                    yy_move_start();
427                                            }
428                                            switch (yy_last_accept_state) {
429                                            case 1:
430                                                    { yybegin ( YYINITIAL ); }
431                                            case -2:
432                                                    break;
433                                            case 2:
434                                                    { return new Symbol ( MOD       ); }
435                                            case -3:
436                                                    break;
437                                            case 3:
438                                                    { return new Symbol ( LPAREN    ); }
439                                            case -4:
440                                                    break;
441                                            case 4:
442                                                    { return new Symbol ( RPAREN    ); }
443                                            case -5:
444                                                    break;
445                                            case 5:
446                                                    { return new Symbol ( TIMES     ); }
447                                            case -6:
448                                                    break;
449                                            case 6:
450                                                    { return new Symbol ( PLUS      ); }
451                                            case -7:
452                                                    break;
453                                            case 7:
454                                                    { return new Symbol ( COMMA     ); }
455                                            case -8:
456                                                    break;
457                                            case 8:
458                                                    { return new Symbol ( MINUS     ); }
459                                            case -9:
460                                                    break;
461                                            case 9:
462                                                    { return new Symbol ( DIVIDE    ); }
463                                            case -10:
464                                                    break;
465                                            case 10:
466                                                    { return scanConstant ( yytext ( ) ); }
467                                            case -11:
468                                                    break;
469                                            case 11:
470                                                    { return new Symbol ( SEMICOLON ); }
471                                            case -12:
472                                                    break;
473                                            case 12:
474                                                    { return new Symbol ( LT        ); }
475                                            case -13:
476                                                    break;
477                                            case 13:
478                                                    { return new Symbol ( EQ        ); }
479                                            case -14:
480                                                    break;
481                                            case 14:
482                                                    { return new Symbol ( GT        ); }
483                                            case -15:
484                                                    break;
485                                            case 15:
486                                                    { return new Symbol ( EXP       ); }
487                                            case -16:
488                                                    break;
489                                            case 16:
490                                                    { return new Symbol ( NAME, yytext ( ) ); }
491                                            case -17:
492                                                    break;
493                                            case 17:
494                                                    { return new Symbol ( ASSIGN    ); }
495                                            case -18:
496                                                    break;
497                                            case 18:
498                                                    { return new Symbol ( LE        ); }
499                                            case -19:
500                                                    break;
501                                            case 19:
502                                                    { return new Symbol ( NE        ); }
503                                            case -20:
504                                                    break;
505                                            case 20:
506                                                    { return new Symbol ( GE        ); }
507                                            case -21:
508                                                    break;
509                                            case 21:
510                                                    { return new Symbol ( DO        ); }
511                                            case -22:
512                                                    break;
513                                            case 22:
514                                                    { return new Symbol ( FI        ); }
515                                            case -23:
516                                                    break;
517                                            case 23:
518                                                    { return new Symbol ( IF        ); }
519                                            case -24:
520                                                    break;
521                                            case 24:
522                                                    { return new Symbol ( TO        ); }
523                                            case -25:
524                                                    break;
525                                            case 25:
526                                                    { return new Symbol ( END       ); }
527                                            case -26:
528                                                    break;
529                                            case 26:
530                                                    { return new Symbol ( CALL      ); }
531                                            case -27:
532                                                    break;
533                                            case 27:
534                                                    { return new Symbol ( ELSE      ); }
535                                            case -28:
536                                                    break;
537                                            case 28:
538                                                    { return new Symbol ( READ      ); }
539                                            case -29:
540                                                    break;
541                                            case 29:
542                                                    { return new Symbol ( THEN      ); }
543                                            case -30:
544                                                    break;
545                                            case 30:
546                                                    { return new Symbol ( BEGIN     ); }
547                                            case -31:
548                                                    break;
549                                            case 31:
550                                                    { return new Symbol ( WHILE     ); }
551                                            case -32:
552                                                    break;
553                                            case 32:
554                                                    { return new Symbol ( WRITE     ); }
555                                            case -33:
556                                                    break;
557                                            case 33:
558                                                    { return new Symbol ( INTEGER   ); }
559                                            case -34:
560                                                    break;
561                                            case 34:
562                                                    { return new Symbol ( PROCEDURE ); }
563                                            case -35:
564                                                    break;
565                                            case 35:
566                                                    { yybegin ( YYINITIAL ); }
567                                            case -36:
568                                                    break;
569                                            case 36:
570                                                    { return new Symbol ( NAME, yytext ( ) ); }
571                                            case -37:
572                                                    break;
573                                            case 37:
574                                                    { return new Symbol ( NAME, yytext ( ) ); }
575                                            case -38:
576                                                    break;
577                                            case 38:
578                                                    { return new Symbol ( NAME, yytext ( ) ); }
579                                            case -39:
580                                                    break;
581                                            case 39:
582                                                    { return new Symbol ( NAME, yytext ( ) ); }
583                                            case -40:
584                                                    break;
585                                            case 40:
586                                                    { return new Symbol ( NAME, yytext ( ) ); }
587                                            case -41:
588                                                    break;
589                                            case 41:
590                                                    { return new Symbol ( NAME, yytext ( ) ); }
591                                            case -42:
592                                                    break;
593                                            case 42:
594                                                    { return new Symbol ( NAME, yytext ( ) ); }
595                                            case -43:
596                                                    break;
597                                            case 43:
598                                                    { return new Symbol ( NAME, yytext ( ) ); }
599                                            case -44:
600                                                    break;
601                                            case 44:
602                                                    { return new Symbol ( NAME, yytext ( ) ); }
603                                            case -45:
604                                                    break;
605                                            case 45:
606                                                    { return new Symbol ( NAME, yytext ( ) ); }
607                                            case -46:
608                                                    break;
609                                            case 46:
610                                                    { return new Symbol ( NAME, yytext ( ) ); }
611                                            case -47:
612                                                    break;
613                                            case 47:
614                                                    { return new Symbol ( NAME, yytext ( ) ); }
615                                            case -48:
616                                                    break;
617                                            case 48:
618                                                    { return new Symbol ( NAME, yytext ( ) ); }
619                                            case -49:
620                                                    break;
621                                            case 49:
622                                                    { return new Symbol ( NAME, yytext ( ) ); }
623                                            case -50:
624                                                    break;
625                                            case 50:
626                                                    { return new Symbol ( NAME, yytext ( ) ); }
627                                            case -51:
628                                                    break;
629                                            case 51:
630                                                    { return new Symbol ( NAME, yytext ( ) ); }
631                                            case -52:
632                                                    break;
633                                            case 52:
634                                                    { return new Symbol ( NAME, yytext ( ) ); }
635                                            case -53:
636                                                    break;
637                                            case 53:
638                                                    { return new Symbol ( NAME, yytext ( ) ); }
639                                            case -54:
640                                                    break;
641                                            case 54:
642                                                    { return new Symbol ( NAME, yytext ( ) ); }
643                                            case -55:
644                                                    break;
645                                            case 55:
646                                                    { return new Symbol ( NAME, yytext ( ) ); }
647                                            case -56:
648                                                    break;
649                                            case 56:
650                                                    { return new Symbol ( NAME, yytext ( ) ); }
651                                            case -57:
652                                                    break;
653                                            case 57:
654                                                    { return new Symbol ( NAME, yytext ( ) ); }
655                                            case -58:
656                                                    break;
657                                            case 58:
658                                                    { return new Symbol ( NAME, yytext ( ) ); }
659                                            case -59:
660                                                    break;
661                                            case 59:
662                                                    { return new Symbol ( NAME, yytext ( ) ); }
663                                            case -60:
664                                                    break;
665                                            case 60:
666                                                    { return new Symbol ( NAME, yytext ( ) ); }
667                                            case -61:
668                                                    break;
669                                            case 61:
670                                                    { return new Symbol ( NAME, yytext ( ) ); }
671                                            case -62:
672                                                    break;
673                                            case 62:
674                                                    { return new Symbol ( NAME, yytext ( ) ); }
675                                            case -63:
676                                                    break;
677                                            case 63:
678                                                    { return new Symbol ( NAME, yytext ( ) ); }
679                                            case -64:
680                                                    break;
681                                            case 64:
682                                                    { return new Symbol ( NAME, yytext ( ) ); }
683                                            case -65:
684                                                    break;
685                                            case 65:
686                                                    { return new Symbol ( NAME, yytext ( ) ); }
687                                            case -66:
688                                                    break;
689                                            case 66:
690                                                    { return new Symbol ( NAME, yytext ( ) ); }
691                                            case -67:
692                                                    break;
693                                            case 67:
694                                                    { return new Symbol ( NAME, yytext ( ) ); }
695                                            case -68:
696                                                    break;
697                                            case 68:
698                                                    { return new Symbol ( NAME, yytext ( ) ); }
699                                            case -69:
700                                                    break;
701                                            case 69:
702                                                    { return new Symbol ( NAME, yytext ( ) ); }
703                                            case -70:
704                                                    break;
705                                            case 70:
706                                                    { return new Symbol ( NAME, yytext ( ) ); }
707                                            case -71:
708                                                    break;
709                                            case 71:
710                                                    { return new Symbol ( NAME, yytext ( ) ); }
711                                            case -72:
712                                                    break;
713                                            case 72:
714                                                    { return new Symbol ( NAME, yytext ( ) ); }
715                                            case -73:
716                                                    break;
717                                            case 73:
718                                                    { return new Symbol ( NAME, yytext ( ) ); }
719                                            case -74:
720                                                    break;
721                                            case 74:
722                                                    { return new Symbol ( NAME, yytext ( ) ); }
723                                            case -75:
724                                                    break;
725                                            case 75:
726                                                    { return new Symbol ( NAME, yytext ( ) ); }
727                                            case -76:
728                                                    break;
729                                            default:
730                                                    yy_error(YY_E_INTERNAL,false);
731                                            case -1:
732                                            }
733                                            yy_initial = true;
734                                            yy_state = yy_state_dtrans[yy_lexical_state];
735                                            yy_next_state = YY_NO_STATE;
736                                            yy_last_accept_state = YY_NO_STATE;
737                                            yy_mark_start();
738                                            yy_this_accept = yy_acpt[yy_state];
739                                            if (YY_NOT_ACCEPT != yy_this_accept) {
740                                                    yy_last_accept_state = yy_state;
741                                            }
742                                    }
743                            }
744                    }
745            }
746    }