blob: 9edd3bf5b1ccb8d84a7fb8343282675ad2976708 [file] [log] [blame]
Chris Lattner00950542001-06-06 20:29:01 +00001#define yy_create_buffer llvmAsm_create_buffer
2#define yy_delete_buffer llvmAsm_delete_buffer
3#define yy_scan_buffer llvmAsm_scan_buffer
4#define yy_scan_string llvmAsm_scan_string
5#define yy_scan_bytes llvmAsm_scan_bytes
6#define yy_flex_debug llvmAsm_flex_debug
7#define yy_init_buffer llvmAsm_init_buffer
8#define yy_flush_buffer llvmAsm_flush_buffer
9#define yy_load_buffer_state llvmAsm_load_buffer_state
10#define yy_switch_to_buffer llvmAsm_switch_to_buffer
11#define yyin llvmAsmin
12#define yyleng llvmAsmleng
13#define yylex llvmAsmlex
14#define yyout llvmAsmout
15#define yyrestart llvmAsmrestart
16#define yytext llvmAsmtext
17#define yylineno llvmAsmlineno
18
19#line 20 "Lexer.cpp"
20/* A lexical scanner generated by flex */
21
22/* Scanner skeleton version:
23 * $Header$
24 */
25
26#define FLEX_SCANNER
27#define YY_FLEX_MAJOR_VERSION 2
28#define YY_FLEX_MINOR_VERSION 5
29
30#include <stdio.h>
31
32
33/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
34#ifdef c_plusplus
35#ifndef __cplusplus
36#define __cplusplus
37#endif
38#endif
39
40
41#ifdef __cplusplus
42
43#include <stdlib.h>
44#include <unistd.h>
45
46/* Use prototypes in function declarations. */
47#define YY_USE_PROTOS
48
49/* The "const" storage-class-modifier is valid. */
50#define YY_USE_CONST
51
52#else /* ! __cplusplus */
53
54#if __STDC__
55
56#define YY_USE_PROTOS
57#define YY_USE_CONST
58
59#endif /* __STDC__ */
60#endif /* ! __cplusplus */
61
62#ifdef __TURBOC__
63 #pragma warn -rch
64 #pragma warn -use
65#include <io.h>
66#include <stdlib.h>
67#define YY_USE_CONST
68#define YY_USE_PROTOS
69#endif
70
71#ifdef YY_USE_CONST
72#define yyconst const
73#else
74#define yyconst
75#endif
76
77
78#ifdef YY_USE_PROTOS
79#define YY_PROTO(proto) proto
80#else
81#define YY_PROTO(proto) ()
82#endif
83
84/* Returned upon end-of-file. */
85#define YY_NULL 0
86
87/* Promotes a possibly negative, possibly signed char to an unsigned
88 * integer for use as an array index. If the signed char is negative,
89 * we want to instead treat it as an 8-bit unsigned char, hence the
90 * double cast.
91 */
92#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
93
94/* Enter a start condition. This macro really ought to take a parameter,
95 * but we do it the disgusting crufty way forced on us by the ()-less
96 * definition of BEGIN.
97 */
98#define BEGIN yy_start = 1 + 2 *
99
100/* Translate the current start state into a value that can be later handed
101 * to BEGIN to return to the state. The YYSTATE alias is for lex
102 * compatibility.
103 */
104#define YY_START ((yy_start - 1) / 2)
105#define YYSTATE YY_START
106
107/* Action number for EOF rule of a given start state. */
108#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
109
110/* Special action meaning "start processing a new file". */
111#define YY_NEW_FILE yyrestart( yyin )
112
113#define YY_END_OF_BUFFER_CHAR 0
114
115/* Size of default input buffer. */
116#define YY_BUF_SIZE 16384
117
118typedef struct yy_buffer_state *YY_BUFFER_STATE;
119
120extern int yyleng;
121extern FILE *yyin, *yyout;
122
123#define EOB_ACT_CONTINUE_SCAN 0
124#define EOB_ACT_END_OF_FILE 1
125#define EOB_ACT_LAST_MATCH 2
126
127/* The funky do-while in the following #define is used to turn the definition
128 * int a single C statement (which needs a semi-colon terminator). This
129 * avoids problems with code like:
130 *
131 * if ( condition_holds )
132 * yyless( 5 );
133 * else
134 * do_something_else();
135 *
136 * Prior to using the do-while the compiler would get upset at the
137 * "else" because it interpreted the "if" statement as being all
138 * done when it reached the ';' after the yyless() call.
139 */
140
141/* Return all but the first 'n' matched characters back to the input stream. */
142
143#define yyless(n) \
144 do \
145 { \
146 /* Undo effects of setting up yytext. */ \
147 *yy_cp = yy_hold_char; \
148 YY_RESTORE_YY_MORE_OFFSET \
149 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
150 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
151 } \
152 while ( 0 )
153
154#define unput(c) yyunput( c, yytext_ptr )
155
156/* The following is because we cannot portably get our hands on size_t
157 * (without autoconf's help, which isn't available because we want
158 * flex-generated scanners to compile on their own).
159 */
160typedef unsigned int yy_size_t;
161
162
163struct yy_buffer_state
164 {
165 FILE *yy_input_file;
166
167 char *yy_ch_buf; /* input buffer */
168 char *yy_buf_pos; /* current position in input buffer */
169
170 /* Size of input buffer in bytes, not including room for EOB
171 * characters.
172 */
173 yy_size_t yy_buf_size;
174
175 /* Number of characters read into yy_ch_buf, not including EOB
176 * characters.
177 */
178 int yy_n_chars;
179
180 /* Whether we "own" the buffer - i.e., we know we created it,
181 * and can realloc() it to grow it, and should free() it to
182 * delete it.
183 */
184 int yy_is_our_buffer;
185
186 /* Whether this is an "interactive" input source; if so, and
187 * if we're using stdio for input, then we want to use getc()
188 * instead of fread(), to make sure we stop fetching input after
189 * each newline.
190 */
191 int yy_is_interactive;
192
193 /* Whether we're considered to be at the beginning of a line.
194 * If so, '^' rules will be active on the next match, otherwise
195 * not.
196 */
197 int yy_at_bol;
198
199 /* Whether to try to fill the input buffer when we reach the
200 * end of it.
201 */
202 int yy_fill_buffer;
203
204 int yy_buffer_status;
205#define YY_BUFFER_NEW 0
206#define YY_BUFFER_NORMAL 1
207 /* When an EOF's been seen but there's still some text to process
208 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
209 * shouldn't try reading from the input source any more. We might
210 * still have a bunch of tokens to match, though, because of
211 * possible backing-up.
212 *
213 * When we actually see the EOF, we change the status to "new"
214 * (via yyrestart()), so that the user can continue scanning by
215 * just pointing yyin at a new input file.
216 */
217#define YY_BUFFER_EOF_PENDING 2
218 };
219
220static YY_BUFFER_STATE yy_current_buffer = 0;
221
222/* We provide macros for accessing buffer states in case in the
223 * future we want to put the buffer states in a more general
224 * "scanner state".
225 */
226#define YY_CURRENT_BUFFER yy_current_buffer
227
228
229/* yy_hold_char holds the character lost when yytext is formed. */
230static char yy_hold_char;
231
232static int yy_n_chars; /* number of characters read into yy_ch_buf */
233
234
235int yyleng;
236
237/* Points to current character in buffer. */
238static char *yy_c_buf_p = (char *) 0;
239static int yy_init = 1; /* whether we need to initialize */
240static int yy_start = 0; /* start state number */
241
242/* Flag which is used to allow yywrap()'s to do buffer switches
243 * instead of setting up a fresh yyin. A bit of a hack ...
244 */
245static int yy_did_buffer_switch_on_eof;
246
247void yyrestart YY_PROTO(( FILE *input_file ));
248
249void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
250void yy_load_buffer_state YY_PROTO(( void ));
251YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
252void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
253void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
254void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
255#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
256
257YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
258YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
259YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
260
261static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
262static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
263static void yy_flex_free YY_PROTO(( void * ));
264
265#define yy_new_buffer yy_create_buffer
266
267#define yy_set_interactive(is_interactive) \
268 { \
269 if ( ! yy_current_buffer ) \
270 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
271 yy_current_buffer->yy_is_interactive = is_interactive; \
272 }
273
274#define yy_set_bol(at_bol) \
275 { \
276 if ( ! yy_current_buffer ) \
277 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
278 yy_current_buffer->yy_at_bol = at_bol; \
279 }
280
281#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
282
283
284#define YY_USES_REJECT
285
286#define yywrap() 1
287#define YY_SKIP_YYWRAP
288typedef unsigned char YY_CHAR;
289FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
290typedef int yy_state_type;
291extern int yylineno;
292int yylineno = 1;
293extern char *yytext;
294#define yytext_ptr yytext
295
296static yy_state_type yy_get_previous_state YY_PROTO(( void ));
297static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
298static int yy_get_next_buffer YY_PROTO(( void ));
299static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
300
301/* Done after the current pattern has been matched and before the
302 * corresponding action - sets up yytext.
303 */
304#define YY_DO_BEFORE_ACTION \
305 yytext_ptr = yy_bp; \
306 yyleng = (int) (yy_cp - yy_bp); \
307 yy_hold_char = *yy_cp; \
308 *yy_cp = '\0'; \
309 yy_c_buf_p = yy_cp;
310
311#define YY_NUM_RULES 58
312#define YY_END_OF_BUFFER 59
313static yyconst short int yy_acclist[113] =
314 { 0,
315 59, 57, 58, 56, 57, 58, 56, 58, 57, 58,
316 57, 58, 57, 58, 8, 57, 58, 52, 57, 58,
317 1, 57, 58, 57, 58, 57, 58, 57, 58, 57,
318 58, 57, 58, 57, 58, 57, 58, 57, 58, 57,
319 58, 57, 58, 57, 58, 57, 58, 57, 58, 57,
320 58, 57, 58, 57, 58, 57, 58, 50, 49, 54,
321 53, 52, 1, 9, 40, 51, 49, 55, 28, 31,
322 3, 16, 30, 24, 25, 26, 32, 39, 29, 11,
323 27, 44, 45, 18, 4, 22, 17, 10, 2, 5,
324 20, 23, 12, 34, 38, 36, 37, 35, 33, 14,
325
326 46, 13, 19, 43, 21, 42, 41, 15, 6, 47,
327 48, 7
328 } ;
329
330static yyconst short int yy_accept[199] =
331 { 0,
332 1, 1, 1, 2, 4, 7, 9, 11, 13, 15,
333 18, 21, 24, 26, 28, 30, 32, 34, 36, 38,
334 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
335 58, 58, 59, 60, 60, 61, 62, 63, 64, 64,
336 64, 65, 65, 65, 66, 66, 66, 66, 66, 66,
337 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
338 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
339 66, 66, 66, 66, 66, 66, 66, 66, 67, 68,
340 69, 70, 70, 70, 70, 70, 70, 71, 71, 72,
341 72, 72, 72, 72, 72, 73, 73, 73, 73, 73,
342
343 74, 75, 76, 77, 77, 78, 79, 79, 79, 79,
344 79, 80, 80, 80, 80, 80, 80, 80, 80, 80,
345 80, 80, 81, 82, 82, 82, 82, 82, 83, 83,
346 83, 83, 84, 85, 85, 85, 85, 85, 85, 85,
347 85, 85, 85, 85, 86, 87, 87, 88, 88, 88,
348 89, 89, 90, 90, 90, 91, 92, 92, 92, 93,
349 93, 93, 94, 95, 96, 97, 98, 99, 100, 101,
350 102, 102, 103, 104, 104, 105, 105, 106, 106, 106,
351 107, 107, 108, 109, 110, 110, 110, 110, 111, 111,
352 112, 112, 112, 112, 112, 112, 113, 113
353
354 } ;
355
356static yyconst int yy_ec[256] =
357 { 0,
358 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
359 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
360 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
361 1, 2, 1, 4, 1, 5, 6, 1, 1, 1,
362 1, 1, 1, 1, 7, 5, 1, 8, 8, 8,
363 8, 8, 8, 8, 8, 8, 8, 9, 10, 1,
364 1, 1, 1, 1, 5, 5, 5, 5, 5, 5,
365 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
366 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
367 1, 1, 1, 1, 5, 1, 11, 12, 13, 14,
368
369 15, 16, 17, 18, 19, 5, 5, 20, 21, 22,
370 23, 24, 25, 26, 27, 28, 29, 30, 31, 5,
371 32, 5, 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
379
380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 1, 1, 1, 1, 1
386 } ;
387
388static yyconst int yy_meta[33] =
389 { 0,
390 1, 1, 2, 3, 4, 1, 5, 4, 6, 1,
391 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
392 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
393 4, 4
394 } ;
395
396static yyconst short int yy_base[203] =
397 { 0,
398 0, 0, 389, 390, 390, 390, 0, 379, 26, 379,
399 27, 0, 28, 40, 29, 35, 34, 42, 30, 38,
400 56, 60, 55, 63, 65, 84, 68, 107, 52, 382,
401 376, 390, 0, 376, 375, 374, 74, 0, 32, 64,
402 372, 78, 67, 371, 77, 92, 76, 79, 89, 98,
403 100, 95, 102, 105, 108, 112, 111, 119, 122, 123,
404 116, 126, 128, 129, 132, 134, 137, 138, 139, 140,
405 143, 144, 145, 149, 146, 156, 154, 390, 0, 371,
406 369, 157, 166, 158, 161, 167, 368, 170, 367, 174,
407 175, 179, 180, 182, 366, 183, 181, 188, 184, 365,
408
409 364, 363, 362, 190, 361, 360, 191, 211, 198, 199,
410 359, 194, 200, 201, 202, 204, 205, 212, 203, 225,
411 214, 358, 357, 228, 209, 231, 232, 356, 233, 234,
412 235, 355, 354, 236, 238, 239, 241, 247, 249, 252,
413 242, 254, 259, 353, 352, 256, 351, 264, 265, 350,
414 267, 349, 270, 271, 348, 347, 273, 274, 346, 276,
415 275, 345, 344, 343, 342, 341, 340, 335, 330, 325,
416 283, 320, 319, 278, 317, 284, 316, 285, 288, 315,
417 289, 313, 311, 310, 293, 291, 301, 308, 295, 244,
418 303, 299, 302, 307, 309, 82, 390, 331, 334, 337,
419
420 342, 53
421 } ;
422
423static yyconst short int yy_def[203] =
424 { 0,
425 197, 1, 197, 197, 197, 197, 198, 199, 200, 197,
426 199, 201, 199, 199, 199, 199, 199, 199, 199, 199,
427 199, 199, 199, 199, 199, 199, 199, 199, 199, 198,
428 199, 197, 202, 197, 197, 197, 199, 201, 199, 199,
429 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
430 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
431 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
432 199, 199, 199, 199, 199, 199, 199, 197, 202, 197,
433 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
434 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
435
436 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
437 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
438 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
439 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
440 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
441 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
442 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
443 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
444 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
445 199, 199, 199, 199, 199, 199, 0, 197, 197, 197,
446
447 197, 197
448 } ;
449
450static yyconst short int yy_nxt[423] =
451 { 0,
452 4, 5, 6, 7, 8, 9, 10, 11, 4, 12,
453 13, 14, 15, 16, 17, 18, 19, 8, 20, 21,
454 22, 23, 8, 24, 8, 25, 26, 27, 28, 29,
455 8, 8, 34, 35, 37, 32, 32, 32, 32, 45,
456 32, 39, 32, 32, 53, 81, 32, 40, 32, 46,
457 32, 41, 50, 47, 42, 49, 79, 48, 54, 55,
458 32, 51, 43, 32, 32, 44, 56, 52, 32, 60,
459 58, 32, 32, 32, 77, 32, 32, 61, 57, 64,
460 62, 37, 32, 82, 32, 32, 32, 32, 59, 84,
461 32, 63, 32, 71, 83, 65, 85, 32, 66, 72,
462
463 32, 67, 89, 32, 86, 87, 32, 88, 32, 92,
464 32, 68, 69, 32, 70, 32, 32, 90, 73, 32,
465 32, 97, 91, 96, 32, 74, 75, 32, 94, 93,
466 32, 32, 98, 76, 32, 95, 32, 32, 99, 101,
467 32, 100, 32, 102, 103, 32, 32, 32, 32, 105,
468 111, 32, 32, 32, 32, 104, 106, 32, 112, 109,
469 110, 108, 32, 107, 32, 32, 32, 114, 117, 32,
470 116, 113, 119, 118, 32, 32, 115, 122, 32, 120,
471 123, 125, 32, 32, 121, 127, 124, 32, 32, 32,
472 32, 32, 32, 128, 132, 129, 32, 131, 32, 32,
473
474 126, 130, 32, 134, 133, 135, 32, 32, 32, 32,
475 32, 32, 32, 32, 144, 145, 150, 32, 136, 32,
476 32, 143, 32, 141, 142, 137, 148, 138, 154, 146,
477 139, 147, 140, 32, 149, 152, 32, 151, 153, 32,
478 32, 32, 32, 32, 32, 155, 32, 32, 158, 32,
479 32, 157, 32, 162, 159, 32, 161, 32, 160, 156,
480 32, 164, 32, 166, 32, 163, 168, 32, 170, 169,
481 172, 171, 32, 32, 165, 32, 167, 175, 32, 32,
482 173, 32, 32, 32, 32, 177, 32, 178, 180, 181,
483 174, 32, 32, 32, 179, 176, 32, 32, 184, 32,
484
485 182, 32, 186, 32, 185, 183, 188, 32, 187, 32,
486 32, 32, 189, 192, 190, 32, 32, 32, 32, 32,
487 194, 32, 191, 32, 32, 32, 193, 32, 32, 195,
488 196, 30, 30, 32, 30, 30, 30, 31, 32, 31,
489 33, 33, 38, 32, 38, 38, 38, 38, 32, 32,
490 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
491 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
492 32, 32, 32, 32, 32, 32, 32, 32, 80, 32,
493 32, 36, 35, 80, 32, 78, 36, 32, 197, 3,
494 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
495
496 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
497 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
498 197, 197
499 } ;
500
501static yyconst short int yy_chk[423] =
502 { 0,
503 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
506 1, 1, 9, 9, 11, 11, 13, 15, 19, 15,
507 39, 13, 17, 16, 19, 39, 20, 13, 14, 16,
508 18, 14, 18, 16, 14, 17, 202, 16, 20, 20,
509 29, 18, 14, 23, 21, 14, 21, 18, 22, 23,
510 22, 24, 40, 25, 29, 43, 27, 23, 21, 25,
511 24, 37, 37, 40, 47, 45, 42, 48, 22, 43,
512 196, 24, 26, 27, 42, 26, 45, 49, 26, 27,
513
514 46, 26, 49, 52, 46, 47, 50, 48, 51, 52,
515 53, 26, 26, 54, 26, 28, 55, 50, 28, 57,
516 56, 57, 51, 56, 61, 28, 28, 58, 54, 53,
517 59, 60, 57, 28, 62, 55, 63, 64, 58, 60,
518 65, 59, 66, 61, 62, 67, 68, 69, 70, 64,
519 69, 71, 72, 73, 75, 63, 64, 74, 70, 67,
520 68, 66, 77, 65, 76, 82, 84, 72, 75, 85,
521 74, 71, 77, 76, 83, 86, 73, 84, 88, 82,
522 85, 88, 90, 91, 83, 91, 86, 92, 93, 97,
523 94, 96, 99, 92, 97, 93, 98, 96, 104, 107,
524
525 90, 94, 112, 99, 98, 104, 109, 110, 113, 114,
526 115, 119, 116, 117, 113, 114, 119, 125, 107, 108,
527 118, 112, 121, 109, 110, 108, 117, 108, 125, 115,
528 108, 116, 108, 120, 118, 121, 124, 120, 124, 126,
529 127, 129, 130, 131, 134, 126, 135, 136, 130, 137,
530 141, 129, 190, 136, 131, 138, 135, 139, 134, 127,
531 140, 138, 142, 139, 146, 137, 140, 143, 142, 141,
532 146, 143, 148, 149, 138, 151, 139, 151, 153, 154,
533 148, 157, 158, 161, 160, 154, 174, 157, 160, 161,
534 149, 171, 176, 178, 158, 153, 179, 181, 176, 186,
535
536 171, 185, 179, 189, 178, 174, 185, 192, 181, 187,
537 193, 191, 186, 191, 187, 194, 188, 195, 184, 183,
538 193, 182, 189, 180, 177, 175, 192, 173, 172, 194,
539 195, 198, 198, 170, 198, 198, 198, 199, 169, 199,
540 200, 200, 201, 168, 201, 201, 201, 201, 167, 166,
541 165, 164, 163, 162, 159, 156, 155, 152, 150, 147,
542 145, 144, 133, 132, 128, 123, 122, 111, 106, 105,
543 103, 102, 101, 100, 95, 89, 87, 81, 80, 44,
544 41, 36, 35, 34, 31, 30, 10, 8, 3, 197,
545 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
546
547 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
548 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
549 197, 197
550 } ;
551
552static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
553static char *yy_full_match;
554static int yy_lp;
555#define REJECT \
556{ \
557*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
558yy_cp = yy_full_match; /* restore poss. backed-over text */ \
559++yy_lp; \
560goto find_rule; \
561}
562#define yymore() yymore_used_but_not_detected
563#define YY_MORE_ADJ 0
564#define YY_RESTORE_YY_MORE_OFFSET
565char *yytext;
566#line 1 "Lexer.l"
567#define INITIAL 0
568/*===-- Lexer.l - Scanner for llvm assembly files ----------------*- C++ -*--=//
569//
570// This file implements the flex scanner for LLVM assembly languages files.
571//
572//===------------------------------------------------------------------------=*/
573#define YY_NEVER_INTERACTIVE 1
574#line 21 "Lexer.l"
575#include "ParserInternals.h"
576#include "llvm/BasicBlock.h"
577#include "llvm/Method.h"
578#include "llvm/Module.h"
579#include <list>
580#include "llvmAsmParser.h"
581
582#define RET_TOK(type, Enum, sym) \
583 llvmAsmlval.type = Instruction::Enum; return sym
584
585
586// TODO: All of the static identifiers are figured out by the lexer,
587// these should be hashed.
588
589
590// atoull - Convert an ascii string of decimal digits into the unsigned long
591// long representation... this does not have to do input error checking,
592// because we know that the input will be matched by a suitable regex...
593//
594uint64_t atoull(const char *Buffer) {
595 uint64_t Result = 0;
596 for (; *Buffer; Buffer++) {
597 uint64_t OldRes = Result;
598 Result *= 10;
599 Result += *Buffer-'0';
600 if (Result < OldRes) { // Uh, oh, overflow detected!!!
601 ThrowException("constant bigger than 64 bits detected!");
602 }
603 }
604 return Result;
605}
606
607
608#define YY_NEVER_INTERACTIVE 1
609/* Comments start with a ; and go till end of line */
610/* Variable(Def) identifiers start with a % sign */
611/* Label identifiers end with a colon */
612/* Quoted names can contain any character except " and \ */
613/* [PN]Integer: match positive and negative literal integer values that
614 * are preceeded by a '%' character. These represent unnamed variable slots.
615 */
616/* E[PN]Integer: match positive and negative literal integer values */
617#line 618 "Lexer.cpp"
618
619/* Macros after this point can all be overridden by user definitions in
620 * section 1.
621 */
622
623#ifndef YY_SKIP_YYWRAP
624#ifdef __cplusplus
625extern "C" int yywrap YY_PROTO(( void ));
626#else
627extern int yywrap YY_PROTO(( void ));
628#endif
629#endif
630
631#ifndef YY_NO_UNPUT
632static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
633#endif
634
635#ifndef yytext_ptr
636static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
637#endif
638
639#ifdef YY_NEED_STRLEN
640static int yy_flex_strlen YY_PROTO(( yyconst char * ));
641#endif
642
643#ifndef YY_NO_INPUT
644#ifdef __cplusplus
645static int yyinput YY_PROTO(( void ));
646#else
647static int input YY_PROTO(( void ));
648#endif
649#endif
650
651#if YY_STACK_USED
652static int yy_start_stack_ptr = 0;
653static int yy_start_stack_depth = 0;
654static int *yy_start_stack = 0;
655#ifndef YY_NO_PUSH_STATE
656static void yy_push_state YY_PROTO(( int new_state ));
657#endif
658#ifndef YY_NO_POP_STATE
659static void yy_pop_state YY_PROTO(( void ));
660#endif
661#ifndef YY_NO_TOP_STATE
662static int yy_top_state YY_PROTO(( void ));
663#endif
664
665#else
666#define YY_NO_PUSH_STATE 1
667#define YY_NO_POP_STATE 1
668#define YY_NO_TOP_STATE 1
669#endif
670
671#ifdef YY_MALLOC_DECL
672YY_MALLOC_DECL
673#else
674#if __STDC__
675#ifndef __cplusplus
676#include <stdlib.h>
677#endif
678#else
679/* Just try to get by without declaring the routines. This will fail
680 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
681 * or sizeof(void*) != sizeof(int).
682 */
683#endif
684#endif
685
686/* Amount of stuff to slurp up with each read. */
687#ifndef YY_READ_BUF_SIZE
688#define YY_READ_BUF_SIZE 8192
689#endif
690
691/* Copy whatever the last rule matched to the standard output. */
692
693#ifndef ECHO
694/* This used to be an fputs(), but since the string might contain NUL's,
695 * we now use fwrite().
696 */
697#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
698#endif
699
700/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
701 * is returned in "result".
702 */
703#ifndef YY_INPUT
704#define YY_INPUT(buf,result,max_size) \
705 if ( yy_current_buffer->yy_is_interactive ) \
706 { \
707 int c = '*', n; \
708 for ( n = 0; n < max_size && \
709 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
710 buf[n] = (char) c; \
711 if ( c == '\n' ) \
712 buf[n++] = (char) c; \
713 if ( c == EOF && ferror( yyin ) ) \
714 YY_FATAL_ERROR( "input in flex scanner failed" ); \
715 result = n; \
716 } \
717 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
718 && ferror( yyin ) ) \
719 YY_FATAL_ERROR( "input in flex scanner failed" );
720#endif
721
722/* No semi-colon after return; correct usage is to write "yyterminate();" -
723 * we don't want an extra ';' after the "return" because that will cause
724 * some compilers to complain about unreachable statements.
725 */
726#ifndef yyterminate
727#define yyterminate() return YY_NULL
728#endif
729
730/* Number of entries by which start-condition stack grows. */
731#ifndef YY_START_STACK_INCR
732#define YY_START_STACK_INCR 25
733#endif
734
735/* Report a fatal error. */
736#ifndef YY_FATAL_ERROR
737#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
738#endif
739
740/* Default declaration of generated scanner - a define so the user can
741 * easily add parameters.
742 */
743#ifndef YY_DECL
744#define YY_DECL int yylex YY_PROTO(( void ))
745#endif
746
747/* Code executed at the beginning of each rule, after yytext and yyleng
748 * have been set up.
749 */
750#ifndef YY_USER_ACTION
751#define YY_USER_ACTION
752#endif
753
754/* Code executed at the end of each rule. */
755#ifndef YY_BREAK
756#define YY_BREAK break;
757#endif
758
759#define YY_RULE_SETUP \
760 YY_USER_ACTION
761
762YY_DECL
763 {
764 register yy_state_type yy_current_state;
765 register char *yy_cp, *yy_bp;
766 register int yy_act;
767
768#line 83 "Lexer.l"
769
770
771#line 772 "Lexer.cpp"
772
773 if ( yy_init )
774 {
775 yy_init = 0;
776
777#ifdef YY_USER_INIT
778 YY_USER_INIT;
779#endif
780
781 if ( ! yy_start )
782 yy_start = 1; /* first start state */
783
784 if ( ! yyin )
785 yyin = stdin;
786
787 if ( ! yyout )
788 yyout = stdout;
789
790 if ( ! yy_current_buffer )
791 yy_current_buffer =
792 yy_create_buffer( yyin, YY_BUF_SIZE );
793
794 yy_load_buffer_state();
795 }
796
797 while ( 1 ) /* loops until end-of-file is reached */
798 {
799 yy_cp = yy_c_buf_p;
800
801 /* Support of yytext. */
802 *yy_cp = yy_hold_char;
803
804 /* yy_bp points to the position in yy_ch_buf of the start of
805 * the current run.
806 */
807 yy_bp = yy_cp;
808
809 yy_current_state = yy_start;
810 yy_state_ptr = yy_state_buf;
811 *yy_state_ptr++ = yy_current_state;
812yy_match:
813 do
814 {
815 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
816 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
817 {
818 yy_current_state = (int) yy_def[yy_current_state];
819 if ( yy_current_state >= 198 )
820 yy_c = yy_meta[(unsigned int) yy_c];
821 }
822 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
823 *yy_state_ptr++ = yy_current_state;
824 ++yy_cp;
825 }
826 while ( yy_current_state != 197 );
827
828yy_find_action:
829 yy_current_state = *--yy_state_ptr;
830 yy_lp = yy_accept[yy_current_state];
831 for ( ; ; ) /* until we find what rule we matched */
832 {
833 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
834 {
835 yy_act = yy_acclist[yy_lp];
836 {
837 yy_full_match = yy_cp;
838 break;
839 }
840 }
841 --yy_cp;
842 yy_current_state = *--yy_state_ptr;
843 yy_lp = yy_accept[yy_current_state];
844 }
845
846 YY_DO_BEFORE_ACTION;
847
848 if ( yy_act != YY_END_OF_BUFFER )
849 {
850 int yyl;
851 for ( yyl = 0; yyl < yyleng; ++yyl )
852 if ( yytext[yyl] == '\n' )
853 ++yylineno;
854 }
855
856do_action: /* This label is used only to access EOF actions. */
857
858
859 switch ( yy_act )
860 { /* beginning of action switch */
861case 1:
862YY_RULE_SETUP
863#line 85 "Lexer.l"
864{ /* Ignore comments for now */ }
865 YY_BREAK
866case 2:
867YY_RULE_SETUP
868#line 87 "Lexer.l"
869{ return BEGINTOK; }
870 YY_BREAK
871case 3:
872YY_RULE_SETUP
873#line 88 "Lexer.l"
874{ return END; }
875 YY_BREAK
876case 4:
877YY_RULE_SETUP
878#line 89 "Lexer.l"
879{ return TRUE; }
880 YY_BREAK
881case 5:
882YY_RULE_SETUP
883#line 90 "Lexer.l"
884{ return FALSE; }
885 YY_BREAK
886case 6:
887YY_RULE_SETUP
888#line 91 "Lexer.l"
889{ return DECLARE; }
890 YY_BREAK
891case 7:
892YY_RULE_SETUP
893#line 92 "Lexer.l"
894{ return IMPLEMENTATION; }
895 YY_BREAK
896case 8:
897YY_RULE_SETUP
898#line 94 "Lexer.l"
899{ cerr << "deprecated argument '-' used!\n"; return '-'; }
900 YY_BREAK
901case 9:
902YY_RULE_SETUP
903#line 95 "Lexer.l"
904{ cerr << "deprecated type 'bb' used!\n"; llvmAsmlval.TypeVal = Type::LabelTy; return LABEL;}
905 YY_BREAK
906case 10:
907YY_RULE_SETUP
908#line 97 "Lexer.l"
909{ llvmAsmlval.TypeVal = Type::VoidTy ; return VOID; }
910 YY_BREAK
911case 11:
912YY_RULE_SETUP
913#line 98 "Lexer.l"
914{ llvmAsmlval.TypeVal = Type::BoolTy ; return BOOL; }
915 YY_BREAK
916case 12:
917YY_RULE_SETUP
918#line 99 "Lexer.l"
919{ llvmAsmlval.TypeVal = Type::SByteTy ; return SBYTE; }
920 YY_BREAK
921case 13:
922YY_RULE_SETUP
923#line 100 "Lexer.l"
924{ llvmAsmlval.TypeVal = Type::UByteTy ; return UBYTE; }
925 YY_BREAK
926case 14:
927YY_RULE_SETUP
928#line 101 "Lexer.l"
929{ llvmAsmlval.TypeVal = Type::ShortTy ; return SHORT; }
930 YY_BREAK
931case 15:
932YY_RULE_SETUP
933#line 102 "Lexer.l"
934{ llvmAsmlval.TypeVal = Type::UShortTy; return USHORT; }
935 YY_BREAK
936case 16:
937YY_RULE_SETUP
938#line 103 "Lexer.l"
939{ llvmAsmlval.TypeVal = Type::IntTy ; return INT; }
940 YY_BREAK
941case 17:
942YY_RULE_SETUP
943#line 104 "Lexer.l"
944{ llvmAsmlval.TypeVal = Type::UIntTy ; return UINT; }
945 YY_BREAK
946case 18:
947YY_RULE_SETUP
948#line 105 "Lexer.l"
949{ llvmAsmlval.TypeVal = Type::LongTy ; return LONG; }
950 YY_BREAK
951case 19:
952YY_RULE_SETUP
953#line 106 "Lexer.l"
954{ llvmAsmlval.TypeVal = Type::ULongTy ; return ULONG; }
955 YY_BREAK
956case 20:
957YY_RULE_SETUP
958#line 107 "Lexer.l"
959{ llvmAsmlval.TypeVal = Type::FloatTy ; return FLOAT; }
960 YY_BREAK
961case 21:
962YY_RULE_SETUP
963#line 108 "Lexer.l"
964{ llvmAsmlval.TypeVal = Type::DoubleTy; return DOUBLE; }
965 YY_BREAK
966case 22:
967YY_RULE_SETUP
968#line 110 "Lexer.l"
969{ llvmAsmlval.TypeVal = Type::TypeTy ; return TYPE; }
970 YY_BREAK
971case 23:
972YY_RULE_SETUP
973#line 112 "Lexer.l"
974{ llvmAsmlval.TypeVal = Type::LabelTy ; return LABEL; }
975 YY_BREAK
976case 24:
977YY_RULE_SETUP
978#line 114 "Lexer.l"
979{ RET_TOK(UnaryOpVal, Neg, NEG); }
980 YY_BREAK
981case 25:
982YY_RULE_SETUP
983#line 115 "Lexer.l"
984{ RET_TOK(UnaryOpVal, Not, NOT); }
985 YY_BREAK
986case 26:
987YY_RULE_SETUP
988#line 117 "Lexer.l"
989{ return PHI; }
990 YY_BREAK
991case 27:
992YY_RULE_SETUP
993#line 118 "Lexer.l"
994{ return CALL; }
995 YY_BREAK
996case 28:
997YY_RULE_SETUP
998#line 119 "Lexer.l"
999{ RET_TOK(BinaryOpVal, Add, ADD); }
1000 YY_BREAK
1001case 29:
1002YY_RULE_SETUP
1003#line 120 "Lexer.l"
1004{ RET_TOK(BinaryOpVal, Sub, SUB); }
1005 YY_BREAK
1006case 30:
1007YY_RULE_SETUP
1008#line 121 "Lexer.l"
1009{ RET_TOK(BinaryOpVal, Mul, MUL); }
1010 YY_BREAK
1011case 31:
1012YY_RULE_SETUP
1013#line 122 "Lexer.l"
1014{ RET_TOK(BinaryOpVal, Div, DIV); }
1015 YY_BREAK
1016case 32:
1017YY_RULE_SETUP
1018#line 123 "Lexer.l"
1019{ RET_TOK(BinaryOpVal, Rem, REM); }
1020 YY_BREAK
1021case 33:
1022YY_RULE_SETUP
1023#line 124 "Lexer.l"
1024{ RET_TOK(BinaryOpVal, SetNE, SETNE); }
1025 YY_BREAK
1026case 34:
1027YY_RULE_SETUP
1028#line 125 "Lexer.l"
1029{ RET_TOK(BinaryOpVal, SetEQ, SETEQ); }
1030 YY_BREAK
1031case 35:
1032YY_RULE_SETUP
1033#line 126 "Lexer.l"
1034{ RET_TOK(BinaryOpVal, SetLT, SETLT); }
1035 YY_BREAK
1036case 36:
1037YY_RULE_SETUP
1038#line 127 "Lexer.l"
1039{ RET_TOK(BinaryOpVal, SetGT, SETGT); }
1040 YY_BREAK
1041case 37:
1042YY_RULE_SETUP
1043#line 128 "Lexer.l"
1044{ RET_TOK(BinaryOpVal, SetLE, SETLE); }
1045 YY_BREAK
1046case 38:
1047YY_RULE_SETUP
1048#line 129 "Lexer.l"
1049{ RET_TOK(BinaryOpVal, SetGE, SETGE); }
1050 YY_BREAK
1051case 39:
1052YY_RULE_SETUP
1053#line 131 "Lexer.l"
1054{ RET_TOK(TermOpVal, Ret, RET); }
1055 YY_BREAK
1056case 40:
1057YY_RULE_SETUP
1058#line 132 "Lexer.l"
1059{ RET_TOK(TermOpVal, Br, BR); }
1060 YY_BREAK
1061case 41:
1062YY_RULE_SETUP
1063#line 133 "Lexer.l"
1064{ RET_TOK(TermOpVal, Switch, SWITCH); }
1065 YY_BREAK
1066case 42:
1067YY_RULE_SETUP
1068#line 136 "Lexer.l"
1069{ RET_TOK(MemOpVal, Malloc, MALLOC); }
1070 YY_BREAK
1071case 43:
1072YY_RULE_SETUP
1073#line 137 "Lexer.l"
1074{ RET_TOK(MemOpVal, Alloca, ALLOCA); }
1075 YY_BREAK
1076case 44:
1077YY_RULE_SETUP
1078#line 138 "Lexer.l"
1079{ RET_TOK(MemOpVal, Free, FREE); }
1080 YY_BREAK
1081case 45:
1082YY_RULE_SETUP
1083#line 139 "Lexer.l"
1084{ RET_TOK(MemOpVal, Load, LOAD); }
1085 YY_BREAK
1086case 46:
1087YY_RULE_SETUP
1088#line 140 "Lexer.l"
1089{ RET_TOK(MemOpVal, Store, STORE); }
1090 YY_BREAK
1091case 47:
1092YY_RULE_SETUP
1093#line 141 "Lexer.l"
1094{ RET_TOK(MemOpVal, GetField, GETFIELD); }
1095 YY_BREAK
1096case 48:
1097YY_RULE_SETUP
1098#line 142 "Lexer.l"
1099{ RET_TOK(MemOpVal, PutField, PUTFIELD); }
1100 YY_BREAK
1101case 49:
1102YY_RULE_SETUP
1103#line 145 "Lexer.l"
1104{ llvmAsmlval.StrVal = strdup(yytext+1); return VAR_ID; }
1105 YY_BREAK
1106case 50:
1107YY_RULE_SETUP
1108#line 146 "Lexer.l"
1109{
1110 yytext[strlen(yytext)-1] = 0; // nuke colon
1111 llvmAsmlval.StrVal = strdup(yytext);
1112 return LABELSTR;
1113 }
1114 YY_BREAK
1115case 51:
1116YY_RULE_SETUP
1117#line 152 "Lexer.l"
1118{
1119 yytext[strlen(yytext)-1] = 0; // nuke end quote
1120 llvmAsmlval.StrVal = strdup(yytext+1); // Nuke start quote
1121 return STRINGCONSTANT;
1122 }
1123 YY_BREAK
1124case 52:
1125YY_RULE_SETUP
1126#line 159 "Lexer.l"
1127{ llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
1128 YY_BREAK
1129case 53:
1130YY_RULE_SETUP
1131#line 160 "Lexer.l"
1132{
1133 uint64_t Val = atoull(yytext+1);
1134 // +1: we have bigger negative range
1135 if (Val > (uint64_t)INT64_MAX+1)
1136 ThrowException("Constant too large for signed 64 bits!");
1137 llvmAsmlval.SInt64Val = -Val;
1138 return ESINT64VAL;
1139 }
1140 YY_BREAK
1141case 54:
1142YY_RULE_SETUP
1143#line 170 "Lexer.l"
1144{ llvmAsmlval.UIntVal = atoull(yytext+1); return UINTVAL; }
1145 YY_BREAK
1146case 55:
1147YY_RULE_SETUP
1148#line 171 "Lexer.l"
1149{
1150 uint64_t Val = atoull(yytext+2);
1151 // +1: we have bigger negative range
1152 if (Val > (uint64_t)INT32_MAX+1)
1153 ThrowException("Constant too large for signed 32 bits!");
1154 llvmAsmlval.SIntVal = -Val;
1155 return SINTVAL;
1156 }
1157 YY_BREAK
1158case 56:
1159YY_RULE_SETUP
1160#line 181 "Lexer.l"
1161{ /* Ignore whitespace */ }
1162 YY_BREAK
1163case 57:
1164YY_RULE_SETUP
1165#line 182 "Lexer.l"
1166{ /*printf("'%s'", yytext);*/ return yytext[0]; }
1167 YY_BREAK
1168case 58:
1169YY_RULE_SETUP
1170#line 184 "Lexer.l"
1171YY_FATAL_ERROR( "flex scanner jammed" );
1172 YY_BREAK
1173#line 1175 "Lexer.cpp"
1174 case YY_STATE_EOF(INITIAL):
1175 yyterminate();
1176
1177 case YY_END_OF_BUFFER:
1178 {
1179 /* Amount of text matched not including the EOB char. */
1180 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1181
1182 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1183 *yy_cp = yy_hold_char;
1184 YY_RESTORE_YY_MORE_OFFSET
1185
1186 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1187 {
1188 /* We're scanning a new file or input source. It's
1189 * possible that this happened because the user
1190 * just pointed yyin at a new source and called
1191 * yylex(). If so, then we have to assure
1192 * consistency between yy_current_buffer and our
1193 * globals. Here is the right place to do so, because
1194 * this is the first action (other than possibly a
1195 * back-up) that will match for the new input source.
1196 */
1197 yy_n_chars = yy_current_buffer->yy_n_chars;
1198 yy_current_buffer->yy_input_file = yyin;
1199 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1200 }
1201
1202 /* Note that here we test for yy_c_buf_p "<=" to the position
1203 * of the first EOB in the buffer, since yy_c_buf_p will
1204 * already have been incremented past the NUL character
1205 * (since all states make transitions on EOB to the
1206 * end-of-buffer state). Contrast this with the test
1207 * in input().
1208 */
1209 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1210 { /* This was really a NUL. */
1211 yy_state_type yy_next_state;
1212
1213 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1214
1215 yy_current_state = yy_get_previous_state();
1216
1217 /* Okay, we're now positioned to make the NUL
1218 * transition. We couldn't have
1219 * yy_get_previous_state() go ahead and do it
1220 * for us because it doesn't know how to deal
1221 * with the possibility of jamming (and we don't
1222 * want to build jamming into it because then it
1223 * will run more slowly).
1224 */
1225
1226 yy_next_state = yy_try_NUL_trans( yy_current_state );
1227
1228 yy_bp = yytext_ptr + YY_MORE_ADJ;
1229
1230 if ( yy_next_state )
1231 {
1232 /* Consume the NUL. */
1233 yy_cp = ++yy_c_buf_p;
1234 yy_current_state = yy_next_state;
1235 goto yy_match;
1236 }
1237
1238 else
1239 {
1240 yy_cp = yy_c_buf_p;
1241 goto yy_find_action;
1242 }
1243 }
1244
1245 else switch ( yy_get_next_buffer() )
1246 {
1247 case EOB_ACT_END_OF_FILE:
1248 {
1249 yy_did_buffer_switch_on_eof = 0;
1250
1251 if ( yywrap() )
1252 {
1253 /* Note: because we've taken care in
1254 * yy_get_next_buffer() to have set up
1255 * yytext, we can now set up
1256 * yy_c_buf_p so that if some total
1257 * hoser (like flex itself) wants to
1258 * call the scanner after we return the
1259 * YY_NULL, it'll still work - another
1260 * YY_NULL will get returned.
1261 */
1262 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1263
1264 yy_act = YY_STATE_EOF(YY_START);
1265 goto do_action;
1266 }
1267
1268 else
1269 {
1270 if ( ! yy_did_buffer_switch_on_eof )
1271 YY_NEW_FILE;
1272 }
1273 break;
1274 }
1275
1276 case EOB_ACT_CONTINUE_SCAN:
1277 yy_c_buf_p =
1278 yytext_ptr + yy_amount_of_matched_text;
1279
1280 yy_current_state = yy_get_previous_state();
1281
1282 yy_cp = yy_c_buf_p;
1283 yy_bp = yytext_ptr + YY_MORE_ADJ;
1284 goto yy_match;
1285
1286 case EOB_ACT_LAST_MATCH:
1287 yy_c_buf_p =
1288 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1289
1290 yy_current_state = yy_get_previous_state();
1291
1292 yy_cp = yy_c_buf_p;
1293 yy_bp = yytext_ptr + YY_MORE_ADJ;
1294 goto yy_find_action;
1295 }
1296 break;
1297 }
1298
1299 default:
1300 YY_FATAL_ERROR(
1301 "fatal flex scanner internal error--no action found" );
1302 } /* end of action switch */
1303 } /* end of scanning one token */
1304 } /* end of yylex */
1305
1306
1307/* yy_get_next_buffer - try to read in a new buffer
1308 *
1309 * Returns a code representing an action:
1310 * EOB_ACT_LAST_MATCH -
1311 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1312 * EOB_ACT_END_OF_FILE - end of file
1313 */
1314
1315static int yy_get_next_buffer()
1316 {
1317 register char *dest = yy_current_buffer->yy_ch_buf;
1318 register char *source = yytext_ptr;
1319 register int number_to_move, i;
1320 int ret_val;
1321
1322 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1323 YY_FATAL_ERROR(
1324 "fatal flex scanner internal error--end of buffer missed" );
1325
1326 if ( yy_current_buffer->yy_fill_buffer == 0 )
1327 { /* Don't try to fill the buffer, so this is an EOF. */
1328 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1329 {
1330 /* We matched a single character, the EOB, so
1331 * treat this as a final EOF.
1332 */
1333 return EOB_ACT_END_OF_FILE;
1334 }
1335
1336 else
1337 {
1338 /* We matched some text prior to the EOB, first
1339 * process it.
1340 */
1341 return EOB_ACT_LAST_MATCH;
1342 }
1343 }
1344
1345 /* Try to read more data. */
1346
1347 /* First move last chars to start of buffer. */
1348 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1349
1350 for ( i = 0; i < number_to_move; ++i )
1351 *(dest++) = *(source++);
1352
1353 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1354 /* don't do the read, it's not guaranteed to return an EOF,
1355 * just force an EOF
1356 */
1357 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1358
1359 else
1360 {
1361 int num_to_read =
1362 yy_current_buffer->yy_buf_size - number_to_move - 1;
1363
1364 while ( num_to_read <= 0 )
1365 { /* Not enough room in the buffer - grow it. */
1366#ifdef YY_USES_REJECT
1367 YY_FATAL_ERROR(
1368"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1369#else
1370
1371 /* just a shorter name for the current buffer */
1372 YY_BUFFER_STATE b = yy_current_buffer;
1373
1374 int yy_c_buf_p_offset =
1375 (int) (yy_c_buf_p - b->yy_ch_buf);
1376
1377 if ( b->yy_is_our_buffer )
1378 {
1379 int new_size = b->yy_buf_size * 2;
1380
1381 if ( new_size <= 0 )
1382 b->yy_buf_size += b->yy_buf_size / 8;
1383 else
1384 b->yy_buf_size *= 2;
1385
1386 b->yy_ch_buf = (char *)
1387 /* Include room in for 2 EOB chars. */
1388 yy_flex_realloc( (void *) b->yy_ch_buf,
1389 b->yy_buf_size + 2 );
1390 }
1391 else
1392 /* Can't grow it, we don't own it. */
1393 b->yy_ch_buf = 0;
1394
1395 if ( ! b->yy_ch_buf )
1396 YY_FATAL_ERROR(
1397 "fatal error - scanner input buffer overflow" );
1398
1399 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1400
1401 num_to_read = yy_current_buffer->yy_buf_size -
1402 number_to_move - 1;
1403#endif
1404 }
1405
1406 if ( num_to_read > YY_READ_BUF_SIZE )
1407 num_to_read = YY_READ_BUF_SIZE;
1408
1409 /* Read in more data. */
1410 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1411 yy_n_chars, num_to_read );
1412
1413 yy_current_buffer->yy_n_chars = yy_n_chars;
1414 }
1415
1416 if ( yy_n_chars == 0 )
1417 {
1418 if ( number_to_move == YY_MORE_ADJ )
1419 {
1420 ret_val = EOB_ACT_END_OF_FILE;
1421 yyrestart( yyin );
1422 }
1423
1424 else
1425 {
1426 ret_val = EOB_ACT_LAST_MATCH;
1427 yy_current_buffer->yy_buffer_status =
1428 YY_BUFFER_EOF_PENDING;
1429 }
1430 }
1431
1432 else
1433 ret_val = EOB_ACT_CONTINUE_SCAN;
1434
1435 yy_n_chars += number_to_move;
1436 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1437 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1438
1439 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1440
1441 return ret_val;
1442 }
1443
1444
1445/* yy_get_previous_state - get the state just before the EOB char was reached */
1446
1447static yy_state_type yy_get_previous_state()
1448 {
1449 register yy_state_type yy_current_state;
1450 register char *yy_cp;
1451
1452 yy_current_state = yy_start;
1453 yy_state_ptr = yy_state_buf;
1454 *yy_state_ptr++ = yy_current_state;
1455
1456 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1457 {
1458 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1459 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1460 {
1461 yy_current_state = (int) yy_def[yy_current_state];
1462 if ( yy_current_state >= 198 )
1463 yy_c = yy_meta[(unsigned int) yy_c];
1464 }
1465 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1466 *yy_state_ptr++ = yy_current_state;
1467 }
1468
1469 return yy_current_state;
1470 }
1471
1472
1473/* yy_try_NUL_trans - try to make a transition on the NUL character
1474 *
1475 * synopsis
1476 * next_state = yy_try_NUL_trans( current_state );
1477 */
1478
1479#ifdef YY_USE_PROTOS
1480static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1481#else
1482static yy_state_type yy_try_NUL_trans( yy_current_state )
1483yy_state_type yy_current_state;
1484#endif
1485 {
1486 register int yy_is_jam;
1487
1488 register YY_CHAR yy_c = 1;
1489 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1490 {
1491 yy_current_state = (int) yy_def[yy_current_state];
1492 if ( yy_current_state >= 198 )
1493 yy_c = yy_meta[(unsigned int) yy_c];
1494 }
1495 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1496 yy_is_jam = (yy_current_state == 197);
1497 if ( ! yy_is_jam )
1498 *yy_state_ptr++ = yy_current_state;
1499
1500 return yy_is_jam ? 0 : yy_current_state;
1501 }
1502
1503
1504#ifndef YY_NO_UNPUT
1505#ifdef YY_USE_PROTOS
1506static inline void yyunput( int c, register char *yy_bp )
1507#else
1508static inline void yyunput( c, yy_bp )
1509int c;
1510register char *yy_bp;
1511#endif
1512 {
1513 register char *yy_cp = yy_c_buf_p;
1514
1515 /* undo effects of setting up yytext */
1516 *yy_cp = yy_hold_char;
1517
1518 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1519 { /* need to shift things up to make room */
1520 /* +2 for EOB chars. */
1521 register int number_to_move = yy_n_chars + 2;
1522 register char *dest = &yy_current_buffer->yy_ch_buf[
1523 yy_current_buffer->yy_buf_size + 2];
1524 register char *source =
1525 &yy_current_buffer->yy_ch_buf[number_to_move];
1526
1527 while ( source > yy_current_buffer->yy_ch_buf )
1528 *--dest = *--source;
1529
1530 yy_cp += (int) (dest - source);
1531 yy_bp += (int) (dest - source);
1532 yy_current_buffer->yy_n_chars =
1533 yy_n_chars = yy_current_buffer->yy_buf_size;
1534
1535 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1536 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1537 }
1538
1539 *--yy_cp = (char) c;
1540
1541 if ( c == '\n' )
1542 --yylineno;
1543
1544 yytext_ptr = yy_bp;
1545 yy_hold_char = *yy_cp;
1546 yy_c_buf_p = yy_cp;
1547 }
1548#endif /* ifndef YY_NO_UNPUT */
1549
1550
1551#ifdef __cplusplus
1552static int yyinput()
1553#else
1554static int input()
1555#endif
1556 {
1557 int c;
1558
1559 *yy_c_buf_p = yy_hold_char;
1560
1561 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1562 {
1563 /* yy_c_buf_p now points to the character we want to return.
1564 * If this occurs *before* the EOB characters, then it's a
1565 * valid NUL; if not, then we've hit the end of the buffer.
1566 */
1567 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1568 /* This was really a NUL. */
1569 *yy_c_buf_p = '\0';
1570
1571 else
1572 { /* need more input */
1573 int offset = yy_c_buf_p - yytext_ptr;
1574 ++yy_c_buf_p;
1575
1576 switch ( yy_get_next_buffer() )
1577 {
1578 case EOB_ACT_LAST_MATCH:
1579 /* This happens because yy_g_n_b()
1580 * sees that we've accumulated a
1581 * token and flags that we need to
1582 * try matching the token before
1583 * proceeding. But for input(),
1584 * there's no matching to consider.
1585 * So convert the EOB_ACT_LAST_MATCH
1586 * to EOB_ACT_END_OF_FILE.
1587 */
1588
1589 /* Reset buffer status. */
1590 yyrestart( yyin );
1591
1592 /* fall through */
1593
1594 case EOB_ACT_END_OF_FILE:
1595 {
1596 if ( yywrap() )
1597 return EOF;
1598
1599 if ( ! yy_did_buffer_switch_on_eof )
1600 YY_NEW_FILE;
1601#ifdef __cplusplus
1602 return yyinput();
1603#else
1604 return input();
1605#endif
1606 }
1607
1608 case EOB_ACT_CONTINUE_SCAN:
1609 yy_c_buf_p = yytext_ptr + offset;
1610 break;
1611 }
1612 }
1613 }
1614
1615 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
1616 *yy_c_buf_p = '\0'; /* preserve yytext */
1617 yy_hold_char = *++yy_c_buf_p;
1618
1619 if ( c == '\n' )
1620 ++yylineno;
1621
1622 return c;
1623 }
1624
1625
1626#ifdef YY_USE_PROTOS
1627void yyrestart( FILE *input_file )
1628#else
1629void yyrestart( input_file )
1630FILE *input_file;
1631#endif
1632 {
1633 if ( ! yy_current_buffer )
1634 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1635
1636 yy_init_buffer( yy_current_buffer, input_file );
1637 yy_load_buffer_state();
1638 }
1639
1640
1641#ifdef YY_USE_PROTOS
1642void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1643#else
1644void yy_switch_to_buffer( new_buffer )
1645YY_BUFFER_STATE new_buffer;
1646#endif
1647 {
1648 if ( yy_current_buffer == new_buffer )
1649 return;
1650
1651 if ( yy_current_buffer )
1652 {
1653 /* Flush out information for old buffer. */
1654 *yy_c_buf_p = yy_hold_char;
1655 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1656 yy_current_buffer->yy_n_chars = yy_n_chars;
1657 }
1658
1659 yy_current_buffer = new_buffer;
1660 yy_load_buffer_state();
1661
1662 /* We don't actually know whether we did this switch during
1663 * EOF (yywrap()) processing, but the only time this flag
1664 * is looked at is after yywrap() is called, so it's safe
1665 * to go ahead and always set it.
1666 */
1667 yy_did_buffer_switch_on_eof = 1;
1668 }
1669
1670
1671#ifdef YY_USE_PROTOS
1672void yy_load_buffer_state( void )
1673#else
1674void yy_load_buffer_state()
1675#endif
1676 {
1677 yy_n_chars = yy_current_buffer->yy_n_chars;
1678 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1679 yyin = yy_current_buffer->yy_input_file;
1680 yy_hold_char = *yy_c_buf_p;
1681 }
1682
1683
1684#ifdef YY_USE_PROTOS
1685YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1686#else
1687YY_BUFFER_STATE yy_create_buffer( file, size )
1688FILE *file;
1689int size;
1690#endif
1691 {
1692 YY_BUFFER_STATE b;
1693
1694 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1695 if ( ! b )
1696 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1697
1698 b->yy_buf_size = size;
1699
1700 /* yy_ch_buf has to be 2 characters longer than the size given because
1701 * we need to put in 2 end-of-buffer characters.
1702 */
1703 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1704 if ( ! b->yy_ch_buf )
1705 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1706
1707 b->yy_is_our_buffer = 1;
1708
1709 yy_init_buffer( b, file );
1710
1711 return b;
1712 }
1713
1714
1715#ifdef YY_USE_PROTOS
1716void yy_delete_buffer( YY_BUFFER_STATE b )
1717#else
1718void yy_delete_buffer( b )
1719YY_BUFFER_STATE b;
1720#endif
1721 {
1722 if ( ! b )
1723 return;
1724
1725 if ( b == yy_current_buffer )
1726 yy_current_buffer = (YY_BUFFER_STATE) 0;
1727
1728 if ( b->yy_is_our_buffer )
1729 yy_flex_free( (void *) b->yy_ch_buf );
1730
1731 yy_flex_free( (void *) b );
1732 }
1733
1734
1735#ifndef YY_ALWAYS_INTERACTIVE
1736#ifndef YY_NEVER_INTERACTIVE
1737extern int isatty YY_PROTO(( int ));
1738#endif
1739#endif
1740
1741#ifdef YY_USE_PROTOS
1742void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1743#else
1744void yy_init_buffer( b, file )
1745YY_BUFFER_STATE b;
1746FILE *file;
1747#endif
1748
1749
1750 {
1751 yy_flush_buffer( b );
1752
1753 b->yy_input_file = file;
1754 b->yy_fill_buffer = 1;
1755
1756#if YY_ALWAYS_INTERACTIVE
1757 b->yy_is_interactive = 1;
1758#else
1759#if YY_NEVER_INTERACTIVE
1760 b->yy_is_interactive = 0;
1761#else
1762 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1763#endif
1764#endif
1765 }
1766
1767
1768#ifdef YY_USE_PROTOS
1769void yy_flush_buffer( YY_BUFFER_STATE b )
1770#else
1771void yy_flush_buffer( b )
1772YY_BUFFER_STATE b;
1773#endif
1774
1775 {
1776 if ( ! b )
1777 return;
1778
1779 b->yy_n_chars = 0;
1780
1781 /* We always need two end-of-buffer characters. The first causes
1782 * a transition to the end-of-buffer state. The second causes
1783 * a jam in that state.
1784 */
1785 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1786 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1787
1788 b->yy_buf_pos = &b->yy_ch_buf[0];
1789
1790 b->yy_at_bol = 1;
1791 b->yy_buffer_status = YY_BUFFER_NEW;
1792
1793 if ( b == yy_current_buffer )
1794 yy_load_buffer_state();
1795 }
1796
1797
1798#ifndef YY_NO_SCAN_BUFFER
1799#ifdef YY_USE_PROTOS
1800YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
1801#else
1802YY_BUFFER_STATE yy_scan_buffer( base, size )
1803char *base;
1804yy_size_t size;
1805#endif
1806 {
1807 YY_BUFFER_STATE b;
1808
1809 if ( size < 2 ||
1810 base[size-2] != YY_END_OF_BUFFER_CHAR ||
1811 base[size-1] != YY_END_OF_BUFFER_CHAR )
1812 /* They forgot to leave room for the EOB's. */
1813 return 0;
1814
1815 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1816 if ( ! b )
1817 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1818
1819 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1820 b->yy_buf_pos = b->yy_ch_buf = base;
1821 b->yy_is_our_buffer = 0;
1822 b->yy_input_file = 0;
1823 b->yy_n_chars = b->yy_buf_size;
1824 b->yy_is_interactive = 0;
1825 b->yy_at_bol = 1;
1826 b->yy_fill_buffer = 0;
1827 b->yy_buffer_status = YY_BUFFER_NEW;
1828
1829 yy_switch_to_buffer( b );
1830
1831 return b;
1832 }
1833#endif
1834
1835
1836#ifndef YY_NO_SCAN_STRING
1837#ifdef YY_USE_PROTOS
1838YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
1839#else
1840YY_BUFFER_STATE yy_scan_string( yy_str )
1841yyconst char *yy_str;
1842#endif
1843 {
1844 int len;
1845 for ( len = 0; yy_str[len]; ++len )
1846 ;
1847
1848 return yy_scan_bytes( yy_str, len );
1849 }
1850#endif
1851
1852
1853#ifndef YY_NO_SCAN_BYTES
1854#ifdef YY_USE_PROTOS
1855YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
1856#else
1857YY_BUFFER_STATE yy_scan_bytes( bytes, len )
1858yyconst char *bytes;
1859int len;
1860#endif
1861 {
1862 YY_BUFFER_STATE b;
1863 char *buf;
1864 yy_size_t n;
1865 int i;
1866
1867 /* Get memory for full buffer, including space for trailing EOB's. */
1868 n = len + 2;
1869 buf = (char *) yy_flex_alloc( n );
1870 if ( ! buf )
1871 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1872
1873 for ( i = 0; i < len; ++i )
1874 buf[i] = bytes[i];
1875
1876 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
1877
1878 b = yy_scan_buffer( buf, n );
1879 if ( ! b )
1880 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1881
1882 /* It's okay to grow etc. this buffer, and we should throw it
1883 * away when we're done.
1884 */
1885 b->yy_is_our_buffer = 1;
1886
1887 return b;
1888 }
1889#endif
1890
1891
1892#ifndef YY_NO_PUSH_STATE
1893#ifdef YY_USE_PROTOS
1894static void yy_push_state( int new_state )
1895#else
1896static void yy_push_state( new_state )
1897int new_state;
1898#endif
1899 {
1900 if ( yy_start_stack_ptr >= yy_start_stack_depth )
1901 {
1902 yy_size_t new_size;
1903
1904 yy_start_stack_depth += YY_START_STACK_INCR;
1905 new_size = yy_start_stack_depth * sizeof( int );
1906
1907 if ( ! yy_start_stack )
1908 yy_start_stack = (int *) yy_flex_alloc( new_size );
1909
1910 else
1911 yy_start_stack = (int *) yy_flex_realloc(
1912 (void *) yy_start_stack, new_size );
1913
1914 if ( ! yy_start_stack )
1915 YY_FATAL_ERROR(
1916 "out of memory expanding start-condition stack" );
1917 }
1918
1919 yy_start_stack[yy_start_stack_ptr++] = YY_START;
1920
1921 BEGIN(new_state);
1922 }
1923#endif
1924
1925
1926#ifndef YY_NO_POP_STATE
1927static void yy_pop_state()
1928 {
1929 if ( --yy_start_stack_ptr < 0 )
1930 YY_FATAL_ERROR( "start-condition stack underflow" );
1931
1932 BEGIN(yy_start_stack[yy_start_stack_ptr]);
1933 }
1934#endif
1935
1936
1937#ifndef YY_NO_TOP_STATE
1938static int yy_top_state()
1939 {
1940 return yy_start_stack[yy_start_stack_ptr - 1];
1941 }
1942#endif
1943
1944#ifndef YY_EXIT_FAILURE
1945#define YY_EXIT_FAILURE 2
1946#endif
1947
1948#ifdef YY_USE_PROTOS
1949static void yy_fatal_error( yyconst char msg[] )
1950#else
1951static void yy_fatal_error( msg )
1952char msg[];
1953#endif
1954 {
1955 (void) fprintf( stderr, "%s\n", msg );
1956 exit( YY_EXIT_FAILURE );
1957 }
1958
1959
1960
1961/* Redefine yyless() so it works in section 3 code. */
1962
1963#undef yyless
1964#define yyless(n) \
1965 do \
1966 { \
1967 /* Undo effects of setting up yytext. */ \
1968 yytext[yyleng] = yy_hold_char; \
1969 yy_c_buf_p = yytext + n; \
1970 yy_hold_char = *yy_c_buf_p; \
1971 *yy_c_buf_p = '\0'; \
1972 yyleng = n; \
1973 } \
1974 while ( 0 )
1975
1976
1977/* Internal utility routines. */
1978
1979#ifndef yytext_ptr
1980#ifdef YY_USE_PROTOS
1981static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
1982#else
1983static void yy_flex_strncpy( s1, s2, n )
1984char *s1;
1985yyconst char *s2;
1986int n;
1987#endif
1988 {
1989 register int i;
1990 for ( i = 0; i < n; ++i )
1991 s1[i] = s2[i];
1992 }
1993#endif
1994
1995#ifdef YY_NEED_STRLEN
1996#ifdef YY_USE_PROTOS
1997static int yy_flex_strlen( yyconst char *s )
1998#else
1999static int yy_flex_strlen( s )
2000yyconst char *s;
2001#endif
2002 {
2003 register int n;
2004 for ( n = 0; s[n]; ++n )
2005 ;
2006
2007 return n;
2008 }
2009#endif
2010
2011
2012#ifdef YY_USE_PROTOS
2013static void *yy_flex_alloc( yy_size_t size )
2014#else
2015static void *yy_flex_alloc( size )
2016yy_size_t size;
2017#endif
2018 {
2019 return (void *) malloc( size );
2020 }
2021
2022#ifdef YY_USE_PROTOS
2023static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
2024#else
2025static inline void *yy_flex_realloc( ptr, size )
2026void *ptr;
2027yy_size_t size;
2028#endif
2029 {
2030 /* The cast to (char *) in the following accommodates both
2031 * implementations that use char* generic pointers, and those
2032 * that use void* generic pointers. It works with the latter
2033 * because both ANSI C and C++ allow castless assignment from
2034 * any pointer type to void*, and deal with argument conversions
2035 * as though doing an assignment.
2036 */
2037 return (void *) realloc( (char *) ptr, size );
2038 }
2039
2040#ifdef YY_USE_PROTOS
2041static void yy_flex_free( void *ptr )
2042#else
2043static void yy_flex_free( ptr )
2044void *ptr;
2045#endif
2046 {
2047 free( ptr );
2048 }
2049
2050#if YY_MAIN
2051int main()
2052 {
2053 yylex();
2054 return 0;
2055 }
2056#endif
2057#line 184 "Lexer.l"
2058