KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > polyglot > ext > jl > parse > Lexer_c


1 /* The following code was generated by JFlex 1.3.5 on 09/08/05 2:18 PM */
2
3 /* Java 1.4 scanner for JFlex.
4  * Based on JLS, 2ed, Chapter 3.
5  */

6
7 package polyglot.ext.jl.parse;
8
9 import java_cup.runtime.Symbol;
10 import polyglot.lex.Lexer;
11 import polyglot.lex.*;
12 import polyglot.util.Position;
13 import polyglot.util.ErrorQueue;
14 import polyglot.util.ErrorInfo;
15 import java.util.HashMap JavaDoc;
16 import java.math.BigInteger JavaDoc;
17
18
19 /**
20  * This class is a scanner generated by
21  * <a HREF="http://www.jflex.de/">JFlex</a> 1.3.5
22  * on 09/08/05 2:18 PM from the specification file
23  * <tt>file:/home/user/jlhotak/autobuild/resources/polyglot-1.3.2-src/src/polyglot/ext/jl/parse/java.flex</tt>
24  */

25 public class Lexer_c implements Lexer {
26
27   /** This character denotes the end of file */
28   final public static int YYEOF = -1;
29
30   /** initial size of the lookahead buffer */
31   final private static int YY_BUFFERSIZE = 16384;
32
33   /** lexical states */
34   final public static int END_OF_LINE_COMMENT = 4;
35   final public static int STRING = 1;
36   final public static int YYINITIAL = 0;
37   final public static int CHARACTER = 2;
38   final public static int TRADITIONAL_COMMENT = 3;
39
40   /**
41    * Translates characters to character classes
42    */

43   final private static String JavaDoc yycmap_packed =
44     "\11\5\1\3\1\1\1\0\1\3\1\2\16\5\4\0\1\3\1\50"+
45     "\1\23\1\0\1\4\1\60\1\54\1\22\1\35\1\36\1\21\1\56"+
46     "\1\44\1\15\1\13\1\20\1\6\3\17\4\12\2\7\1\53\1\43"+
47     "\1\47\1\45\1\46\1\52\1\0\3\11\1\63\1\14\1\62\5\4"+
48     "\1\61\13\4\1\10\2\4\1\41\1\16\1\42\1\57\1\4\1\0"+
49     "\1\31\1\64\1\11\1\63\1\27\1\30\5\4\1\32\1\4\1\34"+
50     "\3\4\1\25\1\33\1\24\1\26\2\4\1\10\2\4\1\37\1\55"+
51     "\1\40\1\51\41\5\2\0\4\4\4\0\1\4\12\0\1\4\4\0"+
52     "\1\4\5\0\27\4\1\0\37\4\1\0\u0128\4\2\0\22\4\34\0"+
53     "\136\4\2\0\11\4\2\0\7\4\16\0\2\4\16\0\5\4\11\0"+
54     "\1\4\21\0\117\5\21\0\3\5\27\0\1\4\13\0\1\4\1\0"+
55     "\3\4\1\0\1\4\1\0\24\4\1\0\54\4\1\0\10\4\2\0"+
56     "\32\4\14\0\202\4\1\0\4\5\5\0\71\4\2\0\2\4\2\0"+
57     "\2\4\3\0\46\4\2\0\2\4\67\0\46\4\2\0\1\4\7\0"+
58     "\47\4\11\0\21\5\1\0\27\5\1\0\3\5\1\0\1\5\1\0"+
59     "\2\5\1\0\1\5\13\0\33\4\5\0\3\4\56\0\32\4\5\0"+
60     "\13\4\13\5\12\0\12\5\6\0\1\5\143\4\1\0\1\4\7\5"+
61     "\2\0\6\5\2\4\2\5\1\0\4\5\2\0\12\5\3\4\22\0"+
62     "\1\5\1\4\1\5\33\4\3\0\33\5\65\0\46\4\13\5\u0150\0"+
63     "\3\5\1\0\65\4\2\0\1\5\1\4\20\5\2\0\1\4\4\5"+
64     "\3\0\12\4\2\5\2\0\12\5\21\0\3\5\1\0\10\4\2\0"+
65     "\2\4\2\0\26\4\1\0\7\4\1\0\1\4\3\0\4\4\2\0"+
66     "\1\5\1\0\7\5\2\0\2\5\2\0\3\5\11\0\1\5\4\0"+
67     "\2\4\1\0\3\4\2\5\2\0\12\5\4\4\16\0\1\5\2\0"+
68     "\6\4\4\0\2\4\2\0\26\4\1\0\7\4\1\0\2\4\1\0"+
69     "\2\4\1\0\2\4\2\0\1\5\1\0\5\5\4\0\2\5\2\0"+
70     "\3\5\13\0\4\4\1\0\1\4\7\0\14\5\3\4\14\0\3\5"+
71     "\1\0\7\4\1\0\1\4\1\0\3\4\1\0\26\4\1\0\7\4"+
72     "\1\0\2\4\1\0\5\4\2\0\1\5\1\4\10\5\1\0\3\5"+
73     "\1\0\3\5\2\0\1\4\17\0\1\4\5\0\12\5\21\0\3\5"+
74     "\1\0\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\2\4"+
75     "\2\0\4\4\2\0\1\5\1\4\6\5\3\0\2\5\2\0\3\5"+
76     "\10\0\2\5\4\0\2\4\1\0\3\4\4\0\12\5\22\0\2\5"+
77     "\1\0\6\4\3\0\3\4\1\0\4\4\3\0\2\4\1\0\1\4"+
78     "\1\0\2\4\3\0\2\4\3\0\3\4\3\0\10\4\1\0\3\4"+
79     "\4\0\5\5\3\0\3\5\1\0\4\5\11\0\1\5\17\0\11\5"+
80     "\21\0\3\5\1\0\10\4\1\0\3\4\1\0\27\4\1\0\12\4"+
81     "\1\0\5\4\4\0\7\5\1\0\3\5\1\0\4\5\7\0\2\5"+
82     "\11\0\2\4\4\0\12\5\22\0\2\5\1\0\10\4\1\0\3\4"+
83     "\1\0\27\4\1\0\12\4\1\0\5\4\4\0\7\5\1\0\3\5"+
84     "\1\0\4\5\7\0\2\5\7\0\1\4\1\0\2\4\4\0\12\5"+
85     "\22\0\2\5\1\0\10\4\1\0\3\4\1\0\27\4\1\0\20\4"+
86     "\4\0\6\5\2\0\3\5\1\0\4\5\11\0\1\5\10\0\2\4"+
87     "\4\0\12\5\22\0\2\5\1\0\22\4\3\0\30\4\1\0\11\4"+
88     "\1\0\1\4\2\0\7\4\3\0\1\5\4\0\6\5\1\0\1\5"+
89     "\1\0\10\5\22\0\2\5\15\0\60\4\1\5\2\4\7\5\4\0"+
90     "\10\4\10\5\1\0\12\5\47\0\2\4\1\0\1\4\2\0\2\4"+
91     "\1\0\1\4\2\0\1\4\6\0\4\4\1\0\7\4\1\0\3\4"+
92     "\1\0\1\4\1\0\1\4\2\0\2\4\1\0\4\4\1\5\2\4"+
93     "\6\5\1\0\2\5\1\4\2\0\5\4\1\0\1\4\1\0\6\5"+
94     "\2\0\12\5\2\0\2\4\42\0\1\4\27\0\2\5\6\0\12\5"+
95     "\13\0\1\5\1\0\1\5\1\0\1\5\4\0\2\5\10\4\1\0"+
96     "\42\4\6\0\24\5\1\0\2\5\4\4\4\0\10\5\1\0\44\5"+
97     "\11\0\1\5\71\0\42\4\1\0\5\4\1\0\2\4\1\0\7\5"+
98     "\3\0\4\5\6\0\12\5\6\0\6\4\4\5\106\0\46\4\12\0"+
99     "\47\4\11\0\132\4\5\0\104\4\5\0\122\4\6\0\7\4\1\0"+
100     "\77\4\1\0\1\4\1\0\4\4\2\0\7\4\1\0\1\4\1\0"+
101     "\4\4\2\0\47\4\1\0\1\4\1\0\4\4\2\0\37\4\1\0"+
102     "\1\4\1\0\4\4\2\0\7\4\1\0\1\4\1\0\4\4\2\0"+
103     "\7\4\1\0\7\4\1\0\27\4\1\0\37\4\1\0\1\4\1\0"+
104     "\4\4\2\0\7\4\1\0\47\4\1\0\23\4\16\0\11\5\56\0"+
105     "\125\4\14\0\u026c\4\2\0\10\4\12\0\32\4\5\0\113\4\225\0"+
106     "\64\4\40\5\7\0\1\4\4\0\12\5\41\0\4\5\1\0\12\5"+
107     "\6\0\130\4\10\0\51\4\1\5\u0556\0\234\4\4\0\132\4\6\0"+
108     "\26\4\2\0\6\4\2\0\46\4\2\0\6\4\2\0\10\4\1\0"+
109     "\1\4\1\0\1\4\1\0\1\4\1\0\37\4\2\0\65\4\1\0"+
110     "\7\4\1\0\1\4\3\0\3\4\1\0\7\4\3\0\4\4\2\0"+
111     "\6\4\4\0\15\4\5\0\3\4\1\0\7\4\17\0\4\5\32\0"+
112     "\5\5\20\0\2\4\51\0\6\5\17\0\1\4\40\0\20\4\40\0"+
113     "\15\5\4\0\1\5\40\0\1\4\4\0\1\4\2\0\12\4\1\0"+
114     "\1\4\3\0\5\4\6\0\1\4\1\0\1\4\1\0\1\4\1\0"+
115     "\4\4\1\0\3\4\1\0\7\4\46\0\44\4\u0e81\0\3\4\31\0"+
116     "\11\4\6\5\1\0\5\4\2\0\3\4\6\0\124\4\4\0\2\5"+
117     "\2\0\2\4\2\0\136\4\6\0\50\4\4\0\136\4\21\0\30\4"+
118     "\u0248\0\u19b6\4\112\0\u51a6\4\132\0\u048d\4\u0773\0\u2ba4\4\u215c\0\u012e\4"+
119     "\322\0\7\4\14\0\5\4\5\0\1\4\1\5\12\4\1\0\15\4"+
120     "\1\0\5\4\1\0\1\4\1\0\2\4\1\0\2\4\1\0\154\4"+
121     "\41\0\u016b\4\22\0\100\4\2\0\66\4\50\0\14\4\44\0\4\5"+
122     "\17\0\2\4\30\0\3\4\31\0\1\4\6\0\3\4\1\0\1\4"+
123     "\1\0\207\4\2\0\1\5\4\0\1\4\13\0\12\5\7\0\32\4"+
124     "\4\0\1\4\1\0\32\4\12\0\132\4\3\0\6\4\2\0\6\4"+
125     "\2\0\6\4\2\0\3\4\3\0\2\4\3\0\2\4\22\0\3\5"+
126     "\4\0";
127
128   /**
129    * Translates characters to character classes
130    */

131   final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
132
133   /**
134    * Translates a state to a row index in the transition table
135    */

136   final private static int yy_rowMap [] = {
137         0, 53, 106, 159, 212, 265, 265, 318, 371, 424,
138       477, 530, 583, 636, 689, 265, 265, 742, 795, 848,
139       265, 265, 265, 265, 265, 265, 265, 265, 901, 954,
140      1007, 1060, 265, 265, 265, 1113, 1166, 1219, 1272, 1325,
141      1378, 265, 1431, 1484, 265, 1537, 265, 1590, 1643, 265,
142      1696, 265, 1749, 1802, 1855, 1908, 1961, 2014, 265, 265,
143       265, 265, 265, 265, 265, 265, 265, 2067, 2120, 2173,
144       265, 265, 2226, 265, 2279, 265, 265, 265, 265, 265,
145       265, 265, 265, 265, 265, 2332, 2385, 265, 265, 265,
146       265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
147       265, 265, 265, 265, 2438, 2491, 2544, 2597, 2650, 2703,
148       265, 2756, 265, 265, 265, 371, 2809, 371, 265, 371
149   };
150
151   /**
152    * The packed transition table of the DFA (part 0)
153    */

154   final private static String JavaDoc yy_packed0 =
155     "\1\6\1\7\1\10\1\7\1\11\1\6\1\12\1\13"+
156     "\2\11\1\13\1\14\1\11\1\15\1\6\1\13\1\16"+
157     "\1\17\1\20\1\21\1\22\3\11\1\23\3\11\1\24"+
158     "\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34"+
159     "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+
160     "\1\45\1\46\1\47\1\50\4\11\1\51\1\52\1\53"+
161     "\13\51\1\54\4\51\1\55\41\51\1\56\1\57\1\60"+
162     "\13\56\1\61\3\56\1\62\42\56\21\7\1\63\44\7"+
163     "\1\64\1\65\62\7\66\0\1\7\67\0\7\11\1\0"+
164     "\1\11\2\0\1\11\4\0\11\11\24\0\4\11\6\0"+
165     "\1\66\1\67\1\70\1\0\1\66\1\71\1\72\2\0"+
166     "\1\66\7\0\1\72\1\73\1\0\1\74\26\0\1\74"+
167     "\1\73\1\75\7\0\2\13\2\0\1\13\1\71\1\72"+
168     "\2\0\1\13\7\0\1\72\1\73\1\0\1\74\26\0"+
169     "\1\74\1\73\1\75\7\0\2\71\2\0\1\71\4\0"+
170     "\1\71\62\0\1\76\27\0\1\77\37\0\1\100\1\101"+
171     "\23\0\1\102\64\0\1\103\23\0\7\11\1\0\1\11"+
172     "\2\0\1\11\4\0\1\11\1\104\7\11\24\0\4\11"+
173     "\4\0\7\11\1\0\1\11\2\0\1\11\4\0\5\11"+
174     "\1\105\3\11\24\0\4\11\4\0\7\11\1\0\1\11"+
175     "\2\0\1\11\4\0\2\11\1\106\6\11\24\0\4\11"+
176     "\45\0\1\107\64\0\1\110\1\111\63\0\1\112\1\0"+
177     "\1\113\62\0\1\114\64\0\1\115\6\0\1\116\55\0"+
178     "\1\117\7\0\1\120\54\0\1\121\10\0\1\122\53\0"+
179     "\1\123\64\0\1\124\17\0\1\51\2\0\13\51\1\0"+
180     "\4\51\1\0\41\51\1\0\1\52\63\0\1\125\1\0"+
181     "\4\125\1\126\3\125\1\127\3\125\1\130\1\126\2\125"+
182     "\1\131\1\132\1\133\1\134\2\125\1\135\3\125\1\136"+
183     "\27\125\1\137\1\56\2\0\13\56\1\0\3\56\1\0"+
184     "\42\56\1\0\1\57\63\0\1\125\1\0\4\125\1\126"+
185     "\3\125\1\127\3\125\1\140\1\126\2\125\1\141\1\142"+
186     "\1\143\1\144\2\125\1\145\3\125\1\146\27\125\1\147"+
187     "\20\0\1\64\45\0\1\64\71\0\1\66\1\67\2\0"+
188     "\1\66\1\71\1\72\2\0\1\66\7\0\1\72\2\0"+
189     "\1\150\26\0\1\150\11\0\2\67\2\0\1\67\1\71"+
190     "\1\72\2\0\1\67\7\0\1\72\43\0\2\151\1\0"+
191     "\2\151\1\0\1\151\2\0\1\151\7\0\3\151\30\0"+
192     "\3\151\6\0\2\71\2\0\1\71\1\0\1\72\2\0"+
193     "\1\71\7\0\1\72\1\73\31\0\1\73\1\75\7\0"+
194     "\2\152\2\0\1\152\2\0\1\153\1\0\1\152\36\0"+
195     "\1\153\12\0\7\11\1\0\1\11\2\0\1\11\4\0"+
196     "\2\11\1\154\6\11\24\0\4\11\4\0\7\11\1\0"+
197     "\1\11\2\0\1\11\4\0\6\11\1\155\2\11\24\0"+
198     "\4\11\4\0\7\11\1\0\1\11\2\0\1\11\4\0"+
199     "\6\11\1\156\2\11\24\0\4\11\45\0\1\157\1\160"+
200     "\63\0\1\161\25\0\1\127\3\0\1\127\4\0\1\127"+
201     "\53\0\1\162\3\0\1\162\4\0\1\162\53\0\2\151"+
202     "\1\0\2\151\1\0\1\151\2\0\1\151\7\0\3\151"+
203     "\1\163\26\0\1\163\3\151\6\0\2\152\2\0\1\152"+
204     "\4\0\1\152\10\0\1\73\31\0\1\73\1\75\7\0"+
205     "\2\152\2\0\1\152\4\0\1\152\51\0\7\11\1\0"+
206     "\1\11\2\0\1\11\4\0\3\11\1\164\5\11\24\0"+
207     "\4\11\4\0\7\11\1\0\1\11\2\0\1\11\4\0"+
208     "\7\11\1\165\1\11\24\0\4\11\4\0\7\11\1\0"+
209     "\1\11\2\0\1\11\4\0\6\11\1\166\2\11\24\0"+
210     "\4\11\45\0\1\167\23\0\7\11\1\0\1\11\2\0"+
211     "\1\11\4\0\3\11\1\170\5\11\24\0\4\11";
212
213   /**
214    * The transition table of the DFA
215    */

216   final private static int yytrans [] = yy_unpack();
217
218
219   /* error codes */
220   final private static int YY_UNKNOWN_ERROR = 0;
221   final private static int YY_ILLEGAL_STATE = 1;
222   final private static int YY_NO_MATCH = 2;
223   final private static int YY_PUSHBACK_2BIG = 3;
224
225   /* error messages for the codes above */
226   final private static String JavaDoc YY_ERROR_MSG[] = {
227     "Unkown internal scanner error",
228     "Internal error: unknown state",
229     "Error: could not match input",
230     "Error: pushback value was too large"
231   };
232
233   /**
234    * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
235    */

236   private final static byte YY_ATTRIBUTE[] = {
237      0, 0, 0, 0, 0, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 9,
238      9, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1,
239      9, 9, 9, 1, 1, 1, 1, 1, 1, 9, 1, 1, 9, 1, 9, 1,
240      1, 9, 1, 9, 1, 1, 0, 0, 1, 0, 9, 9, 9, 9, 9, 9,
241      9, 9, 9, 1, 1, 1, 9, 9, 1, 9, 1, 9, 9, 9, 9, 9,
242      9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9,
243      9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 0, 1, 1, 1, 9, 1,
244      9, 9, 9, 1, 1, 1, 9, 1
245   };
246
247   /** the input device */
248   private java.io.Reader JavaDoc yy_reader;
249
250   /** the current state of the DFA */
251   private int yy_state;
252
253   /** the current lexical state */
254   private int yy_lexical_state = YYINITIAL;
255
256   /** this buffer contains the current text to be matched and is
257       the source of the yytext() string */

258   private char yy_buffer[] = new char[YY_BUFFERSIZE];
259
260   /** the textposition at the last accepting state */
261   private int yy_markedPos;
262
263   /** the textposition at the last state to be included in yytext */
264   private int yy_pushbackPos;
265
266   /** the current text position in the buffer */
267   private int yy_currentPos;
268
269   /** startRead marks the beginning of the yytext() string in the buffer */
270   private int yy_startRead;
271
272   /** endRead marks the last character in the buffer, that has been read
273       from input */

274   private int yy_endRead;
275
276   /** number of newlines encountered up to the start of the matched text */
277   private int yyline;
278
279   /** the number of characters up to the start of the matched text */
280   private int yychar;
281
282   /**
283    * the number of characters from the last newline up to the start of the
284    * matched text
285    */

286   private int yycolumn;
287
288   /**
289    * yy_atBOL == true <=> the scanner is currently at the beginning of a line
290    */

291   private boolean yy_atBOL = true;
292
293   /** yy_atEOF == true <=> the scanner is at the EOF */
294   private boolean yy_atEOF;
295
296   /* user code: */
297     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
298     String JavaDoc file;
299     ErrorQueue eq;
300     HashMap JavaDoc keywords;
301
302     public Lexer_c(java.io.InputStream JavaDoc in, String JavaDoc file, ErrorQueue eq) {
303         this(new java.io.BufferedReader JavaDoc(new java.io.InputStreamReader JavaDoc(in)),
304              file, eq);
305     }
306
307     public Lexer_c(java.io.Reader JavaDoc reader, String JavaDoc file, ErrorQueue eq) {
308         this(new EscapedUnicodeReader(reader));
309         this.file = file;
310         this.eq = eq;
311         this.keywords = new HashMap JavaDoc();
312         init_keywords();
313     }
314
315     protected void init_keywords() {
316         keywords.put("abstract", new Integer JavaDoc(sym.ABSTRACT));
317         keywords.put("assert", new Integer JavaDoc(sym.ASSERT));
318         keywords.put("boolean", new Integer JavaDoc(sym.BOOLEAN));
319         keywords.put("break", new Integer JavaDoc(sym.BREAK));
320         keywords.put("byte", new Integer JavaDoc(sym.BYTE));
321         keywords.put("case", new Integer JavaDoc(sym.CASE));
322         keywords.put("catch", new Integer JavaDoc(sym.CATCH));
323         keywords.put("char", new Integer JavaDoc(sym.CHAR));
324         keywords.put("class", new Integer JavaDoc(sym.CLASS));
325         keywords.put("const", new Integer JavaDoc(sym.CONST));
326         keywords.put("continue", new Integer JavaDoc(sym.CONTINUE));
327         keywords.put("default", new Integer JavaDoc(sym.DEFAULT));
328         keywords.put("do", new Integer JavaDoc(sym.DO));
329         keywords.put("double", new Integer JavaDoc(sym.DOUBLE));
330         keywords.put("else", new Integer JavaDoc(sym.ELSE));
331         keywords.put("extends", new Integer JavaDoc(sym.EXTENDS));
332         keywords.put("final", new Integer JavaDoc(sym.FINAL));
333         keywords.put("finally", new Integer JavaDoc(sym.FINALLY));
334         keywords.put("float", new Integer JavaDoc(sym.FLOAT));
335         keywords.put("for", new Integer JavaDoc(sym.FOR));
336         keywords.put("goto", new Integer JavaDoc(sym.GOTO));
337         keywords.put("if", new Integer JavaDoc(sym.IF));
338         keywords.put("implements", new Integer JavaDoc(sym.IMPLEMENTS));
339         keywords.put("import", new Integer JavaDoc(sym.IMPORT));
340         keywords.put("instanceof", new Integer JavaDoc(sym.INSTANCEOF));
341         keywords.put("int", new Integer JavaDoc(sym.INT));
342         keywords.put("interface", new Integer JavaDoc(sym.INTERFACE));
343         keywords.put("long", new Integer JavaDoc(sym.LONG));
344         keywords.put("native", new Integer JavaDoc(sym.NATIVE));
345         keywords.put("new", new Integer JavaDoc(sym.NEW));
346         keywords.put("package", new Integer JavaDoc(sym.PACKAGE));
347         keywords.put("private", new Integer JavaDoc(sym.PRIVATE));
348         keywords.put("protected", new Integer JavaDoc(sym.PROTECTED));
349         keywords.put("public", new Integer JavaDoc(sym.PUBLIC));
350         keywords.put("return", new Integer JavaDoc(sym.RETURN));
351         keywords.put("short", new Integer JavaDoc(sym.SHORT));
352         keywords.put("static", new Integer JavaDoc(sym.STATIC));
353         keywords.put("strictfp", new Integer JavaDoc(sym.STRICTFP));
354         keywords.put("super", new Integer JavaDoc(sym.SUPER));
355         keywords.put("switch", new Integer JavaDoc(sym.SWITCH));
356         keywords.put("synchronized", new Integer JavaDoc(sym.SYNCHRONIZED));
357         keywords.put("this", new Integer JavaDoc(sym.THIS));
358         keywords.put("throw", new Integer JavaDoc(sym.THROW));
359         keywords.put("throws", new Integer JavaDoc(sym.THROWS));
360         keywords.put("transient", new Integer JavaDoc(sym.TRANSIENT));
361         keywords.put("try", new Integer JavaDoc(sym.TRY));
362         keywords.put("void", new Integer JavaDoc(sym.VOID));
363         keywords.put("volatile", new Integer JavaDoc(sym.VOLATILE));
364         keywords.put("while", new Integer JavaDoc(sym.WHILE));
365     }
366
367     public String JavaDoc file() {
368         return file;
369     }
370
371     private Position pos() {
372         return new Position(file, yyline+1, yycolumn, yyline+1,
373                             yycolumn + yytext().length());
374     }
375
376     private Position pos(int len) {
377         return new Position(file, yyline+1, yycolumn-len-1, yyline+1,
378                             yycolumn+1);
379     }
380
381     private Token key(int symbol) {
382         return new Keyword(pos(), yytext(), symbol);
383     }
384
385     private Token op(int symbol) {
386         return new Operator(pos(), yytext(), symbol);
387     }
388
389     private Token id() {
390         return new Identifier(pos(), yytext(), sym.IDENTIFIER);
391     }
392
393     private Token int_lit(String JavaDoc s, int radix) {
394         BigInteger JavaDoc x = new BigInteger JavaDoc(s, radix);
395         boolean boundary = (radix == 10 && s.equals("2147483648"));
396         int bits = radix == 10 ? 31 : 32;
397         if (x.bitLength() > bits && ! boundary) {
398             eq.enqueue(ErrorInfo.LEXICAL_ERROR, "Integer literal \"" +
399                         yytext() + "\" out of range.", pos());
400         }
401         return new IntegerLiteral(pos(), x.intValue(),
402                 boundary ? sym.INTEGER_LITERAL_BD : sym.INTEGER_LITERAL);
403     }
404
405     private Token long_lit(String JavaDoc s, int radix) {
406         BigInteger JavaDoc x = new BigInteger JavaDoc(s, radix);
407         boolean boundary = (radix == 10 && s.equals("9223372036854775808"));
408         int bits = radix == 10 ? 63 : 64;
409         if (x.bitLength() > bits && ! boundary) {
410             eq.enqueue(ErrorInfo.LEXICAL_ERROR, "Long literal \"" +
411                         yytext() + "\" out of range.", pos());
412         }
413         return new LongLiteral(pos(), x.longValue(),
414                 boundary ? sym.LONG_LITERAL_BD : sym.LONG_LITERAL);
415     }
416
417     private Token float_lit(String JavaDoc s) {
418         try {
419             Float JavaDoc x = Float.valueOf(s);
420         boolean zero = true;
421         for (int i = 0; i < s.length(); i++) {
422         if ('1' <= s.charAt(i) && s.charAt(i) <= '9') {
423             zero = false;
424             break;
425         }
426                 if (s.charAt(i) == 'e' || s.charAt(i) == 'E') {
427                     break; // 0e19 is still 0
428
}
429         }
430         if (x.isInfinite() || x.isNaN() || (x.floatValue() == 0 && ! zero)) {
431         eq.enqueue(ErrorInfo.LEXICAL_ERROR,
432                "Illegal float literal \"" + yytext() + "\"", pos());
433         }
434             return new FloatLiteral(pos(), x.floatValue(), sym.FLOAT_LITERAL);
435         }
436         catch (NumberFormatException JavaDoc e) {
437             eq.enqueue(ErrorInfo.LEXICAL_ERROR,
438                        "Illegal float literal \"" + yytext() + "\"", pos());
439             return new FloatLiteral(pos(), 0f, sym.FLOAT_LITERAL);
440         }
441     }
442
443     private Token double_lit(String JavaDoc s) {
444         try {
445             Double JavaDoc x = Double.valueOf(s);
446         boolean zero = true;
447         for (int i = 0; i < s.length(); i++) {
448         if ('1' <= s.charAt(i) && s.charAt(i) <= '9') {
449             zero = false;
450             break;
451         }
452                 if (s.charAt(i) == 'e' || s.charAt(i) == 'E') {
453                     break; // 0e19 is still 0
454
}
455         }
456         if (x.isInfinite() || x.isNaN() || (x.doubleValue() == 0 && ! zero)) {
457         eq.enqueue(ErrorInfo.LEXICAL_ERROR,
458                "Illegal double literal \"" + yytext() + "\"", pos());
459         }
460             return new DoubleLiteral(pos(), x.doubleValue(), sym.DOUBLE_LITERAL);
461         }
462         catch (NumberFormatException JavaDoc e) {
463             eq.enqueue(ErrorInfo.LEXICAL_ERROR,
464                        "Illegal double literal \"" + yytext() + "\"", pos());
465             return new DoubleLiteral(pos(), 0., sym.DOUBLE_LITERAL);
466         }
467     }
468
469     private Token char_lit(String JavaDoc s) {
470         if (s.length() == 1) {
471             char x = s.charAt(0);
472             return new CharacterLiteral(pos(), x, sym.CHARACTER_LITERAL);
473         }
474         else {
475             eq.enqueue(ErrorInfo.LEXICAL_ERROR,
476                        "Illegal character literal \'" + s + "\'", pos(s.length()));
477             return new CharacterLiteral(pos(), '\0', sym.CHARACTER_LITERAL);
478         }
479     }
480
481     private Token boolean_lit(boolean x) {
482         return new BooleanLiteral(pos(), x, sym.BOOLEAN_LITERAL);
483     }
484
485     private Token null_lit() {
486         return new NullLiteral(pos(), sym.NULL_LITERAL);
487     }
488
489     private Token string_lit() {
490         return new StringLiteral(pos(sb.length()), sb.toString(),
491                                  sym.STRING_LITERAL);
492     }
493
494     private String JavaDoc chop(int i, int j) {
495         return yytext().substring(i,yylength()-j);
496     }
497
498     private String JavaDoc chop(int j) {
499         return chop(0, j);
500     }
501
502     private String JavaDoc chop() {
503         return chop(0, 1);
504     }
505
506
507   /**
508    * Creates a new scanner
509    * There is also a java.io.InputStream version of this constructor.
510    *
511    * @param in the java.io.Reader to read input from.
512    */

513   public Lexer_c(java.io.Reader JavaDoc in) {
514     this.yy_reader = in;
515   }
516
517   /**
518    * Creates a new scanner.
519    * There is also java.io.Reader version of this constructor.
520    *
521    * @param in the java.io.Inputstream to read input from.
522    */

523   public Lexer_c(java.io.InputStream JavaDoc in) {
524     this(new java.io.InputStreamReader JavaDoc(in));
525   }
526
527   /**
528    * Unpacks the split, compressed DFA transition table.
529    *
530    * @return the unpacked transition table
531    */

532   private static int [] yy_unpack() {
533     int [] trans = new int[2862];
534     int offset = 0;
535     offset = yy_unpack(yy_packed0, offset, trans);
536     return trans;
537   }
538
539   /**
540    * Unpacks the compressed DFA transition table.
541    *
542    * @param packed the packed transition table
543    * @return the index of the last entry
544    */

545   private static int yy_unpack(String JavaDoc packed, int offset, int [] trans) {
546     int i = 0; /* index in packed string */
547     int j = offset; /* index in unpacked array */
548     int l = packed.length();
549     while (i < l) {
550       int count = packed.charAt(i++);
551       int value = packed.charAt(i++);
552       value--;
553       do trans[j++] = value; while (--count > 0);
554     }
555     return j;
556   }
557
558   /**
559    * Unpacks the compressed character translation table.
560    *
561    * @param packed the packed character translation table
562    * @return the unpacked character translation table
563    */

564   private static char [] yy_unpack_cmap(String JavaDoc packed) {
565     char [] map = new char[0x10000];
566     int i = 0; /* index in packed string */
567     int j = 0; /* index in unpacked array */
568     while (i < 1642) {
569       int count = packed.charAt(i++);
570       char value = packed.charAt(i++);
571       do map[j++] = value; while (--count > 0);
572     }
573     return map;
574   }
575
576
577   /**
578    * Refills the input buffer.
579    *
580    * @return <code>false</code>, iff there was new input.
581    *
582    * @exception IOException if any I/O-Error occurs
583    */

584   private boolean yy_refill() throws java.io.IOException JavaDoc {
585
586     /* first: make room (if you can) */
587     if (yy_startRead > 0) {
588       System.arraycopy(yy_buffer, yy_startRead,
589                        yy_buffer, 0,
590                        yy_endRead-yy_startRead);
591
592       /* translate stored positions */
593       yy_endRead-= yy_startRead;
594       yy_currentPos-= yy_startRead;
595       yy_markedPos-= yy_startRead;
596       yy_pushbackPos-= yy_startRead;
597       yy_startRead = 0;
598     }
599
600     /* is the buffer big enough? */
601     if (yy_currentPos >= yy_buffer.length) {
602       /* if not: blow it up */
603       char newBuffer[] = new char[yy_currentPos*2];
604       System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
605       yy_buffer = newBuffer;
606     }
607
608     /* finally: fill the buffer with new input */
609     int numRead = yy_reader.read(yy_buffer, yy_endRead,
610                                             yy_buffer.length-yy_endRead);
611
612     if (numRead < 0) {
613       return true;
614     }
615     else {
616       yy_endRead+= numRead;
617       return false;
618     }
619   }
620
621
622   /**
623    * Closes the input stream.
624    */

625   final public void yyclose() throws java.io.IOException JavaDoc {
626     yy_atEOF = true; /* indicate end of file */
627     yy_endRead = yy_startRead; /* invalidate buffer */
628
629     if (yy_reader != null)
630       yy_reader.close();
631   }
632
633
634   /**
635    * Closes the current stream, and resets the
636    * scanner to read from a new input stream.
637    *
638    * All internal variables are reset, the old input stream
639    * <b>cannot</b> be reused (internal buffer is discarded and lost).
640    * Lexical state is set to <tt>YY_INITIAL</tt>.
641    *
642    * @param reader the new input stream
643    */

644   final public void yyreset(java.io.Reader JavaDoc reader) throws java.io.IOException JavaDoc {
645     yyclose();
646     yy_reader = reader;
647     yy_atBOL = true;
648     yy_atEOF = false;
649     yy_endRead = yy_startRead = 0;
650     yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
651     yyline = yychar = yycolumn = 0;
652     yy_lexical_state = YYINITIAL;
653   }
654
655
656   /**
657    * Returns the current lexical state.
658    */

659   final public int yystate() {
660     return yy_lexical_state;
661   }
662
663
664   /**
665    * Enters a new lexical state
666    *
667    * @param newState the new lexical state
668    */

669   final public void yybegin(int newState) {
670     yy_lexical_state = newState;
671   }
672
673
674   /**
675    * Returns the text matched by the current regular expression.
676    */

677   final public String JavaDoc yytext() {
678     return new String JavaDoc( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
679   }
680
681
682   /**
683    * Returns the character at position <tt>pos</tt> from the
684    * matched text.
685    *
686    * It is equivalent to yytext().charAt(pos), but faster
687    *
688    * @param pos the position of the character to fetch.
689    * A value from 0 to yylength()-1.
690    *
691    * @return the character at position pos
692    */

693   final public char yycharat(int pos) {
694     return yy_buffer[yy_startRead+pos];
695   }
696
697
698   /**
699    * Returns the length of the matched text region.
700    */

701   final public int yylength() {
702     return yy_markedPos-yy_startRead;
703   }
704
705
706   /**
707    * Reports an error that occured while scanning.
708    *
709    * In a wellformed scanner (no or only correct usage of
710    * yypushback(int) and a match-all fallback rule) this method
711    * will only be called with things that "Can't Possibly Happen".
712    * If this method is called, something is seriously wrong
713    * (e.g. a JFlex bug producing a faulty scanner etc.).
714    *
715    * Usual syntax/scanner level error handling should be done
716    * in error fallback rules.
717    *
718    * @param errorCode the code of the errormessage to display
719    */

720   private void yy_ScanError(int errorCode) {
721     String JavaDoc message;
722     try {
723       message = YY_ERROR_MSG[errorCode];
724     }
725     catch (ArrayIndexOutOfBoundsException JavaDoc e) {
726       message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
727     }
728
729     throw new Error JavaDoc(message);
730   }
731
732
733   /**
734    * Pushes the specified amount of characters back into the input stream.
735    *
736    * They will be read again by then next call of the scanning method
737    *
738    * @param number the number of characters to be read again.
739    * This number must not be greater than yylength()!
740    */

741   private void yypushback(int number) {
742     if ( number > yylength() )
743       yy_ScanError(YY_PUSHBACK_2BIG);
744
745     yy_markedPos -= number;
746   }
747
748
749   /**
750    * Resumes scanning until the next regular expression is matched,
751    * the end of input is encountered or an I/O-Error occurs.
752    *
753    * @return the next token
754    * @exception IOException if any I/O-Error occurs
755    */

756   public Token nextToken() throws java.io.IOException JavaDoc {
757     int yy_input;
758     int yy_action;
759
760     // cached fields:
761
int yy_currentPos_l;
762     int yy_startRead_l;
763     int yy_markedPos_l;
764     int yy_endRead_l = yy_endRead;
765     char [] yy_buffer_l = yy_buffer;
766     char [] yycmap_l = yycmap;
767
768     int [] yytrans_l = yytrans;
769     int [] yy_rowMap_l = yy_rowMap;
770     byte [] yy_attr_l = YY_ATTRIBUTE;
771
772     while (true) {
773       yy_markedPos_l = yy_markedPos;
774
775       boolean yy_r = false;
776       for (yy_currentPos_l = yy_startRead; yy_currentPos_l < yy_markedPos_l;
777                                                              yy_currentPos_l++) {
778         switch (yy_buffer_l[yy_currentPos_l]) {
779         case '\u000B':
780         case '\u000C':
781         case '\u0085':
782         case '\u2028':
783         case '\u2029':
784           yyline++;
785           yycolumn = 0;
786           yy_r = false;
787           break;
788         case '\r':
789           yyline++;
790           yycolumn = 0;
791           yy_r = true;
792           break;
793         case '\n':
794           if (yy_r)
795             yy_r = false;
796           else {
797             yyline++;
798             yycolumn = 0;
799           }
800           break;
801         default:
802           yy_r = false;
803           yycolumn++;
804         }
805       }
806
807       if (yy_r) {
808         // peek one character ahead if it is \n (if we have counted one line too much)
809
boolean yy_peek;
810         if (yy_markedPos_l < yy_endRead_l)
811           yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
812         else if (yy_atEOF)
813           yy_peek = false;
814         else {
815           boolean eof = yy_refill();
816           yy_markedPos_l = yy_markedPos;
817           yy_buffer_l = yy_buffer;
818           if (eof)
819             yy_peek = false;
820           else
821             yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
822         }
823         if (yy_peek) yyline--;
824       }
825       yy_action = -1;
826
827       yy_startRead_l = yy_currentPos_l = yy_currentPos =
828                        yy_startRead = yy_markedPos_l;
829
830       yy_state = yy_lexical_state;
831
832
833       yy_forAction: {
834         while (true) {
835
836           if (yy_currentPos_l < yy_endRead_l)
837             yy_input = yy_buffer_l[yy_currentPos_l++];
838           else if (yy_atEOF) {
839             yy_input = YYEOF;
840             break yy_forAction;
841           }
842           else {
843             // store back cached positions
844
yy_currentPos = yy_currentPos_l;
845             yy_markedPos = yy_markedPos_l;
846             boolean eof = yy_refill();
847             // get translated positions and possibly new buffer
848
yy_currentPos_l = yy_currentPos;
849             yy_markedPos_l = yy_markedPos;
850             yy_buffer_l = yy_buffer;
851             yy_endRead_l = yy_endRead;
852             if (eof) {
853               yy_input = YYEOF;
854               break yy_forAction;
855             }
856             else {
857               yy_input = yy_buffer_l[yy_currentPos_l++];
858             }
859           }
860           int yy_next = yytrans_l[ yy_rowMap_l[yy_state] + yycmap_l[yy_input] ];
861           if (yy_next == -1) break yy_forAction;
862           yy_state = yy_next;
863
864           int yy_attributes = yy_attr_l[yy_state];
865           if ( (yy_attributes & 1) == 1 ) {
866             yy_action = yy_state;
867             yy_markedPos_l = yy_currentPos_l;
868             if ( (yy_attributes & 8) == 8 ) break yy_forAction;
869           }
870
871         }
872       }
873
874       // store back cached position
875
yy_markedPos = yy_markedPos_l;
876
877       switch (yy_action) {
878
879         case 45:
880           { sb.append( yytext() ); }
881         case 121: break;
882         case 40:
883           { sb.append( yytext() ); }
884         case 122: break;
885         case 59:
886           { return long_lit(chop(), 10); }
887         case 123: break;
888         case 84:
889           { eq.enqueue(ErrorInfo.LEXICAL_ERROR,
890                                               "Illegal escape character \"" +
891                                               yytext() + "\"", pos()); }
892         case 124: break;
893         case 6:
894         case 7:
895           { /* ignore */ }
896         case 125: break;
897         case 50:
898           { /* ignore */ }
899         case 126: break;
900         case 119:
901           { return boolean_lit(false); }
902         case 127: break;
903         case 115:
904           { return boolean_lit(true); }
905         case 128: break;
906         case 27:
907           { return op(sym.COMMA); }
908         case 129: break;
909         case 11:
910           { return op(sym.DOT); }
911         case 130: break;
912         case 20:
913           { return op(sym.LPAREN); }
914         case 131: break;
915         case 21:
916           { return op(sym.RPAREN); }
917         case 132: break;
918         case 22:
919           { return op(sym.LBRACE); }
920         case 133: break;
921         case 23:
922           { return op(sym.RBRACE); }
923         case 134: break;
924         case 24:
925           { return op(sym.LBRACK); }
926         case 135: break;
927         case 25:
928           { return op(sym.RBRACK); }
929         case 136: break;
930         case 26:
931           { return op(sym.SEMICOLON); }
932         case 137: break;
933         case 117:
934           { return null_lit(); }
935         case 138: break;
936         case 56:
937         case 105:
938           { return double_lit(yytext()); }
939         case 139: break;
940         case 103:
941           { return long_lit(chop(), 8); }
942         case 140: break;
943         case 102:
944           { sb.append('\b'); }
945         case 141: break;
946         case 101:
947           { sb.append('\n'); }
948         case 142: break;
949         case 100:
950           { sb.append('\f'); }
951         case 143: break;
952         case 99:
953           { sb.append('\r'); }
954         case 144: break;
955         case 98:
956           { sb.append('\t'); }
957         case 145: break;
958         case 97:
959           { sb.append('\"'); }
960         case 146: break;
961         case 96:
962           { sb.append('\''); }
963         case 147: break;
964         case 95:
965           { sb.append('\\'); }
966         case 148: break;
967         case 104:
968           { return int_lit(chop(2,0), 16); }
969         case 149: break;
970         case 5:
971         case 43:
972         case 48:
973           { eq.enqueue(ErrorInfo.LEXICAL_ERROR,
974                                               "Illegal character \"" +
975                                               yytext() + "\"", pos()); }
976         case 150: break;
977         case 58:
978           { return float_lit(chop()); }
979         case 151: break;
980         case 60:
981           { return double_lit(chop()); }
982         case 152: break;
983         case 63:
984           { yybegin(END_OF_LINE_COMMENT); }
985         case 153: break;
986         case 51:
987         case 52:
988           { yybegin(YYINITIAL); }
989         case 154: break;
990         case 64:
991           { yybegin(TRADITIONAL_COMMENT); }
992         case 155: break;
993         case 8:
994         case 17:
995         case 18:
996         case 19:
997         case 67:
998         case 68:
999         case 69:
1000        case 107:
1001        case 108:
1002        case 109:
1003        case 116:
1004          { Integer JavaDoc i = (Integer JavaDoc) keywords.get(yytext());
1005                    if (i == null) return id();
1006                    else return key(i.intValue()); }
1007        case 156: break;
1008        case 15:
1009          { yybegin(CHARACTER); sb.setLength(0); }
1010        case 157: break;
1011        case 118:
1012          { return op(sym.URSHIFTEQ); }
1013        case 158: break;
1014        case 112:
1015          { return op(sym.LSHIFTEQ); }
1016        case 159: break;
1017        case 111:
1018          { return op(sym.URSHIFT); }
1019        case 160: break;
1020        case 110:
1021          { return op(sym.RSHIFTEQ); }
1022        case 161: break;
1023        case 39:
1024          { return op(sym.MOD); }
1025        case 162: break;
1026        case 38:
1027          { return op(sym.XOR); }
1028        case 163: break;
1029        case 37:
1030          { return op(sym.PLUS); }
1031        case 164: break;
1032        case 36:
1033          { return op(sym.OR); }
1034        case 165: break;
1035        case 35:
1036          { return op(sym.AND); }
1037        case 166: break;
1038        case 34:
1039          { return op(sym.COLON); }
1040        case 167: break;
1041        case 33:
1042          { return op(sym.QUESTION); }
1043        case 168: break;
1044        case 32:
1045          { return op(sym.COMP); }
1046        case 169: break;
1047        case 31:
1048          { return op(sym.NOT); }
1049        case 170: break;
1050        case 30:
1051          { return op(sym.LT); }
1052        case 171: break;
1053        case 29:
1054          { return op(sym.GT); }
1055        case 172: break;
1056        case 28:
1057          { return op(sym.EQ); }
1058        case 173: break;
1059        case 14:
1060          { return op(sym.MULT); }
1061        case 174: break;
1062        case 13:
1063          { return op(sym.DIV); }
1064        case 175: break;
1065        case 12:
1066          { return op(sym.MINUS); }
1067        case 176: break;
1068        case 61:
1069          { return op(sym.MINUSMINUS); }
1070        case 177: break;
1071        case 62:
1072          { return op(sym.MINUSEQ); }
1073        case 178: break;
1074        case 65:
1075          { return op(sym.DIVEQ); }
1076        case 179: break;
1077        case 66:
1078          { return op(sym.MULTEQ); }
1079        case 180: break;
1080        case 70:
1081          { return op(sym.EQEQ); }
1082        case 181: break;
1083        case 71:
1084          { return op(sym.GTEQ); }
1085        case 182: break;
1086        case 72:
1087          { return op(sym.RSHIFT); }
1088        case 183: break;
1089        case 73:
1090          { return op(sym.LTEQ); }
1091        case 184: break;
1092        case 74:
1093          { return op(sym.LSHIFT); }
1094        case 185: break;
1095        case 75:
1096          { return op(sym.NOTEQ); }
1097        case 186: break;
1098        case 76:
1099          { return op(sym.ANDEQ); }
1100        case 187: break;
1101        case 77:
1102          { return op(sym.ANDAND); }
1103        case 188: break;
1104        case 78:
1105          { return op(sym.OREQ); }
1106        case 189: break;
1107        case 79:
1108          { return op(sym.OROR); }
1109        case 190: break;
1110        case 80:
1111          { return op(sym.PLUSEQ); }
1112        case 191: break;
1113        case 81:
1114          { return op(sym.PLUSPLUS); }
1115        case 192: break;
1116        case 82:
1117          { return op(sym.XOREQ); }
1118        case 193: break;
1119        case 83:
1120          { return op(sym.MODEQ); }
1121        case 194: break;
1122        case 114:
1123          { return long_lit(chop(2,1), 16); }
1124        case 195: break;
1125        case 94:
1126          { sb.append( '\b' ); }
1127        case 196: break;
1128        case 93:
1129          { sb.append( '\n' ); }
1130        case 197: break;
1131        case 9:
1132        case 10:
1133          { return int_lit(yytext(), 10); }
1134        case 198: break;
1135        case 53:
1136          { return int_lit(yytext(), 8); }
1137        case 199: break;
1138        case 87:
1139          { sb.append( '\\' ); }
1140        case 200: break;
1141        case 88:
1142          { sb.append( '\'' ); }
1143        case 201: break;
1144        case 89:
1145          { sb.append( '\"' ); }
1146        case 202: break;
1147        case 90:
1148          { sb.append( '\t' ); }
1149        case 203: break;
1150        case 91:
1151          { sb.append( '\r' ); }
1152        case 204: break;
1153        case 92:
1154          { sb.append( '\f' ); }
1155        case 205: break;
1156        case 46:
1157        case 47:
1158          { yybegin(YYINITIAL);
1159                                  eq.enqueue(ErrorInfo.LEXICAL_ERROR,
1160                                             "Unclosed character literal",
1161                                             pos(sb.length())); }
1162        case 206: break;
1163        case 44:
1164          { yybegin(YYINITIAL);
1165                                   return string_lit(); }
1166        case 207: break;
1167        case 41:
1168        case 42:
1169          { yybegin(YYINITIAL);
1170                                   eq.enqueue(ErrorInfo.LEXICAL_ERROR,
1171                                              "Unclosed string literal",
1172                                              pos(sb.length())); }
1173        case 208: break;
1174        case 16:
1175          { yybegin(STRING); sb.setLength(0); }
1176        case 209: break;
1177        case 49:
1178          { yybegin(YYINITIAL);
1179                                   return char_lit(sb.toString()); }
1180        case 210: break;
1181        case 85:
1182        case 86:
1183        case 113:
1184          { try {
1185                                       int x = Integer.parseInt(chop(1,0), 8);
1186                                       sb.append((char) x);
1187                                   }
1188                                   catch (NumberFormatException JavaDoc e) {
1189                                       eq.enqueue(ErrorInfo.LEXICAL_ERROR,
1190                                                  "Illegal octal escape \""
1191                                                  + yytext() + "\"", pos());
1192                                   }
1193                                  }
1194        case 211: break;
1195        default:
1196          if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
1197            yy_atEOF = true;
1198              { return new EOF(pos(), sym.EOF);
1199 }
1200          }
1201          else {
1202            yy_ScanError(YY_NO_MATCH);
1203          }
1204      }
1205    }
1206  }
1207
1208
1209}
1210
Popular Tags