/[ascend]/trunk/base/generic/compiler/scanner_no_lex.c
ViewVC logotype

Contents of /trunk/base/generic/compiler/scanner_no_lex.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1523 - (show annotations) (download) (as text)
Sat Jun 30 14:55:05 2007 UTC (13 years ago) by jpye
File MIME type: text/x-csrc
File size: 116941 byte(s)
Little bit on trying to fix debian build.
1
2 #line 3 "<stdout>"
3
4 #define YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 33
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
37 */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56 #endif /* ! C99 */
57
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX (4294967295U)
85 #endif
86
87 #endif /* ! FLEXINT_H */
88
89 #ifdef __cplusplus
90
91 /* The "const" storage-class-modifier is valid. */
92 #define YY_USE_CONST
93
94 #else /* ! __cplusplus */
95
96 #if __STDC__
97
98 #define YY_USE_CONST
99
100 #endif /* __STDC__ */
101 #endif /* ! __cplusplus */
102
103 #ifdef YY_USE_CONST
104 #define yyconst const
105 #else
106 #define yyconst
107 #endif
108
109 /* Returned upon end-of-file. */
110 #define YY_NULL 0
111
112 /* Promotes a possibly negative, possibly signed char to an unsigned
113 * integer for use as an array index. If the signed char is negative,
114 * we want to instead treat it as an 8-bit unsigned char, hence the
115 * double cast.
116 */
117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
118
119 /* Enter a start condition. This macro really ought to take a parameter,
120 * but we do it the disgusting crufty way forced on us by the ()-less
121 * definition of BEGIN.
122 */
123 #define BEGIN (yy_start) = 1 + 2 *
124
125 /* Translate the current start state into a value that can be later handed
126 * to BEGIN to return to the state. The YYSTATE alias is for lex
127 * compatibility.
128 */
129 #define YY_START (((yy_start) - 1) / 2)
130 #define YYSTATE YY_START
131
132 /* Action number for EOF rule of a given start state. */
133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
134
135 /* Special action meaning "start processing a new file". */
136 #define YY_NEW_FILE zz_restart(zz_in )
137
138 #define YY_END_OF_BUFFER_CHAR 0
139
140 /* Size of default input buffer. */
141 #ifndef YY_BUF_SIZE
142 #define YY_BUF_SIZE 16384
143 #endif
144
145 /* The state buf must be large enough to hold one state per character in the main buffer.
146 */
147 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148
149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
150 #define YY_TYPEDEF_YY_BUFFER_STATE
151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
152 #endif
153
154 extern int zz_leng;
155
156 extern FILE *zz_in, *zz_out;
157
158 #define EOB_ACT_CONTINUE_SCAN 0
159 #define EOB_ACT_END_OF_FILE 1
160 #define EOB_ACT_LAST_MATCH 2
161
162 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
163 * access to the local variable yy_act. Since yyless() is a macro, it would break
164 * existing scanners that call yyless() from OUTSIDE zz_lex.
165 * One obvious solution it to make yy_act a global. I tried that, and saw
166 * a 5% performance hit in a non-zz_lineno scanner, because yy_act is
167 * normally declared as a register variable-- so it is not worth it.
168 */
169 #define YY_LESS_LINENO(n) \
170 do { \
171 int yyl;\
172 for ( yyl = n; yyl < zz_leng; ++yyl )\
173 if ( zz_text[yyl] == '\n' )\
174 --zz_lineno;\
175 }while(0)
176
177 /* Return all but the first "n" matched characters back to the input stream. */
178 #define yyless(n) \
179 do \
180 { \
181 /* Undo effects of setting up zz_text. */ \
182 int yyless_macro_arg = (n); \
183 YY_LESS_LINENO(yyless_macro_arg);\
184 *yy_cp = (yy_hold_char); \
185 YY_RESTORE_YY_MORE_OFFSET \
186 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
187 YY_DO_BEFORE_ACTION; /* set up zz_text again */ \
188 } \
189 while ( 0 )
190
191 #define unput(c) yyunput( c, (yytext_ptr) )
192
193 /* The following is because we cannot portably get our hands on size_t
194 * (without autoconf's help, which isn't available because we want
195 * flex-generated scanners to compile on their own).
196 */
197
198 #ifndef YY_TYPEDEF_YY_SIZE_T
199 #define YY_TYPEDEF_YY_SIZE_T
200 typedef unsigned int yy_size_t;
201 #endif
202
203 #ifndef YY_STRUCT_YY_BUFFER_STATE
204 #define YY_STRUCT_YY_BUFFER_STATE
205 struct yy_buffer_state
206 {
207 FILE *yy_input_file;
208
209 char *yy_ch_buf; /* input buffer */
210 char *yy_buf_pos; /* current position in input buffer */
211
212 /* Size of input buffer in bytes, not including room for EOB
213 * characters.
214 */
215 yy_size_t yy_buf_size;
216
217 /* Number of characters read into yy_ch_buf, not including EOB
218 * characters.
219 */
220 int yy_n_chars;
221
222 /* Whether we "own" the buffer - i.e., we know we created it,
223 * and can realloc() it to grow it, and should free() it to
224 * delete it.
225 */
226 int yy_is_our_buffer;
227
228 /* Whether this is an "interactive" input source; if so, and
229 * if we're using stdio for input, then we want to use getc()
230 * instead of fread(), to make sure we stop fetching input after
231 * each newline.
232 */
233 int yy_is_interactive;
234
235 /* Whether we're considered to be at the beginning of a line.
236 * If so, '^' rules will be active on the next match, otherwise
237 * not.
238 */
239 int yy_at_bol;
240
241 int yy_bs_lineno; /**< The line count. */
242 int yy_bs_column; /**< The column count. */
243
244 /* Whether to try to fill the input buffer when we reach the
245 * end of it.
246 */
247 int yy_fill_buffer;
248
249 int yy_buffer_status;
250
251 #define YY_BUFFER_NEW 0
252 #define YY_BUFFER_NORMAL 1
253 /* When an EOF's been seen but there's still some text to process
254 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
255 * shouldn't try reading from the input source any more. We might
256 * still have a bunch of tokens to match, though, because of
257 * possible backing-up.
258 *
259 * When we actually see the EOF, we change the status to "new"
260 * (via zz_restart()), so that the user can continue scanning by
261 * just pointing zz_in at a new input file.
262 */
263 #define YY_BUFFER_EOF_PENDING 2
264
265 };
266 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
267
268 /* Stack of input buffers. */
269 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
270 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
271 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
272
273 /* We provide macros for accessing buffer states in case in the
274 * future we want to put the buffer states in a more general
275 * "scanner state".
276 *
277 * Returns the top of the stack, or NULL.
278 */
279 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
280 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
281 : NULL)
282
283 /* Same as previous macro, but useful when we know that the buffer stack is not
284 * NULL or when we need an lvalue. For internal use only.
285 */
286 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
287
288 /* yy_hold_char holds the character lost when zz_text is formed. */
289 static char yy_hold_char;
290 static int yy_n_chars; /* number of characters read into yy_ch_buf */
291 int zz_leng;
292
293 /* Points to current character in buffer. */
294 static char *yy_c_buf_p = (char *) 0;
295 static int yy_init = 0; /* whether we need to initialize */
296 static int yy_start = 0; /* start state number */
297
298 /* Flag which is used to allow zz_wrap()'s to do buffer switches
299 * instead of setting up a fresh zz_in. A bit of a hack ...
300 */
301 static int yy_did_buffer_switch_on_eof;
302
303 void zz_restart (FILE *input_file );
304 void zz__switch_to_buffer (YY_BUFFER_STATE new_buffer );
305 YY_BUFFER_STATE zz__create_buffer (FILE *file,int size );
306 void zz__delete_buffer (YY_BUFFER_STATE b );
307 void zz__flush_buffer (YY_BUFFER_STATE b );
308 void zz_push_buffer_state (YY_BUFFER_STATE new_buffer );
309 void zz_pop_buffer_state (void );
310
311 static void zz_ensure_buffer_stack (void );
312 static void zz__load_buffer_state (void );
313 static void zz__init_buffer (YY_BUFFER_STATE b,FILE *file );
314
315 #define YY_FLUSH_BUFFER zz__flush_buffer(YY_CURRENT_BUFFER )
316
317 YY_BUFFER_STATE zz__scan_buffer (char *base,yy_size_t size );
318 YY_BUFFER_STATE zz__scan_string (yyconst char *yy_str );
319 YY_BUFFER_STATE zz__scan_bytes (yyconst char *bytes,int len );
320
321 void *zz_alloc (yy_size_t );
322 void *zz_realloc (void *,yy_size_t );
323 void zz_free (void * );
324
325 #define yy_new_buffer zz__create_buffer
326
327 #define yy_set_interactive(is_interactive) \
328 { \
329 if ( ! YY_CURRENT_BUFFER ){ \
330 zz_ensure_buffer_stack (); \
331 YY_CURRENT_BUFFER_LVALUE = \
332 zz__create_buffer(zz_in,YY_BUF_SIZE ); \
333 } \
334 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
335 }
336
337 #define yy_set_bol(at_bol) \
338 { \
339 if ( ! YY_CURRENT_BUFFER ){\
340 zz_ensure_buffer_stack (); \
341 YY_CURRENT_BUFFER_LVALUE = \
342 zz__create_buffer(zz_in,YY_BUF_SIZE ); \
343 } \
344 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
345 }
346
347 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348
349 /* Begin user sect3 */
350
351 typedef unsigned char YY_CHAR;
352
353 FILE *zz_in = (FILE *) 0, *zz_out = (FILE *) 0;
354
355 typedef int yy_state_type;
356
357 #define YY_FLEX_LEX_COMPAT
358 extern int zz_lineno;
359
360 int zz_lineno = 1;
361
362 extern char zz_text[];
363
364 static yy_state_type yy_get_previous_state (void );
365 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
366 static int yy_get_next_buffer (void );
367 static void yy_fatal_error (yyconst char msg[] );
368
369 /* Done after the current pattern has been matched and before the
370 * corresponding action - sets up zz_text.
371 */
372 #define YY_DO_BEFORE_ACTION \
373 (yytext_ptr) = yy_bp; \
374 zz_leng = (size_t) (yy_cp - yy_bp); \
375 (yy_hold_char) = *yy_cp; \
376 *yy_cp = '\0'; \
377 if ( zz_leng + (yy_more_offset) >= YYLMAX ) \
378 YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
379 yy_flex_strncpy( &zz_text[(yy_more_offset)], (yytext_ptr), zz_leng + 1 ); \
380 zz_leng += (yy_more_offset); \
381 (yy_prev_more_offset) = (yy_more_offset); \
382 (yy_more_offset) = 0; \
383 (yy_c_buf_p) = yy_cp;
384
385 #define YY_NUM_RULES 149
386 #define YY_END_OF_BUFFER 150
387 /* This struct is not used in this scanner,
388 but its presence is necessary. */
389 struct yy_trans_info
390 {
391 flex_int32_t yy_verify;
392 flex_int32_t yy_nxt;
393 };
394 static yyconst flex_int16_t yy_acclist[695] =
395 { 0,
396 146, 146, 118, 118, 140, 140, 131, 131, 150, 148,
397 149, 146, 148, 149, 147, 149, 148, 149, 127, 148,
398 149, 124, 148, 149, 19, 148, 149, 20, 148, 149,
399 23, 148, 149, 21, 148, 149, 13, 148, 149, 22,
400 148, 149, 14, 148, 149, 24, 148, 149, 142, 148,
401 149,16527, 16, 148, 149, 15, 148, 149, 12, 148,
402 149, 10, 148, 149, 11, 148, 149, 145, 148, 149,
403 145, 148, 149, 145, 148, 149, 145, 148, 149, 145,
404 148, 149, 145, 148, 149, 145, 148, 149, 145, 148,
405 149, 145, 148, 149, 145, 148, 149, 145, 148, 149,
406
407 145, 148, 149, 145, 148, 149, 145, 148, 149, 145,
408 148, 149, 145, 148, 149, 145, 148, 149, 145, 148,
409 149, 145, 148, 149, 17, 148, 149, 18, 148, 149,
410 25, 148, 149, 134, 148, 149, 26, 148, 149, 118,
411 149, 119, 149, 120, 149, 122, 149, 149, 126, 149,
412 125, 149, 140, 149, 141, 149, 149, 137, 149, 139,
413 149, 131, 149, 132, 149, 130, 149, 149, 146, 147,
414 9, 114, 4, 144, 144, 142,16527, 5, 6, 1,
415 3, 8, 2, 145, 145, 145, 145, 145, 145, 145,
416 145, 145, 145, 145, 145, 145, 145, 145, 145, 51,
417
418 145, 145, 145, 145, 145, 145, 145, 145, 145, 64,
419 145, 145, 66, 145, 145, 145, 145, 145, 145, 145,
420 81, 145, 82, 145, 145, 145, 145, 145, 145, 145,
421 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
422 145, 145, 133, 118, 119, 120, 121, 120, 115, 122,
423 123, 117, 122, 126, 125, 140, 141, 139, 135, 136,
424 137, 138, 131, 132, 130, 128, 129, 8335, 144, 144,
425 7, 27, 145, 145, 29, 145, 30, 145, 145, 145,
426 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
427 145, 145, 145, 145, 145, 53, 145, 145, 145, 145,
428
429 58, 145, 60, 145, 145, 145, 145, 145, 145, 145,
430 145, 145, 145, 145, 145, 145, 79, 145, 145, 145,
431 145, 145, 145, 145, 145, 91, 145, 145, 145, 145,
432 145, 145, 95, 145, 145, 145, 145, 145, 104, 145,
433 145, 145, 145, 145, 145, 115, 116, 144, 145, 145,
434 145, 145, 34, 145, 145, 36, 145, 37, 145, 38,
435 145, 145, 145, 145, 145, 145, 145, 45, 145, 145,
436 145, 145, 145, 52, 145, 145, 145, 145, 145, 59,
437 145, 61, 145, 145, 145, 145, 145, 145, 70, 145,
438 145, 145, 145, 145, 145, 145, 145, 145, 145, 85,
439
440 145, 145, 145, 145, 145, 145, 145, 145, 96, 145,
441 98, 145, 145, 145, 99, 145, 100, 145, 145, 145,
442 145, 145, 106, 145, 145, 145, 145, 112, 145, 145,
443 145, 145, 33, 145, 145, 35, 145, 39, 145, 145,
444 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
445 145, 56, 145, 145, 145, 145, 68, 145, 145, 145,
446 145, 145, 145, 145, 145, 78, 145, 80, 145, 145,
447 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
448 101, 145, 102, 145, 145, 105, 145, 107, 145, 108,
449 145, 145, 145, 145, 145, 145, 63, 145, 40, 145,
450
451 145, 145, 145, 44, 145, 145, 145, 145, 145, 54,
452 145, 145, 145, 62, 145, 65, 145, 145, 145, 145,
453 145, 145, 145, 75, 145, 145, 145, 84, 145, 145,
454 145, 145, 145, 90, 145, 145, 93, 145, 145, 97,
455 145, 145, 145, 145, 145, 28, 145, 145, 145, 145,
456 145, 145, 145, 47, 145, 145, 145, 145, 145, 145,
457 145, 145, 145, 145, 145, 76, 145, 145, 145, 86,
458 145, 87, 145, 88, 145, 89, 145, 145, 145, 145,
459 109, 145, 145, 145, 145, 145, 145, 42, 145, 43,
460 145, 145, 145, 145, 55, 145, 145, 145, 145, 145,
461
462 72, 145, 145, 74, 145, 77, 145, 145, 145, 145,
463 145, 145, 145, 145, 31, 145, 145, 145, 145, 145,
464 49, 145, 145, 145, 145, 145, 145, 83, 145, 92,
465 145, 94, 145, 103, 145, 145, 145, 145, 145, 145,
466 46, 145, 48, 145, 145, 145, 67, 145, 145, 145,
467 145, 145, 145, 113, 145, 145, 41, 145, 145, 145,
468 145, 145, 73, 145, 145, 145, 32, 145, 145, 57,
469 145, 69, 145, 145, 145, 145, 50, 145, 71, 145,
470 145, 145, 145, 145, 145, 145, 110, 145, 145, 145,
471 145, 145, 111, 145
472
473 } ;
474
475 static yyconst flex_int16_t yy_accept[521] =
476 { 0,
477 1, 2, 3, 4, 5, 5, 5, 6, 7, 8,
478 9, 10, 12, 15, 17, 19, 22, 25, 28, 31,
479 34, 37, 40, 43, 46, 49, 53, 56, 59, 62,
480 65, 68, 71, 74, 77, 80, 83, 86, 89, 92,
481 95, 98, 101, 104, 107, 110, 113, 116, 119, 122,
482 125, 128, 131, 134, 137, 140, 142, 144, 146, 148,
483 149, 151, 153, 155, 157, 158, 160, 162, 164, 166,
484 168, 169, 170, 171, 172, 173, 174, 175, 176, 178,
485 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
486 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
487
488 198, 199, 200, 202, 203, 204, 205, 206, 207, 208,
489 209, 210, 212, 213, 215, 216, 217, 218, 219, 220,
490 221, 223, 225, 226, 227, 228, 229, 230, 231, 232,
491 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
492 243, 243, 244, 245, 246, 246, 247, 248, 249, 250,
493 251, 252, 253, 254, 254, 255, 256, 257, 258, 258,
494 259, 260, 261, 262, 263, 264, 265, 266, 266, 267,
495 268, 268, 269, 270, 270, 271, 272, 274, 275, 277,
496 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
497 289, 290, 291, 292, 293, 294, 295, 296, 298, 299,
498
499 300, 301, 303, 305, 306, 307, 308, 309, 310, 311,
500 312, 313, 314, 315, 316, 317, 319, 320, 321, 322,
501 323, 324, 325, 326, 328, 329, 330, 331, 332, 333,
502 335, 336, 337, 338, 339, 341, 342, 343, 344, 345,
503 346, 347, 348, 348, 349, 350, 351, 352, 353, 355,
504 356, 358, 360, 362, 363, 364, 365, 366, 367, 368,
505 370, 371, 372, 373, 374, 376, 377, 378, 379, 380,
506 382, 384, 385, 386, 387, 388, 389, 391, 392, 393,
507 394, 395, 396, 397, 398, 399, 400, 402, 403, 404,
508 405, 406, 407, 408, 409, 411, 413, 414, 415, 417,
509
510 419, 420, 421, 422, 423, 425, 426, 427, 428, 430,
511 431, 432, 433, 435, 436, 438, 440, 441, 442, 443,
512 444, 445, 446, 447, 448, 449, 450, 451, 452, 454,
513 455, 456, 457, 459, 460, 461, 462, 463, 464, 465,
514 466, 468, 470, 471, 472, 473, 474, 475, 476, 477,
515 478, 479, 480, 481, 483, 485, 486, 488, 490, 492,
516 493, 494, 495, 496, 497, 499, 501, 502, 503, 504,
517 506, 507, 508, 509, 510, 512, 513, 514, 516, 518,
518 519, 520, 521, 522, 523, 524, 526, 527, 528, 530,
519 531, 532, 533, 534, 536, 537, 539, 540, 542, 543,
520
521 544, 545, 546, 548, 549, 550, 551, 552, 553, 554,
522 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
523 566, 568, 569, 570, 572, 574, 576, 578, 579, 580,
524 581, 583, 584, 585, 586, 587, 588, 590, 592, 593,
525 594, 595, 597, 598, 599, 600, 601, 603, 604, 606,
526 608, 609, 610, 611, 612, 613, 614, 615, 617, 618,
527 619, 620, 621, 623, 624, 625, 626, 627, 628, 630,
528 632, 634, 636, 637, 638, 639, 640, 641, 643, 645,
529 646, 647, 649, 650, 651, 652, 653, 654, 656, 657,
530 659, 660, 661, 662, 663, 665, 666, 667, 669, 670,
531
532 672, 674, 675, 676, 677, 679, 681, 682, 683, 684,
533 685, 686, 687, 689, 690, 691, 692, 693, 695, 695
534 } ;
535
536 static yyconst flex_int32_t yy_ec[256] =
537 { 0,
538 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
539 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
541 1, 2, 4, 5, 1, 1, 1, 1, 6, 7,
542 8, 9, 10, 11, 12, 13, 14, 15, 15, 15,
543 15, 15, 15, 15, 15, 15, 15, 16, 17, 18,
544 19, 20, 1, 1, 21, 22, 23, 24, 25, 26,
545 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
546 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
547 47, 48, 49, 50, 51, 1, 30, 30, 30, 30,
548
549 52, 30, 30, 30, 30, 30, 30, 30, 30, 30,
550 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
551 30, 30, 53, 54, 55, 1, 1, 1, 1, 1,
552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
556 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
557 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
558 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
559
560 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
561 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
562 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1
566 } ;
567
568 static yyconst flex_int32_t yy_meta[56] =
569 { 0,
570 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
571 1, 1, 1, 1, 4, 1, 1, 1, 1, 1,
572 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
573 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
574 4, 4, 4, 4, 4, 4, 1, 5, 1, 1,
575 4, 4, 6, 1, 5
576 } ;
577
578 static yyconst flex_int16_t yy_base[535] =
579 { 0,
580 0, 0, 53, 54, 61, 62, 55, 56, 66, 67,
581 1054, 1055, 71, 1055, 1034, 1055, 1055, 1043, 1055, 1055,
582 1055, 1055, 1055, 62, 1055, 65, 60, 1055, 62, 1032,
583 1031, 92, 51, 84, 71, 103, 113, 69, 1034, 110,
584 125, 78, 126, 82, 114, 144, 130, 123, 70, 146,
585 1055, 1055, 1055, 85, 1055, 118, 1055, 169, 174, 92,
586 1055, 1055, 150, 1055, 1045, 1044, 1055, 176, 1055, 1055,
587 1043, 168, 1055, 1055, 1055, 1055, 165, 176, 179, 185,
588 1055, 1026, 1055, 1055, 1055, 1055, 1029, 1028, 178, 181,
589 184, 188, 173, 171, 108, 200, 205, 68, 194, 196,
590
591 199, 201, 1027, 203, 220, 212, 218, 222, 208, 226,
592 228, 1026, 232, 234, 230, 238, 239, 241, 240, 243,
593 1025, 1024, 244, 245, 252, 254, 250, 256, 261, 258,
594 262, 277, 192, 263, 271, 274, 280, 283, 284, 286,
595 304, 1055, 299, 1055, 308, 316, 1055, 321, 1035, 324,
596 1055, 1055, 326, 308, 1055, 1055, 317, 1055, 1034, 1055,
597 1055, 1055, 1033, 1055, 333, 1055, 1055, 1032, 1055, 1055,
598 327, 1055, 306, 1019, 1018, 1055, 1017, 325, 1016, 1015,
599 326, 328, 329, 330, 332, 335, 333, 336, 337, 340,
600 344, 341, 349, 351, 358, 360, 361, 1014, 363, 365,
601
602 359, 1013, 1012, 367, 378, 141, 379, 380, 356, 381,
603 384, 386, 385, 387, 392, 394, 395, 388, 397, 411,
604 393, 389, 408, 1011, 412, 413, 417, 414, 416, 1010,
605 418, 419, 420, 421, 1009, 428, 432, 433, 436, 431,
606 1020, 1055, 1007, 1006, 437, 439, 440, 442, 1005, 447,
607 1004, 1003, 1002, 452, 449, 458, 456, 459, 460, 1001,
608 466, 462, 467, 471, 1000, 469, 474, 475, 479, 999,
609 998, 478, 480, 482, 483, 487, 997, 491, 494, 493,
610 495, 496, 500, 498, 502, 504, 996, 499, 505, 520,
611 509, 506, 518, 519, 995, 994, 521, 528, 993, 992,
612
613 531, 532, 533, 534, 991, 535, 537, 538, 539, 541,
614 546, 540, 990, 548, 989, 988, 549, 552, 554, 561,
615 555, 558, 562, 567, 566, 568, 569, 570, 987, 572,
616 571, 576, 986, 578, 583, 584, 585, 587, 591, 592,
617 985, 984, 586, 599, 601, 603, 607, 605, 608, 609,
618 611, 612, 616, 983, 982, 617, 981, 980, 979, 619,
619 618, 622, 621, 623, 978, 977, 625, 630, 631, 976,
620 632, 634, 641, 644, 975, 642, 647, 974, 973, 643,
621 651, 650, 652, 653, 662, 655, 654, 663, 972, 665,
622 669, 670, 671, 971, 672, 970, 674, 969, 673, 682,
623
624 676, 684, 968, 688, 689, 691, 694, 695, 698, 967,
625 699, 700, 701, 703, 702, 706, 708, 707, 721, 715,
626 966, 723, 710, 965, 964, 963, 962, 728, 724, 729,
627 709, 722, 736, 739, 737, 740, 961, 960, 741, 742,
628 744, 959, 746, 748, 743, 754, 958, 757, 957, 956,
629 755, 770, 750, 756, 751, 752, 758, 955, 771, 772,
630 774, 780, 781, 782, 783, 787, 785, 790, 954, 953,
631 952, 948, 789, 796, 797, 791, 793, 947, 908, 804,
632 805, 896, 792, 806, 811, 813, 815, 868, 816, 867,
633 819, 818, 820, 821, 865, 822, 824, 863, 827, 862,
634
635 861, 828, 829, 830, 857, 854, 832, 836, 841, 835,
636 837, 833, 307, 840, 844, 852, 856, 247, 1055, 885,
637 891, 897, 903, 90, 909, 915, 921, 927, 933, 938,
638 944, 948, 954, 960
639 } ;
640
641 static yyconst flex_int16_t yy_def[535] =
642 { 0,
643 519, 1, 520, 520, 521, 521, 522, 522, 523, 523,
644 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
645 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
646 519, 524, 524, 524, 524, 524, 524, 524, 524, 524,
647 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
648 519, 519, 519, 519, 519, 525, 519, 526, 527, 528,
649 519, 519, 529, 519, 530, 531, 519, 532, 519, 519,
650 533, 519, 519, 519, 519, 519, 519, 519, 519, 519,
651 519, 519, 519, 519, 519, 519, 524, 524, 524, 524,
652 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
653
654 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
655 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
656 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
657 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
658 519, 519, 525, 519, 519, 526, 519, 526, 534, 527,
659 519, 519, 527, 528, 519, 519, 529, 519, 530, 519,
660 519, 519, 531, 519, 532, 519, 519, 533, 519, 519,
661 519, 519, 519, 519, 519, 519, 524, 524, 524, 524,
662 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
663 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
664
665 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
666 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
667 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
668 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
669 534, 519, 519, 519, 524, 524, 524, 524, 524, 524,
670 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
671 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
672 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
673 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
674 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
675
676 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
677 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
678 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
679 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
680 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
681 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
682 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
683 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
684 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
685 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
686
687 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
688 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
689 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
690 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
691 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
692 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
693 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
694 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
695 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
696 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
697
698 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
699 524, 524, 524, 524, 524, 524, 524, 524, 0, 519,
700 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
701 519, 519, 519, 519
702 } ;
703
704 static yyconst flex_int16_t yy_nxt[1111] =
705 { 0,
706 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
707 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
708 32, 33, 34, 35, 36, 37, 38, 39, 40, 39,
709 39, 39, 41, 42, 43, 44, 39, 45, 46, 47,
710 48, 49, 50, 39, 39, 39, 51, 12, 52, 53,
711 12, 39, 54, 55, 12, 57, 57, 64, 64, 58,
712 58, 59, 59, 61, 61, 87, 62, 62, 69, 69,
713 70, 70, 72, 73, 76, 81, 77, 78, 82, 79,
714 83, 84, 87, 87, 87, 87, 141, 142, 95, 80,
715 138, 100, 87, 88, 155, 101, 87, 156, 87, 102,
716
717 111, 191, 65, 65, 96, 103, 87, 66, 66, 67,
718 67, 97, 120, 71, 71, 89, 80, 87, 98, 125,
719 144, 99, 87, 90, 87, 91, 145, 87, 87, 92,
720 93, 94, 185, 107, 104, 112, 105, 87, 126, 87,
721 87, 108, 113, 114, 87, 116, 106, 109, 115, 117,
722 110, 121, 158, 118, 127, 87, 136, 134, 87, 119,
723 87, 137, 272, 122, 128, 123, 124, 135, 129, 72,
724 73, 147, 130, 139, 140, 148, 151, 149, 166, 77,
725 167, 152, 153, 131, 132, 87, 133, 87, 172, 171,
726 173, 78, 87, 79, 174, 87, 174, 159, 87, 175,
727
728 171, 177, 87, 80, 160, 184, 87, 179, 87, 178,
729 87, 183, 181, 87, 87, 87, 171, 87, 192, 87,
730 231, 194, 87, 168, 195, 182, 87, 171, 180, 189,
731 80, 186, 87, 196, 87, 193, 87, 187, 188, 190,
732 87, 197, 87, 198, 87, 203, 87, 199, 87, 201,
733 204, 200, 87, 87, 87, 87, 208, 87, 87, 87,
734 205, 87, 206, 215, 87, 202, 87, 207, 87, 209,
735 87, 217, 87, 210, 214, 87, 87, 87, 213, 220,
736 211, 212, 216, 224, 218, 87, 219, 232, 87, 221,
737 222, 87, 226, 223, 87, 225, 228, 87, 87, 229,
738
739 87, 144, 234, 227, 235, 141, 142, 145, 237, 230,
740 155, 233, 238, 156, 236, 152, 145, 239, 147, 158,
741 173, 87, 519, 147, 519, 240, 151, 148, 151, 519,
742 171, 519, 519, 152, 153, 166, 243, 167, 243, 87,
743 87, 244, 87, 87, 87, 245, 87, 87, 247, 87,
744 87, 87, 250, 248, 87, 87, 252, 171, 87, 254,
745 253, 259, 249, 87, 159, 87, 251, 256, 255, 260,
746 87, 160, 87, 87, 87, 87, 246, 87, 262, 87,
747 168, 87, 257, 258, 264, 265, 263, 266, 261, 267,
748 268, 270, 87, 87, 87, 87, 275, 269, 87, 87,
749
750 87, 87, 87, 87, 277, 276, 87, 87, 87, 87,
751 271, 87, 281, 273, 279, 282, 283, 274, 284, 285,
752 287, 278, 87, 286, 290, 87, 87, 87, 87, 291,
753 87, 87, 87, 87, 87, 87, 280, 294, 288, 289,
754 293, 295, 87, 297, 300, 87, 87, 87, 292, 296,
755 87, 87, 299, 87, 87, 301, 87, 298, 309, 311,
756 302, 87, 303, 87, 307, 305, 87, 308, 304, 306,
757 87, 317, 87, 87, 87, 310, 87, 315, 312, 314,
758 87, 87, 316, 87, 313, 87, 318, 320, 87, 87,
759 322, 326, 87, 87, 87, 319, 87, 87, 330, 321,
760
761 324, 87, 323, 329, 325, 87, 332, 87, 87, 87,
762 87, 327, 87, 87, 87, 335, 87, 331, 87, 87,
763 87, 337, 333, 87, 334, 328, 336, 345, 340, 339,
764 338, 341, 87, 87, 87, 87, 342, 348, 346, 343,
765 347, 351, 87, 349, 344, 87, 87, 87, 87, 87,
766 353, 87, 87, 87, 87, 87, 350, 356, 357, 358,
767 87, 359, 87, 87, 354, 362, 87, 364, 87, 87,
768 355, 352, 87, 366, 368, 87, 87, 363, 371, 370,
769 87, 87, 87, 87, 87, 87, 87, 365, 360, 361,
770 87, 367, 87, 372, 369, 373, 380, 87, 87, 87,
771
772 87, 87, 376, 378, 374, 87, 87, 375, 382, 377,
773 379, 385, 383, 87, 386, 87, 381, 87, 384, 87,
774 387, 87, 87, 87, 390, 87, 87, 391, 388, 392,
775 87, 87, 87, 87, 395, 87, 87, 87, 389, 87,
776 400, 394, 393, 398, 87, 87, 87, 405, 87, 404,
777 396, 397, 401, 406, 399, 87, 87, 87, 87, 402,
778 403, 87, 413, 407, 87, 87, 87, 87, 87, 87,
779 409, 408, 412, 410, 414, 416, 87, 87, 417, 87,
780 411, 415, 420, 87, 87, 87, 87, 87, 87, 424,
781 87, 423, 419, 421, 426, 427, 87, 418, 87, 422,
782
783 428, 429, 87, 87, 433, 87, 431, 425, 87, 87,
784 432, 430, 87, 87, 87, 87, 87, 87, 434, 438,
785 87, 87, 87, 87, 87, 436, 439, 440, 445, 87,
786 444, 447, 442, 437, 441, 87, 87, 87, 87, 435,
787 443, 446, 87, 87, 453, 448, 449, 450, 451, 454,
788 87, 87, 452, 87, 87, 87, 87, 87, 87, 455,
789 87, 456, 87, 458, 87, 87, 87, 457, 87, 87,
790 87, 87, 87, 460, 461, 459, 462, 463, 467, 469,
791 464, 465, 466, 468, 87, 87, 87, 472, 87, 471,
792 473, 476, 477, 470, 87, 87, 87, 87, 475, 87,
793
794 478, 87, 474, 87, 87, 87, 87, 87, 484, 482,
795 87, 87, 480, 479, 485, 483, 486, 487, 87, 87,
796 87, 488, 481, 489, 490, 87, 493, 87, 491, 87,
797 87, 492, 87, 87, 87, 87, 87, 496, 87, 497,
798 498, 87, 87, 87, 87, 500, 87, 87, 495, 87,
799 87, 87, 509, 501, 87, 87, 494, 499, 87, 512,
800 502, 513, 506, 510, 516, 505, 87, 507, 87, 508,
801 87, 87, 503, 511, 504, 87, 87, 87, 515, 87,
802 518, 87, 87, 514, 517, 56, 56, 56, 56, 56,
803 56, 60, 60, 60, 60, 60, 60, 63, 63, 63,
804
805 63, 63, 63, 68, 68, 68, 68, 68, 68, 143,
806 87, 143, 143, 143, 143, 146, 146, 146, 146, 146,
807 146, 150, 87, 150, 150, 150, 150, 154, 154, 154,
808 154, 154, 154, 157, 157, 157, 157, 157, 161, 161,
809 161, 161, 161, 161, 163, 163, 163, 163, 165, 165,
810 165, 165, 165, 165, 169, 169, 169, 169, 169, 169,
811 241, 87, 87, 241, 241, 241, 87, 87, 87, 87,
812 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
813 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
814 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
815
816 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
817 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
818 244, 244, 242, 87, 87, 87, 87, 87, 87, 87,
819 87, 87, 175, 175, 170, 164, 162, 242, 87, 87,
820 87, 87, 87, 87, 176, 170, 164, 162, 87, 86,
821 85, 75, 74, 519, 11, 519, 519, 519, 519, 519,
822 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
823 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
824 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
825 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
826
827 519, 519, 519, 519, 519, 519, 519, 519, 519, 519
828 } ;
829
830 static yyconst flex_int16_t yy_chk[1111] =
831 { 0,
832 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
833 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
834 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
835 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
836 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
837 1, 1, 1, 1, 1, 3, 4, 7, 8, 3,
838 4, 3, 4, 5, 6, 33, 5, 6, 9, 10,
839 9, 10, 13, 13, 24, 27, 24, 26, 27, 26,
840 29, 29, 98, 38, 49, 35, 54, 54, 33, 26,
841 49, 35, 42, 524, 60, 35, 44, 60, 34, 35,
842
843 38, 98, 7, 8, 34, 35, 32, 7, 8, 7,
844 8, 34, 42, 9, 10, 32, 26, 36, 34, 44,
845 56, 34, 95, 32, 40, 32, 56, 37, 45, 32,
846 32, 32, 95, 37, 36, 40, 36, 48, 45, 41,
847 43, 37, 40, 40, 47, 41, 36, 37, 40, 41,
848 37, 43, 63, 41, 45, 206, 48, 47, 46, 41,
849 50, 48, 206, 43, 46, 43, 43, 47, 46, 72,
850 72, 58, 46, 50, 50, 58, 59, 58, 68, 77,
851 68, 59, 59, 46, 46, 94, 46, 93, 78, 77,
852 78, 79, 89, 79, 80, 90, 80, 63, 91, 80,
853
854 78, 89, 92, 79, 63, 94, 133, 91, 99, 90,
855 100, 93, 92, 101, 96, 102, 77, 104, 99, 97,
856 133, 101, 109, 68, 101, 92, 106, 78, 91, 97,
857 79, 96, 107, 102, 105, 100, 108, 96, 96, 97,
858 110, 104, 111, 105, 115, 109, 113, 106, 114, 107,
859 110, 106, 116, 117, 119, 118, 114, 120, 123, 124,
860 110, 518, 111, 119, 127, 108, 125, 113, 126, 114,
861 128, 123, 130, 114, 118, 129, 131, 134, 117, 126,
862 115, 116, 120, 127, 124, 135, 125, 134, 136, 126,
863 126, 132, 129, 126, 137, 128, 131, 138, 139, 132,
864
865 140, 143, 136, 130, 137, 141, 141, 143, 139, 132,
866 154, 135, 139, 154, 138, 145, 145, 140, 146, 157,
867 173, 513, 146, 148, 146, 140, 150, 148, 153, 148,
868 173, 150, 150, 153, 153, 165, 171, 165, 171, 178,
869 181, 171, 182, 183, 184, 178, 185, 187, 182, 186,
870 188, 189, 185, 183, 190, 192, 187, 173, 191, 189,
871 188, 192, 184, 193, 157, 194, 186, 191, 190, 193,
872 209, 157, 195, 201, 196, 197, 181, 199, 195, 200,
873 165, 204, 191, 191, 196, 197, 195, 199, 194, 200,
874 201, 204, 205, 207, 208, 210, 209, 201, 211, 213,
875
876 212, 214, 218, 222, 211, 210, 215, 221, 216, 217,
877 205, 219, 213, 207, 212, 214, 215, 208, 216, 217,
878 219, 211, 223, 218, 221, 220, 225, 226, 228, 222,
879 229, 227, 231, 232, 233, 234, 212, 226, 219, 220,
880 225, 227, 236, 229, 233, 240, 237, 238, 223, 228,
881 239, 245, 232, 246, 247, 234, 248, 231, 240, 246,
882 234, 250, 234, 255, 238, 237, 254, 239, 236, 237,
883 257, 255, 256, 258, 259, 245, 262, 250, 246, 248,
884 261, 263, 254, 266, 247, 264, 256, 258, 267, 268,
885 261, 266, 272, 269, 273, 257, 274, 275, 272, 259,
886
887 263, 276, 262, 269, 264, 278, 274, 280, 279, 281,
888 282, 267, 284, 288, 283, 278, 285, 273, 286, 289,
889 292, 280, 275, 291, 276, 268, 279, 288, 282, 281,
890 280, 283, 293, 294, 290, 297, 284, 291, 289, 285,
891 290, 294, 298, 292, 286, 301, 302, 303, 304, 306,
892 298, 307, 308, 309, 312, 310, 293, 303, 304, 306,
893 311, 307, 314, 317, 301, 310, 318, 312, 319, 321,
894 302, 297, 322, 317, 319, 320, 323, 311, 322, 321,
895 325, 324, 326, 327, 328, 331, 330, 314, 308, 309,
896 332, 318, 334, 323, 320, 324, 332, 335, 336, 337,
897
898 343, 338, 327, 330, 325, 339, 340, 326, 335, 328,
899 331, 338, 336, 344, 339, 345, 334, 346, 337, 348,
900 340, 347, 349, 350, 345, 351, 352, 346, 343, 347,
901 353, 356, 361, 360, 350, 363, 362, 364, 344, 367,
902 360, 349, 348, 353, 368, 369, 371, 364, 372, 363,
903 351, 352, 360, 367, 356, 373, 376, 380, 374, 361,
904 362, 377, 376, 368, 382, 381, 383, 384, 387, 386,
905 371, 369, 374, 372, 377, 381, 385, 388, 382, 390,
906 373, 380, 385, 391, 392, 393, 395, 399, 397, 390,
907 401, 388, 384, 386, 392, 393, 400, 383, 402, 387,
908
909 395, 397, 404, 405, 402, 406, 400, 391, 407, 408,
910 401, 399, 409, 411, 412, 413, 415, 414, 404, 408,
911 416, 418, 417, 431, 423, 406, 409, 411, 416, 420,
912 415, 418, 413, 407, 412, 419, 432, 422, 429, 405,
913 414, 417, 428, 430, 429, 419, 420, 422, 423, 430,
914 433, 435, 428, 434, 436, 439, 440, 445, 441, 431,
915 443, 432, 444, 434, 453, 455, 456, 433, 446, 451,
916 454, 448, 457, 436, 439, 435, 440, 441, 446, 451,
917 443, 444, 445, 448, 452, 459, 460, 454, 461, 453,
918 455, 459, 460, 452, 462, 463, 464, 465, 457, 467,
919
920 461, 466, 456, 473, 468, 476, 483, 477, 467, 465,
921 474, 475, 463, 462, 468, 466, 473, 474, 480, 481,
922 484, 475, 464, 476, 477, 485, 483, 486, 480, 487,
923 489, 481, 492, 491, 493, 494, 496, 486, 497, 487,
924 489, 499, 502, 503, 504, 492, 507, 512, 485, 510,
925 508, 511, 507, 493, 514, 509, 484, 491, 515, 510,
926 494, 511, 502, 508, 515, 499, 516, 503, 506, 504,
927 517, 505, 496, 509, 497, 501, 500, 498, 514, 495,
928 517, 490, 488, 512, 516, 520, 520, 520, 520, 520,
929 520, 521, 521, 521, 521, 521, 521, 522, 522, 522,
930
931 522, 522, 522, 523, 523, 523, 523, 523, 523, 525,
932 482, 525, 525, 525, 525, 526, 526, 526, 526, 526,
933 526, 527, 479, 527, 527, 527, 527, 528, 528, 528,
934 528, 528, 528, 529, 529, 529, 529, 529, 530, 530,
935 530, 530, 530, 530, 531, 531, 531, 531, 532, 532,
936 532, 532, 532, 532, 533, 533, 533, 533, 533, 533,
937 534, 478, 472, 534, 534, 534, 471, 470, 469, 458,
938 450, 449, 447, 442, 438, 437, 427, 426, 425, 424,
939 421, 410, 403, 398, 396, 394, 389, 379, 378, 375,
940 370, 366, 365, 359, 358, 357, 355, 354, 342, 341,
941
942 333, 329, 316, 315, 313, 305, 300, 299, 296, 295,
943 287, 277, 271, 270, 265, 260, 253, 252, 251, 249,
944 244, 243, 241, 235, 230, 224, 203, 202, 198, 180,
945 179, 177, 175, 174, 168, 163, 159, 149, 122, 121,
946 112, 103, 88, 87, 82, 71, 66, 65, 39, 31,
947 30, 18, 15, 11, 519, 519, 519, 519, 519, 519,
948 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
949 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
950 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
951 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
952
953 519, 519, 519, 519, 519, 519, 519, 519, 519, 519
954 } ;
955
956 /* Table of booleans, true if rule could match eol. */
957 static yyconst flex_int32_t yy_rule_can_match_eol[150] =
958 { 0,
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
965 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
966 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, };
967
968 extern int zz__flex_debug;
969 int zz__flex_debug = 0;
970
971 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
972 static char *yy_full_match;
973 static int yy_lp;
974 static int yy_looking_for_trail_begin = 0;
975 static int yy_full_lp;
976 static int *yy_full_state;
977 #define YY_TRAILING_MASK 0x2000
978 #define YY_TRAILING_HEAD_MASK 0x4000
979 #define REJECT \
980 { \
981 *yy_cp = (yy_hold_char); /* undo effects of setting up zz_text */ \
982 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
983 (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \
984 (yy_state_ptr) = yy_full_state; /* restore orig. state */ \
985 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
986 ++(yy_lp); \
987 goto find_rule; \
988 }
989
990 static int yy_more_offset = 0;
991 static int yy_prev_more_offset = 0;
992 #define yymore() ((yy_more_offset) = yy_flex_strlen( zz_text ))
993 #define YY_NEED_STRLEN
994 #define YY_MORE_ADJ 0
995 #define YY_RESTORE_YY_MORE_OFFSET \
996 { \
997 (yy_more_offset) = (yy_prev_more_offset); \
998 zz_leng -= (yy_more_offset); \
999 }
1000 #ifndef YYLMAX
1001 #define YYLMAX 8192
1002 #endif
1003
1004 char zz_text[YYLMAX];
1005 char *yytext_ptr;
1006 #line 1 "base/generic/compiler/scanner.l"
1007 #line 2 "base/generic/compiler/scanner.l"
1008 /* ASCEND modelling environment
1009 Copyright (C) 1990, 1993, 1994 Thomas Guthrie Epperly
1010 Copyright (C) 2006 Carnegie Mellon University
1011
1012 This program is free software; you can redistribute it and/or modify
1013 it under the terms of the GNU General Public License as published by
1014 the Free Software Foundation; either version 2, or (at your option)
1015 any later version.
1016
1017 This program is distributed in the hope that it will be useful,
1018 but WITHOUT ANY WARRANTY; without even the implied warranty of
1019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1020 GNU General Public License for more details.
1021
1022 You should have received a copy of the GNU General Public License
1023 along with this program; if not, write to the Free Software
1024 Foundation, Inc., 59 Temple Place - Suite 330,
1025 Boston, MA 02111-1307, USA.
1026 *//** @file
1027 ASCEND lexer
1028
1029 This module is the input file for Flex (Lexical Analyzer
1030 Generator). Its goal is to convert a stream of characters into a
1031 stream of tokens. It has been defined to be consistent with the
1032 routines required by the common compiler-compiler yacc.
1033 */
1034
1035 #include <stdio.h>
1036 #include <stdlib.h>
1037 #include <string.h>
1038 #include <math.h>
1039 #include "utilities/ascConfig.h"
1040 #include "utilities/ascMalloc.h"
1041 #include "compiler/compiler.h"
1042 /* everything between here and the next comment is only here */
1043 #include "compiler/fractions.h"
1044 #include "compiler/dimen.h"
1045 #include "compiler/functype.h"
1046 #include "compiler/func.h"
1047 #include "compiler/expr_types.h"
1048 #include "compiler/stattypes.h"
1049 #include "compiler/fractions.h"
1050 #include "compiler/proc.h"
1051 /* because ascParse.h has a nasty union we can't digest without them. */
1052 #include "compiler/ascParse.h"
1053 /* these below we actually need */
1054 #include "general/list.h"
1055 #include "compiler/module.h"
1056 #include "compiler/scanner.h"
1057 #include "compiler/symtab.h"
1058 #include "compiler/parser.h"
1059
1060 #define YY_BREAK
1061 /* Defining yybreak as above means that all of our matches must end
1062 * in break or return because the normal flex supplied yybreak will
1063 * be preempted by our empty one.
1064 * In cases where matches contain a conditional return, make sure a
1065 * break follows in the failure case.
1066 */
1067
1068 #define ENDTOK 0
1069 /* Return value when we reach the end of the input.
1070 * This to must be 0 or negative according to yacc
1071 */
1072
1073 #define MAX_REQUIRE_DEPTH 10
1074 /* The maximum number of REQUIREd file nesting we will accept.
1075 * See RequireStack below.
1076 */
1077
1078 #define WORKBUF_INIT_SIZE 4095
1079 /* We need a temporary buffer to copy zz_text into before returning
1080 * to the scanner (see g_workbuf below).
1081 * WORKBUF_INIT_SIZE is the initial size of g_workbuf
1082 */
1083
1084 static unsigned long yy_line = 1;
1085 /* The current line number;
1086 * every match of newline (\n) needs to ++ this variable.
1087 */
1088
1089 static unsigned long start_line = 0;
1090 /* The ine number where an open-comment, open-brace, or
1091 * open-double-quote occurs. We use this to help in error reporting.
1092 */
1093
1094 static int CommentNestLevel = 0;
1095 /* Nesting level of (* comments *)
1096 */
1097
1098 static int BracesNestLevel = 0;
1099 /* Nesting level of {braced} expressions
1100 */
1101
1102 static int MatchedBackslash = 0;
1103 /* If this variable is positive, we matched a backslash \ in a DoubleQuote
1104 * or BracedText state, and we should call ProcessBackslashes() to
1105 * process them.
1106 */
1107
1108 static int RequireIndex = 0;
1109 /* The current nesting level of REQUIREd files
1110 */
1111
1112 static YY_BUFFER_STATE RequireStack[MAX_REQUIRE_DEPTH];
1113 /* The Flex buffers used for the REQUIREd files
1114 */
1115
1116 static char *g_workbuf = NULL;
1117 /* We need a place to keep doubly-quoted-text and braced-text for passing
1118 * it back to the parser. zz_text will not work since the parser may ask
1119 * the scanner to read another token, at which point the value in zz_text
1120 * gets lost.
1121 *
1122 * The initial size of g_workbuf is WORKBUF_INIT_SIZE, and g_workbuf
1123 * doubles when it needs more space.
1124 *
1125 * A call to CopyIntoWorkBuffer(zz_text,zz_leng) will copy zz_leng characters
1126 * of zz_text into the working buffer.
1127 *
1128 * Note that having a single work buffer will not work if we ever create
1129 * yacc productions that scan multiple chunks of doubly-quoted-text and/or
1130 * braced-text before acting on them.
1131 */
1132
1133
1134 /* Forward declaration of functions
1135 * provided at the end of this file.
1136 */
1137 static int Asc_ScannerPopBuffer(void);
1138 static char *CopyIntoWorkBuffer(CONST char *, unsigned long);
1139 static int Process_Backslashes(void);
1140 static void ErrMsg_BracesEOF(void);
1141 static void ErrMsg_CommentEOF(void);
1142 static void ErrMsg_DoubleQuoteEOF(void);
1143 static void ErrMsg_LongID(void);
1144 static void ErrMsg_LongSymbol(void);
1145 static void ErrMsg_SymbolEOF(void);
1146 static void ErrMsg_SymbolEOL(void);
1147 static void ErrMsg_UnexpectedChar(void);
1148
1149
1150
1151
1152
1153 #line 1154 "<stdout>"
1154
1155 #define INITIAL 0
1156 #define Comment 1
1157 #define Symbol 2
1158 #define BracedText 3
1159 #define DoubleQuote 4
1160
1161 #ifndef YY_NO_UNISTD_H
1162 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1163 * down here because we want the user's section 1 to have been scanned first.
1164 * The user has a chance to override it with an option.
1165 */
1166 #include <unistd.h>
1167 #endif
1168
1169 #ifndef YY_EXTRA_TYPE
1170 #define YY_EXTRA_TYPE void *
1171 #endif
1172
1173 static int yy_init_globals (void );
1174
1175 /* Macros after this point can all be overridden by user definitions in
1176 * section 1.
1177 */
1178
1179 #ifndef YY_SKIP_YYWRAP
1180 #ifdef __cplusplus
1181 extern "C" int zz_wrap (void );
1182 #else
1183 extern int zz_wrap (void );
1184 #endif
1185 #endif
1186
1187 static void yyunput (int c,char *buf_ptr );
1188
1189 #ifndef yytext_ptr
1190 static void yy_flex_strncpy (char *,yyconst char *,int );
1191 #endif
1192
1193 #ifdef YY_NEED_STRLEN
1194 static int yy_flex_strlen (yyconst char * );
1195 #endif
1196
1197 #ifndef YY_NO_INPUT
1198
1199 #ifdef __cplusplus
1200 static int yyinput (void );
1201 #else
1202 static int input (void );
1203 #endif
1204
1205 #endif
1206
1207 /* Amount of stuff to slurp up with each read. */
1208 #ifndef YY_READ_BUF_SIZE
1209 #define YY_READ_BUF_SIZE 8192
1210 #endif
1211
1212 /* Copy whatever the last rule matched to the standard output. */
1213 #ifndef ECHO
1214 /* This used to be an fputs(), but since the string might contain NUL's,
1215 * we now use fwrite().
1216 */
1217 #define ECHO (void) fwrite( zz_text, zz_leng, 1, zz_out )
1218 #endif
1219
1220 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1221 * is returned in "result".
1222 */
1223 #ifndef YY_INPUT
1224 #define YY_INPUT(buf,result,max_size) \
1225 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1226 { \
1227 int c = '*'; \
1228 size_t n; \
1229 for ( n = 0; n < max_size && \
1230 (c = getc( zz_in )) != EOF && c != '\n'; ++n ) \
1231 buf[n] = (char) c; \
1232 if ( c == '\n' ) \
1233 buf[n++] = (char) c; \
1234 if ( c == EOF && ferror( zz_in ) ) \
1235 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1236 result = n; \
1237 } \
1238 else \
1239 { \
1240 errno=0; \
1241 while ( (result = fread(buf, 1, max_size, zz_in))==0 && ferror(zz_in)) \
1242 { \
1243 if( errno != EINTR) \
1244 { \
1245 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1246 break; \
1247 } \
1248 errno=0; \
1249 clearerr(zz_in); \
1250 } \
1251 }\
1252 \
1253
1254 #endif
1255
1256 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1257 * we don't want an extra ';' after the "return" because that will cause
1258 * some compilers to complain about unreachable statements.
1259 */
1260 #ifndef yyterminate
1261 #define yyterminate() return YY_NULL
1262 #endif
1263
1264 /* Number of entries by which start-condition stack grows. */
1265 #ifndef YY_START_STACK_INCR
1266 #define YY_START_STACK_INCR 25
1267 #endif
1268
1269 /* Report a fatal error. */
1270 #ifndef YY_FATAL_ERROR
1271 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1272 #endif
1273
1274 /* end tables serialization structures and prototypes */
1275
1276 /* Default declaration of generated scanner - a define so the user can
1277 * easily add parameters.
1278 */
1279 #ifndef YY_DECL
1280 #define YY_DECL_IS_OURS 1
1281
1282 extern int zz_lex (void);
1283
1284 #define YY_DECL int zz_lex (void)
1285 #endif /* !YY_DECL */
1286
1287 /* Code executed at the beginning of each rule, after zz_text and zz_leng
1288 * have been set up.
1289 */
1290 #ifndef YY_USER_ACTION
1291 #define YY_USER_ACTION
1292 #endif
1293
1294 /* Code executed at the end of each rule. */
1295 #ifndef YY_BREAK
1296 #define YY_BREAK break;
1297 #endif
1298
1299 #define YY_RULE_SETUP \
1300 YY_USER_ACTION
1301
1302 /** The main scanner function which does all the work.
1303 */
1304 YY_DECL
1305 {
1306 register yy_state_type yy_current_state;
1307 register char *yy_cp, *yy_bp;
1308 register int yy_act;
1309
1310 #line 159 "base/generic/compiler/scanner.l"
1311
1312
1313 #line 1314 "<stdout>"
1314
1315 if ( !(yy_init) )
1316 {
1317 (yy_init) = 1;
1318
1319 #ifdef YY_USER_INIT
1320 YY_USER_INIT;
1321 #endif
1322
1323 /* Create the reject buffer large enough to save one state per allowed character. */
1324 if ( ! (yy_state_buf) )
1325 (yy_state_buf) = (yy_state_type *)zz_alloc(YY_STATE_BUF_SIZE );
1326
1327 if ( ! (yy_start) )
1328 (yy_start) = 1; /* first start state */
1329
1330 if ( ! zz_in )
1331 zz_in = stdin;
1332
1333 if ( ! zz_out )
1334 zz_out = stdout;
1335
1336 if ( ! YY_CURRENT_BUFFER ) {
1337 zz_ensure_buffer_stack ();
1338 YY_CURRENT_BUFFER_LVALUE =
1339 zz__create_buffer(zz_in,YY_BUF_SIZE );
1340 }
1341
1342 zz__load_buffer_state( );
1343 }
1344
1345 while ( 1 ) /* loops until end-of-file is reached */
1346 {
1347 yy_cp = (yy_c_buf_p);
1348
1349 /* Support of zz_text. */
1350 *yy_cp = (yy_hold_char);
1351
1352 /* yy_bp points to the position in yy_ch_buf of the start of
1353 * the current run.
1354 */
1355 yy_bp = yy_cp;
1356
1357 yy_current_state = (yy_start);
1358
1359 (yy_state_ptr) = (yy_state_buf);
1360 *(yy_state_ptr)++ = yy_current_state;
1361
1362 yy_match:
1363 do
1364 {
1365 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1366 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1367 {
1368 yy_current_state = (int) yy_def[yy_current_state];
1369 if ( yy_current_state >= 520 )
1370 yy_c = yy_meta[(unsigned int) yy_c];
1371 }
1372 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1373 *(yy_state_ptr)++ = yy_current_state;
1374 ++yy_cp;
1375 }
1376 while ( yy_base[yy_current_state] != 1055 );
1377
1378 yy_find_action:
1379 yy_current_state = *--(yy_state_ptr);
1380 (yy_lp) = yy_accept[yy_current_state];
1381 find_rule: /* we branch to this label when backing up */
1382 for ( ; ; ) /* until we find what rule we matched */
1383 {
1384 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
1385 {
1386 yy_act = yy_acclist[(yy_lp)];
1387 if ( yy_act & YY_TRAILING_HEAD_MASK ||
1388 yy_looking_for_trail_begin )
1389 {
1390 if ( yy_act == yy_looking_for_trail_begin )
1391 {
1392 yy_looking_for_trail_begin = 0;
1393 yy_act &= ~YY_TRAILING_HEAD_MASK;
1394 break;
1395 }
1396 }
1397 else if ( yy_act & YY_TRAILING_MASK )
1398 {
1399 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
1400 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
1401 (yy_full_match) = yy_cp;
1402 yy_full_state = (yy_state_ptr);
1403 yy_full_lp = (yy_lp);
1404 }
1405 else
1406 {
1407 (yy_full_match) = yy_cp;
1408 yy_full_state = (yy_state_ptr);
1409 yy_full_lp = (yy_lp);
1410 break;
1411 }
1412 ++(yy_lp);
1413 goto find_rule;
1414 }
1415 --yy_cp;
1416 yy_current_state = *--(yy_state_ptr);
1417 (yy_lp) = yy_accept[yy_current_state];
1418 }
1419
1420 YY_DO_BEFORE_ACTION;
1421
1422 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1423 {
1424 int yyl;
1425 for ( yyl = (yy_prev_more_offset); yyl < zz_leng; ++yyl )
1426 if ( zz_text[yyl] == '\n' )
1427
1428 zz_lineno++;
1429 ;
1430 }
1431
1432 do_action: /* This label is used only to access EOF actions. */
1433
1434 switch ( yy_act )
1435 { /* beginning of action switch */
1436 case 1:
1437 YY_RULE_SETUP
1438 #line 161 "base/generic/compiler/scanner.l"
1439 { return LEQ_TOK; }
1440 YY_BREAK
1441 case 2:
1442 YY_RULE_SETUP
1443 #line 162 "base/generic/compiler/scanner.l"
1444 { return GEQ_TOK; }
1445 YY_BREAK
1446 case 3:
1447 YY_RULE_SETUP
1448 #line 163 "base/generic/compiler/scanner.l"
1449 { return NEQ_TOK; }
1450 YY_BREAK
1451 case 4:
1452 YY_RULE_SETUP
1453 #line 164 "base/generic/compiler/scanner.l"
1454 { return DOTDOT_TOK; }
1455 YY_BREAK
1456 case 5:
1457 YY_RULE_SETUP
1458 #line 165 "base/generic/compiler/scanner.l"
1459 { return DBLCOLON_TOK;}
1460 YY_BREAK
1461 case 6:
1462 YY_RULE_SETUP
1463 #line 166 "base/generic/compiler/scanner.l"
1464 { return ASSIGN_TOK; }
1465 YY_BREAK
1466 case 7:
1467 YY_RULE_SETUP
1468 #line 167 "base/generic/compiler/scanner.l"
1469 { return CASSIGN_TOK; }
1470 YY_BREAK
1471 case 8:
1472 YY_RULE_SETUP
1473 #line 168 "base/generic/compiler/scanner.l"
1474 { return BEQ_TOK ; }
1475 YY_BREAK
1476 case 9:
1477 YY_RULE_SETUP
1478 #line 169 "base/generic/compiler/scanner.l"
1479 { return BNE_TOK ; }
1480 YY_BREAK
1481 case 10:
1482 YY_RULE_SETUP
1483 #line 171 "base/generic/compiler/scanner.l"
1484 { return '=' ;}
1485 YY_BREAK
1486 case 11:
1487 YY_RULE_SETUP
1488 #line 172 "base/generic/compiler/scanner.l"
1489 { return '>' ;}
1490 YY_BREAK
1491 case 12:
1492 YY_RULE_SETUP
1493 #line 173 "base/generic/compiler/scanner.l"
1494 { return '<' ;}
1495 YY_BREAK
1496 case 13:
1497 YY_RULE_SETUP
1498 #line 174 "base/generic/compiler/scanner.l"
1499 { return ',' ;}
1500 YY_BREAK
1501 case 14:
1502 YY_RULE_SETUP
1503 #line 175 "base/generic/compiler/scanner.l"
1504 { return '.' ;}
1505 YY_BREAK
1506 case 15:
1507 YY_RULE_SETUP
1508 #line 176 "base/generic/compiler/scanner.l"
1509 { return ';' ;}
1510 YY_BREAK
1511 case 16:
1512 YY_RULE_SETUP
1513 #line 177 "base/generic/compiler/scanner.l"
1514 { return ':' ;}
1515 YY_BREAK
1516 case 17:
1517 YY_RULE_SETUP
1518 #line 178 "base/generic/compiler/scanner.l"
1519 { return '[' ;}
1520 YY_BREAK
1521 case 18:
1522 YY_RULE_SETUP
1523 #line 179 "base/generic/compiler/scanner.l"
1524 { return ']' ;}
1525 YY_BREAK
1526 case 19:
1527 YY_RULE_SETUP
1528 #line 180 "base/generic/compiler/scanner.l"
1529 { return '(' ;}
1530 YY_BREAK
1531 case 20:
1532 YY_RULE_SETUP
1533 #line 181 "base/generic/compiler/scanner.l"
1534 { return ')' ;}
1535 YY_BREAK
1536 case 21:
1537 YY_RULE_SETUP
1538 #line 182 "base/generic/compiler/scanner.l"
1539 { return '+' ;}
1540 YY_BREAK
1541 case 22:
1542 YY_RULE_SETUP
1543 #line 183 "base/generic/compiler/scanner.l"
1544 { return '-' ;}
1545 YY_BREAK
1546 case 23:
1547 YY_RULE_SETUP
1548 #line 184 "base/generic/compiler/scanner.l"
1549 { return '*' ;}
1550 YY_BREAK
1551 case 24:
1552 YY_RULE_SETUP
1553 #line 185 "base/generic/compiler/scanner.l"
1554 { return '/' ;}
1555 YY_BREAK
1556 case 25:
1557 YY_RULE_SETUP
1558 #line 186 "base/generic/compiler/scanner.l"
1559 { return '^' ;}
1560 YY_BREAK
1561 case 26:
1562 YY_RULE_SETUP
1563 #line 187 "base/generic/compiler/scanner.l"
1564 { return '|' ;}
1565 YY_BREAK
1566 /**** Reserved Keywords ****/
1567 case 27:
1568 YY_RULE_SETUP
1569 #line 191 "base/generic/compiler/scanner.l"
1570 { return ADD_TOK ; }
1571 YY_BREAK
1572 case 28:
1573 YY_RULE_SETUP
1574 #line 192 "base/generic/compiler/scanner.l"
1575 { return ALIASES_TOK ; }
1576 YY_BREAK
1577 case 29:
1578 YY_RULE_SETUP
1579 #line 193 "base/generic/compiler/scanner.l"
1580 { return AND_TOK ; }
1581 YY_BREAK
1582 case 30:
1583 YY_RULE_SETUP
1584 #line 194 "base/generic/compiler/scanner.l"
1585 { return ANY_TOK ; }
1586 YY_BREAK
1587 case 31:
1588 YY_RULE_SETUP
1589 #line 195 "base/generic/compiler/scanner.l"
1590 { return AREALIKE_TOK ; }
1591 YY_BREAK
1592 case 32:
1593 YY_RULE_SETUP
1594 #line 196 "base/generic/compiler/scanner.l"
1595 { return ARETHESAME_TOK ; }
1596 YY_BREAK
1597 case 33:
1598 YY_RULE_SETUP
1599 #line 197 "base/generic/compiler/scanner.l"
1600 { return ARRAY_TOK ; }
1601 YY_BREAK
1602 case 34:
1603 YY_RULE_SETUP
1604 #line 198 "base/generic/compiler/scanner.l"
1605 { return ATOM_TOK ; }
1606 YY_BREAK
1607 case 35:
1608 YY_RULE_SETUP
1609 #line 199 "base/generic/compiler/scanner.l"
1610 { return BREAK_TOK ; }
1611 YY_BREAK
1612 case 36:
1613 YY_RULE_SETUP
1614 #line 200 "base/generic/compiler/scanner.l"
1615 { return CALL_TOK ; }
1616 YY_BREAK
1617 case 37:
1618 YY_RULE_SETUP
1619 #line 201 "base/generic/compiler/scanner.l"
1620 { return CARD_TOK ; }
1621 YY_BREAK
1622 case 38:
1623 YY_RULE_SETUP
1624 #line 202 "base/generic/compiler/scanner.l"
1625 { return CASE_TOK ; }
1626 YY_BREAK
1627 case 39:
1628 YY_RULE_SETUP
1629 #line 203 "base/generic/compiler/scanner.l"
1630 { return CHECK_TOK ; }
1631 YY_BREAK
1632 case 40:
1633 YY_RULE_SETUP
1634 #line 204 "base/generic/compiler/scanner.l"
1635 { return CHOICE_TOK ; }
1636 YY_BREAK
1637 case 41:
1638 YY_RULE_SETUP
1639 #line 205 "base/generic/compiler/scanner.l"
1640 { return CONDITIONAL_TOK ; }
1641 YY_BREAK
1642 case 42:
1643 YY_RULE_SETUP
1644 #line 206 "base/generic/compiler/scanner.l"
1645 { return CONSTANT_TOK ; }
1646 YY_BREAK
1647 case 43:
1648 YY_RULE_SETUP
1649 #line 207 "base/generic/compiler/scanner.l"
1650 { return CONTINUE_TOK ; }
1651 YY_BREAK
1652 case 44:
1653 YY_RULE_SETUP
1654 #line 208 "base/generic/compiler/scanner.l"
1655 { return CREATE_TOK ; }
1656 YY_BREAK
1657 case 45:
1658 YY_RULE_SETUP
1659 #line 209 "base/generic/compiler/scanner.l"
1660 { return DATA_TOK ; }
1661 YY_BREAK
1662 case 46:
1663 YY_RULE_SETUP
1664 #line 210 "base/generic/compiler/scanner.l"
1665 { return DECREASING_TOK ; }
1666 YY_BREAK
1667 case 47:
1668 YY_RULE_SETUP
1669 #line 211 "base/generic/compiler/scanner.l"
1670 { return DEFAULT_TOK ; }
1671 YY_BREAK
1672 case 48:
1673 YY_RULE_SETUP
1674 #line 212 "base/generic/compiler/scanner.l"
1675 { return DEFINITION_TOK ; }
1676 YY_BREAK
1677 case 49:
1678 YY_RULE_SETUP
1679 #line 213 "base/generic/compiler/scanner.l"
1680 { return DIMENSION_TOK ; }
1681 YY_BREAK
1682 case 50:
1683 YY_RULE_SETUP
1684 #line 214 "base/generic/compiler/scanner.l"
1685 { return DIMENSIONLESS_TOK ; }
1686 YY_BREAK
1687 case 51:
1688 YY_RULE_SETUP
1689 #line 215 "base/generic/compiler/scanner.l"
1690 { return DO_TOK ; }
1691 YY_BREAK
1692 case 52:
1693 YY_RULE_SETUP
1694 #line 216 "base/generic/compiler/scanner.l"
1695 { return ELSE_TOK ; }
1696 YY_BREAK
1697 case 53:
1698 YY_RULE_SETUP
1699 #line 217 "base/generic/compiler/scanner.l"
1700 { return END_TOK ; }
1701 YY_BREAK
1702 case 54:
1703 YY_RULE_SETUP
1704 #line 218 "base/generic/compiler/scanner.l"
1705 { return EXPECT_TOK ; }
1706 YY_BREAK
1707 case 55:
1708 YY_RULE_SETUP
1709 #line 219 "base/generic/compiler/scanner.l"
1710 { return EXTERNAL_TOK ; }
1711 YY_BREAK
1712 case 56:
1713 YY_RULE_SETUP
1714 #line 220 "base/generic/compiler/scanner.l"
1715 { return FALSE_TOK ; }
1716 YY_BREAK
1717 case 57:
1718 YY_RULE_SETUP
1719 #line 221 "base/generic/compiler/scanner.l"
1720 { return FALLTHRU_TOK ; }
1721 YY_BREAK
1722 case 58:
1723 YY_RULE_SETUP
1724 #line 222 "base/generic/compiler/scanner.l"
1725 { return FIX_TOK ; }
1726 YY_BREAK
1727 case 59:
1728 YY_RULE_SETUP
1729 #line 223 "base/generic/compiler/scanner.l"
1730 { return FREE_TOK ; }
1731 YY_BREAK
1732 case 60:
1733 YY_RULE_SETUP
1734 #line 224 "base/generic/compiler/scanner.l"
1735 { return FOR_TOK ; }
1736 YY_BREAK
1737 case 61:
1738 YY_RULE_SETUP
1739 #line 225 "base/generic/compiler/scanner.l"
1740 { return FROM_TOK ; }
1741 YY_BREAK
1742 case 62:
1743 YY_RULE_SETUP
1744 #line 226 "base/generic/compiler/scanner.l"
1745 { return GLOBAL_TOK ; }
1746 YY_BREAK
1747 case 63:
1748 YY_RULE_SETUP
1749 #line 227 "base/generic/compiler/scanner.l"
1750 { return ASSERT_TOK ; }
1751 YY_BREAK
1752 case 64:
1753 YY_RULE_SETUP
1754 #line 228 "base/generic/compiler/scanner.l"
1755 { return IF_TOK ; }
1756 YY_BREAK
1757 case 65:
1758 YY_RULE_SETUP
1759 #line 229 "base/generic/compiler/scanner.l"
1760 { return IMPORT_TOK ; }
1761 YY_BREAK
1762 case 66:
1763 YY_RULE_SETUP
1764 #line 230 "base/generic/compiler/scanner.l"
1765 { return IN_TOK ; }
1766 YY_BREAK
1767 case 67:
1768 YY_RULE_SETUP
1769 #line 231 "base/generic/compiler/scanner.l"
1770 { return INCREASING_TOK ; }
1771 YY_BREAK
1772 case 68:
1773 YY_RULE_SETUP
1774 #line 232 "base/generic/compiler/scanner.l"
1775 { return INPUT_TOK ; }
1776 YY_BREAK
1777 case 69:
1778 YY_RULE_SETUP
1779 #line 233 "base/generic/compiler/scanner.l"
1780 { return INTERSECTION_TOK ; }
1781 YY_BREAK
1782 case 70:
1783 YY_RULE_SETUP
1784 #line 234 "base/generic/compiler/scanner.l"
1785 { return ISA_TOK ; }
1786 YY_BREAK
1787 case 71:
1788 YY_RULE_SETUP
1789 #line 235 "base/generic/compiler/scanner.l"
1790 { return ISREFINEDTO_TOK ; }
1791 YY_BREAK
1792 case 72:
1793 YY_RULE_SETUP
1794 #line 236 "base/generic/compiler/scanner.l"
1795 { return MAXIMIZE_TOK ; }
1796 YY_BREAK
1797 case 73:
1798 YY_RULE_SETUP
1799 #line 237 "base/generic/compiler/scanner.l"
1800 { return MAXINTEGER_TOK ; }
1801 YY_BREAK
1802 case 74:
1803 YY_RULE_SETUP
1804 #line 238 "base/generic/compiler/scanner.l"
1805 { return MAXREAL_TOK ; }
1806 YY_BREAK
1807 case 75:
1808 YY_RULE_SETUP
1809 #line 239 "base/generic/compiler/scanner.l"
1810 { return METHOD_TOK ; }
1811 YY_BREAK
1812 case 76:
1813 YY_RULE_SETUP
1814 #line 240 "base/generic/compiler/scanner.l"
1815 { return METHODS_TOK ; }
1816 YY_BREAK
1817 case 77:
1818 YY_RULE_SETUP
1819 #line 241 "base/generic/compiler/scanner.l"
1820 { return MINIMIZE_TOK ; }
1821 YY_BREAK
1822 case 78:
1823 YY_RULE_SETUP
1824 #line 242 "base/generic/compiler/scanner.l"
1825 { return MODEL_TOK ; }
1826 YY_BREAK
1827 case 79:
1828 YY_RULE_SETUP
1829 #line 243 "base/generic/compiler/scanner.l"
1830 { return NOT_TOK ; }
1831 YY_BREAK
1832 case 80:
1833 YY_RULE_SETUP
1834 #line 244 "base/generic/compiler/scanner.l"
1835 { return NOTES_TOK ; }
1836 YY_BREAK
1837 case 81:
1838 YY_RULE_SETUP
1839 #line 245 "base/generic/compiler/scanner.l"
1840 { return OF_TOK ; }
1841 YY_BREAK
1842 case 82:
1843 YY_RULE_SETUP
1844 #line 246 "base/generic/compiler/scanner.l"
1845 { return OR_TOK ; }
1846 YY_BREAK
1847 case 83:
1848 YY_RULE_SETUP
1849 #line 247 "base/generic/compiler/scanner.l"
1850 { return OTHERWISE_TOK ; }
1851 YY_BREAK
1852 case 84:
1853 YY_RULE_SETUP
1854 #line 248 "base/generic/compiler/scanner.l"
1855 { return OUTPUT_TOK ; }
1856 YY_BREAK
1857 case 85:
1858 YY_RULE_SETUP
1859 #line 249 "base/generic/compiler/scanner.l"
1860 { return PROD_TOK ; }
1861 YY_BREAK
1862 case 86:
1863 YY_RULE_SETUP
1864 #line 250 "base/generic/compiler/scanner.l"
1865 { return PROVIDE_TOK ; }
1866 YY_BREAK
1867 case 87:
1868 YY_RULE_SETUP
1869 #line 251 "base/generic/compiler/scanner.l"
1870 { return REFINES_TOK ; }
1871 YY_BREAK
1872 case 88:
1873 YY_RULE_SETUP
1874 #line 252 "base/generic/compiler/scanner.l"
1875 { return REPLACE_TOK ; }
1876 YY_BREAK
1877 case 89:
1878 YY_RULE_SETUP
1879 #line 253 "base/generic/compiler/scanner.l"
1880 { return REQUIRE_TOK ; }
1881 YY_BREAK
1882 case 90:
1883 YY_RULE_SETUP
1884 #line 254 "base/generic/compiler/scanner.l"
1885 { return RETURN_TOK ; }
1886 YY_BREAK
1887 case 91:
1888 YY_RULE_SETUP
1889 #line 255 "base/generic/compiler/scanner.l"
1890 { return RUN_TOK ; }
1891 YY_BREAK
1892 case 92:
1893 YY_RULE_SETUP
1894 #line 256 "base/generic/compiler/scanner.l"
1895 { return SATISFIED_TOK ; }
1896 YY_BREAK
1897 case 93:
1898 YY_RULE_SETUP
1899 #line 257 "base/generic/compiler/scanner.l"
1900 { return SELECT_TOK ; }
1901 YY_BREAK
1902 case 94:
1903 YY_RULE_SETUP
1904 #line 258 "base/generic/compiler/scanner.l"
1905 { return SUCHTHAT_TOK ; }
1906 YY_BREAK
1907 case 95:
1908 YY_RULE_SETUP
1909 #line 259 "base/generic/compiler/scanner.l"
1910 { return SUM_TOK ; }
1911 YY_BREAK
1912 case 96:
1913 YY_RULE_SETUP
1914 #line 260 "base/generic/compiler/scanner.l"
1915 { return SIZE_TOK ; }
1916 YY_BREAK
1917 case 97:
1918 YY_RULE_SETUP
1919 #line 261 "base/generic/compiler/scanner.l"
1920 { return SWITCH_TOK ; }
1921 YY_BREAK
1922 case 98:
1923 YY_RULE_SETUP
1924 #line 262 "base/generic/compiler/scanner.l"
1925 { return STOP_TOK ; }
1926 YY_BREAK
1927 case 99:
1928 YY_RULE_SETUP
1929 #line 263 "base/generic/compiler/scanner.l"
1930 { return THEN_TOK ; }
1931 YY_BREAK
1932 case 100:
1933 YY_RULE_SETUP
1934 #line 264 "base/generic/compiler/scanner.l"
1935 { return TRUE_TOK ; }
1936 YY_BREAK
1937 case 101:
1938 YY_RULE_SETUP
1939 #line 265 "base/generic/compiler/scanner.l"
1940 { return UNION_TOK ; }
1941 YY_BREAK
1942 case 102:
1943 YY_RULE_SETUP
1944 #line 266 "base/generic/compiler/scanner.l"
1945 { return UNITS_TOK ; }
1946 YY_BREAK
1947 case 103:
1948 YY_RULE_SETUP
1949 #line 267 "base/generic/compiler/scanner.l"
1950 { return UNIVERSAL_TOK ; }
1951 YY_BREAK
1952 case 104:
1953 YY_RULE_SETUP
1954 #line 268 "base/generic/compiler/scanner.l"
1955 { return USE_TOK ; }
1956 YY_BREAK
1957 case 105:
1958 YY_RULE_SETUP
1959 #line 269 "base/generic/compiler/scanner.l"
1960 { return VALUE_TOK ; }
1961 YY_BREAK
1962 case 106:
1963 YY_RULE_SETUP
1964 #line 270 "base/generic/compiler/scanner.l"
1965 { return WHEN_TOK ; }
1966 YY_BREAK
1967 case 107:
1968 YY_RULE_SETUP
1969 #line 271 "base/generic/compiler/scanner.l"
1970 { return WHERE_TOK ; }
1971 YY_BREAK
1972 case 108:
1973 YY_RULE_SETUP
1974 #line 272 "base/generic/compiler/scanner.l"
1975 { return WHILE_TOK ; }
1976 YY_BREAK
1977 case 109:
1978 YY_RULE_SETUP
1979 #line 273 "base/generic/compiler/scanner.l"
1980 { return WILLBE_TOK ; }
1981 YY_BREAK
1982 case 110:
1983 YY_RULE_SETUP
1984 #line 274 "base/generic/compiler/scanner.l"
1985 { return WILLBETHESAME_TOK ; }
1986 YY_BREAK
1987 case 111:
1988 YY_RULE_SETUP
1989 #line 275 "base/generic/compiler/scanner.l"
1990 { return WILLNOTBETHESAME_TOK ; }
1991 YY_BREAK
1992 case 112:
1993 YY_RULE_SETUP
1994 #line 276 "base/generic/compiler/scanner.l"
1995 { return WITH_TOK ; }
1996 YY_BREAK
1997 case 113:
1998 YY_RULE_SETUP
1999 #line 277 "base/generic/compiler/scanner.l"
2000 { return WITH_VALUE_T ; }
2001 YY_BREAK
2002 /*
2003 * Code to handle (* Comments *)
2004 *
2005 * "(*" puts us into the Comment state. Comments nest, so in the
2006 * Comment state we need to look for "(*" that increases the nesting
2007 * level and "*)" that will lower it.
2008 * Flex is faster if we match as much as possible, so we repeat
2009 * patterns with and without the "\n" (although it is more difficult
2010 * for the maintainer to understand) to avoid the overhead of a
2011 * separate "\n" rule.
2012 * Do NOT try to match \(\*+ since that causes "(****)" to parse
2013 * incorrectly.
2014 */
2015 case 114:
2016 YY_RULE_SETUP
2017 #line 293 "base/generic/compiler/scanner.l"
2018 {
2019 /* Match "(" followed by "*" puts us into
2020 * the COMMENT state. Don't use \*+ since
2021 * that will parse "(***)" incorrectly.
2022 * Initialize the nesting level.
2023 * Store the current line for ErrMsg use.
2024 */
2025 BEGIN (Comment);
2026 CommentNestLevel = 1;
2027 start_line = yy_line;
2028 break;
2029 }
2030 YY_BREAK
2031 case 115:
2032 YY_RULE_SETUP
2033 #line 305 "base/generic/compiler/scanner.l"
2034 {
2035 /* Match "(" followed "*" followed by
2036 * anything that's not "(" nor "*".
2037 * Increase the commment nesting level.
2038 */
2039 CommentNestLevel++;
2040 break;
2041 }
2042 YY_BREAK
2043 case 116:
2044 /* rule 116 can match eol */
2045 YY_RULE_SETUP
2046 #line 313 "base/generic/compiler/scanner.l"
2047 {
2048 /* Match "(" followed by "*" followed by
2049 * anything that's not "(" nor "*".
2050 * Increase the commment nesting level.
2051 */
2052 yy_line++;
2053 CommentNestLevel++;
2054 break;
2055 }
2056 YY_BREAK
2057 case 117:
2058 YY_RULE_SETUP
2059 #line 322 "base/generic/compiler/scanner.l"
2060 {
2061 /* Match anything not "*" or "(" followed
2062 * by one or more "*"s followed by ")".
2063 * This decreases the comment nesting level
2064 * and kicks us out if we're back to zero.
2065 */
2066 CommentNestLevel--;
2067 if (CommentNestLevel == 0) {
2068 BEGIN (INITIAL);
2069 }
2070 break;
2071 }
2072 YY_BREAK
2073 case 118:
2074 YY_RULE_SETUP
2075 #line 334 "base/generic/compiler/scanner.l"
2076 {
2077 /* Eat anything that's not a "*" nor a "("
2078 */
2079 break;
2080 }
2081 YY_BREAK
2082 case 119:
2083 /* rule 119 can match eol */
2084 YY_RULE_SETUP
2085 #line 339 "base/generic/compiler/scanner.l"
2086 {
2087 /* Eat anything that's not a "*" nor a "("
2088 * that is followed by a newline.
2089 * This rule also matches empty line.
2090 */
2091 yy_line++;
2092 break;
2093 }
2094 YY_BREAK
2095 case 120:
2096 YY_RULE_SETUP
2097 #line 347 "base/generic/compiler/scanner.l"
2098 {
2099 /* Eat "("s not followed by "*"
2100 */
2101 break;
2102 }
2103 YY_BREAK
2104 case 121:
2105 /* rule 121 can match eol */
2106 YY_RULE_SETUP
2107 #line 352 "base/generic/compiler/scanner.l"
2108 {
2109 /* Eat "("s not followed by "*" plus a "\n"
2110 */
2111 yy_line++;
2112 break;
2113 }
2114 YY_BREAK
2115 case 122:
2116 YY_RULE_SETUP
2117 #line 358 "base/generic/compiler/scanner.l"
2118 {
2119 /* Eat "*"s not followed by ")"
2120 */
2121 break;
2122 }
2123 YY_BREAK
2124 case 123:
2125 /* rule 123 can match eol */
2126 YY_RULE_SETUP
2127 #line 363 "base/generic/compiler/scanner.l"
2128 {
2129 /* Eat "*" not followed by ")" plus a "\n"
2130 */
2131 yy_line++;
2132 break;
2133 }
2134 YY_BREAK
2135 case YY_STATE_EOF(Comment):
2136 #line 369 "base/generic/compiler/scanner.l"
2137 {
2138 /* An EOF in a Comment means bad nesting.
2139 * Print an error and pop back a level
2140 * or return ENDTOK if no more input.
2141 */
2142 ErrMsg_CommentEOF();
2143 CommentNestLevel = 0;
2144 if ( Asc_ScannerPopBuffer() == 1 ) {
2145 return ENDTOK;
2146 }
2147 break;
2148 }
2149 YY_BREAK
2150 /*
2151 * Code to handle 'Symbols'
2152 *
2153 * Symbols are simple: they are 'singely quoted strings' that
2154 * exist on a single line. Look for anything that is not
2155 * a quote or a newline to get the text of the symbol.
2156 */
2157 case 124:
2158 YY_RULE_SETUP
2159 #line 391 "base/generic/compiler/scanner.l"
2160 {
2161 /* A single quote (') in the INITIAL state
2162 * puts us into the Symbol state.
2163 */
2164 BEGIN (Symbol);
2165 break;
2166 }
2167 YY_BREAK
2168 case 125:
2169 YY_RULE_SETUP
2170 #line 398 "base/generic/compiler/scanner.l"
2171 {
2172 /* Anything that is not a (') nor a newline
2173 * followed by a (') is the symbol's text.
2174 * Return to the INITIAL state, store the
2175 * symbol in the symbol table and return
2176 * SYMBOL_TOK to the parser.
2177 */
2178 BEGIN (INITIAL);
2179 /* strip off the final (')
2180 */
2181 zz_text[--zz_leng] = '\0';
2182 if (zz_leng > YY_MAXLEN) {
2183 ErrMsg_LongSymbol();
2184 break;
2185 }
2186 zz_lval.sym_ptr = AddSymbolL(zz_text,zz_leng);
2187 return SYMBOL_TOK;
2188 }
2189 YY_BREAK
2190 case 126:
2191 /* rule 126 can match eol */
2192 YY_RULE_SETUP
2193 #line 416 "base/generic/compiler/scanner.l"
2194 {
2195 /* If we find a newline before a ('), the
2196 * symbol is unterminated. Print an error
2197 * message and return to the INITIAL state.
2198 */
2199 ErrMsg_SymbolEOL();
2200 yy_line++;
2201 BEGIN(INITIAL);
2202 break;
2203 }
2204 YY_BREAK
2205 case YY_STATE_EOF(Symbol):
2206 #line 426 "base/generic/compiler/scanner.l"
2207 {
2208 /* If we find an EOF before a ('), the
2209 * symbol is unterminated. Print an error
2210 * message and pop to the previously
2211 * REQUIREd file or return ENDTOK if the
2212 * pop fails due to no more input.
2213 */
2214 ErrMsg_SymbolEOF();
2215 if ( Asc_ScannerPopBuffer() == 1 ) {
2216 return ENDTOK;
2217 }
2218 break;
2219 }
2220 YY_BREAK
2221 /*
2222 * Code to handle "Text in Double Quotes"
2223 *
2224 * The DoubleQuote state begins with a double quote and ends
2225 * with a double quote; double quotes can be included by
2226 * escaping them with a backslash (e.g. \"). There is no
2227 * nesting level to worry about.
2228 * Flex is faster if we match as much as possible, so we repeat
2229 * patterns with and without the "\n" (although it is more difficult
2230 * for the maintainer to understand) to avoid the overhead of a
2231 * separate "\n" rule.
2232 * We want to keep the text, so we need to call yymore().
2233 */
2234 case 127:
2235 YY_RULE_SETUP
2236 #line 455 "base/generic/compiler/scanner.l"
2237 {
2238 /* A double quote puts us into the
2239 * DoubleQuote state. Save the line
2240 * number for error reporting.
2241 */
2242 BEGIN (DoubleQuote);
2243 start_line = yy_line;
2244 break;
2245 }
2246 YY_BREAK
2247 case 128:
2248 YY_RULE_SETUP
2249 #line 464 "base/generic/compiler/scanner.l"
2250 {
2251 /* A backslash \ in the DoubleQuote
2252 * state protects any character.
2253 */
2254 MatchedBackslash++;
2255 yymore();
2256 break;
2257 }
2258 YY_BREAK
2259 case 129:
2260 /* rule 129 can match eol */
2261 YY_RULE_SETUP
2262 #line 472 "base/generic/compiler/scanner.l"
2263 {
2264 /* A backslash \ in the DoubleQuote
2265 * state protects a newline.
2266 */
2267 MatchedBackslash++;
2268 yy_line++;
2269 yymore();
2270 break;
2271 }
2272 YY_BREAK
2273 case 130:
2274 YY_RULE_SETUP
2275 #line 481 "base/generic/compiler/scanner.l"
2276 {
2277 /* A double quote in the DoubleQuote state
2278 * (that is not protected by backslash)
2279 * will put us back in the INITIAL state.
2280 * Process the string and return DQUOTE_TOK
2281 * to the parser.
2282 */
2283 BEGIN (INITIAL);
2284 /* Remove the final double quote
2285 */
2286 zz_text[--zz_leng] = '\0';
2287 /* Do backslash substitutions on the string
2288 * before returing it to the scanner.
2289 */
2290 if ( MatchedBackslash != 0 ) {
2291 Process_Backslashes();
2292 MatchedBackslash = 0;
2293 }
2294 zz_lval.dquote_ptr =
2295 CopyIntoWorkBuffer(zz_text,zz_leng);
2296 return DQUOTE_TOK;
2297 }
2298 YY_BREAK
2299 case 131:
2300 YY_RULE_SETUP
2301 #line 503 "base/generic/compiler/scanner.l"
2302 {
2303 /* Match anything that is not backslash nor
2304 * doublequote and add it to the text.
2305 */
2306 yymore();
2307 break;
2308 }
2309 YY_BREAK
2310 case 132:
2311 /* rule 132 can match eol */
2312 YY_RULE_SETUP
2313 #line 510 "base/generic/compiler/scanner.l"
2314 {
2315 /* Match anything that is not backslash nor
2316 * doublequote and add it to the text.
2317 * This also matches an empty line.
2318 */
2319 yy_line++;
2320 yymore();
2321 break;
2322 }
2323 YY_BREAK
2324 case YY_STATE_EOF(DoubleQuote):
2325 #line 519 "base/generic/compiler/scanner.l"
2326 {
2327 /* End of File in a DoubleQuote state
2328 * means no matching double quote.
2329 * Print an error and pop next buffer
2330 * off the RequireStack or return ENDTOK
2331 * if there is no more input.
2332 */
2333 ErrMsg_DoubleQuoteEOF();
2334 MatchedBackslash = 0;
2335 if ( Asc_ScannerPopBuffer() == 1 ) {
2336 return ENDTOK;
2337 }
2338 break;
2339 }
2340 YY_BREAK
2341 /*
2342 * Code to handle { Text in Braces }
2343 *
2344 * "{" puts us into the BracedText state. Braces nest, so
2345 * in the BracedText state we need to look for "{" that increases
2346 * the nesting level and "}" that will lower it.
2347 * Flex is faster if we match as much as possible, so we repeat
2348 * patterns with and without the "\n" (although it is more difficult
2349 * for the maintainer to understand) to avoid the overhead of a
2350 * separate "\n" rule.
2351 * We want to keep the text we scan, so we have to call yymore().
2352 */
2353 case 133:
2354 /* rule 133 can match eol */
2355 YY_RULE_SETUP
2356 #line 548 "base/generic/compiler/scanner.l"
2357 { /* A "{" puts us into the BracedText state.
2358 * If from the opening "{" to the first
2359 * newline is all whitespace, then ignore
2360 * it.
2361 * Initialize the nesting level.
2362 * Save the current line number for
2363 * error message reporting.
2364 */
2365 BEGIN (BracedText);
2366 BracesNestLevel = 1;
2367 start_line = yy_line;
2368 yy_line++;
2369 break;
2370 }
2371 YY_BREAK
2372 case 134:
2373 YY_RULE_SETUP
2374 #line 562 "base/generic/compiler/scanner.l"
2375 {
2376 /* A "{" puts us into the BracedText state.
2377 * Initialize the nesting level.
2378 * Save the current line number for
2379 * error message reporting.
2380 */
2381 BEGIN (BracedText);
2382 BracesNestLevel = 1;
2383 start_line = yy_line;
2384 break;
2385 }
2386 YY_BREAK
2387 case 135:
2388 YY_RULE_SETUP
2389 #line 573 "base/generic/compiler/scanner.l"
2390 {
2391 /* A backslash \ in the BracedText state
2392 * protects any character and does not
2393 * affect the Nesting Level.
2394 */
2395 MatchedBackslash++;
2396 yymore();
2397 break;
2398 }
2399 YY_BREAK
2400 case 136:
2401 /* rule 136 can match eol */
2402 YY_RULE_SETUP
2403 #line 582 "base/generic/compiler/scanner.l"
2404 {
2405 /* A backslash \ in the BracedText state
2406 * protects a newline.
2407 */
2408 MatchedBackslash++;
2409 yy_line++;
2410 yymore();
2411 break;
2412 }
2413 YY_BREAK
2414 case 137:
2415 YY_RULE_SETUP
2416 #line 591 "base/generic/compiler/scanner.l"
2417 {
2418 /* A "{" in the braces state gets added to
2419 * the text and increase the nesting level.
2420 */
2421 BracesNestLevel++;
2422 yymore();
2423 break;
2424 }
2425 YY_BREAK
2426 case 138:
2427 /* rule 138 can match eol */
2428 YY_RULE_SETUP
2429 #line 599 "base/generic/compiler/scanner.l"
2430 {
2431 /* A "{" in the braces state gets added to
2432 * the text and increase the nesting level.
2433 */
2434 yy_line++;
2435 BracesNestLevel++;
2436 yymore();
2437 break;
2438 }
2439 YY_BREAK
2440 case 139:
2441 YY_RULE_SETUP
2442 #line 608 "base/generic/compiler/scanner.l"
2443 {
2444 /* A "}" will reduce the nesting level.
2445 * If the nesting level is zero, go back to
2446 * the INITIAL level, save the text as a
2447 * Symbol, do the backslash substitution,
2448 * and return BRACEDTEXT_TOK to the
2449 * parse; otherwise, add the "}" to the
2450 * text and keep scanning.
2451 */
2452 BracesNestLevel--;
2453 if (BracesNestLevel == 0) {
2454 BEGIN (INITIAL);
2455 /* Remove the final "}"
2456 */
2457 zz_text[--zz_leng] = '\0';
2458 /* Do backslash substitutions on the text
2459 * before returing it to the scanner.
2460 */
2461 if ( MatchedBackslash != 0 ) {
2462 Process_Backslashes();
2463 MatchedBackslash = 0;
2464 }
2465 zz_lval.braced_ptr =
2466 CopyIntoWorkBuffer(zz_text,zz_leng);
2467 return BRACEDTEXT_TOK;
2468 }
2469 yymore();
2470 break;
2471 }
2472 YY_BREAK
2473 case 140:
2474 YY_RULE_SETUP
2475 #line 637 "base/generic/compiler/scanner.l"
2476 {
2477 /* Match anything that is not "{" nor "}"
2478 * nor "\\"(backslash) and add it to text.
2479 */
2480 yymore();
2481 break;
2482 }
2483 YY_BREAK
2484 case 141:
2485 /* rule 141 can match eol */
2486 YY_RULE_SETUP
2487 #line 644 "base/generic/compiler/scanner.l"
2488 {
2489 /* Match anything that is not "{" nor "}"
2490 * nor "\\"(backslash) followed by a "\n"
2491 * and add it to text.
2492 * This also matches an empty line.
2493 */
2494 yy_line++;
2495 yymore();
2496 break;
2497 }
2498 YY_BREAK
2499 case YY_STATE_EOF(BracedText):
2500 #line 654 "base/generic/compiler/scanner.l"
2501 {
2502 /* End of File in braces means bad nesting.
2503 * Print an error message and pop to the
2504 * previously REQUIREd file or return
2505 * ENDTOK if no more input.
2506 */
2507 ErrMsg_BracesEOF();
2508 BracesNestLevel = 0;
2509 MatchedBackslash = 0;
2510 if ( Asc_ScannerPopBuffer() == 1 ) {
2511 return ENDTOK;
2512 }
2513 break;
2514 }
2515 YY_BREAK
2516 /*
2517 * Code to handle Miscellaneous types.
2518 *
2519 */
2520 case 142:
2521 YY_RULE_SETUP
2522 #line 675 "base/generic/compiler/scanner.l"
2523 {
2524 /* An integer. Defn near top of file.
2525 */
2526 zz_lval.int_value = atol(zz_text);
2527 return INTEGER_TOK;
2528 }
2529 YY_BREAK
2530 case 143:
2531 YY_RULE_SETUP
2532 #line 682 "base/generic/compiler/scanner.l"
2533 {
2534 /* An integer as the first number in a
2535 * range (need to avoid parsing "1..2"
2536 * as the real numbers 1.0 and 0.2).
2537 */
2538 zz_lval.int_value = atol(zz_text);
2539 return INTEGER_TOK;
2540 }
2541 YY_BREAK
2542 case 144:
2543 YY_RULE_SETUP
2544 #line 691 "base/generic/compiler/scanner.l"
2545 {
2546 /* A real number. Defn near top of file.
2547 */
2548 zz_lval.real_value = atof(zz_text);
2549 return REAL_TOK;
2550 }
2551 YY_BREAK
2552 case 145:
2553 YY_RULE_SETUP
2554 #line 698 "base/generic/compiler/scanner.l"
2555 {
2556 /* An identifier. Defn near top of file.
2557 */
2558 if (zz_leng >YY_MAXLEN) {
2559 ErrMsg_LongID();
2560 break;
2561 }
2562 zz_lval.id_ptr = AddSymbolL(zz_text,zz_leng);
2563 return IDENTIFIER_TOK;
2564 }
2565 YY_BREAK
2566 case 146:
2567 YY_RULE_SETUP
2568 #line 709 "base/generic/compiler/scanner.l"
2569 {
2570 /* Ignore whitespace. */
2571 break;
2572 }
2573 YY_BREAK
2574 case 147:
2575 /* rule 147 can match eol */
2576 YY_RULE_SETUP
2577 #line 713 "base/generic/compiler/scanner.l"
2578 {
2579 /* Ignore whitespace. */
2580 yy_line++;
2581 break;
2582 }
2583 YY_BREAK
2584 case 148:
2585 YY_RULE_SETUP
2586 #line 720 "base/generic/compiler/scanner.l"
2587 {
2588 /* Unknown character. Print error
2589 * message and keep going.
2590 */
2591 ErrMsg_UnexpectedChar();
2592 break;
2593 }
2594 YY_BREAK
2595 case YY_STATE_EOF(INITIAL):
2596 #line 728 "base/generic/compiler/scanner.l"
2597 {
2598 /* Print an error message if we
2599 * reached EOF in the middle of a
2600 * type definition. Pop to the
2601 * previously REQUIREd file or return
2602 * ENDTOK if no more input.
2603 */
2604 Asc_ErrMsgTypeDefnEOF();
2605 if ( Asc_ScannerPopBuffer() == 1 ) {
2606 return ENDTOK;
2607 }
2608 break;
2609 }
2610 YY_BREAK
2611 case 149:
2612 YY_RULE_SETUP
2613 #line 742 "base/generic/compiler/scanner.l"
2614 ECHO;
2615 YY_BREAK
2616 #line 2617 "<stdout>"
2617
2618 case YY_END_OF_BUFFER:
2619 {
2620 /* Amount of text matched not including the EOB char. */
2621 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2622
2623 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2624 *yy_cp = (yy_hold_char);
2625 YY_RESTORE_YY_MORE_OFFSET
2626
2627 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2628 {
2629 /* We're scanning a new file or input source. It's
2630 * possible that this happened because the user
2631 * just pointed zz_in at a new source and called
2632 * zz_lex(). If so, then we have to assure
2633 * consistency between YY_CURRENT_BUFFER and our
2634 * globals. Here is the right place to do so, because
2635 * this is the first action (other than possibly a
2636 * back-up) that will match for the new input source.
2637 */
2638 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2639 YY_CURRENT_BUFFER_LVALUE->yy_input_file = zz_in;
2640 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2641 }
2642
2643 /* Note that here we test for yy_c_buf_p "<=" to the position
2644 * of the first EOB in the buffer, since yy_c_buf_p will
2645 * already have been incremented past the NUL character
2646 * (since all states make transitions on EOB to the
2647 * end-of-buffer state). Contrast this with the test
2648 * in input().
2649 */
2650 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2651 { /* This was really a NUL. */
2652 yy_state_type yy_next_state;
2653
2654 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2655
2656 yy_current_state = yy_get_previous_state( );
2657
2658 /* Okay, we're now positioned to make the NUL
2659 * transition. We couldn't have
2660 * yy_get_previous_state() go ahead and do it
2661 * for us because it doesn't know how to deal
2662 * with the possibility of jamming (and we don't
2663 * want to build jamming into it because then it
2664 * will run more slowly).
2665 */
2666
2667 yy_next_state = yy_try_NUL_trans( yy_current_state );
2668
2669 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2670
2671 if ( yy_next_state )
2672 {
2673 /* Consume the NUL. */
2674 yy_cp = ++(yy_c_buf_p);
2675 yy_current_state = yy_next_state;
2676 goto yy_match;
2677 }
2678
2679 else
2680 {
2681 yy_cp = (yy_c_buf_p);
2682 goto yy_find_action;
2683 }
2684 }
2685
2686 else switch ( yy_get_next_buffer( ) )
2687 {
2688 case EOB_ACT_END_OF_FILE:
2689 {
2690 (yy_did_buffer_switch_on_eof) = 0;
2691
2692 if ( zz_wrap( ) )
2693 {
2694 /* Note: because we've taken care in
2695 * yy_get_next_buffer() to have set up
2696 * zz_text, we can now set up
2697 * yy_c_buf_p so that if some total
2698 * hoser (like flex itself) wants to
2699 * call the scanner after we return the
2700 * YY_NULL, it'll still work - another
2701 * YY_NULL will get returned.
2702 */
2703 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2704
2705 yy_act = YY_STATE_EOF(YY_START);
2706 goto do_action;
2707 }
2708
2709 else
2710 {
2711 if ( ! (yy_did_buffer_switch_on_eof) )
2712 YY_NEW_FILE;
2713 }
2714 break;
2715 }
2716
2717 case EOB_ACT_CONTINUE_SCAN:
2718 (yy_c_buf_p) =
2719 (yytext_ptr) + yy_amount_of_matched_text;
2720
2721 yy_current_state = yy_get_previous_state( );
2722
2723 yy_cp = (yy_c_buf_p);
2724 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2725 goto yy_match;
2726
2727 case EOB_ACT_LAST_MATCH:
2728 (yy_c_buf_p) =
2729 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2730
2731 yy_current_state = yy_get_previous_state( );
2732
2733 yy_cp = (yy_c_buf_p);
2734 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2735 goto yy_find_action;
2736 }
2737 break;
2738 }
2739
2740 default:
2741 YY_FATAL_ERROR(
2742 "fatal flex scanner internal error--no action found" );
2743 } /* end of action switch */
2744 } /* end of scanning one token */
2745 } /* end of zz_lex */
2746
2747 /* yy_get_next_buffer - try to read in a new buffer
2748 *
2749 * Returns a code representing an action:
2750 * EOB_ACT_LAST_MATCH -
2751 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2752 * EOB_ACT_END_OF_FILE - end of file
2753 */
2754 static int yy_get_next_buffer (void)
2755 {
2756 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2757 register char *source = (yytext_ptr);
2758 register int number_to_move, i;
2759 int ret_val;
2760
2761 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2762 YY_FATAL_ERROR(
2763 "fatal flex scanner internal error--end of buffer missed" );
2764
2765 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2766 { /* Don't try to fill the buffer, so this is an EOF. */
2767 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2768 {
2769 /* We matched a single character, the EOB, so
2770 * treat this as a final EOF.
2771 */
2772 return EOB_ACT_END_OF_FILE;
2773 }
2774
2775 else
2776 {
2777 /* We matched some text prior to the EOB, first
2778 * process it.
2779 */
2780 return EOB_ACT_LAST_MATCH;
2781 }
2782 }
2783
2784 /* Try to read more data. */
2785
2786 /* First move last chars to start of buffer. */
2787 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2788
2789 for ( i = 0; i < number_to_move; ++i )
2790 *(dest++) = *(source++);
2791
2792 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2793 /* don't do the read, it's not guaranteed to return an EOF,
2794 * just force an EOF
2795 */
2796 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2797
2798 else
2799 {
2800 int num_to_read =
2801 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2802
2803 while ( num_to_read <= 0 )
2804 { /* Not enough room in the buffer - grow it. */
2805
2806 YY_FATAL_ERROR(
2807 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2808
2809 }
2810
2811 if ( num_to_read > YY_READ_BUF_SIZE )
2812 num_to_read = YY_READ_BUF_SIZE;
2813
2814 /* Read in more data. */
2815 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2816 (yy_n_chars), (size_t) num_to_read );
2817
2818 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2819 }
2820
2821 if ( (yy_n_chars) == 0 )
2822 {
2823 if ( number_to_move == YY_MORE_ADJ )
2824 {
2825 ret_val = EOB_ACT_END_OF_FILE;
2826 zz_restart(zz_in );
2827 }
2828
2829 else
2830 {
2831 ret_val = EOB_ACT_LAST_MATCH;
2832 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2833 YY_BUFFER_EOF_PENDING;
2834 }
2835 }
2836
2837 else
2838 ret_val = EOB_ACT_CONTINUE_SCAN;
2839
2840 (yy_n_chars) += number_to_move;
2841 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2842 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2843
2844 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2845
2846 return ret_val;
2847 }
2848
2849 /* yy_get_previous_state - get the state just before the EOB char was reached */
2850
2851 static yy_state_type yy_get_previous_state (void)
2852 {
2853 register yy_state_type yy_current_state;
2854 register char *yy_cp;
2855
2856 yy_current_state = (yy_start);
2857
2858 (yy_state_ptr) = (yy_state_buf);
2859 *(yy_state_ptr)++ = yy_current_state;
2860
2861 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2862 {
2863 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2864 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2865 {
2866 yy_current_state = (int) yy_def[yy_current_state];
2867 if ( yy_current_state >= 520 )
2868 yy_c = yy_meta[(unsigned int) yy_c];
2869 }
2870 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2871 *(yy_state_ptr)++ = yy_current_state;
2872 }
2873
2874 return yy_current_state;
2875 }
2876
2877 /* yy_try_NUL_trans - try to make a transition on the NUL character
2878 *
2879 * synopsis
2880 * next_state = yy_try_NUL_trans( current_state );
2881 */
2882 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2883 {
2884 register int yy_is_jam;
2885
2886 register YY_CHAR yy_c = 1;
2887 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2888 {
2889 yy_current_state = (int) yy_def[yy_current_state];
2890 if ( yy_current_state >= 520 )
2891 yy_c = yy_meta[(unsigned int) yy_c];
2892 }
2893 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2894 yy_is_jam = (yy_current_state == 519);
2895 if ( ! yy_is_jam )
2896 *(yy_state_ptr)++ = yy_current_state;
2897
2898 return yy_is_jam ? 0 : yy_current_state;
2899 }
2900
2901 static void yyunput (int c, register char * yy_bp )
2902 {
2903 register char *yy_cp;
2904
2905 yy_cp = (yy_c_buf_p);
2906
2907 /* undo effects of setting up zz_text */
2908 *yy_cp = (yy_hold_char);
2909
2910 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2911 { /* need to shift things up to make room */
2912 /* +2 for EOB chars. */
2913 register int number_to_move = (yy_n_chars) + 2;
2914 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2915 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2916 register char *source =
2917 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2918
2919 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2920 *--dest = *--source;
2921
2922 yy_cp += (int) (dest - source);
2923 yy_bp += (int) (dest - source);
2924 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2925 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2926
2927 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2928 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2929 }
2930
2931 *--yy_cp = (char) c;
2932
2933 if ( c == '\n' ){
2934 --zz_lineno;
2935 }
2936
2937 (yytext_ptr) = yy_bp;
2938 (yy_hold_char) = *yy_cp;
2939 (yy_c_buf_p) = yy_cp;
2940 }
2941
2942 #ifndef YY_NO_INPUT
2943 #ifdef __cplusplus
2944 static int yyinput (void)
2945 #else
2946 static int input (void)
2947 #endif
2948
2949 {
2950 int c;
2951
2952 *(yy_c_buf_p) = (yy_hold_char);
2953
2954 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2955 {
2956 /* yy_c_buf_p now points to the character we want to return.
2957 * If this occurs *before* the EOB characters, then it's a
2958 * valid NUL; if not, then we've hit the end of the buffer.
2959 */
2960 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2961 /* This was really a NUL. */
2962 *(yy_c_buf_p) = '\0';
2963
2964 else
2965 { /* need more input */
2966 int offset = (yy_c_buf_p) - (yytext_ptr);
2967 ++(yy_c_buf_p);
2968
2969 switch ( yy_get_next_buffer( ) )
2970 {
2971 case EOB_ACT_LAST_MATCH:
2972 /* This happens because yy_g_n_b()
2973 * sees that we've accumulated a
2974 * token and flags that we need to
2975 * try matching the token before
2976 * proceeding. But for input(),
2977 * there's no matching to consider.
2978 * So convert the EOB_ACT_LAST_MATCH
2979 * to EOB_ACT_END_OF_FILE.
2980 */
2981
2982 /* Reset buffer status. */
2983 zz_restart(zz_in );
2984
2985 /*FALLTHROUGH*/
2986
2987 case EOB_ACT_END_OF_FILE:
2988 {
2989 if ( zz_wrap( ) )
2990 return EOF;
2991
2992 if ( ! (yy_did_buffer_switch_on_eof) )
2993 YY_NEW_FILE;
2994 #ifdef __cplusplus
2995 return yyinput();
2996 #else
2997 return input();
2998 #endif
2999 }
3000
3001 case EOB_ACT_CONTINUE_SCAN:
3002 (yy_c_buf_p) = (yytext_ptr) + offset;
3003 break;
3004 }
3005 }
3006 }
3007
3008 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3009 *(yy_c_buf_p) = '\0'; /* preserve zz_text */
3010 (yy_hold_char) = *++(yy_c_buf_p);
3011
3012 if ( c == '\n' )
3013
3014 zz_lineno++;
3015 ;
3016
3017 return c;
3018 }
3019 #endif /* ifndef YY_NO_INPUT */
3020
3021 /** Immediately switch to a different input stream.
3022 * @param input_file A readable stream.
3023 *
3024 * @note This function does not reset the start condition to @c INITIAL .
3025 */
3026 void zz_restart (FILE * input_file )
3027 {
3028
3029 if ( ! YY_CURRENT_BUFFER ){
3030 zz_ensure_buffer_stack ();
3031 YY_CURRENT_BUFFER_LVALUE =
3032 zz__create_buffer(zz_in,YY_BUF_SIZE );
3033 }
3034
3035 zz__init_buffer(YY_CURRENT_BUFFER,input_file );
3036 zz__load_buffer_state( );
3037 }
3038
3039 /** Switch to a different input buffer.
3040 * @param new_buffer The new input buffer.
3041 *
3042 */
3043 void zz__switch_to_buffer (YY_BUFFER_STATE new_buffer )
3044 {
3045
3046 /* TODO. We should be able to replace this entire function body
3047 * with
3048 * zz_pop_buffer_state();
3049 * zz_push_buffer_state(new_buffer);
3050 */
3051 zz_ensure_buffer_stack ();
3052 if ( YY_CURRENT_BUFFER == new_buffer )
3053 return;
3054
3055 if ( YY_CURRENT_BUFFER )
3056 {
3057 /* Flush out information for old buffer. */
3058 *(yy_c_buf_p) = (yy_hold_char);
3059 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3060 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3061 }
3062
3063 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3064 zz__load_buffer_state( );
3065
3066 /* We don't actually know whether we did this switch during
3067 * EOF (zz_wrap()) processing, but the only time this flag
3068 * is looked at is after zz_wrap() is called, so it's safe
3069 * to go ahead and always set it.
3070 */
3071 (yy_did_buffer_switch_on_eof) = 1;
3072 }
3073
3074 static void zz__load_buffer_state (void)
3075 {
3076 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3077 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3078 zz_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3079 (yy_hold_char) = *(yy_c_buf_p);
3080 }
3081
3082 /** Allocate and initialize an input buffer state.
3083 * @param file A readable stream.
3084 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3085 *
3086 * @return the allocated buffer state.
3087 */
3088 YY_BUFFER_STATE zz__create_buffer (FILE * file, int size )
3089 {
3090 YY_BUFFER_STATE b;
3091
3092 b = (YY_BUFFER_STATE) zz_alloc(sizeof( struct yy_buffer_state ) );
3093 if ( ! b )
3094 YY_FATAL_ERROR( "out of dynamic memory in zz__create_buffer()" );
3095
3096 b->yy_buf_size = size;
3097
3098 /* yy_ch_buf has to be 2 characters longer than the size given because
3099 * we need to put in 2 end-of-buffer characters.<