[t][TT #1610] Add tests for Parrot_compile_string
[parrot.git] / compilers / imcc / imclexer.c
bloba49c498b1e9ff40ec8d758a8d961b09fcb522544
1 #line 2 "compilers/imcc/imclexer.c"
2 #line 2 "compilers/imcc/imcc.l"
4 /* ex: set ro ft=c:
5 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
7 * This file is generated automatically by the Parrot build process
8 * from the file compilers/imcc/imcc.l.
10 * Any changes made here will be lost!
14 /* HEADERIZER HFILE: none */
15 /* HEADERIZER STOP */
17 #ifndef __STDC_VERSION__
18 # define __STDC_VERSION__ 0
19 #endif
24 #line 25 "compilers/imcc/imclexer.c"
26 #define YY_INT_ALIGNED short int
28 /* A lexical scanner generated by flex */
30 #define FLEX_SCANNER
31 #define YY_FLEX_MAJOR_VERSION 2
32 #define YY_FLEX_MINOR_VERSION 5
33 #define YY_FLEX_SUBMINOR_VERSION 35
34 #if YY_FLEX_SUBMINOR_VERSION > 0
35 #define FLEX_BETA
36 #endif
38 /* First, we deal with platform-specific or compiler-specific issues. */
40 /* begin standard C headers. */
41 #include <stdio.h>
42 #include <string.h>
43 #include <errno.h>
44 #include <stdlib.h>
46 /* end standard C headers. */
48 /* flex integer type definitions */
50 #ifndef FLEXINT_H
51 #define FLEXINT_H
53 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
55 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
57 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
58 * if you want the limit (max/min) macros for int types.
60 #ifndef __STDC_LIMIT_MACROS
61 #define __STDC_LIMIT_MACROS 1
62 #endif
64 #include <inttypes.h>
65 typedef int8_t flex_int8_t;
66 typedef uint8_t flex_uint8_t;
67 typedef int16_t flex_int16_t;
68 typedef uint16_t flex_uint16_t;
69 typedef int32_t flex_int32_t;
70 typedef uint32_t flex_uint32_t;
71 #else
72 typedef signed char flex_int8_t;
73 typedef short int flex_int16_t;
74 typedef int flex_int32_t;
75 typedef unsigned char flex_uint8_t;
76 typedef unsigned short int flex_uint16_t;
77 typedef unsigned int flex_uint32_t;
79 /* Limits of integral types. */
80 #ifndef INT8_MIN
81 #define INT8_MIN (-128)
82 #endif
83 #ifndef INT16_MIN
84 #define INT16_MIN (-32767-1)
85 #endif
86 #ifndef INT32_MIN
87 #define INT32_MIN (-2147483647-1)
88 #endif
89 #ifndef INT8_MAX
90 #define INT8_MAX (127)
91 #endif
92 #ifndef INT16_MAX
93 #define INT16_MAX (32767)
94 #endif
95 #ifndef INT32_MAX
96 #define INT32_MAX (2147483647)
97 #endif
98 #ifndef UINT8_MAX
99 #define UINT8_MAX (255U)
100 #endif
101 #ifndef UINT16_MAX
102 #define UINT16_MAX (65535U)
103 #endif
104 #ifndef UINT32_MAX
105 #define UINT32_MAX (4294967295U)
106 #endif
108 #endif /* ! C99 */
110 #endif /* ! FLEXINT_H */
112 #ifdef __cplusplus
114 /* The "const" storage-class-modifier is valid. */
115 #define YY_USE_CONST
117 #else /* ! __cplusplus */
119 /* C99 requires __STDC__ to be defined as 1. */
120 #if defined (__STDC__)
122 #define YY_USE_CONST
124 #endif /* defined (__STDC__) */
125 #endif /* ! __cplusplus */
127 #ifdef YY_USE_CONST
128 #define yyconst const
129 #else
130 #define yyconst
131 #endif
133 /* Returned upon end-of-file. */
134 #define YY_NULL 0
136 /* Promotes a possibly negative, possibly signed char to an unsigned
137 * integer for use as an array index. If the signed char is negative,
138 * we want to instead treat it as an 8-bit unsigned char, hence the
139 * double cast.
141 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
143 /* An opaque pointer. */
144 #ifndef YY_TYPEDEF_YY_SCANNER_T
145 #define YY_TYPEDEF_YY_SCANNER_T
146 typedef void* yyscan_t;
147 #endif
149 /* For convenience, these vars (plus the bison vars far below)
150 are macros in the reentrant scanner. */
151 #define yyin yyg->yyin_r
152 #define yyout yyg->yyout_r
153 #define yyextra yyg->yyextra_r
154 #define yyleng yyg->yyleng_r
155 #define yytext yyg->yytext_r
156 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
157 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
158 #define yy_flex_debug yyg->yy_flex_debug_r
160 /* Enter a start condition. This macro really ought to take a parameter,
161 * but we do it the disgusting crufty way forced on us by the ()-less
162 * definition of BEGIN.
164 #define BEGIN yyg->yy_start = 1 + 2 *
166 /* Translate the current start state into a value that can be later handed
167 * to BEGIN to return to the state. The YYSTATE alias is for lex
168 * compatibility.
170 #define YY_START ((yyg->yy_start - 1) / 2)
171 #define YYSTATE YY_START
173 /* Action number for EOF rule of a given start state. */
174 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
176 /* Special action meaning "start processing a new file". */
177 #define YY_NEW_FILE yyrestart(yyin ,yyscanner )
179 #define YY_END_OF_BUFFER_CHAR 0
181 /* Size of default input buffer. */
182 #ifndef YY_BUF_SIZE
183 #ifdef __ia64__
184 /* On IA-64, the buffer size is 16k, not 8k.
185 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
186 * Ditto for the __ia64__ case accordingly.
188 #define YY_BUF_SIZE 32768
189 #else
190 #define YY_BUF_SIZE 16384
191 #endif /* __ia64__ */
192 #endif
194 /* The state buf must be large enough to hold one state per character in the main buffer.
196 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
198 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
199 #define YY_TYPEDEF_YY_BUFFER_STATE
200 typedef struct yy_buffer_state *YY_BUFFER_STATE;
201 #endif
203 #define EOB_ACT_CONTINUE_SCAN 0
204 #define EOB_ACT_END_OF_FILE 1
205 #define EOB_ACT_LAST_MATCH 2
207 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
208 * access to the local variable yy_act. Since yyless() is a macro, it would break
209 * existing scanners that call yyless() from OUTSIDE yylex.
210 * One obvious solution it to make yy_act a global. I tried that, and saw
211 * a 5% performance hit in a non-yylineno scanner, because yy_act is
212 * normally declared as a register variable-- so it is not worth it.
214 #define YY_LESS_LINENO(n) \
215 do { \
216 int yyl;\
217 for ( yyl = n; yyl < yyleng; ++yyl )\
218 if ( yytext[yyl] == '\n' )\
219 --yylineno;\
220 }while(0)
222 /* Return all but the first "n" matched characters back to the input stream. */
223 #define yyless(n) \
224 do \
226 /* Undo effects of setting up yytext. */ \
227 int yyless_macro_arg = (n); \
228 YY_LESS_LINENO(yyless_macro_arg);\
229 *yy_cp = yyg->yy_hold_char; \
230 YY_RESTORE_YY_MORE_OFFSET \
231 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
232 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
234 while ( 0 )
236 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
238 #ifndef YY_TYPEDEF_YY_SIZE_T
239 #define YY_TYPEDEF_YY_SIZE_T
240 typedef size_t yy_size_t;
241 #endif
243 #ifndef YY_STRUCT_YY_BUFFER_STATE
244 #define YY_STRUCT_YY_BUFFER_STATE
245 struct yy_buffer_state
247 FILE *yy_input_file;
249 char *yy_ch_buf; /* input buffer */
250 char *yy_buf_pos; /* current position in input buffer */
252 /* Size of input buffer in bytes, not including room for EOB
253 * characters.
255 yy_size_t yy_buf_size;
257 /* Number of characters read into yy_ch_buf, not including EOB
258 * characters.
260 int yy_n_chars;
262 /* Whether we "own" the buffer - i.e., we know we created it,
263 * and can realloc() it to grow it, and should free() it to
264 * delete it.
266 int yy_is_our_buffer;
268 /* Whether this is an "interactive" input source; if so, and
269 * if we're using stdio for input, then we want to use getc()
270 * instead of fread(), to make sure we stop fetching input after
271 * each newline.
273 int yy_is_interactive;
275 /* Whether we're considered to be at the beginning of a line.
276 * If so, '^' rules will be active on the next match, otherwise
277 * not.
279 int yy_at_bol;
281 int yy_bs_lineno; /**< The line count. */
282 int yy_bs_column; /**< The column count. */
284 /* Whether to try to fill the input buffer when we reach the
285 * end of it.
287 int yy_fill_buffer;
289 int yy_buffer_status;
291 #define YY_BUFFER_NEW 0
292 #define YY_BUFFER_NORMAL 1
293 /* When an EOF's been seen but there's still some text to process
294 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
295 * shouldn't try reading from the input source any more. We might
296 * still have a bunch of tokens to match, though, because of
297 * possible backing-up.
299 * When we actually see the EOF, we change the status to "new"
300 * (via yyrestart()), so that the user can continue scanning by
301 * just pointing yyin at a new input file.
303 #define YY_BUFFER_EOF_PENDING 2
306 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
308 /* We provide macros for accessing buffer states in case in the
309 * future we want to put the buffer states in a more general
310 * "scanner state".
312 * Returns the top of the stack, or NULL.
314 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
315 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
316 : NULL)
318 /* Same as previous macro, but useful when we know that the buffer stack is not
319 * NULL or when we need an lvalue. For internal use only.
321 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
323 void yyrestart (FILE *input_file ,yyscan_t yyscanner );
324 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
325 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
326 void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
327 void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
328 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
329 void yypop_buffer_state (yyscan_t yyscanner );
331 static void yyensure_buffer_stack (yyscan_t yyscanner );
332 static void yy_load_buffer_state (yyscan_t yyscanner );
333 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
335 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
337 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
338 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
339 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
341 void *yyalloc (yy_size_t ,yyscan_t yyscanner );
342 void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
343 void yyfree (void * ,yyscan_t yyscanner );
345 #define yy_new_buffer yy_create_buffer
347 #define yy_set_interactive(is_interactive) \
349 if ( ! YY_CURRENT_BUFFER ){ \
350 yyensure_buffer_stack (yyscanner); \
351 YY_CURRENT_BUFFER_LVALUE = \
352 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
354 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
357 #define yy_set_bol(at_bol) \
359 if ( ! YY_CURRENT_BUFFER ){\
360 yyensure_buffer_stack (yyscanner); \
361 YY_CURRENT_BUFFER_LVALUE = \
362 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
364 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
367 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
369 /* Begin user sect3 */
371 typedef unsigned char YY_CHAR;
373 typedef int yy_state_type;
375 #define yytext_ptr yytext_r
377 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
378 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
379 static int yy_get_next_buffer (yyscan_t yyscanner );
380 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
382 /* Done after the current pattern has been matched and before the
383 * corresponding action - sets up yytext.
385 #define YY_DO_BEFORE_ACTION \
386 yyg->yytext_ptr = yy_bp; \
387 yyleng = (size_t) (yy_cp - yy_bp); \
388 yyg->yy_hold_char = *yy_cp; \
389 *yy_cp = '\0'; \
390 yyg->yy_c_buf_p = yy_cp;
392 #define YY_NUM_RULES 148
393 #define YY_END_OF_BUFFER 149
394 /* This struct is not used in this scanner,
395 but its presence is necessary. */
396 struct yy_trans_info
398 flex_int32_t yy_verify;
399 flex_int32_t yy_nxt;
401 static yyconst flex_int16_t yy_accept[1095] =
402 { 0,
403 0, 1, 0, 1, 0, 1, 17, 1, 0, 1,
404 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
405 4, 1, 149, 136, 135, 11, 135, 136, 136, 12,
406 136, 136, 136, 136, 136, 136, 116, 136, 96, 136,
407 120, 120, 136, 88, 136, 90, 134, 134, 134, 134,
408 134, 134, 134, 134, 136, 136, 1, 1, 136, 135,
409 135, 136, 136, 136, 136, 134, 1, 1, 136, 147,
410 142, 138, 142, 147, 147, 147, 147, 147, 120, 120,
411 147, 145, 145, 145, 1, 1, 147, 17, 18, 17,
412 17, 17, 17, 17, 17, 17, 17, 17, 17, 1,
414 1, 17, 148, 136, 9, 9, 136, 136, 1, 5,
415 5, 5, 5, 5, 5, 5, 5, 5, 5, 1,
416 6, 136, 10, 136, 136, 136, 136, 136, 120, 120,
417 136, 136, 136, 1, 1, 136, 13, 136, 136, 136,
418 136, 136, 120, 120, 136, 136, 136, 1, 1, 148,
419 2, 148, 148, 148, 148, 148, 120, 120, 148, 148,
420 148, 1, 1, 4, 3, 4, 4, 4, 4, 4,
421 4, 4, 4, 4, 4, 1, 1, 135, 0, 11,
422 93, 0, 125, 0, 132, 132, 132, 132, 132, 101,
423 85, 104, 0, 94, 99, 0, 120, 97, 98, 119,
425 110, 118, 118, 118, 118, 118, 118, 118, 118, 118,
426 118, 118, 118, 118, 118, 118, 118, 118, 102, 100,
427 119, 0, 0, 124, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 82, 89,
429 92, 65, 91, 83, 115, 0, 134, 117, 133, 134,
430 75, 134, 134, 134, 134, 134, 134, 105, 86, 106,
431 87, 1, 0, 15, 0, 92, 65, 0, 135, 118,
432 118, 118, 118, 118, 118, 0, 0, 0, 0, 1,
433 142, 138, 142, 0, 0, 0, 146, 146, 146, 146,
434 145, 0, 143, 145, 1, 1, 17, 18, 17, 17,
436 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
437 17, 17, 17, 17, 17, 17, 17, 1, 17, 0,
438 0, 9, 0, 1, 5, 5, 5, 5, 5, 5,
439 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
440 5, 5, 1, 0, 10, 0, 0, 0, 125, 0,
441 0, 0, 0, 120, 119, 0, 0, 119, 0, 0,
442 124, 0, 0, 0, 0, 0, 0, 1, 1, 0,
443 13, 0, 0, 0, 125, 0, 0, 0, 0, 120,
444 119, 0, 0, 119, 0, 0, 124, 0, 0, 0,
445 0, 0, 0, 1, 1, 0, 2, 0, 0, 0,
447 125, 0, 0, 0, 0, 120, 119, 0, 0, 119,
448 0, 0, 124, 0, 0, 0, 0, 0, 0, 1,
449 1, 4, 3, 4, 4, 4, 4, 4, 4, 4,
450 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
451 4, 4, 1, 95, 128, 129, 131, 130, 0, 118,
452 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
453 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
454 118, 118, 118, 118, 103, 119, 122, 0, 119, 123,
455 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
458 0, 0, 108, 107, 84, 114, 0, 0, 133, 134,
459 78, 134, 79, 80, 134, 134, 134, 0, 118, 118,
460 0, 0, 139, 144, 141, 146, 146, 146, 146, 146,
461 145, 17, 17, 17, 17, 17, 17, 17, 17, 17,
462 17, 17, 17, 17, 17, 17, 0, 0, 0, 5,
463 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
464 5, 0, 0, 0, 119, 122, 0, 119, 123, 121,
465 0, 0, 0, 0, 0, 0, 0, 0, 119, 122,
466 0, 119, 123, 121, 0, 0, 0, 0, 0, 0,
467 0, 0, 119, 122, 0, 119, 123, 121, 0, 0,
469 0, 0, 0, 4, 4, 4, 4, 4, 4, 4,
470 4, 4, 4, 4, 4, 4, 4, 0, 119, 69,
471 118, 118, 118, 118, 25, 118, 118, 118, 118, 118,
472 22, 118, 118, 118, 118, 118, 118, 118, 118, 118,
473 118, 118, 24, 118, 118, 0, 0, 0, 0, 0,
474 0, 0, 46, 0, 0, 0, 0, 0, 0, 0,
475 0, 0, 0, 0, 0, 0, 0, 126, 0, 0,
476 109, 0, 127, 0, 0, 0, 74, 77, 134, 134,
477 134, 134, 0, 141, 146, 146, 146, 146, 145, 145,
478 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
480 17, 17, 17, 17, 17, 17, 0, 0, 0, 0,
481 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
482 0, 119, 0, 0, 0, 0, 126, 0, 0, 0,
483 0, 0, 127, 0, 0, 0, 0, 0, 0, 119,
484 0, 0, 0, 0, 126, 0, 0, 0, 0, 0,
485 127, 0, 0, 0, 0, 0, 0, 119, 0, 0,
486 0, 0, 126, 0, 0, 0, 0, 0, 127, 0,
487 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
488 4, 4, 4, 4, 4, 4, 4, 4, 4, 118,
489 118, 28, 118, 118, 20, 118, 118, 118, 118, 19,
491 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
492 118, 118, 44, 0, 60, 0, 41, 0, 0, 40,
493 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 134, 134, 134, 134, 14, 0, 137,
495 20, 146, 19, 145, 145, 17, 17, 17, 17, 16,
496 17, 20, 19, 0, 0, 5, 5, 5, 5, 20,
497 19, 0, 0, 20, 19, 0, 0, 20, 19, 0,
498 0, 4, 4, 4, 4, 118, 118, 71, 118, 118,
499 118, 118, 118, 118, 118, 118, 70, 112, 118, 118,
500 118, 73, 118, 118, 118, 118, 118, 118, 54, 0,
502 0, 0, 0, 0, 38, 64, 0, 0, 0, 45,
503 0, 0, 51, 0, 0, 134, 134, 81, 76, 146,
504 145, 145, 17, 17, 0, 0, 5, 5, 0, 0,
505 0, 0, 0, 0, 4, 4, 118, 118, 118, 118,
506 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
507 118, 56, 118, 118, 118, 118, 0, 0, 0, 0,
508 37, 0, 0, 0, 0, 61, 0, 47, 134, 134,
509 140, 145, 145, 17, 17, 0, 0, 5, 5, 0,
510 0, 0, 0, 0, 0, 4, 4, 118, 118, 118,
511 118, 118, 118, 118, 118, 118, 113, 118, 59, 118,
513 118, 118, 118, 32, 23, 118, 118, 118, 0, 0,
514 0, 0, 48, 0, 0, 0, 0, 0, 8, 17,
515 8, 5, 5, 0, 8, 0, 8, 0, 8, 4,
516 4, 21, 118, 118, 118, 27, 118, 118, 118, 118,
517 31, 118, 118, 118, 29, 118, 118, 58, 67, 0,
518 0, 66, 63, 62, 43, 0, 7, 7, 7, 7,
519 7, 4, 118, 118, 118, 118, 36, 118, 118, 118,
520 30, 68, 118, 55, 42, 0, 0, 26, 118, 118,
521 34, 52, 118, 118, 57, 50, 49, 118, 35, 53,
522 72, 111, 33, 0
526 static yyconst flex_int32_t yy_ec[256] =
527 { 0,
528 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
529 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
530 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
531 1, 5, 6, 7, 8, 9, 10, 11, 12, 1,
532 1, 13, 14, 15, 16, 17, 18, 19, 20, 21,
533 21, 21, 21, 21, 21, 22, 22, 23, 1, 24,
534 25, 26, 1, 27, 28, 29, 28, 28, 30, 28,
535 31, 32, 33, 31, 31, 34, 31, 35, 36, 37,
536 31, 31, 38, 31, 31, 31, 31, 39, 31, 31,
537 1, 40, 1, 1, 41, 1, 42, 43, 44, 45,
539 46, 47, 48, 49, 50, 31, 31, 51, 52, 53,
540 54, 55, 56, 57, 58, 59, 60, 61, 31, 62,
541 63, 31, 1, 64, 1, 65, 1, 1, 1, 1,
542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 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
558 static yyconst flex_int32_t yy_meta[66] =
559 { 0,
560 1, 1, 2, 1, 1, 1, 3, 1, 4, 1,
561 1, 1, 1, 1, 1, 5, 1, 1, 6, 6,
562 6, 6, 7, 1, 1, 1, 8, 9, 9, 9,
563 10, 10, 10, 10, 10, 10, 10, 10, 10, 1,
564 11, 9, 9, 9, 9, 9, 9, 10, 10, 10,
565 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
566 10, 10, 10, 1, 1
569 static yyconst flex_int16_t yy_base[1251] =
570 { 0,
571 0, 64, 88, 70, 153, 75, 218, 82, 283, 113,
572 348, 117, 109, 412, 434, 121, 499, 130, 564, 135,
573 629, 140, 4665, 7097, 693, 7097, 697, 4639, 63, 7097,
574 385, 4638, 56, 4648, 58, 686, 7097, 696, 703, 60,
575 750, 780, 785, 72, 83, 124, 703, 797, 767, 825,
576 765, 759, 769, 833, 63, 766, 848, 856, 851, 422,
577 864, 862, 871, 838, 4623, 848, 803, 898, 819, 7097,
578 902, 7097, 906, 84, 898, 4570, 920, 929, 0, 935,
579 4553, 405, 951, 828, 941, 956, 909, 0, 7097, 4573,
580 689, 4563, 965, 969, 1004, 965, 4550, 1066, 1131, 991,
582 995, 4529, 7097, 990, 1009, 1077, 4549, 87, 1001, 0,
583 0, 791, 1032, 1066, 1180, 1003, 4547, 1242, 1307, 1013,
584 878, 426, 7097, 894, 1111, 1010, 1105, 1160, 1370, 1129,
585 959, 1432, 1497, 1057, 1098, 974, 7097, 1032, 1163, 1052,
586 1218, 1276, 1560, 1300, 1149, 1622, 1687, 1157, 1182, 1041,
587 7097, 1101, 1185, 1116, 1266, 1337, 1750, 1306, 1209, 1812,
588 1877, 1225, 1259, 0, 7097, 4567, 880, 4557, 1254, 1356,
589 1926, 1369, 4544, 1988, 2053, 1213, 1287, 1297, 1346, 7097,
590 7097, 1168, 7097, 0, 0, 1344, 1360, 1374, 1398, 7097,
591 7097, 7097, 4555, 7097, 7097, 1406, 1443, 7097, 7097, 1448,
593 7097, 0, 4532, 4512, 4518, 1136, 4510, 4512, 658, 4508,
594 1425, 105, 883, 922, 4514, 727, 4517, 4508, 4532, 7097,
595 1505, 1174, 1466, 7097, 1185, 0, 4503, 4513, 4502, 1179,
596 816, 1292, 685, 947, 4498, 22, 4498, 4491, 1109, 7097,
597 7097, 7097, 7097, 1252, 4526, 4525, 1406, 4540, 1525, 1533,
598 1443, 1543, 1467, 1544, 1549, 1560, 1562, 7097, 7097, 7097,
599 7097, 1593, 1290, 7097, 1300, 1366, 1382, 1513, 1449, 4492,
600 4492, 1482, 4502, 4501, 4498, 1349, 4483, 4476, 1162, 1582,
601 1616, 7097, 1639, 4512, 1630, 0, 0, 4481, 4483, 1199,
602 1321, 4523, 1638, 1515, 1661, 1665, 0, 7097, 1265, 0,
604 0, 4505, 1652, 1698, 1704, 4458, 4457, 1716, 1391, 1661,
605 0, 1472, 2100, 1543, 2147, 2212, 2277, 1607, 4446, 4455,
606 4454, 1744, 909, 1674, 0, 1736, 0, 1687, 1823, 1828,
607 4453, 4452, 1885, 1510, 1778, 0, 1710, 2324, 1563, 2371,
608 2436, 2501, 1753, 1536, 7097, 1597, 1799, 1856, 1601, 1612,
609 1737, 1756, 1851, 2564, 1905, 1778, 1784, 2004, 1894, 1918,
610 1652, 1954, 2608, 1964, 2655, 2720, 2785, 1805, 1862, 1681,
611 7097, 1718, 1926, 1946, 1772, 1828, 1907, 1975, 2016, 2848,
612 2026, 1960, 1981, 2070, 2013, 2082, 1858, 2091, 2892, 2037,
613 2939, 3004, 3069, 2078, 2103, 1978, 7097, 2018, 2128, 2134,
615 2039, 2084, 2111, 2121, 2163, 3132, 2293, 2136, 2301, 2387,
616 2172, 2174, 2123, 2305, 3176, 2194, 3223, 3288, 3353, 2200,
617 2205, 0, 7097, 1321, 0, 0, 4489, 2299, 2382, 2310,
618 4450, 4449, 2501, 2160, 2341, 0, 2314, 3400, 1735, 3447,
619 3512, 3577, 2345, 2416, 2403, 2410, 2513, 2517, 2529, 0,
620 4464, 4441, 4445, 4441, 4438, 4445, 4367, 4358, 4362, 786,
621 4353, 4361, 1051, 4369, 4353, 4359, 4360, 4352, 4364, 4348,
622 4347, 4362, 4354, 4357, 7097, 2533, 2180, 2537, 2550, 2394,
623 0, 4348, 4350, 4358, 4347, 2249, 4336, 4355, 4346, 4335,
624 4342, 4340, 4345, 4331, 4330, 4330, 4327, 4343, 4335, 4342,
626 1390, 4371, 7097, 7097, 4357, 7097, 1441, 4354, 2564, 2566,
627 2579, 2581, 2583, 2584, 2592, 2624, 2600, 2334, 4332, 4333,
628 4324, 4348, 7097, 2663, 0, 0, 4304, 4297, 4304, 4293,
629 2598, 2677, 4294, 4291, 2785, 2308, 2668, 2681, 2509, 3624,
630 1921, 4331, 1937, 3671, 3736, 4283, 4290, 4287, 1754, 2690,
631 4288, 4282, 2797, 2339, 2694, 2801, 2557, 3783, 2610, 3830,
632 3895, 2826, 2809, 2622, 2834, 2615, 2854, 2868, 2880, 3958,
633 2920, 2829, 2926, 4005, 4070, 2888, 2922, 2832, 2955, 2912,
634 2967, 2977, 3085, 4133, 3104, 2894, 3110, 4180, 4245, 3126,
635 3087, 2914, 3153, 3096, 3099, 3165, 3173, 4308, 3119, 2979,
637 3160, 4355, 4420, 3193, 4283, 4280, 3223, 2345, 2973, 3169,
638 2842, 4467, 2011, 4320, 2129, 4514, 4579, 3235, 3239, 0,
639 4277, 4276, 4274, 4266, 4282, 4276, 4280, 4277, 4268, 4264,
640 0, 4271, 4271, 4273, 4257, 4264, 4197, 4201, 4199, 4199,
641 4179, 4197, 0, 4186, 4185, 4182, 4183, 4174, 4186, 4172,
642 4171, 4175, 7097, 4183, 4174, 4177, 4166, 4178, 4170, 783,
643 4176, 4162, 4162, 4168, 4161, 4173, 2584, 7097, 0, 4203,
644 7097, 2637, 7097, 0, 4191, 4206, 2870, 3116, 3364, 3365,
645 3373, 3194, 2423, 0, 4160, 4165, 4164, 4163, 3108, 3374,
646 3245, 3251, 4162, 4161, 2794, 0, 0, 4190, 2819, 0,
648 0, 4644, 4193, 4709, 4149, 2558, 4128, 4126, 1733, 1818,
649 3255, 3259, 4124, 4123, 3158, 0, 4774, 4161, 4839, 4117,
650 3380, 3388, 3391, 3428, 3475, 3607, 2638, 2704, 3401, 3463,
651 3609, 3615, 2714, 2965, 4904, 3094, 4969, 4115, 3473, 3477,
652 3437, 3593, 3617, 3622, 3178, 3198, 3497, 3595, 3624, 3699,
653 3247, 3279, 5034, 3431, 5099, 4110, 3485, 3688, 3602, 3605,
654 3811, 3817, 3281, 3382, 3701, 3711, 3862, 3986, 3465, 3481,
655 5164, 3630, 5229, 4108, 3639, 3679, 4110, 4105, 2921, 0,
656 0, 4138, 3103, 0, 0, 5294, 4142, 5359, 4098, 4088,
657 4093, 0, 4086, 1855, 0, 4087, 4101, 4082, 4097, 0,
659 4089, 4088, 4084, 4027, 4009, 4022, 4013, 4005, 4005, 1006,
660 4017, 4015, 7097, 4018, 7097, 4013, 7097, 4015, 4012, 7097,
661 7097, 4001, 4000, 3996, 3965, 3950, 3942, 3925, 3931, 3915,
662 3923, 3906, 3842, 3976, 4148, 4016, 3800, 7097, 3487, 0,
663 0, 3834, 0, 2580, 3640, 0, 0, 5424, 1059, 7097,
664 3878, 7097, 7097, 1332, 1986, 0, 0, 5489, 1540, 3499,
665 3713, 3668, 1097, 3717, 3721, 3676, 1231, 3725, 3727, 3682,
666 1504, 0, 0, 3756, 3158, 3821, 3796, 0, 3780, 3773,
667 3767, 3764, 3757, 3689, 3680, 3662, 0, 3649, 3643, 3619,
668 3623, 0, 3580, 3582, 3566, 3569, 3530, 3468, 0, 3428,
670 3400, 3386, 3394, 3388, 7097, 7097, 3370, 3365, 3358, 7097,
671 3352, 3340, 7097, 3352, 3329, 3975, 4150, 3851, 3852, 3874,
672 3836, 3948, 1800, 1908, 1438, 1810, 2247, 2260, 1174, 1745,
673 1870, 2063, 2494, 2496, 2778, 2831, 3313, 3820, 3318, 3227,
674 3222, 3181, 3127, 3114, 3102, 3094, 3083, 3070, 3043, 2951,
675 2947, 0, 2936, 2919, 2926, 2868, 2816, 2797, 2770, 2652,
676 7097, 2629, 2634, 2629, 2553, 7097, 2533, 7097, 3958, 3960,
677 3882, 2382, 3857, 1295, 2643, 772, 1490, 3211, 3599, 942,
678 1965, 2950, 3091, 3458, 3588, 3841, 3990, 2518, 2475, 2462,
679 2384, 2368, 2350, 2349, 2332, 2324, 0, 2289, 0, 2268,
681 2265, 2236, 2164, 0, 0, 2129, 2130, 2112, 2102, 2075,
682 2051, 2025, 7097, 2027, 2018, 1972, 1947, 1709, 1986, 2898,
683 1978, 3418, 1947, 3885, 4030, 4039, 4033, 4044, 4049, 3625,
684 1931, 0, 1842, 1816, 1765, 0, 1728, 1728, 1694, 1650,
685 0, 1585, 1556, 1522, 0, 1476, 1429, 0, 7097, 1375,
686 1360, 7097, 7097, 7097, 7097, 1321, 7097, 0, 3846, 3868,
687 3969, 0, 1275, 1198, 1185, 1145, 0, 1117, 1071, 1024,
688 0, 0, 926, 0, 7097, 869, 827, 0, 752, 675,
689 0, 367, 356, 61, 0, 7097, 7097, 23, 0, 0,
690 0, 0, 0, 7097, 5554, 5560, 5570, 5578, 5589, 5593,
692 5601, 5608, 5619, 5630, 5641, 5652, 5659, 5670, 5681, 5692,
693 5703, 5714, 5725, 5736, 5747, 5758, 5769, 5780, 5791, 5802,
694 5813, 5824, 5835, 5846, 5857, 5868, 5874, 5884, 5890, 5896,
695 5901, 5909, 5918, 5929, 5935, 5939, 5945, 5952, 5963, 5974,
696 5985, 5996, 6007, 6018, 6029, 6040, 6051, 6062, 6073, 6084,
697 6095, 6106, 6117, 6128, 6139, 6150, 6161, 6172, 6183, 6194,
698 6205, 6211, 6216, 6222, 6231, 6242, 6253, 6260, 6268, 6279,
699 6285, 6291, 6297, 6304, 6315, 6326, 6337, 6348, 6359, 6366,
700 6377, 6388, 6399, 6410, 6421, 6432, 6443, 6454, 6465, 6476,
701 6487, 6498, 6509, 6520, 6531, 6542, 6553, 6564, 6575, 6586,
703 6597, 6608, 6619, 6625, 6636, 6647, 6658, 6665, 6673, 6684,
704 6690, 6696, 6703, 6714, 6725, 6736, 6747, 6758, 6765, 6776,
705 6787, 6798, 6809, 6820, 6831, 6842, 6853, 6864, 6875, 6886,
706 6897, 6908, 6919, 6930, 6941, 6952, 6963, 6974, 6985, 6996,
707 7007, 7018, 7024, 7032, 7043, 7049, 7056, 7067, 7074, 7085
710 static yyconst flex_int16_t yy_def[1251] =
711 { 0,
712 1094, 1, 1, 3, 1094, 5, 1094, 7, 1094, 9,
713 1094, 11, 9, 9, 1094, 15, 1094, 17, 1094, 19,
714 1094, 21, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 1094,
715 1096, 1094, 1094, 1097, 1094, 1094, 1094, 1094, 1094, 1094,
716 1094, 1094, 1094, 1094, 1094, 1094, 1098, 1098, 1098, 1098,
717 1098, 1098, 1098, 1098, 1094, 1094, 1094, 1094, 1099, 1094,
718 1094, 1094, 39, 1094, 1094, 1098, 1094, 1094, 1099, 1094,
719 1094, 1094, 1094, 1095, 1100, 1097, 1094, 1101, 41, 1094,
720 1094, 1102, 1102, 1102, 1094, 1094, 1099, 1103, 1094, 1103,
721 1104, 1105, 1103, 1103, 1103, 95, 1103, 1106, 1106, 1103,
723 1103, 1103, 1094, 1094, 41, 1094, 1107, 1107, 1094, 1108,
724 1108, 1109, 1108, 1108, 1108, 115, 1108, 1110, 1110, 1108,
725 1095, 1111, 1094, 1111, 1112, 1113, 1111, 1111, 1111, 129,
726 1111, 1114, 1114, 1111, 1111, 1115, 1094, 1115, 1116, 1117,
727 1115, 1115, 1115, 143, 1115, 1118, 1118, 1115, 1115, 1119,
728 1094, 1119, 1120, 1121, 1119, 1119, 1119, 157, 1119, 1122,
729 1122, 1119, 1119, 1123, 1094, 1123, 1124, 1125, 1123, 1123,
730 1123, 171, 1123, 1126, 1126, 1123, 1123, 1094, 1094, 1094,
731 1094, 1095, 1094, 1095, 1127, 1127, 1127, 1127, 1127, 1094,
732 1094, 1094, 1128, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
734 1094, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
735 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1094, 1094,
736 1094, 1094, 1094, 1094, 1094, 1130, 1094, 1094, 1094, 1094,
737 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
738 1094, 1094, 1094, 1094, 1094, 1131, 1132, 1133, 1132, 1132,
739 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1094, 1094, 1094,
740 1094, 1094, 1134, 1094, 1134, 1134, 1134, 1134, 1094, 1129,
741 1129, 1129, 1129, 1129, 1129, 1094, 1094, 1094, 1094, 1094,
742 1094, 1094, 1094, 1135, 1135, 1136, 1137, 1137, 1137, 1137,
743 1138, 1133, 1138, 1138, 1094, 1094, 1139, 1094, 1140, 1139,
745 1140, 1141, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
746 1139, 1139, 1139, 1139, 1142, 1094, 1142, 1139, 1139, 1094,
747 1094, 1094, 1131, 1094, 1143, 1144, 1143, 1143, 1143, 1143,
748 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1145,
749 1094, 1145, 1143, 1146, 1094, 1146, 1147, 1147, 1146, 1147,
750 1148, 1148, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
751 1146, 1146, 1146, 1146, 1149, 1094, 1149, 1146, 1146, 1150,
752 1094, 1150, 1151, 1151, 1150, 1151, 1152, 1152, 1150, 1150,
753 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
754 1153, 1094, 1153, 1150, 1150, 1154, 1094, 1154, 1155, 1155,
756 1154, 1155, 1156, 1156, 1154, 1154, 1154, 1154, 1154, 1154,
757 1154, 1154, 1154, 1154, 1154, 1154, 1157, 1094, 1157, 1154,
758 1154, 1158, 1094, 1159, 1158, 1159, 1160, 1158, 1158, 1158,
759 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1161,
760 1094, 1161, 1158, 1094, 1162, 1162, 1162, 1162, 1094, 1163,
761 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
762 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
763 1163, 1163, 1163, 1163, 1094, 1094, 1094, 1094, 1094, 1094,
764 1164, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
765 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
767 1165, 1166, 1094, 1094, 1094, 1094, 1167, 1168, 1169, 1169,
768 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, 1163, 1163,
769 1094, 1171, 1094, 1171, 1172, 1173, 1173, 1173, 1173, 1173,
770 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
771 1176, 1177, 1178, 1179, 1094, 1175, 1094, 1094, 1180, 1181,
772 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1183,
773 1094, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
774 1185, 1186, 1187, 1188, 1094, 1189, 1189, 1189, 1189, 1189,
775 1189, 1189, 1189, 1189, 1190, 1191, 1192, 1193, 1094, 1194,
776 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1196,
778 1197, 1198, 1094, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
779 1199, 1199, 1200, 1201, 1202, 1203, 1094, 1094, 1094, 1204,
780 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
781 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
782 1204, 1204, 1204, 1204, 1204, 1094, 1094, 1094, 1094, 1094,
783 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
784 1094, 1094, 1094, 1094, 1094, 1094, 1205, 1094, 1205, 1206,
785 1094, 1207, 1094, 1207, 1208, 1094, 1209, 1209, 1209, 1209,
786 1209, 1209, 1210, 1211, 1212, 1212, 1212, 1212, 1213, 1213,
787 1214, 1214, 1214, 1214, 1215, 1214, 1215, 1216, 1217, 1214,
789 1217, 1218, 1214, 1094, 704, 1214, 1094, 1094, 1219, 1219,
790 1220, 1220, 1220, 1220, 1221, 1220, 1222, 1220, 1094, 719,
791 1223, 1223, 1223, 1223, 1224, 1224, 1223, 1224, 1225, 1225,
792 1226, 1226, 1223, 1226, 1227, 1223, 1094, 737, 1228, 1228,
793 1228, 1228, 1229, 1229, 1228, 1229, 1230, 1230, 1231, 1231,
794 1228, 1231, 1232, 1228, 1094, 755, 1233, 1233, 1233, 1233,
795 1234, 1234, 1233, 1234, 1235, 1235, 1236, 1236, 1233, 1236,
796 1237, 1233, 1094, 773, 1238, 1238, 1238, 1238, 1239, 1238,
797 1239, 1240, 1241, 1238, 1241, 1242, 1238, 1094, 788, 1243,
798 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
800 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
801 1243, 1243, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
802 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
803 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1094, 1245, 1246,
804 1246, 1246, 1246, 1247, 1247, 1248, 1248, 1094, 848, 1094,
805 1248, 1094, 1094, 1249, 1249, 1250, 1250, 1094, 858, 1223,
806 1223, 737, 737, 1228, 1228, 755, 755, 1233, 1233, 773,
807 773, 1238, 1238, 788, 788, 1243, 1243, 1243, 1243, 1243,
808 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
809 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094,
811 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
812 1094, 1094, 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1246,
813 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737, 737,
814 755, 755, 773, 773, 788, 788, 1243, 1243, 1243, 1243,
815 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
816 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1094,
817 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1244, 1244,
818 1094, 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737,
819 737, 755, 755, 773, 773, 788, 788, 1243, 1243, 1243,
820 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
822 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
823 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248,
824 1248, 1250, 1250, 1223, 1223, 1228, 1228, 1233, 1233, 1238,
825 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
826 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
827 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248, 1223, 1228,
828 1233, 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
829 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1243, 1243, 1243,
830 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1243, 1243, 1243,
831 1243, 1243, 1243, 0, 1094, 1094, 1094, 1094, 1094, 1094,
833 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
834 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
835 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
836 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
837 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
838 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
839 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
840 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
841 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
842 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
844 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
845 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
846 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
847 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
848 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094
851 static yyconst flex_int16_t yy_nxt[7163] =
852 { 0,
853 24, 25, 26, 27, 25, 28, 29, 30, 31, 32,
854 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
855 42, 42, 43, 44, 45, 46, 47, 47, 47, 47,
856 47, 47, 48, 47, 48, 47, 48, 48, 47, 24,
857 47, 47, 47, 47, 47, 47, 47, 49, 47, 50,
858 47, 47, 51, 47, 52, 47, 47, 53, 47, 54,
859 47, 47, 47, 55, 56, 57, 191, 58, 57, 183,
860 194, 67, 497, 68, 67, 1093, 85, 219, 86, 85,
861 192, 498, 195, 100, 220, 101, 100, 258, 59, 60,
862 183, 61, 60, 24, 69, 239, 240, 24, 24, 87,
864 24, 62, 184, 62, 63, 24, 102, 241, 242, 292,
865 64, 65, 24, 24, 109, 121, 109, 109, 120, 1092,
866 120, 120, 134, 184, 135, 134, 259, 41, 42, 42,
867 42, 148, 323, 149, 148, 47, 162, 47, 163, 162,
868 47, 176, 47, 177, 176, 66, 464, 47, 243, 244,
869 465, 24, 24, 70, 71, 72, 73, 71, 70, 74,
870 70, 75, 70, 70, 76, 70, 77, 70, 77, 78,
871 70, 79, 80, 80, 80, 70, 81, 70, 70, 82,
872 82, 82, 82, 82, 82, 83, 82, 83, 82, 83,
873 83, 82, 70, 82, 82, 82, 82, 82, 82, 82,
875 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
876 84, 82, 82, 82, 82, 82, 70, 70, 88, 88,
877 89, 90, 88, 88, 91, 88, 88, 88, 88, 92,
878 88, 93, 88, 93, 94, 88, 95, 96, 96, 96,
879 88, 97, 88, 88, 98, 98, 98, 98, 98, 98,
880 98, 98, 98, 98, 98, 98, 98, 88, 98, 98,
881 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
882 98, 98, 98, 98, 98, 99, 98, 98, 98, 98,
883 98, 88, 88, 24, 24, 103, 24, 24, 24, 29,
884 24, 24, 24, 24, 34, 24, 62, 24, 62, 104,
886 24, 105, 106, 106, 106, 24, 65, 24, 24, 107,
887 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
888 107, 107, 24, 107, 107, 107, 107, 107, 107, 107,
889 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
890 108, 107, 107, 107, 107, 107, 24, 24, 110, 110,
891 111, 110, 110, 110, 29, 110, 110, 110, 110, 112,
892 110, 113, 110, 113, 114, 110, 115, 116, 116, 116,
893 110, 117, 110, 110, 118, 118, 118, 118, 118, 118,
894 118, 118, 118, 118, 118, 118, 118, 110, 118, 118,
895 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
897 118, 118, 118, 118, 118, 119, 118, 118, 118, 118,
898 118, 110, 110, 109, 1091, 109, 109, 186, 121, 187,
899 246, 188, 189, 269, 1090, 269, 269, 292, 345, 346,
900 41, 42, 42, 42, 122, 122, 123, 124, 122, 122,
901 125, 122, 122, 122, 122, 126, 122, 127, 122, 127,
902 128, 122, 129, 130, 130, 130, 122, 131, 122, 122,
903 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
904 132, 132, 132, 122, 132, 132, 132, 132, 132, 132,
905 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
906 132, 133, 132, 132, 132, 132, 132, 122, 122, 136,
908 136, 137, 138, 136, 136, 139, 136, 136, 136, 136,
909 140, 136, 141, 136, 141, 142, 136, 143, 144, 144,
910 144, 136, 145, 136, 136, 146, 146, 146, 146, 146,
911 146, 146, 146, 146, 146, 146, 146, 146, 136, 146,
912 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
913 146, 146, 146, 146, 146, 146, 147, 146, 146, 146,
914 146, 146, 136, 136, 150, 150, 151, 152, 150, 150,
915 153, 150, 150, 150, 150, 154, 150, 155, 150, 155,
916 156, 150, 157, 158, 158, 158, 150, 159, 150, 150,
917 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
919 160, 160, 160, 150, 160, 160, 160, 160, 160, 160,
920 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
921 160, 161, 160, 160, 160, 160, 160, 150, 150, 164,
922 164, 165, 166, 164, 164, 167, 164, 164, 164, 164,
923 168, 164, 169, 164, 169, 170, 164, 171, 172, 172,
924 172, 164, 173, 164, 164, 174, 174, 174, 174, 174,
925 174, 174, 174, 174, 174, 174, 174, 174, 164, 174,
926 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
927 174, 174, 174, 174, 174, 174, 175, 174, 174, 174,
928 174, 174, 164, 164, 178, 300, 178, 178, 178, 180,
930 178, 178, 196, 458, 197, 197, 197, 197, 459, 179,
931 198, 245, 196, 179, 197, 197, 197, 197, 246, 1089,
932 199, 200, 200, 200, 200, 248, 492, 201, 301, 202,
933 202, 202, 202, 202, 203, 202, 202, 202, 202, 202,
934 202, 202, 493, 202, 204, 205, 206, 202, 207, 208,
935 209, 202, 210, 211, 212, 213, 202, 214, 202, 215,
936 216, 217, 202, 202, 202, 218, 221, 245, 197, 197,
937 197, 197, 471, 245, 246, 245, 1018, 245, 222, 223,
938 246, 248, 246, 224, 246, 225, 472, 248, 226, 248,
939 260, 248, 222, 325, 292, 223, 221, 193, 197, 197,
941 197, 197, 327, 225, 280, 245, 280, 280, 1088, 223,
942 254, 226, 246, 224, 255, 249, 249, 249, 249, 248,
943 250, 264, 265, 826, 253, 223, 227, 256, 228, 629,
944 261, 229, 827, 245, 230, 231, 232, 233, 234, 235,
945 246, 245, 236, 246, 237, 238, 630, 248, 246, 262,
946 292, 262, 262, 264, 265, 248, 245, 262, 180, 262,
947 262, 487, 268, 246, 179, 269, 180, 269, 269, 488,
948 248, 251, 179, 294, 1087, 266, 267, 252, 196, 227,
949 197, 197, 197, 197, 183, 257, 425, 276, 231, 232,
950 277, 278, 235, 255, 268, 1094, 345, 346, 238, 280,
952 180, 280, 280, 281, 282, 283, 281, 281, 282, 283,
953 281, 264, 265, 202, 270, 1086, 202, 184, 202, 426,
954 271, 272, 273, 274, 466, 275, 467, 202, 202, 202,
955 285, 292, 285, 202, 285, 285, 196, 286, 197, 197,
956 197, 197, 295, 282, 296, 295, 1024, 200, 200, 200,
957 200, 221, 268, 197, 197, 197, 197, 295, 282, 296,
958 295, 345, 346, 468, 223, 469, 246, 549, 224, 293,
959 293, 293, 293, 292, 288, 289, 371, 372, 1085, 290,
960 223, 303, 364, 304, 304, 304, 304, 305, 305, 305,
961 305, 365, 318, 297, 318, 318, 318, 298, 318, 318,
963 297, 494, 324, 297, 324, 324, 495, 297, 200, 200,
964 200, 200, 345, 352, 343, 306, 343, 343, 297, 307,
965 308, 349, 304, 304, 304, 304, 297, 322, 322, 322,
966 322, 325, 309, 310, 371, 372, 320, 311, 325, 312,
967 321, 325, 313, 397, 398, 325, 309, 895, 328, 310,
968 329, 329, 329, 329, 371, 378, 325, 312, 368, 345,
969 369, 368, 896, 375, 325, 313, 297, 297, 897, 297,
970 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
971 297, 1084, 297, 297, 330, 330, 330, 330, 316, 297,
972 297, 297, 633, 221, 634, 322, 322, 322, 322, 368,
974 345, 369, 368, 397, 398, 297, 223, 345, 346, 315,
975 224, 924, 331, 345, 348, 501, 332, 349, 397, 404,
976 502, 353, 223, 354, 354, 354, 354, 401, 1083, 297,
977 297, 297, 297, 503, 297, 297, 297, 297, 297, 297,
978 297, 297, 297, 297, 297, 297, 365, 297, 297, 930,
979 350, 371, 372, 316, 297, 297, 297, 344, 394, 371,
980 395, 394, 345, 346, 344, 371, 374, 344, 501, 375,
981 297, 344, 390, 502, 183, 1082, 317, 454, 355, 355,
982 355, 355, 344, 394, 371, 395, 394, 397, 400, 455,
983 344, 401, 477, 477, 297, 297, 333, 1081, 329, 329,
985 329, 329, 376, 480, 480, 480, 356, 184, 334, 335,
986 357, 397, 398, 336, 443, 337, 443, 443, 338, 980,
987 371, 372, 334, 365, 402, 335, 420, 397, 421, 420,
988 485, 486, 416, 337, 379, 1080, 380, 380, 380, 380,
989 529, 338, 325, 325, 325, 325, 325, 325, 530, 325,
990 325, 325, 325, 325, 325, 325, 325, 1079, 325, 325,
991 420, 397, 421, 420, 341, 325, 325, 325, 397, 398,
992 428, 300, 429, 429, 429, 429, 504, 505, 371, 372,
993 391, 325, 405, 932, 406, 406, 406, 406, 443, 423,
994 443, 443, 264, 265, 381, 381, 381, 381, 178, 1020,
996 178, 178, 264, 265, 301, 325, 325, 325, 325, 325,
997 325, 325, 325, 179, 325, 325, 325, 325, 325, 325,
998 325, 325, 382, 325, 325, 1078, 383, 425, 370, 341,
999 325, 325, 325, 489, 396, 370, 246, 490, 370, 397,
1000 398, 396, 370, 292, 396, 315, 325, 444, 396, 444,
1001 444, 491, 342, 370, 292, 407, 407, 407, 407, 396,
1002 426, 370, 445, 445, 445, 445, 1077, 396, 264, 265,
1003 325, 325, 345, 346, 430, 430, 430, 430, 446, 446,
1004 446, 446, 925, 408, 264, 265, 358, 409, 354, 354,
1005 354, 354, 447, 447, 447, 447, 668, 422, 359, 360,
1007 485, 521, 431, 361, 422, 362, 432, 422, 363, 536,
1008 536, 422, 359, 1076, 245, 360, 448, 448, 448, 448,
1009 1075, 246, 422, 362, 200, 200, 200, 200, 248, 669,
1010 422, 363, 344, 344, 345, 346, 344, 344, 344, 344,
1011 344, 344, 344, 344, 344, 344, 344, 673, 344, 344,
1012 269, 245, 269, 269, 366, 344, 344, 344, 246, 221,
1013 292, 197, 197, 197, 197, 248, 200, 200, 200, 200,
1014 461, 344, 223, 1074, 462, 245, 224, 449, 463, 478,
1015 674, 478, 246, 976, 479, 479, 479, 479, 223, 248,
1016 539, 539, 539, 449, 1019, 344, 344, 344, 344, 345,
1018 346, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1019 344, 344, 292, 344, 344, 264, 265, 512, 513, 366,
1020 344, 344, 344, 476, 476, 476, 476, 461, 554, 554,
1021 246, 462, 1073, 245, 449, 520, 344, 292, 345, 346,
1022 246, 245, 367, 509, 509, 509, 509, 248, 246, 541,
1023 449, 245, 245, 417, 542, 248, 934, 245, 246, 246,
1024 344, 344, 371, 372, 246, 248, 248, 1072, 245, 501,
1025 245, 248, 518, 531, 559, 246, 384, 246, 380, 380,
1026 380, 380, 248, 280, 248, 280, 280, 514, 385, 386,
1027 340, 510, 928, 387, 262, 388, 262, 262, 389, 345,
1029 346, 511, 385, 345, 346, 386, 1071, 515, 318, 179,
1030 318, 318, 517, 388, 345, 348, 516, 281, 282, 283,
1031 281, 389, 370, 370, 371, 372, 370, 370, 370, 370,
1032 370, 370, 370, 370, 370, 370, 370, 1070, 370, 370,
1033 281, 282, 283, 281, 392, 370, 370, 370, 524, 524,
1034 524, 524, 523, 246, 345, 346, 293, 293, 293, 293,
1035 292, 370, 295, 282, 296, 295, 295, 282, 296, 295,
1036 305, 305, 305, 305, 537, 324, 537, 324, 324, 538,
1037 538, 538, 538, 371, 372, 370, 370, 370, 370, 371,
1038 372, 370, 370, 370, 370, 370, 370, 370, 370, 370,
1040 370, 370, 1069, 370, 370, 330, 330, 330, 330, 392,
1041 370, 370, 370, 1018, 308, 1057, 304, 304, 304, 304,
1042 371, 372, 305, 305, 305, 305, 370, 310, 557, 557,
1043 557, 311, 393, 532, 535, 535, 535, 535, 325, 345,
1044 352, 613, 193, 310, 1068, 532, 614, 327, 349, 532,
1045 370, 370, 397, 398, 343, 292, 343, 343, 345, 352,
1046 221, 532, 322, 322, 322, 322, 410, 349, 406, 406,
1047 406, 406, 1067, 223, 371, 372, 292, 224, 411, 412,
1048 345, 346, 854, 413, 1066, 414, 345, 346, 415, 223,
1049 981, 555, 411, 555, 365, 412, 556, 556, 556, 556,
1051 709, 345, 348, 414, 710, 349, 368, 345, 369, 368,
1052 1065, 415, 396, 396, 397, 398, 396, 396, 396, 396,
1053 396, 396, 396, 396, 396, 396, 396, 563, 396, 396,
1054 371, 374, 292, 564, 418, 396, 396, 396, 350, 333,
1055 292, 329, 329, 329, 329, 974, 330, 330, 330, 330,
1056 315, 396, 335, 345, 346, 977, 336, 550, 345, 348,
1057 371, 372, 349, 368, 345, 369, 368, 855, 335, 355,
1058 355, 355, 355, 550, 1064, 396, 396, 396, 396, 397,
1059 398, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1060 396, 396, 1063, 396, 396, 350, 345, 346, 879, 418,
1062 396, 396, 396, 553, 553, 553, 553, 345, 346, 371,
1063 378, 880, 566, 566, 550, 982, 396, 881, 375, 391,
1064 345, 346, 419, 355, 355, 355, 355, 696, 371, 374,
1065 550, 567, 375, 567, 562, 1031, 568, 568, 568, 568,
1066 396, 396, 433, 700, 429, 429, 429, 429, 371, 374,
1067 562, 1023, 375, 975, 434, 435, 345, 346, 315, 436,
1068 697, 437, 371, 372, 438, 376, 345, 346, 434, 1025,
1069 571, 435, 569, 569, 569, 572, 701, 371, 378, 437,
1070 397, 398, 1021, 371, 372, 376, 375, 438, 422, 422,
1071 1019, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1073 422, 422, 422, 1056, 422, 422, 345, 346, 292, 577,
1074 441, 422, 422, 422, 365, 371, 372, 780, 371, 372,
1075 397, 398, 565, 565, 565, 565, 1055, 422, 371, 372,
1076 578, 580, 580, 562, 381, 381, 381, 381, 926, 371,
1077 372, 397, 398, 585, 381, 381, 381, 381, 586, 562,
1078 781, 422, 422, 422, 422, 576, 422, 422, 422, 422,
1079 422, 422, 422, 422, 422, 422, 422, 422, 1054, 422,
1080 422, 576, 371, 372, 1053, 441, 422, 422, 422, 394,
1081 371, 395, 394, 1052, 371, 372, 397, 400, 579, 579,
1082 579, 579, 422, 371, 372, 581, 1051, 581, 442, 576,
1084 582, 582, 582, 582, 394, 371, 395, 394, 983, 583,
1085 583, 583, 391, 397, 404, 576, 422, 422, 540, 540,
1086 540, 540, 401, 397, 404, 397, 398, 540, 540, 540,
1087 397, 400, 401, 1050, 401, 784, 397, 400, 397, 398,
1088 401, 540, 540, 540, 540, 540, 540, 297, 297, 1049,
1089 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1090 297, 297, 1048, 297, 297, 397, 398, 402, 785, 316,
1091 297, 297, 297, 402, 397, 398, 397, 398, 608, 608,
1092 1047, 407, 407, 407, 407, 591, 297, 595, 1046, 595,
1093 594, 594, 596, 596, 596, 596, 397, 398, 477, 477,
1095 599, 420, 397, 421, 420, 600, 420, 397, 421, 420,
1096 297, 297, 297, 297, 1045, 297, 297, 297, 543, 297,
1097 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1098 297, 297, 297, 297, 297, 297, 297, 297, 544, 544,
1099 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
1100 544, 297, 544, 544, 544, 544, 544, 544, 544, 544,
1101 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
1102 544, 544, 544, 544, 544, 297, 297, 297, 297, 1044,
1103 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1104 297, 297, 978, 297, 297, 397, 398, 340, 650, 316,
1106 297, 297, 297, 397, 398, 979, 651, 397, 398, 652,
1107 340, 407, 407, 407, 407, 1043, 297, 430, 430, 430,
1108 430, 1042, 590, 597, 597, 597, 536, 536, 430, 430,
1109 430, 430, 611, 611, 611, 545, 264, 265, 590, 604,
1110 297, 297, 558, 558, 558, 558, 443, 1041, 443, 443,
1111 592, 558, 558, 558, 609, 604, 609, 554, 554, 610,
1112 610, 610, 610, 608, 608, 558, 558, 558, 558, 558,
1113 558, 325, 325, 325, 325, 325, 325, 1040, 325, 325,
1114 325, 325, 325, 325, 325, 325, 1018, 325, 325, 397,
1115 398, 1039, 683, 341, 325, 325, 325, 246, 433, 1038,
1117 429, 429, 429, 429, 292, 593, 593, 593, 593, 1037,
1118 325, 435, 480, 480, 480, 436, 590, 444, 1036, 444,
1119 444, 445, 445, 445, 445, 838, 839, 435, 446, 446,
1120 446, 446, 590, 1035, 325, 325, 325, 325, 325, 325,
1121 325, 325, 507, 325, 325, 325, 325, 325, 325, 325,
1122 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
1123 325, 325, 560, 560, 560, 560, 560, 560, 560, 560,
1124 560, 560, 560, 560, 560, 325, 560, 560, 560, 560,
1125 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1126 560, 560, 560, 560, 560, 560, 560, 560, 560, 325,
1128 325, 325, 325, 325, 325, 325, 325, 1034, 325, 325,
1129 325, 325, 325, 325, 325, 325, 1033, 325, 325, 607,
1130 607, 607, 607, 341, 325, 325, 325, 539, 539, 539,
1131 604, 447, 447, 447, 447, 448, 448, 448, 448, 984,
1132 325, 985, 618, 417, 618, 417, 604, 619, 619, 619,
1133 619, 476, 476, 476, 476, 479, 479, 479, 479, 561,
1134 850, 851, 449, 1032, 325, 325, 345, 346, 479, 479,
1135 479, 479, 245, 1017, 245, 557, 557, 557, 449, 246,
1136 358, 246, 354, 354, 354, 354, 248, 245, 248, 245,
1137 668, 245, 245, 360, 246, 246, 246, 361, 246, 246,
1139 245, 248, 292, 248, 1016, 248, 248, 246, 245, 360,
1140 345, 346, 325, 246, 248, 246, 670, 345, 346, 677,
1141 292, 716, 248, 669, 345, 346, 570, 570, 570, 570,
1142 921, 678, 245, 566, 566, 570, 570, 570, 679, 246,
1143 345, 346, 680, 673, 689, 682, 248, 1021, 690, 570,
1144 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
1145 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1146 1015, 344, 344, 681, 724, 1014, 674, 366, 344, 344,
1147 344, 524, 524, 524, 524, 523, 538, 538, 538, 538,
1148 691, 1013, 691, 315, 344, 692, 692, 692, 692, 538,
1150 538, 538, 538, 711, 1012, 711, 345, 726, 712, 712,
1151 712, 712, 556, 556, 556, 556, 345, 346, 344, 344,
1152 344, 344, 345, 346, 344, 344, 573, 344, 344, 344,
1153 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1154 344, 344, 344, 344, 344, 344, 574, 574, 574, 574,
1155 574, 574, 574, 574, 574, 574, 574, 574, 574, 344,
1156 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
1157 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
1158 574, 574, 574, 344, 344, 344, 344, 345, 346, 344,
1159 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1161 696, 344, 344, 535, 535, 535, 535, 366, 344, 344,
1162 344, 345, 346, 1011, 532, 553, 553, 553, 553, 556,
1163 556, 556, 556, 986, 344, 700, 550, 440, 345, 346,
1164 532, 345, 730, 697, 371, 372, 345, 346, 1010, 721,
1165 727, 721, 550, 575, 722, 722, 722, 722, 344, 344,
1166 371, 372, 565, 565, 565, 565, 345, 346, 701, 723,
1167 611, 611, 611, 562, 384, 1009, 380, 380, 380, 380,
1168 345, 346, 568, 568, 568, 568, 987, 386, 245, 562,
1169 440, 387, 345, 346, 742, 246, 568, 568, 568, 568,
1170 371, 372, 248, 386, 371, 372, 371, 748, 569, 569,
1172 569, 739, 1020, 739, 1058, 745, 740, 740, 740, 740,
1173 584, 584, 584, 584, 371, 372, 397, 398, 1008, 584,
1174 584, 584, 345, 726, 371, 372, 727, 780, 345, 732,
1175 580, 580, 733, 584, 584, 584, 584, 584, 584, 370,
1176 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
1177 370, 370, 370, 370, 1026, 370, 370, 371, 372, 728,
1178 781, 392, 370, 370, 370, 734, 760, 345, 732, 371,
1179 372, 1007, 741, 579, 579, 579, 579, 1006, 370, 371,
1180 372, 397, 766, 1005, 576, 582, 582, 582, 582, 1004,
1181 763, 610, 610, 610, 610, 582, 582, 582, 582, 391,
1183 576, 1003, 370, 370, 370, 370, 371, 372, 370, 370,
1184 587, 370, 370, 370, 370, 370, 370, 370, 370, 370,
1185 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
1186 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
1187 588, 588, 588, 370, 588, 588, 588, 588, 588, 588,
1188 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
1189 588, 588, 588, 588, 588, 588, 588, 370, 370, 370,
1190 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
1191 370, 370, 370, 370, 1002, 370, 370, 371, 372, 397,
1192 398, 392, 370, 370, 370, 1027, 345, 346, 397, 398,
1194 573, 397, 398, 583, 583, 583, 371, 744, 370, 784,
1195 745, 1001, 371, 750, 594, 594, 751, 596, 596, 596,
1196 596, 397, 762, 246, 245, 763, 1000, 589, 397, 398,
1197 292, 246, 370, 370, 397, 398, 999, 759, 248, 757,
1198 391, 757, 785, 746, 758, 758, 758, 758, 410, 752,
1199 406, 406, 406, 406, 998, 397, 398, 844, 764, 997,
1200 325, 412, 397, 768, 670, 413, 769, 397, 398, 716,
1201 996, 593, 593, 593, 593, 397, 398, 412, 397, 398,
1202 371, 372, 590, 596, 596, 596, 596, 610, 610, 610,
1203 610, 597, 597, 597, 598, 598, 598, 598, 590, 770,
1205 371, 744, 245, 598, 598, 598, 775, 440, 775, 246,
1206 936, 776, 776, 776, 776, 1022, 248, 598, 598, 598,
1207 598, 598, 598, 396, 396, 397, 398, 396, 396, 396,
1208 396, 396, 396, 396, 396, 396, 396, 396, 995, 396,
1209 396, 607, 607, 607, 607, 418, 396, 396, 396, 371,
1210 372, 837, 604, 619, 619, 619, 619, 619, 619, 619,
1211 619, 340, 396, 692, 692, 692, 692, 994, 604, 692,
1212 692, 692, 692, 712, 712, 712, 712, 712, 712, 712,
1213 712, 371, 750, 397, 398, 993, 396, 396, 396, 396,
1214 397, 398, 396, 396, 601, 396, 396, 396, 396, 396,
1216 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1217 396, 396, 396, 396, 602, 602, 602, 602, 602, 602,
1218 602, 602, 602, 602, 602, 602, 602, 396, 602, 602,
1219 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
1220 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
1221 602, 396, 396, 396, 396, 397, 398, 396, 396, 396,
1222 396, 396, 396, 396, 396, 396, 396, 396, 992, 396,
1223 396, 988, 245, 245, 968, 418, 396, 396, 396, 246,
1224 246, 245, 345, 346, 397, 762, 248, 248, 246, 246,
1225 345, 346, 396, 345, 346, 248, 292, 967, 722, 722,
1227 722, 722, 966, 345, 730, 965, 722, 722, 722, 722,
1228 964, 603, 727, 834, 835, 963, 396, 396, 612, 612,
1229 612, 612, 1022, 845, 1057, 836, 962, 612, 612, 612,
1230 345, 346, 961, 371, 372, 960, 860, 587, 959, 371,
1231 372, 612, 612, 612, 612, 612, 612, 422, 422, 958,
1232 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1233 422, 422, 1028, 422, 422, 345, 730, 397, 398, 441,
1234 422, 422, 422, 861, 727, 371, 372, 345, 726, 371,
1235 372, 727, 864, 397, 768, 957, 422, 397, 398, 838,
1236 265, 740, 740, 740, 740, 740, 740, 740, 740, 371,
1238 748, 345, 346, 758, 758, 758, 758, 417, 745, 956,
1239 422, 422, 422, 422, 728, 422, 422, 422, 615, 422,
1240 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1241 422, 422, 422, 422, 422, 422, 422, 422, 616, 616,
1242 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1243 616, 422, 616, 616, 616, 616, 616, 616, 616, 616,
1244 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1245 616, 616, 616, 616, 616, 422, 422, 422, 422, 955,
1246 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1247 422, 422, 1029, 422, 422, 371, 372, 371, 748, 441,
1249 422, 422, 422, 1023, 397, 398, 745, 397, 398, 345,
1250 726, 345, 732, 727, 954, 733, 422, 345, 732, 371,
1251 744, 733, 953, 745, 371, 744, 371, 750, 745, 1030,
1252 751, 1062, 397, 398, 952, 617, 601, 417, 865, 951,
1253 422, 422, 540, 540, 540, 540, 728, 868, 734, 340,
1254 869, 540, 540, 540, 734, 246, 746, 776, 776, 776,
1255 776, 746, 292, 752, 950, 540, 540, 540, 540, 540,
1256 540, 297, 297, 949, 297, 297, 297, 297, 297, 297,
1257 297, 297, 297, 297, 297, 297, 948, 297, 297, 947,
1258 397, 398, 922, 703, 297, 297, 297, 776, 776, 776,
1260 776, 371, 750, 397, 766, 751, 758, 758, 758, 758,
1261 297, 946, 763, 397, 766, 345, 346, 365, 929, 371,
1262 372, 945, 763, 371, 372, 391, 931, 397, 398, 397,
1263 398, 417, 933, 944, 297, 297, 297, 297, 752, 297,
1264 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1265 297, 315, 297, 297, 315, 315, 315, 315, 316, 297,
1266 297, 297, 315, 315, 315, 315, 315, 315, 315, 315,
1267 315, 315, 315, 315, 315, 297, 315, 315, 315, 315,
1268 315, 315, 704, 315, 315, 315, 705, 315, 315, 315,
1269 315, 315, 315, 315, 315, 315, 315, 315, 315, 297,
1271 297, 558, 558, 558, 558, 440, 935, 943, 245, 942,
1272 558, 558, 558, 397, 762, 246, 941, 763, 940, 397,
1273 762, 939, 248, 763, 558, 558, 558, 558, 558, 558,
1274 325, 325, 325, 325, 325, 325, 938, 325, 325, 325,
1275 325, 325, 325, 325, 325, 1030, 325, 325, 345, 346,
1276 764, 246, 718, 325, 325, 325, 764, 919, 292, 245,
1277 245, 1019, 937, 989, 397, 768, 246, 246, 769, 325,
1278 371, 372, 246, 248, 248, 971, 990, 971, 971, 292,
1279 850, 972, 991, 971, 920, 971, 971, 345, 346, 1024,
1280 440, 1059, 915, 325, 325, 325, 325, 325, 325, 325,
1282 325, 770, 325, 325, 325, 325, 325, 325, 325, 325,
1283 340, 325, 325, 340, 340, 340, 340, 341, 325, 325,
1284 325, 340, 340, 340, 340, 340, 340, 340, 340, 340,
1285 340, 340, 340, 340, 325, 340, 340, 340, 340, 340,
1286 340, 719, 340, 340, 340, 720, 340, 340, 340, 340,
1287 340, 340, 340, 340, 340, 340, 340, 340, 325, 325,
1288 345, 346, 1018, 246, 1019, 914, 245, 913, 245, 912,
1289 292, 397, 398, 246, 911, 246, 570, 570, 570, 570,
1290 248, 910, 248, 245, 245, 570, 570, 570, 397, 768,
1291 246, 246, 769, 973, 1031, 909, 908, 248, 248, 570,
1293 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
1294 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1295 969, 344, 344, 907, 245, 770, 916, 736, 344, 344,
1296 344, 246, 345, 346, 1025, 371, 372, 1027, 248, 440,
1297 906, 371, 372, 1026, 344, 1060, 397, 398, 1028, 905,
1298 1061, 397, 398, 1029, 904, 903, 902, 901, 900, 899,
1299 898, 894, 893, 918, 892, 891, 890, 889, 344, 344,
1300 344, 344, 345, 346, 344, 344, 344, 344, 344, 344,
1301 344, 344, 344, 344, 344, 365, 344, 344, 365, 365,
1302 365, 365, 366, 344, 344, 344, 365, 365, 365, 365,
1304 365, 365, 365, 365, 365, 365, 365, 365, 365, 344,
1305 365, 365, 365, 365, 365, 365, 737, 365, 365, 365,
1306 738, 365, 365, 365, 365, 365, 365, 365, 365, 365,
1307 365, 365, 365, 344, 344, 371, 372, 888, 887, 886,
1308 885, 884, 883, 882, 878, 877, 876, 875, 615, 780,
1309 873, 584, 584, 584, 584, 872, 245, 871, 245, 867,
1310 584, 584, 584, 246, 863, 246, 859, 507, 857, 856,
1311 248, 853, 248, 852, 584, 584, 584, 584, 584, 584,
1312 370, 370, 371, 372, 370, 370, 370, 370, 370, 370,
1313 370, 370, 370, 370, 370, 970, 370, 370, 849, 543,
1315 917, 696, 754, 370, 370, 370, 847, 846, 843, 842,
1316 841, 840, 507, 676, 668, 833, 832, 831, 830, 370,
1317 829, 828, 825, 824, 823, 822, 821, 820, 819, 818,
1318 817, 816, 815, 814, 813, 812, 811, 810, 809, 808,
1319 807, 806, 805, 370, 370, 370, 370, 371, 372, 370,
1320 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
1321 391, 370, 370, 391, 391, 391, 391, 392, 370, 370,
1322 370, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1323 391, 391, 391, 391, 370, 391, 391, 391, 391, 391,
1324 391, 755, 391, 391, 391, 756, 391, 391, 391, 391,
1326 391, 391, 391, 391, 391, 391, 391, 391, 370, 370,
1327 397, 398, 804, 803, 802, 801, 800, 799, 798, 797,
1328 796, 795, 794, 793, 792, 791, 598, 598, 598, 598,
1329 790, 780, 778, 777, 714, 598, 598, 598, 713, 708,
1330 707, 706, 696, 694, 693, 688, 687, 686, 685, 598,
1331 598, 598, 598, 598, 598, 396, 396, 397, 398, 396,
1332 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1333 523, 396, 396, 650, 633, 629, 676, 772, 396, 396,
1334 396, 671, 668, 666, 665, 664, 663, 662, 661, 660,
1335 659, 658, 657, 656, 396, 655, 654, 653, 649, 648,
1337 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
1338 637, 636, 635, 632, 631, 628, 627, 626, 396, 396,
1339 396, 396, 397, 398, 396, 396, 396, 396, 396, 396,
1340 396, 396, 396, 396, 396, 417, 396, 396, 417, 417,
1341 417, 417, 418, 396, 396, 396, 417, 417, 417, 417,
1342 417, 417, 417, 417, 417, 417, 417, 417, 417, 396,
1343 417, 417, 417, 417, 417, 417, 773, 417, 417, 417,
1344 774, 417, 417, 417, 417, 417, 417, 417, 417, 417,
1345 417, 417, 417, 396, 396, 612, 612, 612, 612, 625,
1346 624, 623, 622, 621, 612, 612, 612, 620, 606, 605,
1348 425, 552, 551, 548, 547, 546, 534, 533, 612, 612,
1349 612, 612, 612, 612, 422, 422, 300, 422, 422, 422,
1350 422, 422, 422, 422, 422, 422, 422, 422, 422, 507,
1351 422, 422, 528, 527, 523, 495, 787, 422, 422, 422,
1352 493, 469, 466, 464, 519, 455, 507, 292, 506, 500,
1353 499, 496, 484, 422, 483, 482, 475, 474, 473, 470,
1354 460, 457, 456, 453, 452, 451, 183, 439, 425, 423,
1355 339, 292, 319, 314, 300, 298, 279, 422, 422, 422,
1356 422, 183, 422, 422, 422, 422, 422, 422, 422, 422,
1357 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
1359 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
1360 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
1361 440, 440, 440, 440, 440, 788, 440, 440, 440, 789,
1362 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
1363 440, 440, 422, 422, 297, 297, 279, 297, 297, 297,
1364 297, 297, 297, 297, 297, 297, 297, 297, 297, 183,
1365 297, 297, 190, 181, 1094, 1094, 703, 297, 297, 297,
1366 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1367 1094, 1094, 1094, 297, 1094, 1094, 1094, 1094, 1094, 1094,
1368 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1370 1094, 1094, 1094, 1094, 1094, 1094, 1094, 297, 297, 297,
1371 297, 1094, 297, 297, 297, 297, 297, 297, 297, 297,
1372 297, 297, 297, 297, 315, 297, 297, 315, 315, 315,
1373 315, 316, 297, 297, 297, 315, 315, 315, 315, 315,
1374 315, 315, 315, 315, 315, 315, 315, 315, 297, 315,
1375 315, 315, 315, 315, 315, 315, 315, 315, 848, 315,
1376 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
1377 315, 315, 297, 297, 325, 325, 325, 325, 325, 325,
1378 1094, 325, 325, 325, 325, 325, 325, 325, 325, 1094,
1379 325, 325, 1094, 1094, 1094, 1094, 718, 325, 325, 325,
1381 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1382 1094, 1094, 1094, 325, 1094, 1094, 1094, 1094, 1094, 1094,
1383 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1384 1094, 1094, 1094, 1094, 1094, 1094, 1094, 325, 325, 325,
1385 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
1386 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
1387 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
1388 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
1389 340, 340, 340, 340, 340, 340, 340, 340, 858, 340,
1390 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
1392 340, 340, 325, 325, 344, 344, 345, 346, 344, 344,
1393 344, 344, 344, 344, 344, 344, 344, 344, 344, 1094,
1394 344, 344, 1094, 1094, 1094, 1094, 736, 344, 344, 344,
1395 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1396 1094, 1094, 1094, 344, 1094, 1094, 1094, 1094, 1094, 1094,
1397 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1398 1094, 1094, 1094, 1094, 1094, 1094, 1094, 344, 344, 344,
1399 344, 345, 346, 344, 344, 344, 344, 344, 344, 344,
1400 344, 344, 344, 344, 365, 344, 344, 365, 365, 365,
1401 365, 366, 344, 344, 344, 365, 365, 365, 365, 365,
1403 365, 365, 365, 365, 365, 365, 365, 365, 344, 365,
1404 365, 365, 365, 365, 365, 365, 365, 365, 862, 365,
1405 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
1406 365, 365, 344, 344, 370, 370, 371, 372, 370, 370,
1407 370, 370, 370, 370, 370, 370, 370, 370, 370, 1094,
1408 370, 370, 1094, 1094, 1094, 1094, 754, 370, 370, 370,
1409 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1410 1094, 1094, 1094, 370, 1094, 1094, 1094, 1094, 1094, 1094,
1411 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1412 1094, 1094, 1094, 1094, 1094, 1094, 1094, 370, 370, 370,
1414 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
1415 370, 370, 370, 370, 391, 370, 370, 391, 391, 391,
1416 391, 392, 370, 370, 370, 391, 391, 391, 391, 391,
1417 391, 391, 391, 391, 391, 391, 391, 391, 370, 391,
1418 391, 391, 391, 391, 391, 391, 391, 391, 866, 391,
1419 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1420 391, 391, 370, 370, 396, 396, 397, 398, 396, 396,
1421 396, 396, 396, 396, 396, 396, 396, 396, 396, 1094,
1422 396, 396, 1094, 1094, 1094, 1094, 772, 396, 396, 396,
1423 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1425 1094, 1094, 1094, 396, 1094, 1094, 1094, 1094, 1094, 1094,
1426 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1427 1094, 1094, 1094, 1094, 1094, 1094, 1094, 396, 396, 396,
1428 396, 397, 398, 396, 396, 396, 396, 396, 396, 396,
1429 396, 396, 396, 396, 417, 396, 396, 417, 417, 417,
1430 417, 418, 396, 396, 396, 417, 417, 417, 417, 417,
1431 417, 417, 417, 417, 417, 417, 417, 417, 396, 417,
1432 417, 417, 417, 417, 417, 417, 417, 417, 870, 417,
1433 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
1434 417, 417, 396, 396, 422, 422, 1094, 422, 422, 422,
1436 422, 422, 422, 422, 422, 422, 422, 422, 422, 1094,
1437 422, 422, 1094, 1094, 1094, 1094, 787, 422, 422, 422,
1438 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1439 1094, 1094, 1094, 422, 1094, 1094, 1094, 1094, 1094, 1094,
1440 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1441 1094, 1094, 1094, 1094, 1094, 1094, 1094, 422, 422, 422,
1442 422, 1094, 422, 422, 422, 422, 422, 422, 422, 422,
1443 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
1444 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
1445 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
1447 440, 440, 440, 440, 440, 440, 440, 440, 874, 440,
1448 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
1449 440, 440, 422, 422, 297, 297, 1094, 297, 297, 297,
1450 297, 297, 297, 297, 297, 297, 297, 297, 297, 315,
1451 297, 297, 315, 315, 315, 315, 316, 297, 297, 297,
1452 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
1453 315, 315, 315, 297, 315, 315, 315, 315, 315, 315,
1454 315, 315, 315, 315, 923, 315, 315, 315, 315, 315,
1455 315, 315, 315, 315, 315, 315, 315, 297, 297, 325,
1456 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
1458 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
1459 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
1460 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
1461 340, 340, 340, 340, 340, 340, 340, 340, 340, 927,
1462 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
1463 340, 340, 325, 325, 182, 1094, 182, 182, 182, 182,
1464 182, 182, 182, 182, 182, 185, 1094, 1094, 185, 185,
1465 193, 1094, 193, 193, 193, 193, 193, 193, 193, 193,
1466 193, 247, 247, 247, 247, 247, 247, 247, 247, 263,
1467 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1469 284, 284, 284, 284, 287, 1094, 287, 1094, 287, 287,
1470 287, 287, 291, 291, 291, 291, 291, 291, 291, 297,
1471 1094, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1472 299, 1094, 299, 299, 299, 299, 299, 299, 299, 299,
1473 299, 302, 1094, 302, 302, 302, 302, 302, 302, 302,
1474 302, 302, 315, 1094, 315, 315, 315, 315, 315, 315,
1475 315, 315, 315, 246, 246, 246, 246, 246, 246, 246,
1476 325, 325, 1094, 325, 325, 325, 325, 325, 325, 325,
1477 325, 326, 326, 326, 326, 326, 326, 326, 326, 326,
1478 326, 326, 340, 340, 1094, 340, 340, 340, 340, 340,
1480 340, 340, 340, 344, 344, 344, 344, 344, 344, 344,
1481 344, 344, 344, 344, 347, 347, 347, 347, 347, 347,
1482 347, 347, 347, 347, 347, 351, 351, 351, 351, 351,
1483 351, 351, 351, 351, 351, 351, 365, 365, 365, 365,
1484 365, 365, 365, 365, 365, 365, 365, 370, 370, 370,
1485 370, 370, 370, 370, 370, 370, 370, 370, 373, 373,
1486 373, 373, 373, 373, 373, 373, 373, 373, 373, 377,
1487 377, 377, 377, 377, 377, 377, 377, 377, 377, 377,
1488 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1489 391, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1491 396, 396, 399, 399, 399, 399, 399, 399, 399, 399,
1492 399, 399, 399, 403, 403, 403, 403, 403, 403, 403,
1493 403, 403, 403, 403, 417, 417, 417, 417, 417, 417,
1494 417, 417, 417, 417, 417, 422, 1094, 422, 422, 422,
1495 422, 422, 422, 422, 422, 422, 424, 1094, 424, 424,
1496 424, 424, 424, 424, 424, 424, 424, 427, 1094, 427,
1497 427, 427, 427, 427, 427, 427, 427, 427, 440, 1094,
1498 440, 440, 440, 440, 440, 440, 440, 440, 440, 185,
1499 1094, 1094, 185, 185, 193, 1094, 193, 193, 193, 193,
1500 193, 193, 193, 193, 193, 450, 1094, 1094, 450, 450,
1502 450, 481, 1094, 1094, 481, 246, 246, 246, 246, 246,
1503 246, 246, 247, 247, 247, 247, 247, 247, 247, 247,
1504 508, 1094, 1094, 1094, 1094, 508, 508, 508, 508, 263,
1505 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1506 522, 522, 522, 522, 522, 522, 525, 525, 525, 525,
1507 526, 1094, 526, 526, 526, 526, 291, 291, 291, 291,
1508 291, 291, 291, 297, 1094, 297, 297, 297, 297, 297,
1509 297, 297, 297, 297, 299, 1094, 299, 299, 299, 299,
1510 299, 299, 299, 299, 299, 302, 1094, 302, 302, 302,
1511 302, 302, 302, 302, 302, 302, 315, 1094, 315, 315,
1513 315, 315, 315, 315, 315, 315, 315, 325, 325, 1094,
1514 325, 325, 325, 325, 325, 325, 325, 325, 326, 326,
1515 326, 326, 326, 326, 326, 326, 326, 326, 326, 340,
1516 340, 1094, 340, 340, 340, 340, 340, 340, 340, 340,
1517 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1518 344, 347, 347, 347, 347, 347, 347, 347, 347, 347,
1519 347, 347, 351, 351, 351, 351, 351, 351, 351, 351,
1520 351, 351, 351, 365, 365, 365, 365, 365, 365, 365,
1521 365, 365, 365, 365, 370, 370, 370, 370, 370, 370,
1522 370, 370, 370, 370, 370, 373, 373, 373, 373, 373,
1524 373, 373, 373, 373, 373, 373, 377, 377, 377, 377,
1525 377, 377, 377, 377, 377, 377, 377, 391, 391, 391,
1526 391, 391, 391, 391, 391, 391, 391, 391, 396, 396,
1527 396, 396, 396, 396, 396, 396, 396, 396, 396, 399,
1528 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
1529 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1530 403, 417, 417, 417, 417, 417, 417, 417, 417, 417,
1531 417, 417, 422, 1094, 422, 422, 422, 422, 422, 422,
1532 422, 422, 422, 424, 1094, 424, 424, 424, 424, 424,
1533 424, 424, 424, 424, 427, 1094, 427, 427, 427, 427,
1535 427, 427, 427, 427, 427, 440, 1094, 440, 440, 440,
1536 440, 440, 440, 440, 440, 440, 185, 1094, 1094, 185,
1537 185, 450, 1094, 1094, 450, 450, 450, 481, 1094, 1094,
1538 481, 667, 1094, 667, 667, 667, 667, 667, 667, 667,
1539 667, 667, 670, 1094, 670, 670, 670, 670, 670, 670,
1540 670, 670, 670, 672, 1094, 672, 672, 672, 672, 672,
1541 672, 672, 672, 672, 675, 675, 675, 675, 675, 675,
1542 675, 247, 247, 247, 247, 247, 247, 247, 247, 263,
1543 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1544 522, 522, 522, 522, 522, 522, 684, 1094, 684, 684,
1546 684, 684, 526, 1094, 526, 526, 526, 526, 291, 291,
1547 291, 291, 291, 291, 291, 297, 1094, 297, 297, 297,
1548 297, 297, 297, 297, 297, 297, 695, 1094, 695, 695,
1549 695, 695, 695, 695, 695, 695, 695, 698, 1094, 698,
1550 698, 698, 698, 698, 698, 698, 698, 698, 699, 1094,
1551 699, 699, 699, 699, 699, 699, 699, 699, 699, 702,
1552 1094, 702, 702, 702, 702, 702, 702, 702, 702, 702,
1553 246, 246, 246, 246, 246, 246, 246, 325, 325, 1094,
1554 325, 325, 325, 325, 325, 325, 325, 325, 715, 715,
1555 715, 715, 715, 715, 715, 715, 715, 715, 715, 717,
1557 717, 1094, 717, 717, 717, 717, 717, 717, 717, 717,
1558 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1559 344, 725, 725, 725, 725, 725, 725, 725, 725, 725,
1560 725, 725, 729, 729, 729, 729, 729, 729, 729, 729,
1561 729, 729, 729, 731, 731, 731, 731, 731, 731, 731,
1562 731, 731, 731, 731, 735, 735, 735, 735, 735, 735,
1563 735, 735, 735, 735, 735, 370, 370, 370, 370, 370,
1564 370, 370, 370, 370, 370, 370, 743, 743, 743, 743,
1565 743, 743, 743, 743, 743, 743, 743, 747, 747, 747,
1566 747, 747, 747, 747, 747, 747, 747, 747, 749, 749,
1568 749, 749, 749, 749, 749, 749, 749, 749, 749, 753,
1569 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
1570 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1571 396, 761, 761, 761, 761, 761, 761, 761, 761, 761,
1572 761, 761, 765, 765, 765, 765, 765, 765, 765, 765,
1573 765, 765, 765, 767, 767, 767, 767, 767, 767, 767,
1574 767, 767, 767, 767, 771, 771, 771, 771, 771, 771,
1575 771, 771, 771, 771, 771, 422, 1094, 422, 422, 422,
1576 422, 422, 422, 422, 422, 422, 779, 1094, 779, 779,
1577 779, 779, 779, 779, 779, 779, 779, 782, 1094, 782,
1579 782, 782, 782, 782, 782, 782, 782, 782, 783, 1094,
1580 783, 783, 783, 783, 783, 783, 783, 783, 783, 786,
1581 1094, 786, 786, 786, 786, 786, 786, 786, 786, 786,
1582 450, 1094, 1094, 450, 450, 450, 667, 1094, 667, 667,
1583 667, 667, 667, 667, 667, 667, 667, 670, 1094, 670,
1584 670, 670, 670, 670, 670, 670, 670, 670, 672, 1094,
1585 672, 672, 672, 672, 672, 672, 672, 672, 672, 675,
1586 675, 675, 675, 675, 675, 675, 247, 247, 247, 247,
1587 247, 247, 247, 247, 263, 263, 263, 263, 263, 263,
1588 263, 263, 263, 263, 263, 684, 1094, 684, 684, 684,
1590 684, 526, 1094, 526, 526, 526, 526, 291, 291, 291,
1591 291, 291, 291, 291, 297, 1094, 297, 297, 297, 297,
1592 297, 297, 297, 297, 297, 695, 1094, 695, 695, 695,
1593 695, 695, 695, 695, 695, 695, 698, 1094, 698, 698,
1594 698, 698, 698, 698, 698, 698, 698, 699, 1094, 699,
1595 699, 699, 699, 699, 699, 699, 699, 699, 702, 1094,
1596 702, 702, 702, 702, 702, 702, 702, 702, 702, 246,
1597 246, 246, 246, 246, 246, 246, 325, 325, 1094, 325,
1598 325, 325, 325, 325, 325, 325, 325, 715, 715, 715,
1599 715, 715, 715, 715, 715, 715, 715, 715, 717, 717,
1601 1094, 717, 717, 717, 717, 717, 717, 717, 717, 344,
1602 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
1603 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
1604 725, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1605 729, 729, 731, 731, 731, 731, 731, 731, 731, 731,
1606 731, 731, 731, 735, 735, 735, 735, 735, 735, 735,
1607 735, 735, 735, 735, 370, 370, 370, 370, 370, 370,
1608 370, 370, 370, 370, 370, 743, 743, 743, 743, 743,
1609 743, 743, 743, 743, 743, 743, 747, 747, 747, 747,
1610 747, 747, 747, 747, 747, 747, 747, 749, 749, 749,
1612 749, 749, 749, 749, 749, 749, 749, 749, 753, 753,
1613 753, 753, 753, 753, 753, 753, 753, 753, 753, 396,
1614 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
1615 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
1616 761, 765, 765, 765, 765, 765, 765, 765, 765, 765,
1617 765, 765, 767, 767, 767, 767, 767, 767, 767, 767,
1618 767, 767, 767, 771, 771, 771, 771, 771, 771, 771,
1619 771, 771, 771, 771, 422, 1094, 422, 422, 422, 422,
1620 422, 422, 422, 422, 422, 779, 1094, 779, 779, 779,
1621 779, 779, 779, 779, 779, 779, 782, 1094, 782, 782,
1623 782, 782, 782, 782, 782, 782, 782, 783, 1094, 783,
1624 783, 783, 783, 783, 783, 783, 783, 783, 786, 1094,
1625 786, 786, 786, 786, 786, 786, 786, 786, 786, 450,
1626 1094, 1094, 450, 450, 450, 247, 247, 247, 247, 247,
1627 247, 247, 247, 263, 263, 263, 263, 263, 263, 263,
1628 263, 263, 263, 263, 526, 1094, 526, 526, 526, 526,
1629 291, 291, 291, 291, 291, 291, 291, 297, 1094, 297,
1630 297, 297, 297, 297, 297, 297, 297, 297, 246, 246,
1631 246, 246, 246, 246, 246, 325, 325, 1094, 325, 325,
1632 325, 325, 325, 325, 325, 325, 23, 1094, 1094, 1094,
1634 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1635 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1636 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1637 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1638 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1639 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
1640 1094, 1094
1643 static yyconst flex_int16_t yy_chk[7163] =
1644 { 0,
1645 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1646 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1647 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1648 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1649 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1650 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1651 1, 1, 1, 1, 1, 2, 33, 2, 2, 29,
1652 35, 4, 236, 4, 4, 1088, 6, 40, 6, 6,
1653 33, 236, 35, 8, 40, 8, 8, 55, 2, 3,
1654 74, 3, 3, 3, 4, 44, 44, 3, 3, 6,
1656 3, 3, 29, 3, 3, 3, 8, 45, 45, 108,
1657 3, 3, 3, 3, 10, 13, 10, 10, 12, 1084,
1658 12, 12, 16, 74, 16, 16, 55, 13, 13, 13,
1659 13, 18, 108, 18, 18, 3, 20, 3, 20, 20,
1660 3, 22, 3, 22, 22, 3, 212, 3, 46, 46,
1661 212, 3, 3, 5, 5, 5, 5, 5, 5, 5,
1662 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1663 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1664 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1665 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1667 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1668 5, 5, 5, 5, 5, 5, 5, 5, 7, 7,
1669 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1670 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1671 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1672 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1673 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1674 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1675 7, 7, 7, 9, 9, 9, 9, 9, 9, 9,
1676 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1678 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1679 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1680 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1681 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1682 9, 9, 9, 9, 9, 9, 9, 9, 11, 11,
1683 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1684 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1685 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1686 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1687 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1689 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1690 11, 11, 11, 14, 1083, 14, 14, 31, 14, 31,
1691 82, 31, 31, 60, 1082, 60, 60, 82, 122, 122,
1692 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
1693 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1694 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1695 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1696 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1697 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1698 15, 15, 15, 15, 15, 15, 15, 15, 15, 17,
1700 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1701 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1702 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1703 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1704 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1705 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1706 17, 17, 17, 17, 19, 19, 19, 19, 19, 19,
1707 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1708 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1709 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1711 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1712 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1713 19, 19, 19, 19, 19, 19, 19, 19, 19, 21,
1714 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1715 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1716 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1717 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1718 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1719 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1720 21, 21, 21, 21, 25, 91, 25, 25, 27, 27,
1722 27, 27, 36, 209, 36, 36, 36, 36, 209, 25,
1723 36, 47, 38, 27, 38, 38, 38, 38, 47, 1080,
1724 38, 39, 39, 39, 39, 47, 233, 39, 91, 39,
1725 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1726 39, 39, 233, 39, 39, 39, 39, 39, 39, 39,
1727 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1728 39, 39, 39, 39, 39, 39, 41, 52, 41, 41,
1729 41, 41, 216, 51, 52, 49, 976, 53, 41, 41,
1730 51, 52, 49, 41, 53, 41, 216, 51, 41, 49,
1731 56, 53, 41, 112, 976, 41, 42, 112, 42, 42,
1733 42, 42, 112, 41, 67, 48, 67, 67, 1079, 42,
1734 52, 41, 48, 42, 53, 48, 48, 48, 48, 48,
1735 49, 69, 69, 660, 51, 42, 43, 53, 43, 460,
1736 56, 43, 660, 50, 43, 43, 43, 43, 43, 43,
1737 50, 54, 43, 84, 43, 43, 460, 50, 54, 57,
1738 84, 57, 57, 59, 59, 54, 66, 58, 58, 58,
1739 58, 231, 69, 66, 57, 61, 61, 61, 61, 231,
1740 66, 50, 58, 84, 1077, 59, 59, 50, 62, 64,
1741 62, 62, 62, 62, 121, 54, 167, 64, 64, 64,
1742 64, 64, 64, 66, 59, 63, 124, 124, 64, 68,
1744 68, 68, 68, 71, 71, 71, 71, 73, 73, 73,
1745 73, 87, 87, 63, 63, 1076, 63, 121, 63, 167,
1746 63, 63, 63, 63, 213, 63, 213, 63, 63, 63,
1747 75, 323, 75, 63, 75, 75, 77, 78, 77, 77,
1748 77, 77, 85, 85, 85, 85, 980, 78, 78, 78,
1749 78, 80, 87, 80, 80, 80, 80, 86, 86, 86,
1750 86, 131, 131, 214, 80, 214, 83, 323, 80, 83,
1751 83, 83, 83, 83, 78, 78, 136, 136, 1073, 78,
1752 80, 93, 131, 93, 93, 93, 93, 94, 94, 94,
1753 94, 980, 100, 96, 100, 100, 101, 101, 101, 101,
1755 96, 234, 109, 96, 109, 109, 234, 96, 104, 104,
1756 104, 104, 126, 126, 120, 94, 120, 120, 96, 94,
1757 95, 126, 95, 95, 95, 95, 96, 105, 105, 105,
1758 105, 116, 95, 95, 138, 138, 104, 95, 116, 95,
1759 104, 116, 95, 150, 150, 116, 95, 810, 113, 95,
1760 113, 113, 113, 113, 140, 140, 116, 95, 134, 134,
1761 134, 134, 810, 140, 116, 95, 98, 98, 810, 98,
1762 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1763 98, 1070, 98, 98, 114, 114, 114, 114, 98, 98,
1764 98, 98, 463, 106, 463, 106, 106, 106, 106, 135,
1766 135, 135, 135, 152, 152, 98, 106, 127, 127, 849,
1767 106, 849, 114, 125, 125, 239, 114, 125, 154, 154,
1768 239, 127, 106, 127, 127, 127, 127, 154, 1069, 98,
1769 98, 99, 99, 239, 99, 99, 99, 99, 99, 99,
1770 99, 99, 99, 99, 99, 99, 863, 99, 99, 863,
1771 125, 145, 145, 99, 99, 99, 99, 130, 148, 148,
1772 148, 148, 128, 128, 130, 139, 139, 130, 279, 139,
1773 99, 130, 145, 279, 182, 1068, 99, 206, 128, 128,
1774 128, 128, 130, 149, 149, 149, 149, 153, 153, 206,
1775 130, 153, 222, 222, 99, 99, 115, 1066, 115, 115,
1777 115, 115, 139, 225, 225, 225, 128, 182, 115, 115,
1778 128, 159, 159, 115, 176, 115, 176, 176, 115, 929,
1779 141, 141, 115, 929, 153, 115, 162, 162, 162, 162,
1780 230, 230, 159, 115, 141, 1065, 141, 141, 141, 141,
1781 290, 115, 118, 118, 118, 118, 118, 118, 290, 118,
1782 118, 118, 118, 118, 118, 118, 118, 1064, 118, 118,
1783 163, 163, 163, 163, 118, 118, 118, 118, 155, 155,
1784 169, 299, 169, 169, 169, 169, 244, 244, 142, 142,
1785 867, 118, 155, 867, 155, 155, 155, 155, 177, 177,
1786 177, 177, 263, 263, 142, 142, 142, 142, 178, 974,
1788 178, 178, 265, 265, 299, 118, 118, 119, 119, 119,
1789 119, 119, 119, 178, 119, 119, 119, 119, 119, 119,
1790 119, 119, 142, 119, 119, 1063, 142, 424, 144, 119,
1791 119, 119, 119, 232, 158, 144, 291, 232, 144, 156,
1792 156, 158, 144, 291, 158, 974, 119, 179, 158, 179,
1793 179, 232, 119, 144, 854, 156, 156, 156, 156, 158,
1794 424, 144, 186, 186, 186, 186, 1056, 158, 266, 266,
1795 119, 119, 129, 129, 170, 170, 170, 170, 187, 187,
1796 187, 187, 854, 156, 267, 267, 129, 156, 129, 129,
1797 129, 129, 188, 188, 188, 188, 501, 172, 129, 129,
1799 276, 276, 170, 129, 172, 129, 170, 172, 129, 309,
1800 309, 172, 129, 1051, 247, 129, 189, 189, 189, 189,
1801 1050, 247, 172, 129, 196, 196, 196, 196, 247, 501,
1802 172, 129, 132, 132, 132, 132, 132, 132, 132, 132,
1803 132, 132, 132, 132, 132, 132, 132, 507, 132, 132,
1804 269, 251, 269, 269, 132, 132, 132, 132, 251, 197,
1805 925, 197, 197, 197, 197, 251, 200, 200, 200, 200,
1806 211, 132, 197, 1047, 211, 253, 197, 200, 211, 223,
1807 507, 223, 253, 925, 223, 223, 223, 223, 197, 253,
1808 312, 312, 312, 200, 977, 132, 132, 133, 133, 133,
1810 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1811 133, 133, 977, 133, 133, 268, 268, 253, 253, 133,
1812 133, 133, 133, 221, 221, 221, 221, 272, 334, 334,
1813 294, 272, 1046, 249, 221, 272, 133, 294, 344, 344,
1814 249, 250, 133, 249, 249, 249, 249, 249, 250, 314,
1815 221, 252, 254, 871, 314, 250, 871, 255, 252, 254,
1816 133, 133, 143, 143, 255, 252, 254, 1044, 256, 339,
1817 257, 255, 268, 294, 339, 256, 143, 257, 143, 143,
1818 143, 143, 256, 280, 257, 280, 280, 254, 143, 143,
1819 859, 250, 859, 143, 262, 143, 262, 262, 143, 346,
1821 346, 252, 143, 349, 349, 143, 1043, 255, 318, 262,
1822 318, 318, 257, 143, 350, 350, 256, 281, 281, 281,
1823 281, 143, 146, 146, 146, 146, 146, 146, 146, 146,
1824 146, 146, 146, 146, 146, 146, 146, 1042, 146, 146,
1825 283, 283, 283, 283, 146, 146, 146, 146, 285, 285,
1826 285, 285, 285, 293, 361, 361, 293, 293, 293, 293,
1827 293, 146, 295, 295, 295, 295, 296, 296, 296, 296,
1828 303, 303, 303, 303, 310, 324, 310, 324, 324, 310,
1829 310, 310, 310, 370, 370, 146, 146, 147, 147, 147,
1830 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1832 147, 147, 1040, 147, 147, 328, 328, 328, 328, 147,
1833 147, 147, 147, 1018, 304, 1018, 304, 304, 304, 304,
1834 372, 372, 305, 305, 305, 305, 147, 304, 337, 337,
1835 337, 304, 147, 305, 308, 308, 308, 308, 326, 351,
1836 351, 439, 326, 304, 1039, 308, 439, 326, 351, 305,
1837 147, 147, 157, 157, 343, 709, 343, 343, 352, 352,
1838 322, 308, 322, 322, 322, 322, 157, 352, 157, 157,
1839 157, 157, 1038, 322, 375, 375, 549, 322, 157, 157,
1840 356, 356, 709, 157, 1037, 157, 357, 357, 157, 322,
1841 930, 335, 157, 335, 930, 157, 335, 335, 335, 335,
1843 549, 347, 347, 157, 549, 347, 368, 368, 368, 368,
1844 1035, 157, 160, 160, 160, 160, 160, 160, 160, 160,
1845 160, 160, 160, 160, 160, 160, 160, 356, 160, 160,
1846 376, 376, 926, 357, 160, 160, 160, 160, 347, 329,
1847 710, 329, 329, 329, 329, 923, 330, 330, 330, 330,
1848 923, 160, 329, 353, 353, 926, 329, 330, 348, 348,
1849 387, 387, 348, 369, 369, 369, 369, 710, 329, 353,
1850 353, 353, 353, 330, 1034, 160, 160, 161, 161, 161,
1851 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1852 161, 161, 1033, 161, 161, 348, 359, 359, 794, 161,
1854 161, 161, 161, 333, 333, 333, 333, 355, 355, 377,
1855 377, 794, 359, 359, 333, 931, 161, 794, 377, 931,
1856 360, 360, 161, 355, 355, 355, 355, 541, 373, 373,
1857 333, 360, 373, 360, 355, 1031, 360, 360, 360, 360,
1858 161, 161, 171, 543, 171, 171, 171, 171, 374, 374,
1859 355, 1023, 374, 924, 171, 171, 362, 362, 924, 171,
1860 541, 171, 382, 382, 171, 373, 364, 364, 171, 981,
1861 364, 171, 362, 362, 362, 364, 543, 378, 378, 171,
1862 396, 396, 1021, 383, 383, 374, 378, 171, 174, 174,
1863 1019, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1865 174, 174, 174, 1017, 174, 174, 358, 358, 855, 382,
1866 174, 174, 174, 174, 981, 385, 385, 613, 379, 379,
1867 398, 398, 358, 358, 358, 358, 1016, 174, 381, 381,
1868 383, 385, 385, 358, 379, 379, 379, 379, 855, 390,
1869 390, 401, 401, 390, 381, 381, 381, 381, 390, 358,
1870 613, 174, 174, 175, 175, 381, 175, 175, 175, 175,
1871 175, 175, 175, 175, 175, 175, 175, 175, 1015, 175,
1872 175, 381, 384, 384, 1014, 175, 175, 175, 175, 394,
1873 394, 394, 394, 1012, 386, 386, 402, 402, 384, 384,
1874 384, 384, 175, 388, 388, 386, 1011, 386, 175, 384,
1876 386, 386, 386, 386, 395, 395, 395, 395, 932, 388,
1877 388, 388, 932, 403, 403, 384, 175, 175, 313, 313,
1878 313, 313, 403, 404, 404, 413, 413, 313, 313, 313,
1879 399, 399, 404, 1010, 399, 615, 400, 400, 408, 408,
1880 400, 313, 313, 313, 313, 313, 313, 315, 315, 1009,
1881 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
1882 315, 315, 1008, 315, 315, 405, 405, 399, 615, 315,
1883 315, 315, 315, 400, 411, 411, 412, 412, 434, 434,
1884 1007, 405, 405, 405, 405, 408, 315, 412, 1006, 412,
1885 411, 411, 412, 412, 412, 412, 416, 416, 477, 477,
1887 416, 420, 420, 420, 420, 416, 421, 421, 421, 421,
1888 315, 315, 316, 316, 1003, 316, 316, 316, 316, 316,
1889 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1890 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1891 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1892 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1893 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1894 316, 316, 316, 316, 316, 316, 316, 317, 317, 1002,
1895 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1896 317, 317, 927, 317, 317, 407, 407, 927, 486, 317,
1898 317, 317, 317, 409, 409, 928, 486, 414, 414, 486,
1899 928, 407, 407, 407, 407, 1001, 317, 428, 428, 428,
1900 428, 1000, 407, 414, 414, 414, 536, 536, 430, 430,
1901 430, 430, 437, 437, 437, 317, 518, 518, 407, 430,
1902 317, 317, 338, 338, 338, 338, 443, 998, 443, 443,
1903 409, 338, 338, 338, 435, 430, 435, 554, 554, 435,
1904 435, 435, 435, 608, 608, 338, 338, 338, 338, 338,
1905 338, 340, 340, 340, 340, 340, 340, 996, 340, 340,
1906 340, 340, 340, 340, 340, 340, 972, 340, 340, 410,
1907 410, 995, 518, 340, 340, 340, 340, 972, 429, 994,
1909 429, 429, 429, 429, 972, 410, 410, 410, 410, 993,
1910 340, 429, 480, 480, 480, 429, 410, 444, 992, 444,
1911 444, 445, 445, 445, 445, 683, 683, 429, 446, 446,
1912 446, 446, 410, 991, 340, 340, 341, 341, 341, 341,
1913 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1914 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1915 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1916 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1917 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1918 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1920 341, 342, 342, 342, 342, 342, 342, 990, 342, 342,
1921 342, 342, 342, 342, 342, 342, 989, 342, 342, 433,
1922 433, 433, 433, 342, 342, 342, 342, 539, 539, 539,
1923 433, 447, 447, 447, 447, 448, 448, 448, 448, 933,
1924 342, 934, 449, 933, 449, 934, 433, 449, 449, 449,
1925 449, 476, 476, 476, 476, 478, 478, 478, 478, 342,
1926 706, 706, 476, 988, 342, 342, 354, 354, 479, 479,
1927 479, 479, 509, 967, 510, 557, 557, 557, 476, 509,
1928 354, 510, 354, 354, 354, 354, 509, 511, 510, 512,
1929 667, 513, 514, 354, 511, 844, 512, 354, 513, 514,
1931 515, 511, 844, 512, 965, 513, 514, 515, 517, 354,
1932 363, 363, 559, 531, 515, 517, 559, 566, 566, 510,
1933 531, 559, 517, 667, 564, 564, 363, 363, 363, 363,
1934 844, 512, 516, 566, 566, 363, 363, 363, 515, 516,
1935 727, 727, 515, 672, 531, 517, 516, 975, 531, 363,
1936 363, 363, 363, 363, 363, 365, 365, 365, 365, 365,
1937 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
1938 964, 365, 365, 516, 564, 963, 672, 365, 365, 365,
1939 365, 524, 524, 524, 524, 524, 537, 537, 537, 537,
1940 532, 962, 532, 975, 365, 532, 532, 532, 532, 538,
1942 538, 538, 538, 550, 960, 550, 728, 728, 550, 550,
1943 550, 550, 555, 555, 555, 555, 733, 733, 365, 365,
1944 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1945 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1946 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1947 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1948 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1949 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
1950 366, 366, 366, 366, 366, 367, 367, 367, 367, 367,
1951 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
1953 695, 367, 367, 535, 535, 535, 535, 367, 367, 367,
1954 367, 563, 563, 959, 535, 553, 553, 553, 553, 556,
1955 556, 556, 556, 935, 367, 699, 553, 935, 562, 562,
1956 535, 572, 572, 695, 578, 578, 565, 565, 958, 562,
1957 572, 562, 553, 367, 562, 562, 562, 562, 367, 367,
1958 380, 380, 565, 565, 565, 565, 567, 567, 699, 563,
1959 611, 611, 611, 565, 380, 957, 380, 380, 380, 380,
1960 568, 568, 567, 567, 567, 567, 936, 380, 677, 565,
1961 936, 380, 569, 569, 578, 677, 568, 568, 568, 568,
1962 576, 576, 677, 380, 389, 389, 586, 586, 569, 569,
1964 569, 576, 1020, 576, 1020, 586, 576, 576, 576, 576,
1965 389, 389, 389, 389, 580, 580, 592, 592, 956, 389,
1966 389, 389, 571, 571, 577, 577, 571, 779, 573, 573,
1967 580, 580, 573, 389, 389, 389, 389, 389, 389, 391,
1968 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
1969 391, 391, 391, 391, 982, 391, 391, 579, 579, 571,
1970 779, 391, 391, 391, 391, 573, 592, 734, 734, 581,
1971 581, 955, 577, 579, 579, 579, 579, 954, 391, 582,
1972 582, 600, 600, 953, 579, 581, 581, 581, 581, 951,
1973 600, 609, 609, 609, 609, 582, 582, 582, 582, 982,
1975 579, 950, 391, 391, 392, 392, 392, 392, 392, 392,
1976 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1977 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1978 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1979 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1980 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1981 392, 392, 392, 392, 392, 392, 392, 392, 392, 393,
1982 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
1983 393, 393, 393, 393, 949, 393, 393, 583, 583, 591,
1984 591, 393, 393, 393, 393, 983, 736, 736, 594, 594,
1986 736, 595, 595, 583, 583, 583, 585, 585, 393, 783,
1987 585, 948, 587, 587, 594, 594, 587, 595, 595, 595,
1988 595, 599, 599, 689, 678, 599, 947, 393, 590, 590,
1989 689, 678, 393, 393, 406, 406, 946, 591, 678, 590,
1990 983, 590, 783, 585, 590, 590, 590, 590, 406, 587,
1991 406, 406, 406, 406, 945, 593, 593, 689, 599, 944,
1992 715, 406, 601, 601, 715, 406, 601, 596, 596, 715,
1993 943, 593, 593, 593, 593, 597, 597, 406, 415, 415,
1994 745, 745, 593, 596, 596, 596, 596, 610, 610, 610,
1995 610, 597, 597, 597, 415, 415, 415, 415, 593, 601,
1997 746, 746, 682, 415, 415, 415, 604, 875, 604, 682,
1998 875, 604, 604, 604, 604, 978, 682, 415, 415, 415,
1999 415, 415, 415, 417, 417, 417, 417, 417, 417, 417,
2000 417, 417, 417, 417, 417, 417, 417, 417, 942, 417,
2001 417, 607, 607, 607, 607, 417, 417, 417, 417, 751,
2002 751, 682, 607, 618, 618, 618, 618, 619, 619, 619,
2003 619, 978, 417, 691, 691, 691, 691, 941, 607, 692,
2004 692, 692, 692, 711, 711, 711, 711, 712, 712, 712,
2005 712, 752, 752, 763, 763, 940, 417, 417, 418, 418,
2006 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2008 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2009 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2010 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2011 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2012 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
2013 418, 418, 418, 419, 419, 419, 419, 419, 419, 419,
2014 419, 419, 419, 419, 419, 419, 419, 419, 939, 419,
2015 419, 937, 679, 680, 915, 419, 419, 419, 419, 679,
2016 680, 681, 721, 721, 764, 764, 679, 680, 681, 690,
2017 722, 722, 419, 723, 723, 681, 690, 914, 721, 721,
2019 721, 721, 912, 729, 729, 911, 722, 722, 722, 722,
2020 909, 419, 729, 679, 680, 908, 419, 419, 438, 438,
2021 438, 438, 1022, 690, 1022, 681, 907, 438, 438, 438,
2022 724, 724, 904, 754, 754, 903, 723, 754, 902, 741,
2023 741, 438, 438, 438, 438, 438, 438, 440, 440, 901,
2024 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
2025 440, 440, 984, 440, 440, 730, 730, 769, 769, 440,
2026 440, 440, 440, 724, 730, 739, 739, 725, 725, 740,
2027 740, 725, 741, 770, 770, 900, 440, 757, 757, 839,
2028 839, 739, 739, 739, 739, 740, 740, 740, 740, 747,
2030 747, 860, 860, 757, 757, 757, 757, 984, 747, 898,
2031 440, 440, 441, 441, 725, 441, 441, 441, 441, 441,
2032 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2033 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2034 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2035 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2036 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
2037 441, 441, 441, 441, 441, 441, 441, 442, 442, 897,
2038 442, 442, 442, 442, 442, 442, 442, 442, 442, 442,
2039 442, 442, 985, 442, 442, 742, 742, 748, 748, 442,
2041 442, 442, 442, 979, 759, 759, 748, 760, 760, 726,
2042 726, 731, 731, 726, 896, 731, 442, 732, 732, 743,
2043 743, 732, 895, 743, 744, 744, 749, 749, 744, 1030,
2044 749, 1030, 772, 772, 894, 442, 772, 985, 742, 893,
2045 442, 442, 540, 540, 540, 540, 726, 759, 731, 979,
2046 760, 540, 540, 540, 732, 845, 743, 775, 775, 775,
2047 775, 744, 845, 749, 891, 540, 540, 540, 540, 540,
2048 540, 544, 544, 890, 544, 544, 544, 544, 544, 544,
2049 544, 544, 544, 544, 544, 544, 889, 544, 544, 888,
2050 758, 758, 845, 544, 544, 544, 544, 776, 776, 776,
2052 776, 750, 750, 765, 765, 750, 758, 758, 758, 758,
2053 544, 886, 765, 766, 766, 861, 861, 862, 862, 864,
2054 864, 885, 766, 865, 865, 866, 866, 868, 868, 869,
2055 869, 870, 870, 884, 544, 544, 545, 545, 750, 545,
2056 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2057 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2058 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2059 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2060 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2061 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
2063 545, 558, 558, 558, 558, 874, 874, 883, 837, 882,
2064 558, 558, 558, 761, 761, 837, 881, 761, 880, 762,
2065 762, 879, 837, 762, 558, 558, 558, 558, 558, 558,
2066 560, 560, 560, 560, 560, 560, 877, 560, 560, 560,
2067 560, 560, 560, 560, 560, 986, 560, 560, 1059, 1059,
2068 761, 921, 560, 560, 560, 560, 762, 837, 921, 918,
2069 919, 973, 876, 938, 767, 767, 918, 919, 767, 560,
2070 1060, 1060, 973, 918, 919, 920, 938, 920, 920, 973,
2071 851, 921, 938, 971, 842, 971, 971, 1024, 1024, 1024,
2072 986, 1024, 833, 560, 560, 561, 561, 561, 561, 561,
2074 561, 767, 561, 561, 561, 561, 561, 561, 561, 561,
2075 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
2076 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
2077 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
2078 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
2079 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
2080 570, 570, 969, 922, 970, 832, 969, 831, 970, 830,
2081 922, 1061, 1061, 969, 829, 970, 570, 570, 570, 570,
2082 969, 828, 970, 916, 834, 570, 570, 570, 768, 768,
2083 916, 834, 768, 922, 987, 827, 826, 916, 834, 570,
2085 570, 570, 570, 570, 570, 574, 574, 574, 574, 574,
2086 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
2087 916, 574, 574, 825, 836, 768, 834, 574, 574, 574,
2088 574, 836, 1025, 1025, 1025, 1027, 1027, 1027, 836, 987,
2089 824, 1026, 1026, 1026, 574, 1026, 1028, 1028, 1028, 823,
2090 1028, 1029, 1029, 1029, 822, 819, 818, 816, 814, 812,
2091 811, 809, 808, 836, 807, 806, 805, 804, 574, 574,
2092 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2093 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2094 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2096 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2097 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2098 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
2099 575, 575, 575, 575, 575, 584, 584, 803, 802, 801,
2100 799, 798, 797, 796, 793, 791, 790, 789, 787, 782,
2101 778, 584, 584, 584, 584, 777, 835, 774, 917, 756,
2102 584, 584, 584, 835, 738, 917, 720, 718, 714, 713,
2103 835, 708, 917, 707, 584, 584, 584, 584, 584, 584,
2104 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
2105 588, 588, 588, 588, 588, 917, 588, 588, 705, 703,
2107 835, 698, 588, 588, 588, 588, 694, 693, 688, 687,
2108 686, 685, 676, 675, 670, 666, 665, 664, 663, 588,
2109 662, 661, 659, 658, 657, 656, 655, 654, 652, 651,
2110 650, 649, 648, 647, 646, 645, 644, 642, 641, 640,
2111 639, 638, 637, 588, 588, 589, 589, 589, 589, 589,
2112 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2113 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2114 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2115 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2116 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2118 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2119 598, 598, 636, 635, 634, 633, 632, 630, 629, 628,
2120 627, 626, 625, 624, 623, 622, 598, 598, 598, 598,
2121 621, 614, 606, 605, 552, 598, 598, 598, 551, 548,
2122 547, 546, 542, 534, 533, 530, 529, 528, 527, 598,
2123 598, 598, 598, 598, 598, 602, 602, 602, 602, 602,
2124 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
2125 522, 602, 602, 521, 520, 519, 508, 602, 602, 602,
2126 602, 505, 502, 500, 499, 498, 497, 496, 495, 494,
2127 493, 492, 491, 490, 602, 489, 488, 487, 485, 484,
2129 483, 482, 474, 473, 472, 471, 470, 469, 468, 467,
2130 466, 465, 464, 462, 461, 459, 458, 457, 602, 602,
2131 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2132 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2133 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2134 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2135 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2136 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
2137 603, 603, 603, 603, 603, 612, 612, 612, 612, 456,
2138 455, 454, 453, 452, 612, 612, 612, 451, 432, 431,
2140 427, 332, 331, 321, 320, 319, 307, 306, 612, 612,
2141 612, 612, 612, 612, 616, 616, 302, 616, 616, 616,
2142 616, 616, 616, 616, 616, 616, 616, 616, 616, 292,
2143 616, 616, 289, 288, 284, 278, 616, 616, 616, 616,
2144 277, 275, 274, 273, 271, 270, 248, 246, 245, 238,
2145 237, 235, 229, 616, 228, 227, 219, 218, 217, 215,
2146 210, 208, 207, 205, 204, 203, 193, 173, 168, 166,
2147 117, 107, 102, 97, 92, 90, 81, 616, 616, 617,
2148 617, 76, 617, 617, 617, 617, 617, 617, 617, 617,
2149 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
2151 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
2152 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
2153 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
2154 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
2155 617, 617, 617, 617, 702, 702, 65, 702, 702, 702,
2156 702, 702, 702, 702, 702, 702, 702, 702, 702, 34,
2157 702, 702, 32, 28, 23, 0, 702, 702, 702, 702,
2158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 702, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 702, 702, 704,
2163 704, 0, 704, 704, 704, 704, 704, 704, 704, 704,
2164 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
2165 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
2166 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
2167 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
2168 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
2169 704, 704, 704, 704, 717, 717, 717, 717, 717, 717,
2170 0, 717, 717, 717, 717, 717, 717, 717, 717, 0,
2171 717, 717, 0, 0, 0, 0, 717, 717, 717, 717,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174 0, 0, 0, 717, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 0, 0, 0, 0, 717, 717, 719,
2177 719, 719, 719, 719, 719, 0, 719, 719, 719, 719,
2178 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
2179 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
2180 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
2181 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
2182 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
2184 719, 719, 719, 719, 735, 735, 735, 735, 735, 735,
2185 735, 735, 735, 735, 735, 735, 735, 735, 735, 0,
2186 735, 735, 0, 0, 0, 0, 735, 735, 735, 735,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 735, 0, 0, 0, 0, 0, 0,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 735, 735, 737,
2191 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2192 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2193 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2195 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2196 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2197 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
2198 737, 737, 737, 737, 753, 753, 753, 753, 753, 753,
2199 753, 753, 753, 753, 753, 753, 753, 753, 753, 0,
2200 753, 753, 0, 0, 0, 0, 753, 753, 753, 753,
2201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 753, 0, 0, 0, 0, 0, 0,
2203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204 0, 0, 0, 0, 0, 0, 0, 753, 753, 755,
2206 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2207 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2208 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2209 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2210 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2211 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
2212 755, 755, 755, 755, 771, 771, 771, 771, 771, 771,
2213 771, 771, 771, 771, 771, 771, 771, 771, 771, 0,
2214 771, 771, 0, 0, 0, 0, 771, 771, 771, 771,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 771, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 771, 771, 773,
2220 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2221 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2222 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2223 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2224 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2225 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
2226 773, 773, 773, 773, 786, 786, 0, 786, 786, 786,
2228 786, 786, 786, 786, 786, 786, 786, 786, 786, 0,
2229 786, 786, 0, 0, 0, 0, 786, 786, 786, 786,
2230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 0, 0, 0, 786, 0, 0, 0, 0, 0, 0,
2232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, 0, 0, 0, 0, 0, 786, 786, 788,
2234 788, 0, 788, 788, 788, 788, 788, 788, 788, 788,
2235 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
2236 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
2237 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
2239 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
2240 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
2241 788, 788, 788, 788, 848, 848, 0, 848, 848, 848,
2242 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
2243 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
2244 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
2245 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
2246 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
2247 848, 848, 848, 848, 848, 848, 848, 848, 848, 858,
2248 858, 858, 858, 858, 858, 0, 858, 858, 858, 858,
2250 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
2251 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
2252 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
2253 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
2254 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
2255 858, 858, 858, 858, 1095, 0, 1095, 1095, 1095, 1095,
2256 1095, 1095, 1095, 1095, 1095, 1096, 0, 0, 1096, 1096,
2257 1097, 0, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
2258 1097, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
2259 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
2261 1100, 1100, 1100, 1100, 1101, 0, 1101, 0, 1101, 1101,
2262 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
2263 0, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
2264 1104, 0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
2265 1104, 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
2266 1105, 1105, 1106, 0, 1106, 1106, 1106, 1106, 1106, 1106,
2267 1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
2268 1108, 1108, 0, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
2269 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
2270 1109, 1109, 1110, 1110, 0, 1110, 1110, 1110, 1110, 1110,
2272 1110, 1110, 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
2273 1111, 1111, 1111, 1111, 1112, 1112, 1112, 1112, 1112, 1112,
2274 1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113,
2275 1113, 1113, 1113, 1113, 1113, 1113, 1114, 1114, 1114, 1114,
2276 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1115, 1115,
2277 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1116,
2278 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117,
2279 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
2280 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
2281 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
2283 1119, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
2284 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
2285 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, 1122, 1122,
2286 1122, 1122, 1122, 1122, 1122, 1123, 0, 1123, 1123, 1123,
2287 1123, 1123, 1123, 1123, 1123, 1123, 1124, 0, 1124, 1124,
2288 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 0, 1125,
2289 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1126, 0,
2290 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127,
2291 0, 0, 1127, 1127, 1128, 0, 1128, 1128, 1128, 1128,
2292 1128, 1128, 1128, 1128, 1128, 1129, 0, 0, 1129, 1129,
2294 1129, 1130, 0, 0, 1130, 1131, 1131, 1131, 1131, 1131,
2295 1131, 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
2296 1133, 0, 0, 0, 0, 1133, 1133, 1133, 1133, 1134,
2297 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
2298 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136, 1136, 1136,
2299 1137, 0, 1137, 1137, 1137, 1137, 1138, 1138, 1138, 1138,
2300 1138, 1138, 1138, 1139, 0, 1139, 1139, 1139, 1139, 1139,
2301 1139, 1139, 1139, 1139, 1140, 0, 1140, 1140, 1140, 1140,
2302 1140, 1140, 1140, 1140, 1140, 1141, 0, 1141, 1141, 1141,
2303 1141, 1141, 1141, 1141, 1141, 1141, 1142, 0, 1142, 1142,
2305 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 0,
2306 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
2307 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145,
2308 1145, 0, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2309 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
2310 1146, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
2311 1147, 1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
2312 1148, 1148, 1148, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
2313 1149, 1149, 1149, 1149, 1150, 1150, 1150, 1150, 1150, 1150,
2314 1150, 1150, 1150, 1150, 1150, 1151, 1151, 1151, 1151, 1151,
2316 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1152,
2317 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153,
2318 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1154,
2319 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1155,
2320 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
2321 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2322 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
2323 1157, 1157, 1158, 0, 1158, 1158, 1158, 1158, 1158, 1158,
2324 1158, 1158, 1158, 1159, 0, 1159, 1159, 1159, 1159, 1159,
2325 1159, 1159, 1159, 1159, 1160, 0, 1160, 1160, 1160, 1160,
2327 1160, 1160, 1160, 1160, 1160, 1161, 0, 1161, 1161, 1161,
2328 1161, 1161, 1161, 1161, 1161, 1161, 1162, 0, 0, 1162,
2329 1162, 1163, 0, 0, 1163, 1163, 1163, 1164, 0, 0,
2330 1164, 1165, 0, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
2331 1165, 1165, 1166, 0, 1166, 1166, 1166, 1166, 1166, 1166,
2332 1166, 1166, 1166, 1167, 0, 1167, 1167, 1167, 1167, 1167,
2333 1167, 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168,
2334 1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170,
2335 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
2336 1171, 1171, 1171, 1171, 1171, 1171, 1172, 0, 1172, 1172,
2338 1172, 1172, 1173, 0, 1173, 1173, 1173, 1173, 1174, 1174,
2339 1174, 1174, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175,
2340 1175, 1175, 1175, 1175, 1175, 1175, 1176, 0, 1176, 1176,
2341 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 0, 1177,
2342 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 0,
2343 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
2344 0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
2345 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 0,
2346 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,
2347 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183,
2349 1183, 0, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
2350 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
2351 1184, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2352 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
2353 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
2354 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188, 1188,
2355 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189, 1189,
2356 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190,
2357 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191, 1191,
2358 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1192,
2360 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193,
2361 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
2362 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
2363 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2364 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
2365 1196, 1196, 1196, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
2366 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1198, 1198,
2367 1198, 1198, 1198, 1198, 1198, 1199, 0, 1199, 1199, 1199,
2368 1199, 1199, 1199, 1199, 1199, 1199, 1200, 0, 1200, 1200,
2369 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 0, 1201,
2371 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202, 0,
2372 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203,
2373 0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
2374 1204, 0, 0, 1204, 1204, 1204, 1205, 0, 1205, 1205,
2375 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 0, 1206,
2376 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 0,
2377 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208,
2378 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1209, 1209, 1209,
2379 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
2380 1210, 1210, 1210, 1210, 1210, 1211, 0, 1211, 1211, 1211,
2382 1211, 1212, 0, 1212, 1212, 1212, 1212, 1213, 1213, 1213,
2383 1213, 1213, 1213, 1213, 1214, 0, 1214, 1214, 1214, 1214,
2384 1214, 1214, 1214, 1214, 1214, 1215, 0, 1215, 1215, 1215,
2385 1215, 1215, 1215, 1215, 1215, 1215, 1216, 0, 1216, 1216,
2386 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 0, 1217,
2387 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 0,
2388 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219,
2389 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 0, 1220,
2390 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221,
2391 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1222, 1222,
2393 0, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223,
2394 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
2395 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
2396 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
2397 1225, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
2398 1226, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
2399 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228, 1228, 1228,
2400 1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229,
2401 1229, 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230,
2402 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1231,
2404 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1232, 1232,
2405 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1233,
2406 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
2407 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2408 1234, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
2409 1235, 1235, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
2410 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
2411 1237, 1237, 1237, 1237, 1238, 0, 1238, 1238, 1238, 1238,
2412 1238, 1238, 1238, 1238, 1238, 1239, 0, 1239, 1239, 1239,
2413 1239, 1239, 1239, 1239, 1239, 1239, 1240, 0, 1240, 1240,
2415 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241, 0, 1241,
2416 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 0,
2417 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243,
2418 0, 0, 1243, 1243, 1243, 1244, 1244, 1244, 1244, 1244,
2419 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
2420 1245, 1245, 1245, 1245, 1246, 0, 1246, 1246, 1246, 1246,
2421 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1248, 0, 1248,
2422 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1249,
2423 1249, 1249, 1249, 1249, 1249, 1250, 1250, 0, 1250, 1250,
2424 1250, 1250, 1250, 1250, 1250, 1250, 1094, 1094, 1094, 1094,
2426 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2427 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2428 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2429 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2430 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2431 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2432 1094, 1094
2435 /* Table of booleans, true if rule could match eol. */
2436 static yyconst flex_int32_t yy_rule_can_match_eol[149] =
2437 { 0,
2438 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
2445 0, 0, 0, 0, 0, 0, 0, 0, 0, };
2447 /* The intent behind this definition is that it'll catch
2448 * any uses of REJECT which flex missed.
2450 #define REJECT reject_used_but_not_detected
2451 #define yymore() yymore_used_but_not_detected
2452 #define YY_MORE_ADJ 0
2453 #define YY_RESTORE_YY_MORE_OFFSET
2454 #line 1 "compilers/imcc/imcc.l"
2456 #line 23 "compilers/imcc/imcc.l"
2458 * imcc.l
2460 * Intermediate Code Compiler for Parrot
2462 * Copyright (C) 2002 Melvin Smith <melvin.smith@mindspring.com>
2463 * Copyright (C) 2002-2008, Parrot Foundation.
2465 * The tokenizer.
2467 * $Id$
2472 #include <stdio.h>
2473 #include <stdlib.h>
2474 #include <string.h>
2475 #include "imc.h"
2476 #include "parser.h"
2478 typedef struct yyguts_t yyguts_t;
2479 typedef struct parser_state_t parser_state_t;
2481 /* parser state structure
2482 * the first few items are common to struct parser_state, but
2483 * we AFAIK need this hack as flex doesn't export YY_BUFFER_STATE */
2484 typedef struct macro_frame_t {
2485 struct parser_state_t s;
2487 /* macro stuff */
2488 params_t *params;
2489 char *heredoc_rest;
2491 params_t expansion;
2492 int label;
2493 int is_macro;
2494 YY_BUFFER_STATE buffer;
2495 } macro_frame_t;
2497 /* static function declarations */
2498 static void pop_parser_state(PARROT_INTERP, ARGMOD(void *yyscanner));
2500 static struct macro_frame_t *new_frame(PARROT_INTERP);
2502 static void define_macro(PARROT_INTERP, ARGIN(const char *name), ARGIN(const params_t *params),
2503 ARGIN(const char *expansion), int start_line);
2505 static macro_t *find_macro(PARROT_INTERP, ARGIN(const char *name));
2507 static void scan_string(macro_frame_t *frame, ARGIN(const char *expansion),
2508 ARGMOD(void *yyscanner));
2510 static void scan_file(PARROT_INTERP, ARGIN(struct macro_frame_t *frame), ARGMOD(FILE *file),
2511 ARGMOD(void *yyscanner));
2513 static int destroy_frame(macro_frame_t *frame, ARGMOD(void *yyscanner));
2515 static int yylex_skip(YYSTYPE *valp, PARROT_INTERP, ARGIN(const char *skip),
2516 ARGMOD(void *yyscanner));
2518 static int read_macro(YYSTYPE *valp, PARROT_INTERP, ARGMOD(void *yyscanner));
2520 static int expand_macro(PARROT_INTERP, ARGIN(const char *name), ARGMOD(void *yyscanner));
2522 static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
2524 static int handle_identifier(PARROT_INTERP, YYSTYPE *valp, ARGIN(const char *id));
2526 #define YY_DECL int yylex(YYSTYPE *valp,yyscan_t yyscanner,PARROT_INTERP)
2528 #define YYCHOP() (yytext[--yyleng] = '\0')
2530 #define SET_LINE_NUMBER (IMCC_INFO(interp)->line = yylineno)
2532 #define DUP_AND_RET(valp, token) \
2533 do { \
2534 if (valp) (valp)->s = mem_sys_strdup(yytext); \
2535 return (token); \
2536 } while (0)
2538 #define DUP_AND_RET_FREE(valp, token) \
2539 do { \
2540 if (valp) { \
2541 mem_sys_free((valp)->s); \
2542 (valp)->s = mem_sys_strdup(yytext); \
2543 return (token); \
2545 } while (0)
2557 #line 2558 "compilers/imcc/imclexer.c"
2559 #define INITIAL 0
2560 #define emit 1
2561 #define macro 2
2562 #define pod 3
2563 #define cmt1 4
2564 #define cmt2 5
2565 #define cmt3 6
2566 #define cmt4 7
2567 #define cmt5 8
2568 #define heredoc1 9
2569 #define heredoc2 10
2571 #ifndef YY_NO_UNISTD_H
2572 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2573 * down here because we want the user's section 1 to have been scanned first.
2574 * The user has a chance to override it with an option.
2576 #include <unistd.h>
2577 #endif
2579 #ifndef YY_EXTRA_TYPE
2580 #define YY_EXTRA_TYPE void *
2581 #endif
2583 /* Holds the entire state of the reentrant scanner. */
2584 struct yyguts_t
2587 /* User-defined. Not touched by flex. */
2588 YY_EXTRA_TYPE yyextra_r;
2590 /* The rest are the same as the globals declared in the non-reentrant scanner. */
2591 FILE *yyin_r, *yyout_r;
2592 size_t yy_buffer_stack_top; /**< index of top of stack. */
2593 size_t yy_buffer_stack_max; /**< capacity of stack. */
2594 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
2595 char yy_hold_char;
2596 int yy_n_chars;
2597 int yyleng_r;
2598 char *yy_c_buf_p;
2599 int yy_init;
2600 int yy_start;
2601 int yy_did_buffer_switch_on_eof;
2602 int yy_start_stack_ptr;
2603 int yy_start_stack_depth;
2604 int *yy_start_stack;
2605 yy_state_type yy_last_accepting_state;
2606 char* yy_last_accepting_cpos;
2608 int yylineno_r;
2609 int yy_flex_debug_r;
2611 char *yytext_r;
2612 int yy_more_flag;
2613 int yy_more_len;
2615 }; /* end struct yyguts_t */
2617 static int yy_init_globals (yyscan_t yyscanner );
2619 int yylex_init (yyscan_t* scanner);
2621 int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
2623 /* Accessor methods to globals.
2624 These are made visible to non-reentrant scanners for convenience. */
2626 int yylex_destroy (yyscan_t yyscanner );
2628 int yyget_debug (yyscan_t yyscanner );
2630 void yyset_debug (int debug_flag ,yyscan_t yyscanner );
2632 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
2634 void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
2636 FILE *yyget_in (yyscan_t yyscanner );
2638 void yyset_in (FILE * in_str ,yyscan_t yyscanner );
2640 FILE *yyget_out (yyscan_t yyscanner );
2642 void yyset_out (FILE * out_str ,yyscan_t yyscanner );
2644 int yyget_leng (yyscan_t yyscanner );
2646 char *yyget_text (yyscan_t yyscanner );
2648 int yyget_lineno (yyscan_t yyscanner );
2650 void yyset_lineno (int line_number ,yyscan_t yyscanner );
2652 /* Macros after this point can all be overridden by user definitions in
2653 * section 1.
2656 #ifndef YY_SKIP_YYWRAP
2657 #ifdef __cplusplus
2658 extern "C" int yywrap (yyscan_t yyscanner );
2659 #else
2660 extern int yywrap (yyscan_t yyscanner );
2661 #endif
2662 #endif
2664 static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
2666 #ifndef yytext_ptr
2667 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
2668 #endif
2670 #ifdef YY_NEED_STRLEN
2671 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
2672 #endif
2674 #ifndef YY_NO_INPUT
2676 #ifdef __cplusplus
2677 static int yyinput (yyscan_t yyscanner );
2678 #else
2679 static int input (yyscan_t yyscanner );
2680 #endif
2682 #endif
2684 static void yy_push_state (int new_state ,yyscan_t yyscanner);
2686 static void yy_pop_state (yyscan_t yyscanner );
2688 static int yy_top_state (yyscan_t yyscanner );
2690 /* Amount of stuff to slurp up with each read. */
2691 #ifndef YY_READ_BUF_SIZE
2692 #ifdef __ia64__
2693 /* On IA-64, the buffer size is 16k, not 8k */
2694 #define YY_READ_BUF_SIZE 16384
2695 #else
2696 #define YY_READ_BUF_SIZE 8192
2697 #endif /* __ia64__ */
2698 #endif
2700 /* Copy whatever the last rule matched to the standard output. */
2701 #ifndef ECHO
2702 /* This used to be an fputs(), but since the string might contain NUL's,
2703 * we now use fwrite().
2705 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
2706 #endif
2708 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2709 * is returned in "result".
2711 #ifndef YY_INPUT
2712 #define YY_INPUT(buf,result,max_size) \
2713 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2715 int c = '*'; \
2716 size_t n; \
2717 for ( n = 0; n < max_size && \
2718 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2719 buf[n] = (char) c; \
2720 if ( c == '\n' ) \
2721 buf[n++] = (char) c; \
2722 if ( c == EOF && ferror( yyin ) ) \
2723 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2724 result = n; \
2726 else \
2728 errno=0; \
2729 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2731 if( errno != EINTR) \
2733 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2734 break; \
2736 errno=0; \
2737 clearerr(yyin); \
2742 #endif
2744 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2745 * we don't want an extra ';' after the "return" because that will cause
2746 * some compilers to complain about unreachable statements.
2748 #ifndef yyterminate
2749 #define yyterminate() return YY_NULL
2750 #endif
2752 /* Number of entries by which start-condition stack grows. */
2753 #ifndef YY_START_STACK_INCR
2754 #define YY_START_STACK_INCR 25
2755 #endif
2757 /* Report a fatal error. */
2758 #ifndef YY_FATAL_ERROR
2759 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
2760 #endif
2762 /* end tables serialization structures and prototypes */
2764 /* Default declaration of generated scanner - a define so the user can
2765 * easily add parameters.
2767 #ifndef YY_DECL
2768 #define YY_DECL_IS_OURS 1
2770 extern int yylex (yyscan_t yyscanner);
2772 #define YY_DECL int yylex (yyscan_t yyscanner)
2773 #endif /* !YY_DECL */
2775 /* Code executed at the beginning of each rule, after yytext and yyleng
2776 * have been set up.
2778 #ifndef YY_USER_ACTION
2779 #define YY_USER_ACTION
2780 #endif
2782 /* Code executed at the end of each rule. */
2783 #ifndef YY_BREAK
2784 #define YY_BREAK break;
2785 #endif
2787 #define YY_RULE_SETUP \
2788 if ( yyleng > 0 ) \
2789 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2790 (yytext[yyleng - 1] == '\n'); \
2791 YY_USER_ACTION
2793 /** The main scanner function which does all the work.
2795 YY_DECL
2797 register yy_state_type yy_current_state;
2798 register char *yy_cp, *yy_bp;
2799 register int yy_act;
2800 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2802 #line 157 "compilers/imcc/imcc.l"
2804 /* for emacs "*/
2805 if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
2806 IMCC_INFO(interp)->expect_pasm = 2;
2807 BEGIN(emit);
2810 if (IMCC_INFO(interp)->frames->s.pasm_file && YYSTATE == INITIAL &&
2811 !IMCC_INFO(interp)->in_pod)
2813 if (IMCC_INFO(interp)->frames->s.pasm_file == 1) {
2814 BEGIN(emit);
2815 return EMIT;
2818 return 0;
2821 #line 2822 "compilers/imcc/imclexer.c"
2823 if ( !yyg->yy_init )
2825 yyg->yy_init = 1;
2827 #ifdef YY_USER_INIT
2828 YY_USER_INIT;
2829 #endif
2831 if ( ! yyg->yy_start )
2832 yyg->yy_start = 1; /* first start state */
2834 if ( ! yyin )
2835 yyin = stdin;
2837 if ( ! yyout )
2838 yyout = stdout;
2840 if ( ! YY_CURRENT_BUFFER ) {
2841 yyensure_buffer_stack (yyscanner);
2842 YY_CURRENT_BUFFER_LVALUE =
2843 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2846 yy_load_buffer_state(yyscanner );
2849 while ( 1 ) /* loops until end-of-file is reached */
2851 yy_cp = yyg->yy_c_buf_p;
2853 /* Support of yytext. */
2854 *yy_cp = yyg->yy_hold_char;
2856 /* yy_bp points to the position in yy_ch_buf of the start of
2857 * the current run.
2859 yy_bp = yy_cp;
2861 yy_current_state = yyg->yy_start;
2862 yy_current_state += YY_AT_BOL();
2863 yy_match:
2866 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2867 if ( yy_accept[yy_current_state] )
2869 yyg->yy_last_accepting_state = yy_current_state;
2870 yyg->yy_last_accepting_cpos = yy_cp;
2872 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2874 yy_current_state = (int) yy_def[yy_current_state];
2875 if ( yy_current_state >= 1095 )
2876 yy_c = yy_meta[(unsigned int) yy_c];
2878 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2879 ++yy_cp;
2881 while ( yy_current_state != 1094 );
2882 yy_cp = yyg->yy_last_accepting_cpos;
2883 yy_current_state = yyg->yy_last_accepting_state;
2885 yy_find_action:
2886 yy_act = yy_accept[yy_current_state];
2888 YY_DO_BEFORE_ACTION;
2890 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2892 int yyl;
2893 for ( yyl = 0; yyl < yyleng; ++yyl )
2894 if ( yytext[yyl] == '\n' )
2896 do{ yylineno++;
2897 yycolumn=0;
2898 }while(0)
2902 do_action: /* This label is used only to access EOF actions. */
2904 switch ( yy_act )
2905 { /* beginning of action switch */
2906 case 0: /* must back up */
2907 /* undo the effects of YY_DO_BEFORE_ACTION */
2908 *yy_cp = yyg->yy_hold_char;
2909 yy_cp = yyg->yy_last_accepting_cpos;
2910 yy_current_state = yyg->yy_last_accepting_state;
2911 goto yy_find_action;
2913 case 1:
2914 YY_RULE_SETUP
2915 #line 175 "compilers/imcc/imcc.l"
2916 { SET_LINE_NUMBER; }
2917 YY_BREAK
2918 case 2:
2919 /* rule 2 can match eol */
2920 YY_RULE_SETUP
2921 #line 177 "compilers/imcc/imcc.l"
2923 SET_LINE_NUMBER;
2924 IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
2925 BEGIN(heredoc2);
2927 YY_BREAK
2928 case 3:
2929 /* rule 3 can match eol */
2930 YY_RULE_SETUP
2931 #line 183 "compilers/imcc/imcc.l"
2933 /* heredocs have highest priority
2934 * arrange them before all wildcard state matches */
2936 /* Newline in the heredoc. Realloc and cat on. */
2937 IMCC_INFO(interp)->heredoc_content =
2938 (char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
2939 strlen(IMCC_INFO(interp)->heredoc_content) +
2940 strlen(yytext) + 2);
2941 strcpy(IMCC_INFO(interp)->heredoc_content +
2942 strlen(IMCC_INFO(interp)->heredoc_content), yytext);
2944 YY_BREAK
2945 case 4:
2946 YY_RULE_SETUP
2947 #line 196 "compilers/imcc/imcc.l"
2949 SET_LINE_NUMBER;
2950 /* Are we at the end of the heredoc? */
2951 if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
2952 /* End of the heredoc. */
2953 yyguts_t * const yyg = (yyguts_t *)yyscanner;
2954 const int len = strlen(IMCC_INFO(interp)->heredoc_content);
2956 /* delim */
2957 IMCC_INFO(interp)->heredoc_content[len] =
2958 IMCC_INFO(interp)->heredoc_content[0];
2960 IMCC_INFO(interp)->heredoc_content[len + 1] = 0;
2962 mem_sys_free(IMCC_INFO(interp)->heredoc_end);
2963 IMCC_INFO(interp)->heredoc_end = NULL;
2965 IMCC_INFO(interp)->frames->buffer = YY_CURRENT_BUFFER;
2966 valp->s =
2967 IMCC_INFO(interp)->heredoc_content;
2969 yy_pop_state(yyscanner);
2970 yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest,yyscanner);
2972 /* not sure we need this decrement; more testing needed */
2973 IMCC_INFO(interp)->line--;
2974 return STRINGC;
2976 else {
2977 /* Part of the heredoc. Realloc and cat the line on. */
2978 IMCC_INFO(interp)->heredoc_content =
2979 (char *)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
2980 strlen(IMCC_INFO(interp)->heredoc_content) +
2981 strlen(yytext) + 2);
2982 strcpy(IMCC_INFO(interp)->heredoc_content +
2983 strlen(IMCC_INFO(interp)->heredoc_content), yytext);
2986 YY_BREAK
2987 case 5:
2988 /* rule 5 can match eol */
2989 YY_RULE_SETUP
2990 #line 235 "compilers/imcc/imcc.l"
2992 yy_pop_state(yyscanner);
2993 yy_push_state(cmt3, yyscanner);
2995 IMCC_INFO(interp)->frames->s.file = mem_sys_strdup(yytext);
2996 IMCC_INFO(interp)->cur_unit->file = mem_sys_strdup(yytext);
2998 return FILECOMMENT;
3000 YY_BREAK
3001 case 6:
3002 YY_RULE_SETUP
3003 #line 245 "compilers/imcc/imcc.l"
3005 yy_pop_state(yyscanner);
3006 yy_push_state(cmt4, yyscanner);
3008 YY_BREAK
3009 case 7:
3010 YY_RULE_SETUP
3011 #line 250 "compilers/imcc/imcc.l"
3012 { yy_push_state(cmt2, yyscanner); }
3013 YY_BREAK
3014 case 8:
3015 YY_RULE_SETUP
3016 #line 252 "compilers/imcc/imcc.l"
3017 { yy_push_state(cmt1, yyscanner); }
3018 YY_BREAK
3019 case 9:
3020 YY_RULE_SETUP
3021 #line 254 "compilers/imcc/imcc.l"
3023 yylineno = IMCC_INFO(interp)->line = atoi(yytext);
3024 yy_pop_state(yyscanner);
3025 yy_push_state(cmt4, yyscanner);
3026 return LINECOMMENT;
3028 YY_BREAK
3029 case 10:
3030 /* rule 10 can match eol */
3031 YY_RULE_SETUP
3032 #line 261 "compilers/imcc/imcc.l"
3034 yy_pop_state(yyscanner);
3036 YY_BREAK
3037 case 11:
3038 /* rule 11 can match eol */
3039 YY_RULE_SETUP
3040 #line 265 "compilers/imcc/imcc.l"
3042 if (IMCC_INFO(interp)->expect_pasm == 2)
3043 BEGIN(INITIAL);
3045 IMCC_INFO(interp)->expect_pasm = 0;
3047 return '\n';
3049 YY_BREAK
3050 case 12:
3051 YY_RULE_SETUP
3052 #line 274 "compilers/imcc/imcc.l"
3054 yy_push_state(cmt5, yyscanner);
3056 YY_BREAK
3057 case 13:
3058 /* rule 13 can match eol */
3059 YY_RULE_SETUP
3060 #line 278 "compilers/imcc/imcc.l"
3062 if (IMCC_INFO(interp)->expect_pasm == 2)
3063 BEGIN(INITIAL);
3064 else
3065 yy_pop_state(yyscanner);
3067 IMCC_INFO(interp)->expect_pasm = 0;
3069 return '\n';
3071 YY_BREAK
3072 case 14:
3073 /* rule 14 can match eol */
3074 YY_RULE_SETUP
3075 #line 290 "compilers/imcc/imcc.l"
3077 /* this is a stand-alone =cut, but we're not in POD mode, so ignore. */
3078 SET_LINE_NUMBER;
3080 YY_BREAK
3081 case 15:
3082 /* rule 15 can match eol */
3083 YY_RULE_SETUP
3084 #line 295 "compilers/imcc/imcc.l"
3086 SET_LINE_NUMBER;
3087 IMCC_INFO(interp)->in_pod = 1;
3088 yy_push_state(pod, yyscanner);
3090 YY_BREAK
3091 case 16:
3092 /* rule 16 can match eol */
3093 YY_RULE_SETUP
3094 #line 301 "compilers/imcc/imcc.l"
3096 SET_LINE_NUMBER;
3097 IMCC_INFO(interp)->in_pod = 0;
3098 yy_pop_state(yyscanner);
3100 YY_BREAK
3101 case 17:
3102 YY_RULE_SETUP
3103 #line 307 "compilers/imcc/imcc.l"
3104 { SET_LINE_NUMBER; }
3105 YY_BREAK
3106 case 18:
3107 /* rule 18 can match eol */
3108 YY_RULE_SETUP
3109 #line 309 "compilers/imcc/imcc.l"
3110 { /* ignore */ }
3111 YY_BREAK
3112 case 19:
3113 YY_RULE_SETUP
3114 #line 311 "compilers/imcc/imcc.l"
3115 return TK_LINE;
3116 YY_BREAK
3117 case 20:
3118 YY_RULE_SETUP
3119 #line 312 "compilers/imcc/imcc.l"
3120 return TK_FILE;
3121 YY_BREAK
3122 case 21:
3123 YY_RULE_SETUP
3124 #line 313 "compilers/imcc/imcc.l"
3125 return ANNOTATE;
3126 YY_BREAK
3127 case 22:
3128 YY_RULE_SETUP
3129 #line 314 "compilers/imcc/imcc.l"
3130 return LEXICAL;
3131 YY_BREAK
3132 case 23:
3133 YY_RULE_SETUP
3134 #line 315 "compilers/imcc/imcc.l"
3135 return ARG;
3136 YY_BREAK
3137 case 24:
3138 YY_RULE_SETUP
3139 #line 316 "compilers/imcc/imcc.l"
3140 return SUB;
3141 YY_BREAK
3142 case 25:
3143 YY_RULE_SETUP
3144 #line 317 "compilers/imcc/imcc.l"
3145 return ESUB;
3146 YY_BREAK
3147 case 26:
3148 YY_RULE_SETUP
3149 #line 318 "compilers/imcc/imcc.l"
3150 return PCC_BEGIN;
3151 YY_BREAK
3152 case 27:
3153 YY_RULE_SETUP
3154 #line 319 "compilers/imcc/imcc.l"
3155 return PCC_END;
3156 YY_BREAK
3157 case 28:
3158 YY_RULE_SETUP
3159 #line 320 "compilers/imcc/imcc.l"
3160 return PCC_CALL;
3161 YY_BREAK
3162 case 29:
3163 YY_RULE_SETUP
3164 #line 321 "compilers/imcc/imcc.l"
3165 return NCI_CALL;
3166 YY_BREAK
3167 case 30:
3168 YY_RULE_SETUP
3169 #line 322 "compilers/imcc/imcc.l"
3170 return METH_CALL;
3171 YY_BREAK
3172 case 31:
3173 YY_RULE_SETUP
3174 #line 323 "compilers/imcc/imcc.l"
3175 return INVOCANT;
3176 YY_BREAK
3177 case 32:
3178 YY_RULE_SETUP
3179 #line 324 "compilers/imcc/imcc.l"
3180 return PCC_SUB;
3181 YY_BREAK
3182 case 33:
3183 YY_RULE_SETUP
3184 #line 325 "compilers/imcc/imcc.l"
3185 return PCC_BEGIN_RETURN;
3186 YY_BREAK
3187 case 34:
3188 YY_RULE_SETUP
3189 #line 326 "compilers/imcc/imcc.l"
3190 return PCC_END_RETURN;
3191 YY_BREAK
3192 case 35:
3193 YY_RULE_SETUP
3194 #line 327 "compilers/imcc/imcc.l"
3195 return PCC_BEGIN_YIELD;
3196 YY_BREAK
3197 case 36:
3198 YY_RULE_SETUP
3199 #line 328 "compilers/imcc/imcc.l"
3200 return PCC_END_YIELD;
3201 YY_BREAK
3202 case 37:
3203 YY_RULE_SETUP
3204 #line 330 "compilers/imcc/imcc.l"
3205 return METHOD;
3206 YY_BREAK
3207 case 38:
3208 YY_RULE_SETUP
3209 #line 331 "compilers/imcc/imcc.l"
3210 return MULTI;
3211 YY_BREAK
3212 case 39:
3213 YY_RULE_SETUP
3214 #line 332 "compilers/imcc/imcc.l"
3215 return MAIN;
3216 YY_BREAK
3217 case 40:
3218 YY_RULE_SETUP
3219 #line 333 "compilers/imcc/imcc.l"
3220 return LOAD;
3221 YY_BREAK
3222 case 41:
3223 YY_RULE_SETUP
3224 #line 334 "compilers/imcc/imcc.l"
3225 return INIT;
3226 YY_BREAK
3227 case 42:
3228 YY_RULE_SETUP
3229 #line 335 "compilers/imcc/imcc.l"
3230 return IMMEDIATE;
3231 YY_BREAK
3232 case 43:
3233 YY_RULE_SETUP
3234 #line 336 "compilers/imcc/imcc.l"
3235 return POSTCOMP;
3236 YY_BREAK
3237 case 44:
3238 YY_RULE_SETUP
3239 #line 337 "compilers/imcc/imcc.l"
3240 return ANON;
3241 YY_BREAK
3242 case 45:
3243 YY_RULE_SETUP
3244 #line 338 "compilers/imcc/imcc.l"
3245 return OUTER;
3246 YY_BREAK
3247 case 46:
3248 YY_RULE_SETUP
3249 #line 339 "compilers/imcc/imcc.l"
3250 return NEED_LEX;
3251 YY_BREAK
3252 case 47:
3253 YY_RULE_SETUP
3254 #line 340 "compilers/imcc/imcc.l"
3255 return VTABLE_METHOD;
3256 YY_BREAK
3257 case 48:
3258 YY_RULE_SETUP
3259 #line 341 "compilers/imcc/imcc.l"
3260 return NS_ENTRY;
3261 YY_BREAK
3262 case 49:
3263 YY_RULE_SETUP
3264 #line 342 "compilers/imcc/imcc.l"
3265 return UNIQUE_REG;
3266 YY_BREAK
3267 case 50:
3268 YY_RULE_SETUP
3269 #line 343 "compilers/imcc/imcc.l"
3270 return SUB_INSTANCE_OF;
3271 YY_BREAK
3272 case 51:
3273 YY_RULE_SETUP
3274 #line 344 "compilers/imcc/imcc.l"
3275 return SUBID;
3276 YY_BREAK
3277 case 52:
3278 YY_RULE_SETUP
3279 #line 346 "compilers/imcc/imcc.l"
3280 return RESULT;
3281 YY_BREAK
3282 case 53:
3283 YY_RULE_SETUP
3284 #line 347 "compilers/imcc/imcc.l"
3285 return GET_RESULTS;
3286 YY_BREAK
3287 case 54:
3288 YY_RULE_SETUP
3289 #line 348 "compilers/imcc/imcc.l"
3290 return YIELDT;
3291 YY_BREAK
3292 case 55:
3293 YY_RULE_SETUP
3294 #line 349 "compilers/imcc/imcc.l"
3295 return SET_YIELD;
3296 YY_BREAK
3297 case 56:
3298 YY_RULE_SETUP
3299 #line 350 "compilers/imcc/imcc.l"
3300 return RETURN;
3301 YY_BREAK
3302 case 57:
3303 YY_RULE_SETUP
3304 #line 351 "compilers/imcc/imcc.l"
3305 return SET_RETURN;
3306 YY_BREAK
3307 case 58:
3308 YY_RULE_SETUP
3309 #line 352 "compilers/imcc/imcc.l"
3310 return TAILCALL;
3311 YY_BREAK
3312 case 59:
3313 YY_RULE_SETUP
3314 #line 353 "compilers/imcc/imcc.l"
3315 return LOADLIB;
3316 YY_BREAK
3317 case 60:
3318 YY_RULE_SETUP
3319 #line 355 "compilers/imcc/imcc.l"
3320 return ADV_FLAT;
3321 YY_BREAK
3322 case 61:
3323 YY_RULE_SETUP
3324 #line 356 "compilers/imcc/imcc.l"
3325 return ADV_SLURPY;
3326 YY_BREAK
3327 case 62:
3328 YY_RULE_SETUP
3329 #line 357 "compilers/imcc/imcc.l"
3330 return ADV_OPTIONAL;
3331 YY_BREAK
3332 case 63:
3333 YY_RULE_SETUP
3334 #line 358 "compilers/imcc/imcc.l"
3335 return ADV_OPT_FLAG;
3336 YY_BREAK
3337 case 64:
3338 YY_RULE_SETUP
3339 #line 359 "compilers/imcc/imcc.l"
3340 return ADV_NAMED;
3341 YY_BREAK
3342 case 65:
3343 YY_RULE_SETUP
3344 #line 360 "compilers/imcc/imcc.l"
3345 return ADV_ARROW;
3346 YY_BREAK
3347 case 66:
3348 YY_RULE_SETUP
3349 #line 361 "compilers/imcc/imcc.l"
3350 return ADV_INVOCANT;
3351 YY_BREAK
3352 case 67:
3353 YY_RULE_SETUP
3354 #line 362 "compilers/imcc/imcc.l"
3355 return ADV_CALL_SIG;
3356 YY_BREAK
3357 case 68:
3358 YY_RULE_SETUP
3359 #line 364 "compilers/imcc/imcc.l"
3360 return NAMESPACE;
3361 YY_BREAK
3362 case 69:
3363 YY_RULE_SETUP
3364 #line 365 "compilers/imcc/imcc.l"
3365 return HLL;
3366 YY_BREAK
3367 case 70:
3368 YY_RULE_SETUP
3369 #line 367 "compilers/imcc/imcc.l"
3370 return LOCAL;
3371 YY_BREAK
3372 case 71:
3373 YY_RULE_SETUP
3374 #line 368 "compilers/imcc/imcc.l"
3375 return CONST;
3376 YY_BREAK
3377 case 72:
3378 YY_RULE_SETUP
3379 #line 369 "compilers/imcc/imcc.l"
3380 return GLOBAL_CONST;
3381 YY_BREAK
3382 case 73:
3383 YY_RULE_SETUP
3384 #line 370 "compilers/imcc/imcc.l"
3385 return PARAM;
3386 YY_BREAK
3387 case 74:
3388 YY_RULE_SETUP
3389 #line 371 "compilers/imcc/imcc.l"
3390 return GOTO;
3391 YY_BREAK
3392 case 75:
3393 YY_RULE_SETUP
3394 #line 372 "compilers/imcc/imcc.l"
3395 return IF;
3396 YY_BREAK
3397 case 76:
3398 YY_RULE_SETUP
3399 #line 373 "compilers/imcc/imcc.l"
3400 return UNLESS;
3401 YY_BREAK
3402 case 77:
3403 YY_RULE_SETUP
3404 #line 374 "compilers/imcc/imcc.l"
3405 return PNULL;
3406 YY_BREAK
3407 case 78:
3408 YY_RULE_SETUP
3409 #line 375 "compilers/imcc/imcc.l"
3410 return INTV;
3411 YY_BREAK
3412 case 79:
3413 YY_RULE_SETUP
3414 #line 376 "compilers/imcc/imcc.l"
3415 return FLOATV;
3416 YY_BREAK
3417 case 80:
3418 YY_RULE_SETUP
3419 #line 378 "compilers/imcc/imcc.l"
3420 return PMCV;
3421 YY_BREAK
3422 case 81:
3423 YY_RULE_SETUP
3424 #line 379 "compilers/imcc/imcc.l"
3425 return STRINGV;
3426 YY_BREAK
3427 case 82:
3428 YY_RULE_SETUP
3429 #line 380 "compilers/imcc/imcc.l"
3430 return SHIFT_LEFT;
3431 YY_BREAK
3432 case 83:
3433 YY_RULE_SETUP
3434 #line 381 "compilers/imcc/imcc.l"
3435 return SHIFT_RIGHT;
3436 YY_BREAK
3437 case 84:
3438 YY_RULE_SETUP
3439 #line 382 "compilers/imcc/imcc.l"
3440 return SHIFT_RIGHT_U;
3441 YY_BREAK
3442 case 85:
3443 YY_RULE_SETUP
3444 #line 383 "compilers/imcc/imcc.l"
3445 return LOG_AND;
3446 YY_BREAK
3447 case 86:
3448 YY_RULE_SETUP
3449 #line 384 "compilers/imcc/imcc.l"
3450 return LOG_OR;
3451 YY_BREAK
3452 case 87:
3453 YY_RULE_SETUP
3454 #line 385 "compilers/imcc/imcc.l"
3455 return LOG_XOR;
3456 YY_BREAK
3457 case 88:
3458 YY_RULE_SETUP
3459 #line 386 "compilers/imcc/imcc.l"
3460 return RELOP_LT;
3461 YY_BREAK
3462 case 89:
3463 YY_RULE_SETUP
3464 #line 387 "compilers/imcc/imcc.l"
3465 return RELOP_LTE;
3466 YY_BREAK
3467 case 90:
3468 YY_RULE_SETUP
3469 #line 388 "compilers/imcc/imcc.l"
3470 return RELOP_GT;
3471 YY_BREAK
3472 case 91:
3473 YY_RULE_SETUP
3474 #line 389 "compilers/imcc/imcc.l"
3475 return RELOP_GTE;
3476 YY_BREAK
3477 case 92:
3478 YY_RULE_SETUP
3479 #line 390 "compilers/imcc/imcc.l"
3480 return RELOP_EQ;
3481 YY_BREAK
3482 case 93:
3483 YY_RULE_SETUP
3484 #line 391 "compilers/imcc/imcc.l"
3485 return RELOP_NE;
3486 YY_BREAK
3487 case 94:
3488 YY_RULE_SETUP
3489 #line 392 "compilers/imcc/imcc.l"
3490 return POW;
3491 YY_BREAK
3492 case 95:
3493 YY_RULE_SETUP
3494 #line 394 "compilers/imcc/imcc.l"
3495 return CONCAT;
3496 YY_BREAK
3497 case 96:
3498 YY_RULE_SETUP
3499 #line 395 "compilers/imcc/imcc.l"
3500 return DOT;
3501 YY_BREAK
3502 case 97:
3503 YY_RULE_SETUP
3504 #line 397 "compilers/imcc/imcc.l"
3505 return PLUS_ASSIGN;
3506 YY_BREAK
3507 case 98:
3508 YY_RULE_SETUP
3509 #line 398 "compilers/imcc/imcc.l"
3510 return MINUS_ASSIGN;
3511 YY_BREAK
3512 case 99:
3513 YY_RULE_SETUP
3514 #line 399 "compilers/imcc/imcc.l"
3515 return MUL_ASSIGN;
3516 YY_BREAK
3517 case 100:
3518 YY_RULE_SETUP
3519 #line 400 "compilers/imcc/imcc.l"
3520 return DIV_ASSIGN;
3521 YY_BREAK
3522 case 101:
3523 YY_RULE_SETUP
3524 #line 401 "compilers/imcc/imcc.l"
3525 return MOD_ASSIGN;
3526 YY_BREAK
3527 case 102:
3528 YY_RULE_SETUP
3529 #line 402 "compilers/imcc/imcc.l"
3530 return FDIV;
3531 YY_BREAK
3532 case 103:
3533 YY_RULE_SETUP
3534 #line 403 "compilers/imcc/imcc.l"
3535 return FDIV_ASSIGN;
3536 YY_BREAK
3537 case 104:
3538 YY_RULE_SETUP
3539 #line 404 "compilers/imcc/imcc.l"
3540 return BAND_ASSIGN;
3541 YY_BREAK
3542 case 105:
3543 YY_RULE_SETUP
3544 #line 405 "compilers/imcc/imcc.l"
3545 return BOR_ASSIGN;
3546 YY_BREAK
3547 case 106:
3548 YY_RULE_SETUP
3549 #line 406 "compilers/imcc/imcc.l"
3550 return BXOR_ASSIGN;
3551 YY_BREAK
3552 case 107:
3553 YY_RULE_SETUP
3554 #line 407 "compilers/imcc/imcc.l"
3555 return SHR_ASSIGN;
3556 YY_BREAK
3557 case 108:
3558 YY_RULE_SETUP
3559 #line 408 "compilers/imcc/imcc.l"
3560 return SHL_ASSIGN;
3561 YY_BREAK
3562 case 109:
3563 YY_RULE_SETUP
3564 #line 409 "compilers/imcc/imcc.l"
3565 return SHR_U_ASSIGN;
3566 YY_BREAK
3567 case 110:
3568 YY_RULE_SETUP
3569 #line 410 "compilers/imcc/imcc.l"
3570 return CONCAT_ASSIGN;
3571 YY_BREAK
3572 case 111:
3573 YY_RULE_SETUP
3574 #line 412 "compilers/imcc/imcc.l"
3576 char *macro_name = NULL;
3577 int start_cond = YY_START;
3578 int macro_exists = 0;
3579 int c;
3580 int start_line;
3582 BEGIN(macro);
3583 c = yylex_skip(valp, interp, " ", yyscanner);
3585 if (c != IDENTIFIER)
3586 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3587 "Constant names must be identifiers");
3589 IMCC_INFO(interp)->cur_macro_name = macro_name = valp->s;
3590 start_line = IMCC_INFO(interp)->line;
3592 c = yylex_skip(valp, interp, " ", yyscanner);
3594 if (c != INTC && c != FLOATC && c != STRINGC && c != REG)
3595 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3596 "Constant '%s' value must be a number, "
3597 "stringliteral or register", macro_name);
3599 /* macro_name becomes a hash key
3600 * the first one needs to remain; destroying the hash frees it
3601 * subsequent macro_names need destruction here to avoid leaks */
3602 if (find_macro(interp, macro_name))
3603 macro_exists = 1;
3605 define_macro(interp, macro_name, NULL, valp->s, start_line);
3606 mem_sys_free(valp->s);
3608 /* don't leak these */
3609 if (macro_exists)
3610 mem_sys_free(macro_name);
3612 IMCC_INFO(interp)->cur_macro_name = NULL;
3614 BEGIN(start_cond);
3615 return MACRO;
3617 YY_BREAK
3618 case 112:
3619 YY_RULE_SETUP
3620 #line 455 "compilers/imcc/imcc.l"
3622 /* the initial whitespace catcher misses this one */
3623 SET_LINE_NUMBER;
3624 return read_macro(valp, interp, yyscanner);
3626 YY_BREAK
3627 case 113:
3628 YY_RULE_SETUP
3629 #line 461 "compilers/imcc/imcc.l"
3631 const int c = yylex(valp,yyscanner,interp);
3633 if (c != STRINGC)
3634 return c;
3636 /* STRINGCs have a mem_sys_strdup()ed valp->s */
3637 mem_sys_free(valp->s);
3638 YYCHOP();
3639 include_file(interp, yytext + 1, yyscanner);
3641 YY_BREAK
3642 case 114:
3643 YY_RULE_SETUP
3644 #line 473 "compilers/imcc/imcc.l"
3646 if (valp) {
3647 char *label;
3648 size_t len;
3650 YYCHOP();
3651 YYCHOP();
3653 if (!IMCC_INFO(interp)->frames || !IMCC_INFO(interp)->frames->label)
3654 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "missing space?");
3656 len = yyleng + 10;
3657 label = (char *)mem_sys_allocate(len);
3658 snprintf(label, len, "%s%d", yytext, IMCC_INFO(interp)->frames->label);
3660 /* XXX: free valp->s if it exists? */
3661 valp->s = label;
3664 return LABEL;
3666 YY_BREAK
3667 case 115:
3668 YY_RULE_SETUP
3669 #line 495 "compilers/imcc/imcc.l"
3671 if (valp) {
3672 char *label;
3673 size_t len;
3674 YYCHOP();
3676 if (!IMCC_INFO(interp)->frames || !IMCC_INFO(interp)->frames->label)
3677 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "missing space?");
3679 len = yyleng + 10;
3680 label = (char *)mem_sys_allocate(len);
3681 snprintf(label, len, "%s%d", yytext, IMCC_INFO(interp)->frames->label);
3683 /* XXX: free valp->s if it exists? */
3684 valp->s = label;
3687 return IDENTIFIER;
3689 YY_BREAK
3690 case 116:
3691 YY_RULE_SETUP
3692 #line 515 "compilers/imcc/imcc.l"
3693 return COMMA;
3694 YY_BREAK
3695 case 117:
3696 YY_RULE_SETUP
3697 #line 517 "compilers/imcc/imcc.l"
3699 /* trim last ':' */
3700 YYCHOP();
3702 if (valp)
3703 valp->s = mem_sys_strdup(yytext);
3705 return LABEL;
3707 YY_BREAK
3708 case 118:
3709 YY_RULE_SETUP
3710 #line 527 "compilers/imcc/imcc.l"
3712 char * const macro_name = mem_sys_strdup(yytext + 1);
3713 int failed = expand_macro(interp, macro_name, yyscanner);
3714 mem_sys_free(macro_name);
3715 if (!failed) {
3716 yyless(1);
3717 return DOT;
3720 YY_BREAK
3721 case 119:
3722 YY_RULE_SETUP
3723 #line 539 "compilers/imcc/imcc.l"
3724 DUP_AND_RET(valp, FLOATC);
3725 YY_BREAK
3726 case 120:
3727 YY_RULE_SETUP
3728 #line 540 "compilers/imcc/imcc.l"
3729 DUP_AND_RET(valp, INTC);
3730 YY_BREAK
3731 case 121:
3732 YY_RULE_SETUP
3733 #line 541 "compilers/imcc/imcc.l"
3734 DUP_AND_RET(valp, INTC);
3735 YY_BREAK
3736 case 122:
3737 YY_RULE_SETUP
3738 #line 542 "compilers/imcc/imcc.l"
3739 DUP_AND_RET(valp, INTC);
3740 YY_BREAK
3741 case 123:
3742 YY_RULE_SETUP
3743 #line 543 "compilers/imcc/imcc.l"
3744 DUP_AND_RET(valp, INTC);
3745 YY_BREAK
3746 case 124:
3747 YY_RULE_SETUP
3748 #line 545 "compilers/imcc/imcc.l"
3750 valp->s = mem_sys_strdup(yytext);
3752 /* trailing 'L' */
3753 valp->s[strlen(valp->s) - 1] = '\0';
3755 /* no BIGINT native format yet */
3756 return STRINGC;
3758 YY_BREAK
3759 case 125:
3760 YY_RULE_SETUP
3761 #line 555 "compilers/imcc/imcc.l"
3763 valp->s = mem_sys_strdup(yytext);
3765 return STRINGC;
3767 YY_BREAK
3768 case 126:
3769 YY_RULE_SETUP
3770 #line 561 "compilers/imcc/imcc.l"
3772 macro_frame_t *frame;
3774 /* Save the string we want to mark the end of the heredoc and snip
3775 off newline and quote. */
3776 if (IMCC_INFO(interp)->frames->heredoc_rest)
3777 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "nested heredoc not supported");
3778 IMCC_INFO(interp)->heredoc_end = mem_sys_strdup(yytext + 3);
3779 IMCC_INFO(interp)->heredoc_end[strlen(IMCC_INFO(interp)->heredoc_end) - 1] = 0;
3781 if (!strlen(IMCC_INFO(interp)->heredoc_end))
3782 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "empty heredoc delimiter");
3784 frame = new_frame(interp);
3785 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
3786 IMCC_INFO(interp)->frames = frame;
3788 /* Start slurping up the heredoc. */
3789 IMCC_INFO(interp)->heredoc_content = (char *)mem_sys_allocate(2);
3791 /* preserve delim */
3792 IMCC_INFO(interp)->heredoc_content[0] = yytext[2];
3794 /* eos */
3795 IMCC_INFO(interp)->heredoc_content[1] = 0;
3796 yy_push_state(heredoc1, yyscanner);
3798 YY_BREAK
3799 case 127:
3800 YY_RULE_SETUP
3801 #line 589 "compilers/imcc/imcc.l"
3803 /* charset:"..." */
3804 valp->s = mem_sys_strdup(yytext);
3806 /* this is actually not unicode but a string with a charset */
3807 return USTRINGC;
3809 YY_BREAK
3810 case 128:
3811 YY_RULE_SETUP
3812 #line 597 "compilers/imcc/imcc.l"
3814 if (valp) (valp)->s = yytext;
3815 if (IMCC_INFO(interp)->state->pasm_file)
3816 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3817 "'%s' is not a valid register name in pasm mode", yytext);
3818 return IREG;
3820 YY_BREAK
3821 case 129:
3822 YY_RULE_SETUP
3823 #line 605 "compilers/imcc/imcc.l"
3825 if (valp) (valp)->s = yytext;
3826 if (IMCC_INFO(interp)->state->pasm_file)
3827 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3828 "'%s' is not a valid register name in pasm mode", yytext);
3829 return NREG;
3831 YY_BREAK
3832 case 130:
3833 YY_RULE_SETUP
3834 #line 613 "compilers/imcc/imcc.l"
3836 if (valp) (valp)->s = yytext;
3837 if (IMCC_INFO(interp)->state->pasm_file)
3838 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3839 "'%s' is not a valid register name in pasm mode", yytext);
3840 return SREG;
3842 YY_BREAK
3843 case 131:
3844 YY_RULE_SETUP
3845 #line 621 "compilers/imcc/imcc.l"
3847 if (valp) (valp)->s = yytext;
3848 if (IMCC_INFO(interp)->state->pasm_file)
3849 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3850 "'%s' is not a valid register name in pasm mode", yytext);
3851 return PREG;
3853 YY_BREAK
3854 case 132:
3855 YY_RULE_SETUP
3856 #line 629 "compilers/imcc/imcc.l"
3858 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3859 "'%s' is not a valid register name", yytext);
3861 YY_BREAK
3862 case 133:
3863 YY_RULE_SETUP
3864 #line 634 "compilers/imcc/imcc.l"
3866 if (IMCC_INFO(interp)->state->pasm_file == 0)
3867 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3868 "'%s' is only a valid register name in PASM mode", yytext);
3870 if (valp)
3871 valp->s = mem_sys_strdup(yytext);
3873 return REG;
3875 YY_BREAK
3876 case 134:
3877 YY_RULE_SETUP
3878 #line 646 "compilers/imcc/imcc.l"
3879 { return handle_identifier(interp, valp, yytext); }
3880 YY_BREAK
3881 case 135:
3882 YY_RULE_SETUP
3883 #line 648 "compilers/imcc/imcc.l"
3884 /* skip */;
3885 YY_BREAK
3886 case 136:
3887 YY_RULE_SETUP
3888 #line 650 "compilers/imcc/imcc.l"
3890 /* catch all except for state macro */
3891 return yytext[0];
3893 YY_BREAK
3894 case YY_STATE_EOF(emit):
3895 #line 655 "compilers/imcc/imcc.l"
3897 BEGIN(INITIAL);
3899 if (IMCC_INFO(interp)->frames->s.pasm_file) {
3900 IMCC_INFO(interp)->frames->s.pasm_file = 2;
3901 return EOM;
3904 return 0;
3906 YY_BREAK
3907 case YY_STATE_EOF(INITIAL):
3908 #line 666 "compilers/imcc/imcc.l"
3909 yyterminate();
3910 YY_BREAK
3911 case 137:
3912 YY_RULE_SETUP
3913 #line 668 "compilers/imcc/imcc.l"
3915 /* the initial whitespace catcher misses this one */
3916 SET_LINE_NUMBER;
3917 DUP_AND_RET(valp, ENDM);
3919 YY_BREAK
3920 case 138:
3921 /* rule 138 can match eol */
3922 YY_RULE_SETUP
3923 #line 674 "compilers/imcc/imcc.l"
3925 DUP_AND_RET(valp, '\n');
3927 YY_BREAK
3928 case 139:
3929 YY_RULE_SETUP
3930 #line 678 "compilers/imcc/imcc.l"
3931 return LABEL;
3932 YY_BREAK
3933 case 140:
3934 YY_RULE_SETUP
3935 #line 680 "compilers/imcc/imcc.l"
3938 if (yylex(valp,yyscanner,interp) != LABEL)
3939 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "LABEL expected");
3941 if (valp) {
3942 char *label;
3943 size_t len;
3944 YYCHOP();
3946 len = strlen(IMCC_INFO(interp)->cur_macro_name) + yyleng + 15;
3947 label = (char *)mem_sys_allocate(len);
3949 snprintf(label, len, "local__%s__%s__$:",
3950 IMCC_INFO(interp)->cur_macro_name, yytext+1);
3952 if (valp->s)
3953 mem_sys_free(valp->s);
3954 valp->s = label;
3957 return LABEL;
3959 YY_BREAK
3960 case 141:
3961 YY_RULE_SETUP
3962 #line 704 "compilers/imcc/imcc.l"
3964 if (valp) {
3965 if (!IMCC_INFO(interp)->cur_macro_name) {
3966 if (valp->s)
3967 mem_sys_free(valp->s);
3968 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
3969 "Invalid LABEL outside of macro");
3971 else {
3972 const char * const fmt = "local__%s__%s__$";
3973 const size_t fmtlen = strlen(fmt) - (2 * strlen("%s"));
3974 const size_t len = strlen(IMCC_INFO(interp)->cur_macro_name)
3975 + yyleng + fmtlen;
3976 char * const label = (char *)mem_sys_allocate(len);
3978 /* skip over ".$" prefix with the +2 */
3979 snprintf(label, len, fmt,
3980 IMCC_INFO(interp)->cur_macro_name, yytext + 2);
3982 if (valp->s)
3983 mem_sys_free(valp->s);
3984 valp->s = label;
3988 return IDENTIFIER;
3990 YY_BREAK
3991 case 142:
3992 YY_RULE_SETUP
3993 #line 732 "compilers/imcc/imcc.l"
3994 DUP_AND_RET(valp, ' ');
3995 YY_BREAK
3996 case 143:
3997 YY_RULE_SETUP
3998 #line 733 "compilers/imcc/imcc.l"
3999 DUP_AND_RET(valp, REG);
4000 YY_BREAK
4001 case 144:
4002 YY_RULE_SETUP
4003 #line 734 "compilers/imcc/imcc.l"
4004 DUP_AND_RET(valp, REG);
4005 YY_BREAK
4006 case 145:
4007 YY_RULE_SETUP
4008 #line 735 "compilers/imcc/imcc.l"
4009 DUP_AND_RET(valp, IDENTIFIER);
4010 YY_BREAK
4011 case 146:
4012 YY_RULE_SETUP
4013 #line 736 "compilers/imcc/imcc.l"
4014 DUP_AND_RET(valp, MACRO);
4015 YY_BREAK
4016 case 147:
4017 YY_RULE_SETUP
4018 #line 737 "compilers/imcc/imcc.l"
4019 DUP_AND_RET(valp, yytext[0]);
4020 YY_BREAK
4021 case YY_STATE_EOF(macro):
4022 #line 738 "compilers/imcc/imcc.l"
4023 yyterminate();
4024 YY_BREAK
4025 case 148:
4026 YY_RULE_SETUP
4027 #line 740 "compilers/imcc/imcc.l"
4028 ECHO;
4029 YY_BREAK
4030 #line 4031 "compilers/imcc/imclexer.c"
4031 case YY_STATE_EOF(pod):
4032 case YY_STATE_EOF(cmt1):
4033 case YY_STATE_EOF(cmt2):
4034 case YY_STATE_EOF(cmt3):
4035 case YY_STATE_EOF(cmt4):
4036 case YY_STATE_EOF(cmt5):
4037 case YY_STATE_EOF(heredoc1):
4038 case YY_STATE_EOF(heredoc2):
4039 yyterminate();
4041 case YY_END_OF_BUFFER:
4043 /* Amount of text matched not including the EOB char. */
4044 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
4046 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4047 *yy_cp = yyg->yy_hold_char;
4048 YY_RESTORE_YY_MORE_OFFSET
4050 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4052 /* We're scanning a new file or input source. It's
4053 * possible that this happened because the user
4054 * just pointed yyin at a new source and called
4055 * yylex(). If so, then we have to assure
4056 * consistency between YY_CURRENT_BUFFER and our
4057 * globals. Here is the right place to do so, because
4058 * this is the first action (other than possibly a
4059 * back-up) that will match for the new input source.
4061 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4062 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4063 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4066 /* Note that here we test for yy_c_buf_p "<=" to the position
4067 * of the first EOB in the buffer, since yy_c_buf_p will
4068 * already have been incremented past the NUL character
4069 * (since all states make transitions on EOB to the
4070 * end-of-buffer state). Contrast this with the test
4071 * in input().
4073 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4074 { /* This was really a NUL. */
4075 yy_state_type yy_next_state;
4077 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
4079 yy_current_state = yy_get_previous_state( yyscanner );
4081 /* Okay, we're now positioned to make the NUL
4082 * transition. We couldn't have
4083 * yy_get_previous_state() go ahead and do it
4084 * for us because it doesn't know how to deal
4085 * with the possibility of jamming (and we don't
4086 * want to build jamming into it because then it
4087 * will run more slowly).
4090 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
4092 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4094 if ( yy_next_state )
4096 /* Consume the NUL. */
4097 yy_cp = ++yyg->yy_c_buf_p;
4098 yy_current_state = yy_next_state;
4099 goto yy_match;
4102 else
4104 yy_cp = yyg->yy_last_accepting_cpos;
4105 yy_current_state = yyg->yy_last_accepting_state;
4106 goto yy_find_action;
4110 else switch ( yy_get_next_buffer( yyscanner ) )
4112 case EOB_ACT_END_OF_FILE:
4114 yyg->yy_did_buffer_switch_on_eof = 0;
4116 if ( yywrap(yyscanner ) )
4118 /* Note: because we've taken care in
4119 * yy_get_next_buffer() to have set up
4120 * yytext, we can now set up
4121 * yy_c_buf_p so that if some total
4122 * hoser (like flex itself) wants to
4123 * call the scanner after we return the
4124 * YY_NULL, it'll still work - another
4125 * YY_NULL will get returned.
4127 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
4129 yy_act = YY_STATE_EOF(YY_START);
4130 goto do_action;
4133 else
4135 if ( ! yyg->yy_did_buffer_switch_on_eof )
4136 YY_NEW_FILE;
4138 break;
4141 case EOB_ACT_CONTINUE_SCAN:
4142 yyg->yy_c_buf_p =
4143 yyg->yytext_ptr + yy_amount_of_matched_text;
4145 yy_current_state = yy_get_previous_state( yyscanner );
4147 yy_cp = yyg->yy_c_buf_p;
4148 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4149 goto yy_match;
4151 case EOB_ACT_LAST_MATCH:
4152 yyg->yy_c_buf_p =
4153 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
4155 yy_current_state = yy_get_previous_state( yyscanner );
4157 yy_cp = yyg->yy_c_buf_p;
4158 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4159 goto yy_find_action;
4161 break;
4164 default:
4165 YY_FATAL_ERROR(
4166 "fatal flex scanner internal error--no action found" );
4167 } /* end of action switch */
4168 } /* end of scanning one token */
4169 } /* end of yylex */
4171 /* yy_get_next_buffer - try to read in a new buffer
4173 * Returns a code representing an action:
4174 * EOB_ACT_LAST_MATCH -
4175 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4176 * EOB_ACT_END_OF_FILE - end of file
4178 static int yy_get_next_buffer (yyscan_t yyscanner)
4180 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4181 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4182 register char *source = yyg->yytext_ptr;
4183 register int number_to_move, i;
4184 int ret_val;
4186 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
4187 YY_FATAL_ERROR(
4188 "fatal flex scanner internal error--end of buffer missed" );
4190 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4191 { /* Don't try to fill the buffer, so this is an EOF. */
4192 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
4194 /* We matched a single character, the EOB, so
4195 * treat this as a final EOF.
4197 return EOB_ACT_END_OF_FILE;
4200 else
4202 /* We matched some text prior to the EOB, first
4203 * process it.
4205 return EOB_ACT_LAST_MATCH;
4209 /* Try to read more data. */
4211 /* First move last chars to start of buffer. */
4212 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
4214 for ( i = 0; i < number_to_move; ++i )
4215 *(dest++) = *(source++);
4217 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4218 /* don't do the read, it's not guaranteed to return an EOF,
4219 * just force an EOF
4221 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
4223 else
4225 int num_to_read =
4226 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4228 while ( num_to_read <= 0 )
4229 { /* Not enough room in the buffer - grow it. */
4231 /* just a shorter name for the current buffer */
4232 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4234 int yy_c_buf_p_offset =
4235 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
4237 if ( b->yy_is_our_buffer )
4239 int new_size = b->yy_buf_size * 2;
4241 if ( new_size <= 0 )
4242 b->yy_buf_size += b->yy_buf_size / 8;
4243 else
4244 b->yy_buf_size *= 2;
4246 b->yy_ch_buf = (char *)
4247 /* Include room in for 2 EOB chars. */
4248 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
4250 else
4251 /* Can't grow it, we don't own it. */
4252 b->yy_ch_buf = 0;
4254 if ( ! b->yy_ch_buf )
4255 YY_FATAL_ERROR(
4256 "fatal error - scanner input buffer overflow" );
4258 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4260 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4261 number_to_move - 1;
4265 if ( num_to_read > YY_READ_BUF_SIZE )
4266 num_to_read = YY_READ_BUF_SIZE;
4268 /* Read in more data. */
4269 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4270 yyg->yy_n_chars, (size_t) num_to_read );
4272 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4275 if ( yyg->yy_n_chars == 0 )
4277 if ( number_to_move == YY_MORE_ADJ )
4279 ret_val = EOB_ACT_END_OF_FILE;
4280 yyrestart(yyin ,yyscanner);
4283 else
4285 ret_val = EOB_ACT_LAST_MATCH;
4286 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4287 YY_BUFFER_EOF_PENDING;
4291 else
4292 ret_val = EOB_ACT_CONTINUE_SCAN;
4294 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4295 /* Extend the array by 50%, plus the number we really need. */
4296 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
4297 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
4298 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4299 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4302 yyg->yy_n_chars += number_to_move;
4303 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4304 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4306 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4308 return ret_val;
4311 /* yy_get_previous_state - get the state just before the EOB char was reached */
4313 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
4315 register yy_state_type yy_current_state;
4316 register char *yy_cp;
4317 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4319 yy_current_state = yyg->yy_start;
4320 yy_current_state += YY_AT_BOL();
4322 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
4324 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4325 if ( yy_accept[yy_current_state] )
4327 yyg->yy_last_accepting_state = yy_current_state;
4328 yyg->yy_last_accepting_cpos = yy_cp;
4330 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4332 yy_current_state = (int) yy_def[yy_current_state];
4333 if ( yy_current_state >= 1095 )
4334 yy_c = yy_meta[(unsigned int) yy_c];
4336 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4339 return yy_current_state;
4342 /* yy_try_NUL_trans - try to make a transition on the NUL character
4344 * synopsis
4345 * next_state = yy_try_NUL_trans( current_state );
4347 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
4349 register int yy_is_jam;
4350 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
4351 register char *yy_cp = yyg->yy_c_buf_p;
4353 register YY_CHAR yy_c = 1;
4354 if ( yy_accept[yy_current_state] )
4356 yyg->yy_last_accepting_state = yy_current_state;
4357 yyg->yy_last_accepting_cpos = yy_cp;
4359 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4361 yy_current_state = (int) yy_def[yy_current_state];
4362 if ( yy_current_state >= 1095 )
4363 yy_c = yy_meta[(unsigned int) yy_c];
4365 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4366 yy_is_jam = (yy_current_state == 1094);
4368 return yy_is_jam ? 0 : yy_current_state;
4371 static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
4373 register char *yy_cp;
4374 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4376 yy_cp = yyg->yy_c_buf_p;
4378 /* undo effects of setting up yytext */
4379 *yy_cp = yyg->yy_hold_char;
4381 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4382 { /* need to shift things up to make room */
4383 /* +2 for EOB chars. */
4384 register int number_to_move = yyg->yy_n_chars + 2;
4385 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
4386 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
4387 register char *source =
4388 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
4390 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4391 *--dest = *--source;
4393 yy_cp += (int) (dest - source);
4394 yy_bp += (int) (dest - source);
4395 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
4396 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
4398 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4399 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4402 *--yy_cp = (char) c;
4404 if ( c == '\n' ){
4405 --yylineno;
4408 yyg->yytext_ptr = yy_bp;
4409 yyg->yy_hold_char = *yy_cp;
4410 yyg->yy_c_buf_p = yy_cp;
4413 #ifndef YY_NO_INPUT
4414 #ifdef __cplusplus
4415 static int yyinput (yyscan_t yyscanner)
4416 #else
4417 static int input (yyscan_t yyscanner)
4418 #endif
4421 int c;
4422 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4424 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4426 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4428 /* yy_c_buf_p now points to the character we want to return.
4429 * If this occurs *before* the EOB characters, then it's a
4430 * valid NUL; if not, then we've hit the end of the buffer.
4432 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4433 /* This was really a NUL. */
4434 *yyg->yy_c_buf_p = '\0';
4436 else
4437 { /* need more input */
4438 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
4439 ++yyg->yy_c_buf_p;
4441 switch ( yy_get_next_buffer( yyscanner ) )
4443 case EOB_ACT_LAST_MATCH:
4444 /* This happens because yy_g_n_b()
4445 * sees that we've accumulated a
4446 * token and flags that we need to
4447 * try matching the token before
4448 * proceeding. But for input(),
4449 * there's no matching to consider.
4450 * So convert the EOB_ACT_LAST_MATCH
4451 * to EOB_ACT_END_OF_FILE.
4454 /* Reset buffer status. */
4455 yyrestart(yyin ,yyscanner);
4457 /*FALLTHROUGH*/
4459 case EOB_ACT_END_OF_FILE:
4461 if ( yywrap(yyscanner ) )
4462 return EOF;
4464 if ( ! yyg->yy_did_buffer_switch_on_eof )
4465 YY_NEW_FILE;
4466 #ifdef __cplusplus
4467 return yyinput(yyscanner);
4468 #else
4469 return input(yyscanner);
4470 #endif
4473 case EOB_ACT_CONTINUE_SCAN:
4474 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
4475 break;
4480 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
4481 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
4482 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
4484 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
4485 if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )
4487 do{ yylineno++;
4488 yycolumn=0;
4489 }while(0)
4492 return c;
4494 #endif /* ifndef YY_NO_INPUT */
4496 /** Immediately switch to a different input stream.
4497 * @param input_file A readable stream.
4498 * @param yyscanner The scanner object.
4499 * @note This function does not reset the start condition to @c INITIAL .
4501 void yyrestart (FILE * input_file , yyscan_t yyscanner)
4503 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4505 if ( ! YY_CURRENT_BUFFER ){
4506 yyensure_buffer_stack (yyscanner);
4507 YY_CURRENT_BUFFER_LVALUE =
4508 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
4511 yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
4512 yy_load_buffer_state(yyscanner );
4515 /** Switch to a different input buffer.
4516 * @param new_buffer The new input buffer.
4517 * @param yyscanner The scanner object.
4519 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4521 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4523 /* TODO. We should be able to replace this entire function body
4524 * with
4525 * yypop_buffer_state();
4526 * yypush_buffer_state(new_buffer);
4528 yyensure_buffer_stack (yyscanner);
4529 if ( YY_CURRENT_BUFFER == new_buffer )
4530 return;
4532 if ( YY_CURRENT_BUFFER )
4534 /* Flush out information for old buffer. */
4535 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4536 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4537 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4540 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4541 yy_load_buffer_state(yyscanner );
4543 /* We don't actually know whether we did this switch during
4544 * EOF (yywrap()) processing, but the only time this flag
4545 * is looked at is after yywrap() is called, so it's safe
4546 * to go ahead and always set it.
4548 yyg->yy_did_buffer_switch_on_eof = 1;
4551 static void yy_load_buffer_state (yyscan_t yyscanner)
4553 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4554 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4555 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4556 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4557 yyg->yy_hold_char = *yyg->yy_c_buf_p;
4560 /** Allocate and initialize an input buffer state.
4561 * @param file A readable stream.
4562 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4563 * @param yyscanner The scanner object.
4564 * @return the allocated buffer state.
4566 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
4568 YY_BUFFER_STATE b;
4570 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4571 if ( ! b )
4572 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4574 b->yy_buf_size = size;
4576 /* yy_ch_buf has to be 2 characters longer than the size given because
4577 * we need to put in 2 end-of-buffer characters.
4579 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
4580 if ( ! b->yy_ch_buf )
4581 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4583 b->yy_is_our_buffer = 1;
4585 yy_init_buffer(b,file ,yyscanner);
4587 return b;
4590 /** Destroy the buffer.
4591 * @param b a buffer created with yy_create_buffer()
4592 * @param yyscanner The scanner object.
4594 void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4596 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4598 if ( ! b )
4599 return;
4601 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4602 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4604 if ( b->yy_is_our_buffer )
4605 yyfree((void *) b->yy_ch_buf ,yyscanner );
4607 yyfree((void *) b ,yyscanner );
4610 /* Initializes or reinitializes a buffer.
4611 * This function is sometimes called more than once on the same buffer,
4612 * such as during a yyrestart() or at EOF.
4614 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
4617 int oerrno = errno;
4618 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4620 yy_flush_buffer(b ,yyscanner);
4622 b->yy_input_file = file;
4623 b->yy_fill_buffer = 1;
4625 /* If b is the current buffer, then yy_init_buffer was _probably_
4626 * called from yyrestart() or through yy_get_next_buffer.
4627 * In that case, we don't want to reset the lineno or column.
4629 if (b != YY_CURRENT_BUFFER){
4630 b->yy_bs_lineno = 1;
4631 b->yy_bs_column = 0;
4634 b->yy_is_interactive = 0;
4636 errno = oerrno;
4639 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4640 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4641 * @param yyscanner The scanner object.
4643 void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4645 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4646 if ( ! b )
4647 return;
4649 b->yy_n_chars = 0;
4651 /* We always need two end-of-buffer characters. The first causes
4652 * a transition to the end-of-buffer state. The second causes
4653 * a jam in that state.
4655 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4656 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4658 b->yy_buf_pos = &b->yy_ch_buf[0];
4660 b->yy_at_bol = 1;
4661 b->yy_buffer_status = YY_BUFFER_NEW;
4663 if ( b == YY_CURRENT_BUFFER )
4664 yy_load_buffer_state(yyscanner );
4667 /** Pushes the new state onto the stack. The new state becomes
4668 * the current state. This function will allocate the stack
4669 * if necessary.
4670 * @param new_buffer The new state.
4671 * @param yyscanner The scanner object.
4673 void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4675 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4676 if (new_buffer == NULL)
4677 return;
4679 yyensure_buffer_stack(yyscanner);
4681 /* This block is copied from yy_switch_to_buffer. */
4682 if ( YY_CURRENT_BUFFER )
4684 /* Flush out information for old buffer. */
4685 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4686 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4687 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4690 /* Only push if top exists. Otherwise, replace top. */
4691 if (YY_CURRENT_BUFFER)
4692 yyg->yy_buffer_stack_top++;
4693 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4695 /* copied from yy_switch_to_buffer. */
4696 yy_load_buffer_state(yyscanner );
4697 yyg->yy_did_buffer_switch_on_eof = 1;
4700 /** Removes and deletes the top of the stack, if present.
4701 * The next element becomes the new top.
4702 * @param yyscanner The scanner object.
4704 void yypop_buffer_state (yyscan_t yyscanner)
4706 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4707 if (!YY_CURRENT_BUFFER)
4708 return;
4710 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
4711 YY_CURRENT_BUFFER_LVALUE = NULL;
4712 if (yyg->yy_buffer_stack_top > 0)
4713 --yyg->yy_buffer_stack_top;
4715 if (YY_CURRENT_BUFFER) {
4716 yy_load_buffer_state(yyscanner );
4717 yyg->yy_did_buffer_switch_on_eof = 1;
4721 /* Allocates the stack if it does not exist.
4722 * Guarantees space for at least one push.
4724 static void yyensure_buffer_stack (yyscan_t yyscanner)
4726 int num_to_alloc;
4727 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4729 if (!yyg->yy_buffer_stack) {
4731 /* First allocation is just for 2 elements, since we don't know if this
4732 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4733 * immediate realloc on the next call.
4735 num_to_alloc = 1;
4736 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
4737 (num_to_alloc * sizeof(struct yy_buffer_state*)
4738 , yyscanner);
4739 if ( ! yyg->yy_buffer_stack )
4740 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4742 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4744 yyg->yy_buffer_stack_max = num_to_alloc;
4745 yyg->yy_buffer_stack_top = 0;
4746 return;
4749 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4751 /* Increase the buffer to prepare for a possible push. */
4752 int grow_size = 8 /* arbitrary grow size */;
4754 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4755 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
4756 (yyg->yy_buffer_stack,
4757 num_to_alloc * sizeof(struct yy_buffer_state*)
4758 , yyscanner);
4759 if ( ! yyg->yy_buffer_stack )
4760 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4762 /* zero only the new slots.*/
4763 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4764 yyg->yy_buffer_stack_max = num_to_alloc;
4768 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4769 * @param base the character buffer
4770 * @param size the size in bytes of the character buffer
4771 * @param yyscanner The scanner object.
4772 * @return the newly allocated buffer state object.
4774 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
4776 YY_BUFFER_STATE b;
4778 if ( size < 2 ||
4779 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4780 base[size-1] != YY_END_OF_BUFFER_CHAR )
4781 /* They forgot to leave room for the EOB's. */
4782 return 0;
4784 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4785 if ( ! b )
4786 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4788 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4789 b->yy_buf_pos = b->yy_ch_buf = base;
4790 b->yy_is_our_buffer = 0;
4791 b->yy_input_file = 0;
4792 b->yy_n_chars = b->yy_buf_size;
4793 b->yy_is_interactive = 0;
4794 b->yy_at_bol = 1;
4795 b->yy_fill_buffer = 0;
4796 b->yy_buffer_status = YY_BUFFER_NEW;
4798 yy_switch_to_buffer(b ,yyscanner );
4800 return b;
4803 /** Setup the input buffer state to scan a string. The next call to yylex() will
4804 * scan from a @e copy of @a str.
4805 * @param yystr a NUL-terminated string to scan
4806 * @param yyscanner The scanner object.
4807 * @return the newly allocated buffer state object.
4808 * @note If you want to scan bytes that may contain NUL values, then use
4809 * yy_scan_bytes() instead.
4811 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
4814 return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
4817 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4818 * scan from a @e copy of @a bytes.
4819 * @param yybytes the byte buffer to scan
4820 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4821 * @param yyscanner The scanner object.
4822 * @return the newly allocated buffer state object.
4824 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
4826 YY_BUFFER_STATE b;
4827 char *buf;
4828 yy_size_t n;
4829 int i;
4831 /* Get memory for full buffer, including space for trailing EOB's. */
4832 n = _yybytes_len + 2;
4833 buf = (char *) yyalloc(n ,yyscanner );
4834 if ( ! buf )
4835 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4837 for ( i = 0; i < _yybytes_len; ++i )
4838 buf[i] = yybytes[i];
4840 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4842 b = yy_scan_buffer(buf,n ,yyscanner);
4843 if ( ! b )
4844 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4846 /* It's okay to grow etc. this buffer, and we should throw it
4847 * away when we're done.
4849 b->yy_is_our_buffer = 1;
4851 return b;
4854 static void yy_push_state (int new_state , yyscan_t yyscanner)
4856 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4857 if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
4859 yy_size_t new_size;
4861 yyg->yy_start_stack_depth += YY_START_STACK_INCR;
4862 new_size = yyg->yy_start_stack_depth * sizeof( int );
4864 if ( ! yyg->yy_start_stack )
4865 yyg->yy_start_stack = (int *) yyalloc(new_size ,yyscanner );
4867 else
4868 yyg->yy_start_stack = (int *) yyrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
4870 if ( ! yyg->yy_start_stack )
4871 YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
4874 yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
4876 BEGIN(new_state);
4879 static void yy_pop_state (yyscan_t yyscanner)
4881 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4882 if ( --yyg->yy_start_stack_ptr < 0 )
4883 YY_FATAL_ERROR( "start-condition stack underflow" );
4885 BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
4888 static int yy_top_state (yyscan_t yyscanner)
4890 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4891 return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
4894 #ifndef YY_EXIT_FAILURE
4895 #define YY_EXIT_FAILURE 2
4896 #endif
4898 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
4900 (void) fprintf( stderr, "%s\n", msg );
4901 exit( YY_EXIT_FAILURE );
4904 /* Redefine yyless() so it works in section 3 code. */
4906 #undef yyless
4907 #define yyless(n) \
4908 do \
4910 /* Undo effects of setting up yytext. */ \
4911 int yyless_macro_arg = (n); \
4912 YY_LESS_LINENO(yyless_macro_arg);\
4913 yytext[yyleng] = yyg->yy_hold_char; \
4914 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
4915 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
4916 *yyg->yy_c_buf_p = '\0'; \
4917 yyleng = yyless_macro_arg; \
4919 while ( 0 )
4921 /* Accessor methods (get/set functions) to struct members. */
4923 /** Get the user-defined data for this scanner.
4924 * @param yyscanner The scanner object.
4926 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
4928 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4929 return yyextra;
4932 /** Get the current line number.
4933 * @param yyscanner The scanner object.
4935 int yyget_lineno (yyscan_t yyscanner)
4937 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4939 if (! YY_CURRENT_BUFFER)
4940 return 0;
4942 return yylineno;
4945 /** Get the current column number.
4946 * @param yyscanner The scanner object.
4948 int yyget_column (yyscan_t yyscanner)
4950 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4952 if (! YY_CURRENT_BUFFER)
4953 return 0;
4955 return yycolumn;
4958 /** Get the input stream.
4959 * @param yyscanner The scanner object.
4961 FILE *yyget_in (yyscan_t yyscanner)
4963 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4964 return yyin;
4967 /** Get the output stream.
4968 * @param yyscanner The scanner object.
4970 FILE *yyget_out (yyscan_t yyscanner)
4972 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4973 return yyout;
4976 /** Get the length of the current token.
4977 * @param yyscanner The scanner object.
4979 int yyget_leng (yyscan_t yyscanner)
4981 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4982 return yyleng;
4985 /** Get the current token.
4986 * @param yyscanner The scanner object.
4989 char *yyget_text (yyscan_t yyscanner)
4991 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4992 return yytext;
4995 /** Set the user-defined data. This data is never touched by the scanner.
4996 * @param user_defined The data to be associated with this scanner.
4997 * @param yyscanner The scanner object.
4999 void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
5001 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5002 yyextra = user_defined ;
5005 /** Set the current line number.
5006 * @param line_number
5007 * @param yyscanner The scanner object.
5009 void yyset_lineno (int line_number , yyscan_t yyscanner)
5011 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5013 /* lineno is only valid if an input buffer exists. */
5014 if (! YY_CURRENT_BUFFER )
5015 yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner);
5017 yylineno = line_number;
5020 /** Set the current column.
5021 * @param line_number
5022 * @param yyscanner The scanner object.
5024 void yyset_column (int column_no , yyscan_t yyscanner)
5026 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5028 /* column is only valid if an input buffer exists. */
5029 if (! YY_CURRENT_BUFFER )
5030 yy_fatal_error( "yyset_column called with no buffer" , yyscanner);
5032 yycolumn = column_no;
5035 /** Set the input stream. This does not discard the current
5036 * input buffer.
5037 * @param in_str A readable stream.
5038 * @param yyscanner The scanner object.
5039 * @see yy_switch_to_buffer
5041 void yyset_in (FILE * in_str , yyscan_t yyscanner)
5043 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5044 yyin = in_str ;
5047 void yyset_out (FILE * out_str , yyscan_t yyscanner)
5049 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5050 yyout = out_str ;
5053 int yyget_debug (yyscan_t yyscanner)
5055 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5056 return yy_flex_debug;
5059 void yyset_debug (int bdebug , yyscan_t yyscanner)
5061 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5062 yy_flex_debug = bdebug ;
5065 /* Accessor methods for yylval and yylloc */
5067 /* User-visible API */
5069 /* yylex_init is special because it creates the scanner itself, so it is
5070 * the ONLY reentrant function that doesn't take the scanner as the last argument.
5071 * That's why we explicitly handle the declaration, instead of using our macros.
5074 int yylex_init(yyscan_t* ptr_yy_globals)
5077 if (ptr_yy_globals == NULL){
5078 errno = EINVAL;
5079 return 1;
5082 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
5084 if (*ptr_yy_globals == NULL){
5085 errno = ENOMEM;
5086 return 1;
5089 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
5090 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5092 return yy_init_globals ( *ptr_yy_globals );
5095 /* yylex_init_extra has the same functionality as yylex_init, but follows the
5096 * convention of taking the scanner as the last argument. Note however, that
5097 * this is a *pointer* to a scanner, as it will be allocated by this call (and
5098 * is the reason, too, why this function also must handle its own declaration).
5099 * The user defined value in the first argument will be available to yyalloc in
5100 * the yyextra field.
5103 int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
5106 struct yyguts_t dummy_yyguts;
5108 yyset_extra (yy_user_defined, &dummy_yyguts);
5110 if (ptr_yy_globals == NULL){
5111 errno = EINVAL;
5112 return 1;
5115 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
5117 if (*ptr_yy_globals == NULL){
5118 errno = ENOMEM;
5119 return 1;
5122 /* By setting to 0xAA, we expose bugs in
5123 yy_init_globals. Leave at 0x00 for releases. */
5124 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5126 yyset_extra (yy_user_defined, *ptr_yy_globals);
5128 return yy_init_globals ( *ptr_yy_globals );
5131 static int yy_init_globals (yyscan_t yyscanner)
5133 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5134 /* Initialization is the same as for the non-reentrant scanner.
5135 * This function is called from yylex_destroy(), so don't allocate here.
5138 yyg->yy_buffer_stack = 0;
5139 yyg->yy_buffer_stack_top = 0;
5140 yyg->yy_buffer_stack_max = 0;
5141 yyg->yy_c_buf_p = (char *) 0;
5142 yyg->yy_init = 0;
5143 yyg->yy_start = 0;
5145 yyg->yy_start_stack_ptr = 0;
5146 yyg->yy_start_stack_depth = 0;
5147 yyg->yy_start_stack = NULL;
5149 /* Defined in main.c */
5150 #ifdef YY_STDINIT
5151 yyin = stdin;
5152 yyout = stdout;
5153 #else
5154 yyin = (FILE *) 0;
5155 yyout = (FILE *) 0;
5156 #endif
5158 /* For future reference: Set errno on error, since we are called by
5159 * yylex_init()
5161 return 0;
5164 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
5165 int yylex_destroy (yyscan_t yyscanner)
5167 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5169 /* Pop the buffer stack, destroying each element. */
5170 while(YY_CURRENT_BUFFER){
5171 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
5172 YY_CURRENT_BUFFER_LVALUE = NULL;
5173 yypop_buffer_state(yyscanner);
5176 /* Destroy the stack itself. */
5177 yyfree(yyg->yy_buffer_stack ,yyscanner);
5178 yyg->yy_buffer_stack = NULL;
5180 /* Destroy the start condition stack. */
5181 yyfree(yyg->yy_start_stack ,yyscanner );
5182 yyg->yy_start_stack = NULL;
5184 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5185 * yylex() is called, initialization will occur. */
5186 yy_init_globals( yyscanner);
5188 /* Destroy the main struct (reentrant only). */
5189 yyfree ( yyscanner , yyscanner );
5190 yyscanner = NULL;
5191 return 0;
5195 * Internal utility routines.
5198 #ifndef yytext_ptr
5199 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
5201 register int i;
5202 for ( i = 0; i < n; ++i )
5203 s1[i] = s2[i];
5205 #endif
5207 #ifdef YY_NEED_STRLEN
5208 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
5210 register int n;
5211 for ( n = 0; s[n]; ++n )
5214 return n;
5216 #endif
5218 void *yyalloc (yy_size_t size , yyscan_t yyscanner)
5220 return (void *) malloc( size );
5223 void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
5225 /* The cast to (char *) in the following accommodates both
5226 * implementations that use char* generic pointers, and those
5227 * that use void* generic pointers. It works with the latter
5228 * because both ANSI C and C++ allow castless assignment from
5229 * any pointer type to void*, and deal with argument conversions
5230 * as though doing an assignment.
5232 return (void *) realloc( (char *) ptr, size );
5235 void yyfree (void * ptr , yyscan_t yyscanner)
5237 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
5240 #define YYTABLES_NAME "yytables"
5242 #line 740 "compilers/imcc/imcc.l"
5246 #ifdef yywrap
5247 # undef yywrap
5248 #endif
5250 int yywrap(void* yyscanner) {
5251 /* Add code here to open next source file and start scanning
5252 * yywrap returns 0 if scanning is to continue */
5253 Interp * const interp = yyget_extra(yyscanner);
5254 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5256 if (!interp) {
5257 fprintf(stderr, "Argh, interp not found\n");
5258 exit(1);
5261 yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner);
5263 /* pop old frame */
5264 if (IMCC_INFO(interp)->frames->s.next) {
5265 pop_parser_state(IMCC_INFO(interp)->frames->s.interp, yyscanner);
5266 if (YYSTATE == INITIAL || YYSTATE == emit)
5267 BEGIN(IMCC_INFO(interp)->frames->s.pasm_file ? emit : INITIAL);
5268 return 0;
5271 return 1;
5274 static macro_frame_t *
5275 new_frame(PARROT_INTERP) {
5276 static int label = 0;
5277 macro_frame_t * const tmp = mem_gc_allocate_zeroed_typed(interp, macro_frame_t);
5279 tmp->label = ++label;
5280 tmp->s.line = IMCC_INFO(interp)->line;
5281 tmp->s.handle = NULL;
5283 if (IMCC_INFO(interp)->frames) {
5284 tmp->s.pasm_file = IMCC_INFO(interp)->frames->s.pasm_file;
5285 if (IMCC_INFO(interp)->frames->s.file)
5286 tmp->s.file = mem_sys_strdup(IMCC_INFO(interp)->frames->s.file);
5289 tmp->s.interp = interp;
5291 return tmp;
5294 static void
5295 scan_string(macro_frame_t *frame, ARGIN(const char *expansion), void *yyscanner)
5297 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5298 Interp * const interp = yyget_extra(yyscanner);
5300 frame->buffer = YY_CURRENT_BUFFER;
5301 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5302 IMCC_INFO(interp)->frames = frame;
5304 /* start at the effective *starting line* of the macro */
5305 IMCC_INFO(interp)->line = frame->s.line - 2;
5307 yy_scan_string(expansion,yyscanner);
5310 static int
5311 destroy_frame(struct macro_frame_t *frame, void *yyscanner)
5313 YY_BUFFER_STATE buffer = frame->buffer;
5314 int ret = 0;
5315 int i;
5317 for (i = 0; i < frame->expansion.num_param; i++) {
5318 mem_sys_free(frame->expansion.name[i]);
5319 frame->expansion.name[i] = NULL;
5322 if (frame->heredoc_rest) {
5323 mem_sys_free(frame->heredoc_rest);
5324 frame->heredoc_rest = NULL;
5325 } else
5326 ret = frame->s.line;
5328 mem_sys_free(frame->s.file);
5329 mem_sys_free(frame);
5331 if (buffer != NULL)
5332 yy_switch_to_buffer(buffer,yyscanner);
5334 return ret;
5337 static int
5338 yylex_skip(YYSTYPE *valp, PARROT_INTERP, const char *skip, void *yyscanner)
5340 int c;
5341 const char *p;
5342 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5344 do {
5345 c = yylex(valp,yyscanner,interp);
5346 p = skip;
5348 while (*p && c != *p)
5349 p++;
5351 /* leave loop early if it gets found */
5352 if (*p == '\0')
5353 break;
5355 /* free any mem_sys_strdup()ed strings */
5356 if (yytext)
5357 mem_sys_free(valp->s);
5358 } while (*p != '\0');
5360 if (c)
5361 DUP_AND_RET_FREE(valp, c);
5363 return c;
5366 static char*
5367 read_braced(YYSTYPE *valp, PARROT_INTERP, const char *macro_name,
5368 char *current, void *yyscanner)
5370 YYSTYPE val;
5371 size_t len = strlen(current);
5372 int c = yylex(&val,yyscanner,interp);
5373 int count = 0;
5375 while (c != '}' || count > 0) {
5377 if (c == '}')
5378 count--;
5379 else if (c == '{')
5380 count++;
5382 if (c <= 0)
5383 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5384 "End of file reached while reading arguments in '%s'",
5385 macro_name);
5387 len += strlen(val.s);
5388 current = (char *)mem_sys_realloc(current, len + 1);
5389 strcat(current,val.s);
5391 mem_sys_free(val.s);
5392 val.s = NULL;
5393 c = yylex(&val,yyscanner,interp);
5396 if (valp) {
5397 if (valp->s)
5398 mem_sys_free(valp->s);
5399 *valp = val;
5401 else
5402 mem_sys_free(val.s);
5404 return current;
5407 static int
5408 read_params(YYSTYPE *valp, PARROT_INTERP, params_t *params,
5409 ARGIN(const char *macro_name), int need_id, void *yyscanner)
5411 YYSTYPE val;
5412 size_t len = 0;
5413 char *current = mem_sys_strdup("");
5414 yyguts_t *yyg = (yyguts_t *)yyscanner;
5415 int c = yylex_skip(&val, interp, " \n", yyscanner);
5417 params->num_param = 0;
5419 while (c != ')') {
5420 if (YYSTATE == heredoc2)
5421 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5422 "Heredoc in macro '%s' not allowed", macro_name);
5424 if (c <= 0)
5425 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5426 "End of file reached while reading arguments in '%s'",
5427 macro_name);
5428 else if (c == ',') {
5429 if (params->num_param == MAX_PARAM)
5430 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5431 "More than %d params in '%s'",
5432 MAX_PARAM, macro_name);
5434 params->name[params->num_param++] = current;
5435 current = mem_sys_strdup("");
5436 len = 0;
5438 if (val.s)
5439 mem_sys_free(val.s);
5440 c = yylex_skip(&val, interp, " \n", yyscanner);
5442 else if (need_id && (*current || c != IDENTIFIER) && c != ' ') {
5443 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5444 "Parameter definition in '%s' must be IDENTIFIER",
5445 macro_name);
5447 else if (c == '{') {
5448 current = read_braced(&val, interp, macro_name, current, yyscanner);
5449 mem_sys_free(val.s);
5450 c = yylex_skip(&val, interp, " \n", yyscanner);
5451 len = strlen(current);
5453 else {
5454 if (!need_id || c != ' ') {
5455 len += strlen(val.s);
5456 current = (char *)mem_sys_realloc(current, len + 1);
5457 strcat(current, val.s);
5460 mem_sys_free(val.s);
5461 val.s = NULL;
5462 c = yylex(&val,yyscanner,interp);
5466 params->name[params->num_param++] = current;
5468 if (valp)
5469 *valp = val;
5470 else
5471 mem_sys_free(val.s);
5473 return c;
5476 static int
5477 read_macro(YYSTYPE *valp, PARROT_INTERP, void *yyscanner)
5479 int c, start_line;
5480 params_t params;
5481 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5482 int start_cond = YY_START;
5483 size_t buffer_size = 0;
5484 size_t buffer_used = 0;
5486 BEGIN(macro);
5488 c = yylex_skip(valp, interp, " ", yyscanner);
5490 if (c != IDENTIFIER)
5491 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "Macro names must be identifiers");
5493 IMCC_INFO(interp)->cur_macro_name = valp->s;
5494 start_line = IMCC_INFO(interp)->line;
5496 memset(&params, 0, sizeof (params_t));
5498 /* white space is allowed between macro and opening paren) */
5499 c = yylex_skip(valp, interp, " ", yyscanner);
5501 if (c == '(') {
5502 mem_sys_free(valp->s);
5503 valp->s = NULL;
5505 c = read_params(NULL, interp, &params,
5506 IMCC_INFO(interp)->cur_macro_name, 1, yyscanner);
5508 c = yylex(valp,yyscanner,interp);
5511 while (c != ENDM) {
5512 int elem_len;
5514 if (c <= 0) {
5515 mem_sys_free(valp->s);
5516 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5517 "File ended before macro '%s' was complete",
5518 IMCC_INFO(interp)->cur_macro_name);
5521 if (valp->s) {
5522 elem_len = strlen(valp->s);
5524 if (buffer_used) {
5525 if (buffer_used + elem_len > buffer_size) {
5526 buffer_size += elem_len;
5527 buffer_size <<= 1;
5529 IMCC_INFO(interp)->macro_buffer =
5530 (char *)mem_sys_realloc(IMCC_INFO(interp)->macro_buffer,
5531 buffer_size);
5534 else {
5535 buffer_size = (elem_len << 1) > 1024 ? elem_len << 1 : 1024;
5537 IMCC_INFO(interp)->macro_buffer =
5538 (char *)mem_sys_allocate_zeroed(buffer_size);
5541 strcat(IMCC_INFO(interp)->macro_buffer, valp->s);
5542 buffer_used += elem_len;
5544 mem_sys_free(valp->s);
5545 valp->s = NULL;
5547 c = yylex(valp,yyscanner,interp);
5550 mem_sys_free(valp->s);
5551 valp->s = NULL;
5553 BEGIN(start_cond);
5555 define_macro(interp, IMCC_INFO(interp)->cur_macro_name,
5556 &params, IMCC_INFO(interp)->macro_buffer, start_line);
5558 mem_sys_free(IMCC_INFO(interp)->macro_buffer);
5559 IMCC_INFO(interp)->macro_buffer = NULL;
5560 IMCC_INFO(interp)->cur_macro_name = NULL;
5562 return MACRO;
5565 static char *
5566 find_macro_param(PARROT_INTERP, const char *name)
5568 macro_frame_t *f;
5570 for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) {
5571 if (f->params) {
5572 int i;
5573 for (i = 0; i < f->params->num_param; i++) {
5574 if (STREQ(f->params->name[i], name))
5575 return f->expansion.name[i];
5580 return NULL;
5583 static void
5584 define_macro(PARROT_INTERP, ARGIN(const char *name), ARGIN(const params_t *params),
5585 ARGIN(const char *expansion), int start_line)
5587 DECL_CONST_CAST;
5589 macro_t *m = find_macro(interp, name);
5591 if (m) {
5592 mem_sys_free(m->expansion);
5593 m->expansion = NULL;
5595 else {
5596 m = mem_gc_allocate_zeroed_typed(interp, macro_t);
5598 if (!IMCC_INFO(interp)->macros)
5599 IMCC_INFO(interp)->macros = parrot_new_cstring_hash(interp);
5600 parrot_hash_put(interp, IMCC_INFO(interp)->macros,
5601 PARROT_const_cast(char *, name), m);
5604 if (params)
5605 m->params = *params;
5606 else
5607 memset(&m->params, 0, sizeof (params_t));
5609 m->expansion = mem_sys_strdup(expansion);
5610 m->line = start_line;
5613 static macro_t *
5614 find_macro(PARROT_INTERP, const char *name)
5616 if (!IMCC_INFO(interp)->macros)
5617 return NULL;
5619 return (macro_t *)parrot_hash_get(interp, IMCC_INFO(interp)->macros, name);
5622 static int
5623 expand_macro(PARROT_INTERP, ARGIN(const char *name), void *yyscanner)
5625 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5626 const char * const expansion = find_macro_param(interp, name);
5627 macro_t *m;
5629 if (expansion) {
5630 macro_frame_t * const frame = new_frame(interp);
5632 /* When an error occurs, then report it as being in a macro */
5633 frame->is_macro = 1;
5634 scan_string(frame, expansion, yyscanner);
5635 return 1;
5638 m = find_macro(interp, name);
5639 if (m) {
5640 int i, c, start_cond;
5642 macro_frame_t * frame = new_frame(interp);
5643 frame->params = &m->params;
5645 /* When an error occurs, then report it as being in a macro */
5646 frame->is_macro = 1;
5648 /* remember macro name for error reporting
5649 * first free any filename allocated in new_frame() */
5650 if (frame->s.file)
5651 mem_sys_free(frame->s.file);
5653 frame->s.file = mem_sys_strdup(name);
5655 /* whitespace can be safely ignored */
5656 do {
5657 #ifdef __cplusplus
5658 c = yyinput(yyscanner);
5659 #else
5660 c = input(yyscanner);
5661 #endif
5662 } while (c == ' ' || c == '\t');
5664 if (c != '(') {
5665 if (m->params.num_param != 0)
5666 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5667 "Macro '%s' needs %d arguments",
5668 name, m->params.num_param);
5669 unput(c);
5670 scan_string(frame, m->expansion, yyscanner);
5671 return 1;
5674 start_cond = YY_START;
5675 BEGIN(macro);
5677 read_params(NULL, interp, &frame->expansion, name, 0, yyscanner);
5679 BEGIN(start_cond);
5681 if (frame->expansion.num_param == 0 && m->params.num_param == 1) {
5682 frame->expansion.name[0] = mem_sys_strdup("");
5683 frame->expansion.num_param = 1;
5686 if (frame->expansion.num_param != m->params.num_param) {
5687 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
5688 "Macro '%s' requires %d arguments, but %d given",
5689 name, m->params.num_param, frame->expansion.num_param);
5692 /* expand arguments */
5693 for (i = 0; i < frame->expansion.num_param; i++) {
5694 char * const current = frame->expansion.name[i];
5696 /* parameter of outer macro */
5697 if (current[0] == '.') {
5698 const char * const s = find_macro_param(interp, current + 1);
5700 if (s) {
5701 frame->expansion.name[i] = mem_sys_strdup(s);
5702 mem_sys_free(current);
5706 else {
5707 const size_t len = strlen(current);
5708 if (len && (current[len - 1] == '$')) { /* local label */
5709 const size_t slen = len + 10;
5710 char * const s = (char *)mem_sys_allocate(slen);
5712 current[len - 1] = '\0';
5714 snprintf(s, slen, "%s%d", current, IMCC_INFO(interp)->frames->label);
5716 frame->expansion.name[i] = s;
5717 mem_sys_free(current);
5722 scan_string(frame, m->expansion, yyscanner);
5724 return 1;
5727 return 0;
5730 static void
5731 include_file(PARROT_INTERP, char *file_name, void *yyscanner)
5733 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5734 macro_frame_t * const frame = new_frame(interp);
5735 char *s = Parrot_locate_runtime_file(interp, file_name,
5736 PARROT_RUNTIME_FT_INCLUDE);
5737 char *ext;
5738 FILE *file;
5740 if (!s || !(file = fopen(s, "r"))) {
5741 if (frame->s.file)
5742 mem_sys_free(frame->s.file);
5743 IMCC_fataly(interp, EXCEPTION_EXTERNAL_ERROR, strerror(errno));
5746 if (frame->s.file)
5747 mem_sys_free(frame->s.file);
5748 mem_sys_free(s);
5749 frame->s.file = mem_sys_strdup(file_name);
5750 frame->s.handle = file;
5751 ext = strrchr(file_name, '.');
5753 if (ext) {
5754 if (STREQ(ext, ".pasm")) {
5755 frame->s.pasm_file = 1;
5756 BEGIN(emit);
5758 else if (STREQ(ext, ".pir")) {
5759 frame->s.pasm_file = 0;
5760 BEGIN(INITIAL);
5764 scan_file(interp, frame, file, yyscanner);
5767 static void
5768 scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
5770 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5771 const int oldline = IMCC_INFO(interp)->line;
5772 frame->buffer = YY_CURRENT_BUFFER;
5773 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5774 IMCC_INFO(interp)->frames = frame;
5775 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5777 /* let the start of line rule increment this to 1 */
5778 IMCC_INFO(interp)->line = 0;
5780 yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
5782 IMCC_INFO(interp)->line = oldline;
5785 void
5786 IMCC_push_parser_state(PARROT_INTERP)
5788 macro_frame_t * const frame = new_frame(interp);
5789 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5790 IMCC_INFO(interp)->frames = frame;
5791 frame->s.line = IMCC_INFO(interp)->line
5792 = 1;
5793 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5796 static void
5797 pop_parser_state(PARROT_INTERP, void *yyscanner)
5799 macro_frame_t * const tmp = IMCC_INFO(interp)->frames;
5800 if (tmp) {
5801 int l;
5802 if (tmp->s.handle)
5803 fclose(tmp->s.handle);
5805 IMCC_INFO(interp)->frames =
5806 (macro_frame_t *)IMCC_INFO(interp)->frames->s.next;
5808 l = destroy_frame(tmp, yyscanner);
5810 if (l)
5811 IMCC_INFO(interp)->line = l;
5814 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5817 void
5818 IMCC_pop_parser_state(PARROT_INTERP, void *yyscanner)
5820 pop_parser_state(interp, yyscanner);
5823 void
5824 compile_file(PARROT_INTERP, FILE *file, void *yyscanner)
5826 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5827 YY_BUFFER_STATE volatile buffer;
5829 IMCC_INFO(interp)->frames->s.next = NULL;
5830 buffer = YY_CURRENT_BUFFER;
5832 yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
5834 emit_open(interp, 1, NULL);
5836 IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) {
5837 yyparse(yyscanner, interp);
5838 imc_compile_all_units(interp);
5841 IMCC_CATCH(IMCC_FATAL_EXCEPTION) {
5842 IMCC_INFO(interp)->error_code = IMCC_FATAL_EXCEPTION;
5845 IMCC_CATCH(IMCC_FATALY_EXCEPTION) {
5846 IMCC_INFO(interp)->error_code = IMCC_FATALY_EXCEPTION;
5849 IMCC_END_TRY;
5851 if (buffer)
5852 yy_switch_to_buffer(buffer,yyscanner);
5855 void
5856 compile_string(PARROT_INTERP, const char *s, void *yyscanner)
5858 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5859 YY_BUFFER_STATE volatile buffer;
5861 IMCC_INFO(interp)->frames->s.next = NULL;
5862 buffer = YY_CURRENT_BUFFER;
5864 yy_scan_string(s,yyscanner);
5865 emit_open(interp, 1, NULL);
5867 IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) {
5868 yyparse(yyscanner, interp);
5869 imc_compile_all_units(interp);
5872 IMCC_CATCH(IMCC_FATAL_EXCEPTION) {
5873 IMCC_INFO(interp)->error_code = IMCC_FATAL_EXCEPTION;
5876 IMCC_CATCH(IMCC_FATALY_EXCEPTION) {
5877 IMCC_INFO(interp)->error_code = IMCC_FATALY_EXCEPTION;
5880 IMCC_END_TRY;
5882 if (buffer)
5883 yy_switch_to_buffer(buffer,yyscanner);
5886 void
5887 IMCC_print_inc(PARROT_INTERP)
5889 macro_frame_t *f;
5890 const char *old = IMCC_INFO(interp)->frames->s.file;
5892 if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro)
5893 fprintf(stderr, "\n\tin macro '.%s' line %d\n",
5894 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line);
5895 else
5896 fprintf(stderr, "\n\tin file '%s' line %d\n",
5897 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line);
5900 for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) {
5901 if (!STREQ(f->s.file, old)) {
5902 fprintf(stderr, "\tincluded from '%s' line %d\n",
5903 f->s.file, f->s.line);
5906 old = f->s.file;
5912 void
5913 set_filename(PARROT_INTERP, char * const filename)
5915 Function to set the C<filename> as specified using the C<.line> directive.
5916 The parser needs to call back into the lexer (this file), because the
5917 parser does not have access to the lexer's private bits.
5920 void
5921 set_filename(PARROT_INTERP, char * const filename)
5923 IMCC_INFO(interp)->frames->s.file = filename;
5925 /* in case .line is used outside a .sub, then this
5926 * can't be done; hence the check.
5927 * The mem_sys_strdup() is done, as the original #line implementation
5928 * duplicated the string twice as well; one for the
5929 * frames->s.file and one for cur_unit->file.
5930 * During the parse, the STRINGC is already mem_sys_strdup()ed once.
5932 if (IMCC_INFO(interp)->cur_unit)
5933 IMCC_INFO(interp)->cur_unit->file = mem_sys_strdup(filename);
5936 /* Functions to set and get yyin, as we can't decorate it for export
5937 (since it is defined in a file generated by yacc/bison). */
5938 FILE* imc_yyin_set(FILE* new_yyin, void *yyscanner)
5940 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5941 yyg->yyin_r = new_yyin;
5943 return yyg->yyin_r;
5946 FILE* imc_yyin_get(void *yyscanner)
5948 const yyguts_t * const yyg = (yyguts_t *)yyscanner;
5949 return yyg->yyin_r;
5952 /* return true if scanner is at EOF */
5953 int at_eof(yyscan_t yyscanner)
5955 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5956 return yyg->yy_hold_char == '\0';
5959 static int
5960 handle_identifier(PARROT_INTERP, YYSTYPE *valp, const char *text)
5962 if (!IMCC_INFO(interp)->is_def) {
5963 SymReg *r = find_sym(interp, text);
5965 if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
5966 valp->sr = r;
5967 return VAR;
5970 if (IMCC_INFO(interp)->cur_unit
5971 && IMCC_INFO(interp)->cur_unit->instructions
5972 && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
5973 && r->pcc_sub)
5975 if (((r->pcc_sub->pragma & P_METHOD)
5976 || (IMCC_INFO(interp)->cur_unit->is_vtable_method))
5977 && !strcmp(text, "self")) {
5978 valp->sr = mk_ident(interp, "self", 'P');
5979 IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
5980 return VAR;
5985 valp->s = mem_sys_strdup(text);
5986 return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
5990 * Local variables:
5991 * c-file-style: "parrot"
5992 * End:
5993 * vim: expandtab shiftwidth=4: