tagged release 0.6.4
[parrot.git] / compilers / imcc / imclexer.c
blob90e701446a82c6d8a23b2c1a28e8ff27cf9c4b84
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 #define YY_BUF_SIZE 16384
184 #endif
186 /* The state buf must be large enough to hold one state per character in the main buffer.
188 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
190 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
191 #define YY_TYPEDEF_YY_BUFFER_STATE
192 typedef struct yy_buffer_state *YY_BUFFER_STATE;
193 #endif
195 #define EOB_ACT_CONTINUE_SCAN 0
196 #define EOB_ACT_END_OF_FILE 1
197 #define EOB_ACT_LAST_MATCH 2
199 #define YY_LESS_LINENO(n)
201 /* Return all but the first "n" matched characters back to the input stream. */
202 #define yyless(n) \
203 do \
205 /* Undo effects of setting up yytext. */ \
206 int yyless_macro_arg = (n); \
207 YY_LESS_LINENO(yyless_macro_arg);\
208 *yy_cp = yyg->yy_hold_char; \
209 YY_RESTORE_YY_MORE_OFFSET \
210 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
211 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
213 while ( 0 )
215 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
217 #ifndef YY_TYPEDEF_YY_SIZE_T
218 #define YY_TYPEDEF_YY_SIZE_T
219 typedef size_t yy_size_t;
220 #endif
222 #ifndef YY_STRUCT_YY_BUFFER_STATE
223 #define YY_STRUCT_YY_BUFFER_STATE
224 struct yy_buffer_state
226 FILE *yy_input_file;
228 char *yy_ch_buf; /* input buffer */
229 char *yy_buf_pos; /* current position in input buffer */
231 /* Size of input buffer in bytes, not including room for EOB
232 * characters.
234 yy_size_t yy_buf_size;
236 /* Number of characters read into yy_ch_buf, not including EOB
237 * characters.
239 int yy_n_chars;
241 /* Whether we "own" the buffer - i.e., we know we created it,
242 * and can realloc() it to grow it, and should free() it to
243 * delete it.
245 int yy_is_our_buffer;
247 /* Whether this is an "interactive" input source; if so, and
248 * if we're using stdio for input, then we want to use getc()
249 * instead of fread(), to make sure we stop fetching input after
250 * each newline.
252 int yy_is_interactive;
254 /* Whether we're considered to be at the beginning of a line.
255 * If so, '^' rules will be active on the next match, otherwise
256 * not.
258 int yy_at_bol;
260 int yy_bs_lineno; /**< The line count. */
261 int yy_bs_column; /**< The column count. */
263 /* Whether to try to fill the input buffer when we reach the
264 * end of it.
266 int yy_fill_buffer;
268 int yy_buffer_status;
270 #define YY_BUFFER_NEW 0
271 #define YY_BUFFER_NORMAL 1
272 /* When an EOF's been seen but there's still some text to process
273 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
274 * shouldn't try reading from the input source any more. We might
275 * still have a bunch of tokens to match, though, because of
276 * possible backing-up.
278 * When we actually see the EOF, we change the status to "new"
279 * (via yyrestart()), so that the user can continue scanning by
280 * just pointing yyin at a new input file.
282 #define YY_BUFFER_EOF_PENDING 2
285 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
287 /* We provide macros for accessing buffer states in case in the
288 * future we want to put the buffer states in a more general
289 * "scanner state".
291 * Returns the top of the stack, or NULL.
293 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
294 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
295 : NULL)
297 /* Same as previous macro, but useful when we know that the buffer stack is not
298 * NULL or when we need an lvalue. For internal use only.
300 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
302 void yyrestart (FILE *input_file ,yyscan_t yyscanner );
303 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
304 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
305 void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
306 void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
307 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
308 void yypop_buffer_state (yyscan_t yyscanner );
310 static void yyensure_buffer_stack (yyscan_t yyscanner );
311 static void yy_load_buffer_state (yyscan_t yyscanner );
312 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
314 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
316 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
317 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
318 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
320 void *yyalloc (yy_size_t ,yyscan_t yyscanner );
321 void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
322 void yyfree (void * ,yyscan_t yyscanner );
324 #define yy_new_buffer yy_create_buffer
326 #define yy_set_interactive(is_interactive) \
328 if ( ! YY_CURRENT_BUFFER ){ \
329 yyensure_buffer_stack (yyscanner); \
330 YY_CURRENT_BUFFER_LVALUE = \
331 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
333 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
336 #define yy_set_bol(at_bol) \
338 if ( ! YY_CURRENT_BUFFER ){\
339 yyensure_buffer_stack (yyscanner); \
340 YY_CURRENT_BUFFER_LVALUE = \
341 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
343 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
346 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348 /* Begin user sect3 */
350 typedef unsigned char YY_CHAR;
352 typedef int yy_state_type;
354 #define yytext_ptr yytext_r
356 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
357 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
358 static int yy_get_next_buffer (yyscan_t yyscanner );
359 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
361 /* Done after the current pattern has been matched and before the
362 * corresponding action - sets up yytext.
364 #define YY_DO_BEFORE_ACTION \
365 yyg->yytext_ptr = yy_bp; \
366 yyleng = (size_t) (yy_cp - yy_bp); \
367 yyg->yy_hold_char = *yy_cp; \
368 *yy_cp = '\0'; \
369 yyg->yy_c_buf_p = yy_cp;
371 #define YY_NUM_RULES 147
372 #define YY_END_OF_BUFFER 148
373 /* This struct is not used in this scanner,
374 but its presence is necessary. */
375 struct yy_trans_info
377 flex_int32_t yy_verify;
378 flex_int32_t yy_nxt;
380 static yyconst flex_int16_t yy_accept[1215] =
381 { 0,
382 0, 0, 0, 0, 0, 0, 17, 17, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384 3, 3, 148, 136, 135, 11, 135, 136, 136, 12,
385 136, 136, 136, 136, 136, 136, 117, 136, 96, 136,
386 122, 122, 136, 88, 136, 90, 120, 120, 120, 120,
387 120, 120, 120, 120, 120, 136, 136, 12, 15, 135,
388 135, 136, 136, 136, 136, 120, 120, 15, 146, 143,
389 138, 143, 146, 146, 146, 146, 146, 122, 122, 146,
390 144, 144, 144, 144, 142, 142, 146, 15, 17, 18,
391 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
393 17, 17, 17, 17, 147, 136, 9, 9, 136, 136,
394 136, 136, 136, 5, 5, 5, 5, 5, 5, 5,
395 5, 5, 5, 5, 5, 5, 6, 136, 10, 136,
396 136, 136, 136, 136, 122, 122, 136, 136, 136, 136,
397 136, 136, 136, 13, 136, 136, 136, 136, 136, 122,
398 122, 136, 136, 136, 136, 136, 136, 147, 1, 147,
399 147, 147, 147, 147, 122, 122, 147, 147, 147, 147,
400 147, 147, 3, 2, 3, 3, 3, 3, 3, 3,
401 3, 3, 3, 3, 3, 3, 3, 135, 0, 11,
402 93, 0, 127, 0, 134, 134, 134, 134, 134, 102,
404 85, 105, 0, 94, 100, 0, 122, 98, 99, 97,
405 121, 111, 119, 119, 119, 119, 119, 119, 119, 119,
406 119, 119, 119, 119, 119, 119, 119, 103, 101, 121,
407 0, 0, 126, 0, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 0, 0, 82, 89, 92, 58,
409 91, 83, 116, 0, 120, 118, 14, 120, 120, 120,
410 72, 120, 120, 120, 120, 120, 120, 120, 120, 106,
411 86, 107, 87, 0, 135, 119, 119, 119, 119, 119,
412 119, 0, 0, 0, 0, 143, 138, 143, 0, 0,
413 145, 145, 145, 145, 144, 0, 14, 144, 144, 142,
415 142, 17, 18, 17, 17, 17, 17, 17, 17, 17,
416 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
417 14, 17, 17, 17, 17, 0, 9, 0, 14, 0,
418 0, 5, 5, 5, 5, 5, 5, 5, 5, 5,
419 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
420 5, 0, 10, 0, 0, 0, 127, 0, 0, 0,
421 0, 122, 121, 0, 121, 0, 0, 126, 0, 0,
422 0, 0, 0, 14, 0, 0, 0, 0, 13, 0,
423 0, 0, 127, 0, 0, 0, 0, 122, 121, 0,
424 121, 0, 0, 126, 0, 0, 0, 0, 0, 14,
426 0, 0, 0, 0, 1, 0, 0, 0, 127, 0,
427 0, 0, 0, 122, 121, 0, 121, 0, 0, 126,
428 0, 0, 0, 0, 0, 14, 0, 0, 0, 3,
429 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
430 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
431 3, 3, 95, 130, 131, 133, 132, 0, 119, 119,
432 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
433 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
434 104, 121, 124, 0, 121, 125, 123, 0, 0, 0,
435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
437 0, 0, 0, 0, 0, 109, 108, 84, 115, 0,
438 120, 0, 14, 120, 120, 120, 75, 120, 77, 120,
439 76, 80, 120, 120, 120, 0, 119, 119, 0, 0,
440 0, 139, 141, 145, 0, 145, 145, 145, 144, 14,
441 144, 144, 17, 17, 17, 17, 17, 17, 17, 17,
442 17, 17, 17, 17, 14, 17, 17, 17, 17, 0,
443 14, 0, 0, 5, 5, 5, 5, 5, 5, 5,
444 5, 5, 5, 5, 5, 5, 5, 0, 0, 121,
445 124, 0, 121, 125, 123, 0, 0, 0, 0, 14,
446 0, 0, 0, 0, 0, 121, 124, 0, 121, 125,
448 123, 0, 0, 0, 0, 14, 0, 0, 0, 0,
449 0, 121, 124, 0, 121, 125, 123, 0, 0, 0,
450 0, 14, 0, 0, 0, 3, 3, 3, 3, 3,
451 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
452 3, 0, 121, 61, 20, 119, 119, 119, 22, 119,
453 119, 119, 119, 19, 119, 119, 119, 119, 119, 119,
454 119, 119, 119, 119, 119, 21, 119, 0, 0, 0,
455 0, 0, 0, 43, 0, 0, 0, 0, 0, 0,
456 0, 0, 0, 0, 0, 0, 128, 0, 0, 110,
457 0, 129, 0, 118, 0, 0, 78, 120, 71, 120,
459 74, 120, 120, 120, 120, 0, 43, 141, 0, 145,
460 145, 145, 0, 144, 144, 144, 17, 17, 17, 17,
461 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
462 17, 17, 17, 0, 0, 0, 0, 5, 5, 5,
463 5, 5, 5, 5, 5, 5, 5, 5, 0, 121,
464 0, 0, 0, 128, 0, 0, 0, 0, 0, 129,
465 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
466 0, 0, 128, 0, 0, 0, 0, 0, 129, 0,
467 0, 0, 0, 0, 0, 0, 0, 121, 0, 0,
468 0, 128, 0, 0, 0, 0, 0, 129, 0, 0,
470 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,
471 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
472 3, 119, 119, 25, 119, 119, 119, 119, 119, 119,
473 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
474 119, 119, 119, 41, 53, 0, 38, 0, 0, 0,
475 37, 36, 0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 120, 120, 120, 120, 120, 120, 0, 137,
477 145, 145, 144, 144, 144, 17, 17, 17, 17, 17,
478 16, 17, 0, 0, 0, 0, 5, 5, 5, 5,
479 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
481 0, 0, 0, 0, 0, 0, 3, 3, 3, 3,
482 3, 119, 119, 66, 119, 119, 119, 119, 119, 119,
483 119, 119, 119, 64, 113, 119, 119, 119, 68, 119,
484 119, 119, 119, 50, 0, 0, 0, 47, 0, 35,
485 57, 0, 0, 42, 0, 0, 0, 0, 79, 120,
486 120, 120, 81, 73, 0, 145, 145, 144, 144, 144,
487 17, 17, 17, 17, 17, 0, 0, 0, 0, 5,
488 5, 5, 5, 5, 0, 0, 0, 0, 0, 0,
489 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
490 3, 3, 3, 3, 119, 119, 119, 119, 119, 119,
492 119, 65, 119, 119, 119, 119, 119, 119, 119, 119,
493 69, 48, 51, 0, 0, 0, 34, 0, 0, 0,
494 54, 0, 44, 120, 120, 120, 0, 140, 69, 144,
495 144, 144, 17, 17, 17, 17, 17, 69, 0, 0,
496 0, 5, 5, 5, 5, 5, 69, 0, 0, 0,
497 0, 69, 0, 0, 0, 0, 69, 0, 0, 0,
498 0, 3, 3, 3, 3, 3, 62, 119, 119, 119,
499 119, 119, 119, 119, 119, 119, 114, 119, 52, 119,
500 119, 119, 119, 29, 0, 0, 0, 0, 0, 0,
501 0, 120, 0, 8, 0, 144, 17, 17, 8, 17,
503 0, 5, 5, 5, 5, 0, 0, 8, 0, 0,
504 0, 8, 0, 0, 0, 8, 0, 3, 3, 3,
505 3, 119, 119, 119, 24, 119, 119, 119, 119, 119,
506 28, 119, 119, 119, 26, 0, 0, 59, 56, 55,
507 40, 0, 120, 7, 4, 144, 17, 7, 4, 0,
508 5, 0, 7, 4, 0, 7, 4, 0, 7, 4,
509 3, 3, 3, 119, 119, 119, 119, 33, 119, 119,
510 119, 119, 27, 60, 39, 0, 0, 120, 144, 17,
511 0, 5, 0, 0, 0, 3, 23, 119, 119, 31,
512 119, 119, 119, 119, 46, 45, 70, 70, 17, 70,
514 5, 70, 70, 70, 3, 119, 32, 119, 49, 67,
515 112, 30, 63, 0
518 static yyconst flex_int32_t yy_ec[256] =
519 { 0,
520 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
521 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
522 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
523 1, 5, 6, 7, 8, 9, 10, 11, 12, 1,
524 1, 13, 14, 15, 16, 17, 18, 19, 20, 21,
525 21, 21, 21, 21, 21, 22, 22, 23, 1, 24,
526 25, 26, 1, 27, 28, 29, 28, 28, 30, 28,
527 31, 32, 33, 31, 31, 34, 31, 35, 36, 37,
528 31, 31, 38, 31, 31, 31, 31, 39, 31, 31,
529 1, 40, 1, 1, 41, 1, 42, 43, 44, 45,
531 46, 47, 48, 49, 50, 31, 31, 51, 52, 53,
532 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
533 64, 31, 1, 65, 1, 66, 1, 1, 1, 1,
534 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 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
550 static yyconst flex_int32_t yy_meta[67] =
551 { 0,
552 1, 1, 2, 1, 1, 1, 3, 1, 4, 1,
553 1, 1, 1, 1, 1, 5, 1, 1, 6, 6,
554 6, 6, 7, 1, 1, 1, 8, 9, 9, 9,
555 10, 10, 10, 10, 10, 10, 10, 10, 10, 1,
556 11, 9, 9, 9, 9, 9, 9, 10, 10, 10,
557 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
558 10, 10, 10, 10, 1, 1
561 static yyconst flex_int16_t yy_base[1380] =
562 { 0,
563 0, 59, 83, 61, 149, 66, 215, 65, 281, 4888,
564 347, 4887, 91, 95, 413, 4886, 479, 4885, 545, 4884,
565 611, 4883, 4890, 7995, 75, 7995, 117, 4864, 65, 7995,
566 91, 4863, 70, 4875, 105, 661, 7995, 668, 677, 57,
567 725, 753, 758, 115, 119, 121, 734, 773, 740, 753,
568 744, 805, 806, 808, 811, 58, 692, 4835, 666, 776,
569 833, 822, 843, 798, 4861, 847, 846, 7995, 7995, 869,
570 7995, 873, 97, 0, 4872, 862, 890, 0, 896, 4858,
571 119, 912, 761, 874, 900, 919, 4830, 7995, 0, 7995,
572 4877, 758, 4867, 927, 918, 957, 921, 4854, 1020, 1086,
574 947, 934, 4826, 4832, 7995, 985, 993, 1031, 4852, 1035,
575 725, 780, 4823, 0, 0, 854, 1047, 1059, 1136, 956,
576 4849, 1199, 1265, 1096, 1100, 4821, 783, 697, 7995, 748,
577 958, 978, 1121, 1128, 1329, 1135, 948, 1392, 1458, 1140,
578 1108, 829, 955, 7995, 967, 1181, 1005, 1215, 1173, 1522,
579 1209, 1038, 1585, 1651, 1221, 1235, 998, 1067, 7995, 1069,
580 1289, 1071, 1291, 1297, 1715, 1299, 1223, 1778, 1844, 1302,
581 1335, 1164, 0, 7995, 4868, 976, 4858, 1357, 1114, 1894,
582 1383, 4841, 1957, 2023, 1367, 1408, 4813, 1365, 1256, 7995,
583 7995, 1156, 7995, 0, 0, 1414, 1419, 1423, 1428, 7995,
585 7995, 7995, 4851, 7995, 7995, 1466, 1472, 7995, 7995, 7995,
586 1489, 7995, 0, 4828, 4802, 4800, 1005, 4784, 81, 4783,
587 649, 883, 34, 803, 4789, 4774, 4783, 4807, 7995, 1508,
588 1125, 1550, 7995, 1210, 0, 4778, 4779, 1134, 860, 1260,
589 4787, 624, 4774, 4776, 4770, 4763, 1011, 7995, 7995, 7995,
590 7995, 1224, 4798, 4797, 1318, 920, 1558, 1491, 1357, 1481,
591 1537, 1608, 1624, 1539, 1597, 1598, 1620, 1623, 1672, 7995,
592 7995, 7995, 7995, 4769, 1335, 4758, 4758, 943, 4768, 4767,
593 1019, 1245, 1205, 4748, 794, 1529, 7995, 1680, 4784, 0,
594 4783, 1291, 1284, 1066, 1157, 1292, 1677, 1397, 1559, 1699,
596 1703, 0, 7995, 1213, 0, 0, 4793, 1690, 1709, 1778,
597 4747, 1790, 1284, 1743, 0, 1404, 2071, 818, 2118, 2184,
598 2250, 1751, 1755, 4752, 4741, 4743, 1855, 1302, 1806, 940,
599 1174, 0, 1509, 0, 1811, 1861, 1899, 4742, 1930, 1341,
600 1878, 0, 1607, 2298, 1378, 2345, 2411, 2477, 1819, 1883,
601 4748, 1449, 7995, 1452, 1981, 1986, 1492, 1546, 1710, 1721,
602 1983, 2541, 2048, 1580, 2052, 1803, 1992, 1601, 1935, 2585,
603 2050, 2632, 2698, 2764, 1996, 2086, 1717, 1612, 7995, 1619,
604 2057, 2072, 1631, 1641, 1738, 1744, 2134, 2828, 2275, 1683,
605 2279, 2083, 2143, 1686, 2147, 2872, 2166, 2919, 2985, 3051,
607 2310, 2265, 1884, 1749, 7995, 1812, 2299, 2369, 1831, 1922,
608 1932, 1988, 2362, 3115, 2501, 2077, 2505, 2157, 2374, 1928,
609 2383, 3159, 2168, 3206, 3272, 3338, 2492, 2315, 2016, 0,
610 7995, 1687, 0, 0, 4785, 2291, 2519, 2547, 4739, 2562,
611 1927, 2580, 0, 1958, 3386, 1508, 3433, 3499, 3565, 2597,
612 2601, 4745, 2005, 2378, 2386, 2535, 2590, 2645, 0, 4760,
613 4745, 4744, 4740, 4737, 4744, 4728, 4732, 1303, 4722, 1040,
614 4740, 4724, 4730, 4731, 4723, 4735, 4736, 1940, 4734, 4730,
615 7995, 2649, 2039, 2654, 2661, 2064, 0, 4721, 4728, 4717,
616 1580, 4705, 4725, 4714, 4687, 4694, 4692, 4684, 4683, 4683,
618 4680, 4689, 4696, 1853, 4725, 7995, 7995, 4711, 7995, 1872,
619 1490, 4712, 2563, 2782, 2783, 2784, 2668, 2785, 2669, 2786,
620 2787, 2802, 2804, 2819, 2837, 4681, 4689, 4690, 4681, 4667,
621 4706, 4705, 4704, 4703, 4702, 1514, 1348, 1480, 4701, 1398,
622 2536, 2820, 2865, 4681, 2919, 2076, 2667, 2795, 2090, 3613,
623 1901, 4709, 2141, 3660, 3726, 3792, 1766, 4667, 4660, 4676,
624 4694, 1867, 2230, 2889, 4674, 2931, 2120, 2802, 2844, 2272,
625 3840, 2503, 3887, 3953, 4019, 2482, 4662, 2952, 2319, 3075,
626 2853, 2959, 3079, 3083, 4083, 3085, 2650, 3103, 4130, 4196,
627 4262, 2523, 2285, 3108, 2621, 3136, 2893, 3148, 3171, 3222,
629 4326, 3143, 2886, 3193, 4373, 4439, 4505, 3189, 3111, 3231,
630 3081, 3363, 3235, 3245, 3367, 3371, 4569, 3373, 3173, 3414,
631 4616, 4682, 4748, 3318, 3169, 3380, 4672, 3441, 2288, 3237,
632 3241, 2927, 4796, 2142, 4701, 2557, 4843, 4909, 4975, 3372,
633 4659, 3445, 3455, 4670, 0, 4660, 4658, 4646, 1464, 4662,
634 4659, 4650, 4644, 0, 4635, 4637, 4621, 4628, 4630, 4634,
635 4632, 4632, 4624, 4611, 4610, 0, 4618, 4615, 4608, 4620,
636 4606, 4605, 4609, 4612, 4616, 4607, 4610, 4599, 4611, 1295,
637 4609, 4595, 4596, 4596, 4608, 2812, 7995, 0, 4638, 7995,
638 2837, 7995, 0, 4626, 4625, 4640, 2845, 3583, 2960, 3591,
640 3463, 3586, 3588, 3587, 3592, 4600, 7995, 4622, 4621, 1819,
641 1669, 1771, 4620, 2557, 3110, 3115, 3461, 3469, 4590, 3073,
642 0, 0, 4625, 3101, 0, 0, 5041, 4629, 5107, 5173,
643 4585, 4586, 2376, 4562, 2329, 1451, 2054, 3473, 3597, 4561,
644 2892, 0, 5239, 4601, 5305, 5371, 4557, 4560, 3625, 3676,
645 2830, 3684, 3702, 2388, 2515, 3408, 3466, 3707, 3713, 2690,
646 2903, 5437, 3191, 5503, 2482, 2484, 3224, 3742, 3751, 3449,
647 3771, 3773, 2954, 3150, 3609, 3678, 3779, 3781, 3265, 3394,
648 5569, 3619, 5635, 2602, 2914, 3422, 3819, 3823, 3645, 3826,
649 3868, 3481, 3590, 3700, 3753, 3874, 3929, 3648, 3650, 5701,
651 3715, 5767, 3098, 3322, 3821, 3815, 3829, 4557, 3102, 0,
652 0, 4592, 3415, 0, 0, 5833, 4596, 5899, 5965, 4552,
653 4555, 4548, 4543, 0, 4536, 3859, 4552, 4536, 4550, 4527,
654 4542, 4534, 4533, 4529, 4541, 4523, 4536, 4527, 4520, 4525,
655 4525, 4518, 4529, 7995, 7995, 4524, 7995, 4526, 4523, 4521,
656 7995, 7995, 4511, 4514, 4518, 4515, 4507, 4502, 4514, 4502,
657 4496, 4504, 3921, 3925, 3922, 3982, 3912, 3980, 4549, 4530,
658 1522, 2281, 3923, 3678, 3958, 4500, 6031, 6097, 1193, 4546,
659 7995, 4547, 4497, 2257, 1715, 1920, 4496, 6163, 6229, 2497,
660 4542, 3756, 6295, 1506, 3567, 3764, 3870, 862, 2128, 1566,
662 3849, 3947, 1056, 2539, 1948, 3860, 4494, 2925, 3657, 2545,
663 4539, 4501, 4501, 0, 4499, 4494, 4489, 4486, 4491, 4485,
664 4490, 4492, 4483, 0, 4491, 4483, 4471, 4483, 0, 4464,
665 4479, 4444, 4449, 0, 4451, 4447, 4457, 7995, 4453, 7995,
666 7995, 4446, 4443, 7995, 4441, 4430, 4447, 4446, 3974, 4030,
667 4031, 4032, 3978, 3979, 3898, 4047, 2912, 3984, 3969, 4034,
668 4449, 2442, 3744, 3878, 4041, 4448, 3679, 2836, 3044, 4447,
669 2465, 3896, 3958, 4045, 3852, 1149, 1860, 3774, 4072, 4065,
670 3834, 4442, 4441, 4078, 4115, 3964, 4440, 4439, 4146, 4442,
671 1718, 3962, 3967, 4095, 4428, 4044, 4431, 4422, 4434, 4432,
673 4419, 4432, 4429, 4421, 4430, 4428, 4429, 4428, 4418, 4425,
674 0, 0, 0, 4425, 4422, 4408, 7995, 4418, 4417, 4403,
675 7995, 4396, 7995, 4153, 4155, 4168, 4101, 4170, 4412, 4135,
676 4210, 4211, 0, 2829, 3576, 3874, 4218, 7995, 3640, 3823,
677 4066, 0, 3664, 3935, 4141, 4223, 3903, 3127, 4053, 4104,
678 4227, 4092, 3390, 1881, 3349, 4278, 4176, 3630, 3593, 3743,
679 4286, 0, 3925, 3374, 3708, 4236, 0, 4392, 4387, 4382,
680 4380, 4370, 4378, 4370, 4367, 4372, 0, 4366, 0, 4370,
681 4370, 4376, 4368, 0, 4358, 4366, 4348, 4341, 4306, 4297,
682 4282, 4287, 3774, 4329, 4314, 4136, 2916, 3807, 4299, 4288,
684 2098, 4131, 4009, 4279, 4246, 4129, 4247, 4184, 4308, 4171,
685 4315, 4289, 4328, 4255, 4333, 4320, 4346, 4029, 4309, 4230,
686 4217, 4142, 4122, 4117, 0, 4067, 4045, 4018, 4005, 3896,
687 0, 3890, 3858, 3741, 0, 3646, 3514, 7995, 7995, 7995,
688 7995, 3364, 4335, 7995, 7995, 4310, 2639, 0, 0, 2344,
689 3445, 3324, 4256, 4339, 3869, 4356, 4358, 4172, 4360, 4362,
690 4343, 0, 0, 3186, 3139, 3069, 2817, 0, 2799, 2753,
691 2739, 2722, 0, 0, 7995, 2579, 2528, 4400, 4378, 4344,
692 4255, 4352, 4347, 3035, 3113, 4356, 0, 2332, 2221, 0,
693 2143, 2007, 1980, 1894, 7995, 7995, 4399, 4395, 1845, 1814,
695 1695, 1490, 1385, 1338, 1089, 986, 0, 740, 0, 0,
696 0, 0, 0, 7995, 6361, 6367, 6377, 6385, 6389, 6397,
697 6404, 6415, 6426, 6437, 6448, 6455, 6466, 6477, 6488, 6499,
698 6510, 6521, 6532, 6543, 6554, 6565, 6576, 6587, 6598, 6609,
699 6620, 6631, 6642, 6653, 6664, 6670, 6680, 6686, 6692, 6697,
700 6705, 6714, 6720, 6724, 6730, 6737, 6748, 6759, 6770, 6781,
701 6792, 6803, 6814, 6825, 6836, 6847, 6858, 6869, 6880, 6891,
702 6902, 6913, 6924, 6935, 6946, 6957, 6968, 6979, 6990, 6996,
703 7001, 7007, 7016, 7027, 7038, 7046, 7053, 7061, 7067, 7073,
704 7079, 7085, 7092, 7103, 7114, 7125, 7136, 7147, 7158, 7165,
706 7176, 7187, 7198, 7209, 7220, 7231, 7242, 7253, 7264, 7275,
707 7286, 7297, 7308, 7319, 7330, 7341, 7352, 7363, 7374, 7385,
708 7396, 7407, 7418, 7429, 7440, 7451, 7462, 7473, 7479, 7490,
709 7501, 7512, 7519, 7527, 7533, 7539, 7546, 7557, 7568, 7579,
710 7590, 7601, 7612, 7619, 7630, 7641, 7652, 7663, 7674, 7685,
711 7696, 7707, 7718, 7729, 7740, 7751, 7762, 7773, 7784, 7795,
712 7806, 7817, 7828, 7839, 7850, 7861, 7872, 7883, 7894, 7900,
713 7908, 7914, 7921, 7932, 7943, 7950, 7961, 7972, 7983
716 static yyconst flex_int16_t yy_def[1380] =
717 { 0,
718 1214, 1, 1, 3, 1214, 5, 1214, 7, 1214, 9,
719 1214, 11, 9, 9, 1214, 15, 1214, 17, 1214, 19,
720 1214, 21, 1214, 1214, 1214, 1214, 1214, 1214, 1215, 1214,
721 1216, 1214, 1214, 1217, 1214, 1214, 1214, 1214, 1214, 1214,
722 1214, 1214, 1214, 1214, 1214, 1214, 1218, 1218, 1218, 1218,
723 1218, 1218, 1218, 1218, 1218, 1214, 1214, 1214, 1214, 1214,
724 1214, 1214, 39, 1214, 1214, 1218, 1218, 1214, 1214, 1214,
725 1214, 1214, 1215, 1219, 1217, 1214, 1220, 41, 1214, 1214,
726 1221, 1221, 1221, 1221, 1214, 1214, 1214, 1214, 1222, 1214,
727 1222, 1223, 1224, 1222, 1222, 1222, 96, 1222, 1225, 1225,
729 100, 100, 1222, 1222, 1214, 1214, 41, 1214, 1226, 1226,
730 1226, 1226, 1214, 1227, 1227, 1228, 1227, 1227, 1227, 119,
731 1227, 1229, 1229, 123, 123, 1227, 1215, 1230, 1214, 1230,
732 1231, 1232, 1230, 1230, 1230, 135, 1230, 1233, 1233, 139,
733 139, 1230, 1234, 1214, 1234, 1235, 1236, 1234, 1234, 1234,
734 150, 1234, 1237, 1237, 154, 154, 1234, 1238, 1214, 1238,
735 1239, 1240, 1238, 1238, 1238, 165, 1238, 1241, 1241, 169,
736 169, 1238, 1242, 1214, 1242, 1243, 1244, 1242, 1242, 1242,
737 180, 1242, 1245, 1245, 184, 184, 1242, 1214, 1214, 1214,
738 1214, 1215, 1214, 1215, 1246, 1246, 1246, 1246, 1246, 1214,
740 1214, 1214, 1247, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
741 1214, 1214, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
742 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1214, 1214, 1214,
743 1214, 1214, 1214, 1214, 1249, 1214, 1214, 1214, 1214, 1214,
744 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
745 1214, 1214, 1214, 1250, 1251, 1252, 1251, 1251, 1251, 1251,
746 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1214,
747 1214, 1214, 1214, 1214, 1214, 1248, 1248, 1248, 1248, 1248,
748 1248, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1253, 1254,
749 1255, 1255, 1255, 1255, 1256, 1252, 1256, 1256, 1256, 1214,
751 1214, 1257, 1214, 1258, 1257, 1258, 1259, 1257, 1257, 1257,
752 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1260, 1214,
753 1260, 321, 321, 1257, 1257, 1214, 1214, 1252, 1250, 1250,
754 1250, 1261, 1262, 1261, 1261, 1261, 1261, 1261, 1261, 1261,
755 1261, 1261, 1261, 1261, 1261, 1263, 1214, 1263, 348, 348,
756 1261, 1264, 1214, 1264, 1265, 1265, 1264, 1265, 1266, 1266,
757 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
758 1264, 1267, 1214, 1267, 374, 374, 1264, 1268, 1214, 1268,
759 1269, 1269, 1268, 1269, 1270, 1270, 1268, 1268, 1268, 1268,
760 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1271, 1214, 1271,
762 400, 400, 1268, 1272, 1214, 1272, 1273, 1273, 1272, 1273,
763 1274, 1274, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
764 1272, 1272, 1272, 1275, 1214, 1275, 426, 426, 1272, 1276,
765 1214, 1277, 1276, 1277, 1278, 1276, 1276, 1276, 1276, 1276,
766 1276, 1276, 1276, 1276, 1276, 1276, 1279, 1214, 1279, 449,
767 449, 1276, 1214, 1280, 1280, 1280, 1280, 1214, 1281, 1281,
768 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
769 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
770 1214, 1214, 1214, 1214, 1214, 1214, 1282, 1214, 1214, 1214,
771 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
773 1214, 1214, 1214, 1283, 1284, 1214, 1214, 1214, 1214, 1285,
774 1286, 1287, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,
775 1288, 1288, 1288, 1288, 1288, 1214, 1281, 1281, 1214, 1214,
776 1289, 1214, 1290, 1291, 1214, 1291, 1291, 1291, 1292, 1293,
777 1293, 1293, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
778 1295, 1296, 1297, 1298, 1299, 1299, 556, 1294, 1294, 1214,
779 1300, 1300, 1300, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
780 1301, 1302, 1303, 1304, 1304, 575, 1301, 1305, 1305, 1305,
781 1305, 1305, 1305, 1305, 1305, 1306, 1307, 1308, 1309, 1310,
782 1310, 591, 1305, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
784 1311, 1312, 1313, 1314, 1315, 1316, 1316, 607, 1311, 1317,
785 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1318, 1319, 1320,
786 1321, 1322, 1322, 623, 1317, 1323, 1323, 1323, 1323, 1323,
787 1323, 1323, 1323, 1324, 1325, 1326, 1327, 1328, 1328, 639,
788 1323, 1214, 1214, 1329, 1329, 1329, 1329, 1329, 1329, 1329,
789 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329,
790 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1214, 1214, 1214,
791 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
792 1214, 1214, 1214, 1214, 1214, 1330, 1214, 1330, 1331, 1214,
793 1332, 1214, 1332, 1214, 1333, 1214, 1334, 1334, 1334, 1334,
795 1334, 1334, 1334, 1334, 1334, 1214, 1214, 1335, 1214, 1336,
796 1336, 1336, 1214, 1337, 1337, 1337, 1338, 1338, 1338, 1339,
797 1338, 1339, 1340, 1341, 1338, 1341, 1342, 1338, 1343, 1343,
798 730, 1338, 1338, 1214, 1344, 1344, 1344, 1345, 1345, 1345,
799 1346, 1345, 1347, 1345, 1348, 1348, 746, 1345, 1349, 1349,
800 1349, 1350, 1350, 1349, 1350, 1351, 1351, 1352, 1352, 1349,
801 1352, 1353, 1349, 1214, 764, 764, 1349, 1354, 1354, 1354,
802 1355, 1355, 1354, 1355, 1356, 1356, 1357, 1357, 1354, 1357,
803 1358, 1354, 1214, 783, 783, 1354, 1359, 1359, 1359, 1360,
804 1360, 1359, 1360, 1361, 1361, 1362, 1362, 1359, 1362, 1363,
806 1359, 1214, 802, 802, 1359, 1364, 1364, 1364, 1365, 1364,
807 1365, 1366, 1367, 1364, 1367, 1368, 1364, 1369, 1369, 819,
808 1364, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
809 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
810 1370, 1370, 1370, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
811 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
812 1214, 1214, 1371, 1371, 1371, 1371, 1371, 1371, 1214, 1372,
813 1372, 1372, 1373, 1373, 1373, 1374, 1375, 1375, 878, 1374,
814 1214, 1374, 1214, 1376, 1376, 1376, 1377, 1378, 1378, 889,
815 1377, 1379, 1214, 893, 893, 1379, 1354, 783, 783, 783,
817 1354, 1359, 802, 802, 802, 1359, 1364, 819, 819, 819,
818 1364, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
819 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
820 1370, 1370, 1370, 1370, 1214, 1214, 1214, 1214, 1214, 1214,
821 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1371, 1371,
822 1371, 1371, 1371, 1371, 1214, 1372, 1372, 1373, 1373, 1373,
823 1374, 878, 878, 878, 1374, 1214, 1376, 1376, 1376, 1377,
824 889, 889, 889, 1377, 1379, 893, 893, 893, 1379, 1354,
825 783, 783, 783, 1354, 1359, 802, 802, 802, 1359, 1364,
826 819, 819, 819, 1364, 1370, 1370, 1370, 1370, 1370, 1370,
828 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
829 1370, 1370, 1370, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
830 1214, 1214, 1214, 1371, 1371, 1371, 1214, 1214, 1372, 1373,
831 1373, 1373, 1374, 878, 878, 878, 1374, 1214, 1376, 1376,
832 1376, 1377, 889, 889, 889, 1377, 1379, 893, 893, 893,
833 1379, 1354, 783, 783, 783, 1354, 1359, 802, 802, 802,
834 1359, 1364, 819, 819, 819, 1364, 1370, 1370, 1370, 1370,
835 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
836 1370, 1370, 1370, 1370, 1214, 1214, 1214, 1214, 1214, 1214,
837 1214, 1371, 1214, 1214, 1214, 1373, 878, 1374, 1374, 1374,
839 1376, 889, 1377, 1377, 1377, 893, 1379, 1379, 1379, 783,
840 1354, 1354, 1354, 802, 1359, 1359, 1359, 819, 1364, 1364,
841 1364, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
842 1370, 1370, 1370, 1370, 1370, 1214, 1214, 1214, 1214, 1214,
843 1214, 1214, 1371, 1214, 1214, 1373, 878, 1374, 1374, 1376,
844 889, 893, 1379, 1379, 783, 1354, 1354, 802, 1359, 1359,
845 819, 1364, 1364, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
846 1370, 1370, 1370, 1370, 1214, 1214, 1214, 1371, 1373, 878,
847 1376, 889, 893, 783, 802, 819, 1370, 1370, 1370, 1370,
848 1370, 1370, 1370, 1370, 1214, 1214, 1371, 1373, 878, 1376,
850 889, 893, 783, 802, 819, 1370, 1370, 1370, 1370, 1370,
851 1370, 1370, 1370, 0, 1214, 1214, 1214, 1214, 1214, 1214,
852 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
853 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
854 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
855 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
856 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
857 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
858 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
859 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
861 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
862 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
863 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
864 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
865 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
866 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
867 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
868 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214
871 static yyconst flex_int16_t yy_nxt[8062] =
872 { 0,
873 24, 25, 26, 27, 25, 28, 29, 30, 31, 32,
874 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
875 42, 42, 43, 44, 45, 46, 47, 47, 47, 47,
876 47, 47, 48, 47, 48, 47, 48, 48, 47, 24,
877 47, 49, 47, 47, 47, 47, 47, 50, 47, 51,
878 47, 47, 52, 47, 53, 47, 47, 54, 47, 55,
879 47, 47, 47, 47, 56, 57, 58, 85, 58, 86,
880 85, 193, 103, 87, 228, 473, 188, 474, 188, 188,
881 201, 229, 270, 59, 60, 68, 61, 60, 24, 104,
882 88, 189, 24, 24, 202, 24, 62, 127, 62, 63,
884 24, 127, 113, 193, 194, 64, 65, 24, 24, 41,
885 42, 42, 42, 41, 42, 42, 42, 204, 188, 190,
886 188, 188, 271, 196, 47, 197, 466, 198, 199, 205,
887 47, 467, 47, 189, 254, 66, 194, 47, 247, 248,
888 67, 296, 47, 249, 250, 251, 252, 24, 24, 69,
889 70, 71, 72, 70, 69, 73, 69, 74, 69, 69,
890 75, 69, 76, 69, 76, 77, 69, 78, 79, 79,
891 79, 69, 80, 69, 69, 81, 81, 81, 81, 81,
892 81, 82, 81, 82, 81, 82, 82, 81, 69, 81,
893 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
895 81, 83, 81, 81, 81, 81, 84, 81, 81, 81,
896 81, 81, 81, 69, 69, 89, 89, 90, 91, 89,
897 89, 92, 89, 89, 89, 89, 93, 89, 94, 89,
898 94, 95, 89, 96, 97, 97, 97, 89, 98, 89,
899 89, 99, 99, 99, 99, 99, 99, 100, 99, 100,
900 99, 100, 100, 99, 89, 99, 99, 99, 99, 99,
901 99, 99, 99, 99, 99, 99, 99, 101, 99, 99,
902 99, 99, 102, 99, 99, 99, 99, 99, 99, 89,
903 89, 24, 24, 105, 24, 24, 24, 29, 24, 24,
904 24, 24, 34, 24, 62, 24, 62, 106, 24, 107,
906 108, 108, 108, 24, 65, 24, 24, 109, 109, 109,
907 109, 109, 109, 110, 109, 110, 109, 110, 110, 109,
908 24, 109, 109, 109, 109, 109, 109, 109, 109, 109,
909 109, 109, 109, 111, 109, 109, 109, 109, 112, 109,
910 109, 109, 109, 109, 109, 24, 24, 114, 114, 115,
911 114, 114, 114, 29, 114, 114, 114, 114, 116, 114,
912 117, 114, 117, 118, 114, 119, 120, 120, 120, 114,
913 121, 114, 114, 122, 122, 122, 122, 122, 122, 123,
914 122, 123, 122, 123, 123, 122, 114, 122, 122, 122,
915 122, 122, 122, 122, 122, 122, 122, 122, 122, 124,
917 122, 122, 122, 122, 125, 122, 122, 122, 122, 122,
918 122, 114, 114, 128, 128, 129, 130, 128, 128, 131,
919 128, 128, 128, 128, 132, 128, 133, 128, 133, 134,
920 128, 135, 136, 136, 136, 128, 137, 128, 128, 138,
921 138, 138, 138, 138, 138, 139, 138, 139, 138, 139,
922 139, 138, 128, 138, 138, 138, 138, 138, 138, 138,
923 138, 138, 138, 138, 138, 140, 138, 138, 138, 138,
924 141, 138, 138, 138, 138, 138, 138, 128, 128, 143,
925 143, 144, 145, 143, 143, 146, 143, 143, 143, 143,
926 147, 143, 148, 143, 148, 149, 143, 150, 151, 151,
928 151, 143, 152, 143, 143, 153, 153, 153, 153, 153,
929 153, 154, 153, 154, 153, 154, 154, 153, 143, 153,
930 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
931 153, 155, 153, 153, 153, 153, 156, 153, 153, 153,
932 153, 153, 153, 143, 143, 158, 158, 159, 160, 158,
933 158, 161, 158, 158, 158, 158, 162, 158, 163, 158,
934 163, 164, 158, 165, 166, 166, 166, 158, 167, 158,
935 158, 168, 168, 168, 168, 168, 168, 169, 168, 169,
936 168, 169, 169, 168, 158, 168, 168, 168, 168, 168,
937 168, 168, 168, 168, 168, 168, 168, 170, 168, 168,
939 168, 168, 171, 168, 168, 168, 168, 168, 168, 158,
940 158, 173, 173, 174, 175, 173, 173, 176, 173, 173,
941 173, 173, 177, 173, 178, 173, 178, 179, 173, 180,
942 181, 181, 181, 173, 182, 173, 173, 183, 183, 183,
943 183, 183, 183, 184, 183, 184, 183, 184, 184, 183,
944 173, 183, 183, 183, 183, 183, 183, 183, 183, 183,
945 183, 183, 183, 185, 183, 183, 183, 183, 186, 183,
946 183, 183, 183, 183, 183, 173, 173, 206, 498, 207,
947 207, 207, 207, 499, 206, 208, 207, 207, 207, 207,
948 249, 250, 209, 210, 469, 211, 211, 211, 211, 353,
950 354, 212, 470, 213, 213, 213, 213, 213, 214, 213,
951 213, 213, 213, 213, 213, 213, 272, 213, 215, 216,
952 217, 213, 218, 213, 219, 213, 220, 221, 222, 223,
953 213, 224, 213, 225, 226, 213, 213, 213, 213, 213,
954 227, 230, 253, 207, 207, 207, 207, 328, 253, 254,
955 353, 354, 253, 231, 232, 254, 256, 273, 233, 254,
956 234, 253, 256, 235, 305, 330, 256, 231, 254, 230,
957 232, 207, 207, 207, 207, 256, 254, 275, 234, 275,
958 275, 253, 232, 296, 258, 1213, 233, 235, 254, 193,
959 261, 257, 257, 257, 257, 256, 262, 306, 232, 236,
961 504, 298, 328, 259, 237, 505, 260, 238, 239, 240,
962 241, 242, 243, 253, 253, 244, 253, 245, 246, 253,
963 254, 254, 194, 254, 551, 331, 254, 256, 256, 552,
964 256, 353, 354, 256, 275, 190, 275, 275, 206, 236,
965 207, 207, 207, 207, 475, 263, 476, 282, 283, 240,
966 264, 284, 243, 267, 253, 253, 332, 266, 246, 477,
967 203, 254, 254, 269, 265, 334, 268, 1214, 256, 256,
968 286, 287, 288, 286, 286, 287, 288, 286, 206, 377,
969 207, 207, 207, 207, 213, 213, 276, 263, 213, 254,
970 213, 267, 277, 278, 279, 280, 296, 281, 290, 213,
972 213, 300, 287, 301, 300, 492, 213, 398, 211, 211,
973 211, 211, 230, 493, 207, 207, 207, 207, 981, 299,
974 300, 287, 301, 300, 471, 232, 510, 254, 472, 233,
975 297, 297, 297, 297, 296, 292, 310, 310, 310, 310,
976 293, 232, 511, 308, 294, 309, 309, 309, 309, 302,
977 353, 354, 319, 319, 319, 319, 302, 379, 380, 302,
978 353, 356, 328, 302, 357, 319, 319, 319, 319, 379,
979 380, 371, 311, 312, 302, 309, 309, 309, 309, 323,
980 353, 360, 433, 302, 332, 313, 314, 322, 469, 357,
981 315, 332, 316, 562, 332, 317, 528, 358, 332, 313,
983 379, 380, 314, 211, 211, 211, 211, 379, 386, 332,
984 316, 327, 327, 327, 327, 434, 383, 504, 332, 317,
985 302, 302, 505, 302, 302, 302, 302, 302, 302, 302,
986 302, 302, 302, 302, 302, 506, 302, 302, 1212, 326,
987 379, 380, 320, 302, 302, 302, 463, 230, 403, 327,
988 327, 327, 327, 329, 329, 329, 329, 328, 464, 302,
989 232, 397, 476, 335, 233, 336, 336, 336, 336, 405,
990 406, 405, 406, 405, 412, 477, 232, 337, 337, 337,
991 337, 655, 409, 656, 302, 302, 302, 302, 535, 302,
992 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
994 302, 424, 302, 302, 321, 321, 321, 321, 320, 302,
995 302, 302, 986, 338, 346, 346, 346, 346, 346, 346,
996 346, 346, 538, 353, 354, 302, 372, 372, 372, 372,
997 353, 354, 438, 438, 438, 438, 349, 361, 447, 362,
998 362, 362, 362, 483, 483, 350, 363, 363, 363, 363,
999 302, 302, 339, 376, 336, 336, 336, 336, 372, 372,
1000 372, 372, 193, 352, 340, 341, 405, 406, 439, 342,
1001 352, 343, 254, 352, 344, 379, 380, 352, 340, 296,
1002 375, 341, 364, 379, 382, 490, 491, 383, 352, 343,
1003 1048, 389, 389, 389, 389, 194, 328, 352, 344, 332,
1005 332, 332, 332, 332, 332, 372, 332, 332, 332, 332,
1006 332, 332, 332, 332, 429, 332, 332, 379, 380, 305,
1007 384, 347, 332, 332, 332, 405, 406, 390, 486, 486,
1008 486, 387, 563, 388, 388, 388, 388, 378, 332, 398,
1009 398, 398, 398, 319, 378, 964, 423, 378, 507, 508,
1010 530, 378, 306, 398, 398, 398, 398, 453, 493, 453,
1011 453, 401, 378, 332, 332, 332, 332, 332, 332, 332,
1012 332, 378, 332, 332, 332, 332, 332, 332, 332, 332,
1013 402, 332, 332, 348, 348, 348, 348, 347, 332, 332,
1014 332, 405, 408, 405, 406, 409, 490, 529, 510, 405,
1016 406, 494, 546, 546, 332, 495, 535, 413, 510, 414,
1017 414, 414, 414, 535, 539, 415, 415, 415, 415, 496,
1018 424, 424, 424, 424, 1214, 537, 253, 404, 410, 332,
1019 332, 353, 354, 254, 404, 856, 275, 404, 275, 275,
1020 256, 404, 427, 536, 857, 365, 652, 362, 362, 362,
1021 362, 416, 404, 424, 424, 424, 424, 366, 367, 567,
1022 567, 404, 368, 653, 369, 253, 188, 370, 188, 188,
1023 535, 366, 254, 436, 367, 437, 437, 437, 437, 256,
1024 428, 189, 369, 424, 504, 447, 447, 447, 447, 572,
1025 711, 370, 352, 352, 353, 354, 352, 352, 352, 352,
1027 352, 352, 352, 352, 352, 352, 352, 450, 352, 352,
1028 515, 430, 254, 254, 373, 352, 352, 352, 430, 296,
1029 296, 430, 549, 549, 549, 430, 447, 447, 447, 447,
1030 398, 352, 454, 454, 454, 454, 430, 455, 455, 455,
1031 455, 456, 456, 456, 456, 430, 457, 457, 457, 457,
1032 541, 353, 354, 451, 353, 354, 352, 352, 352, 352,
1033 353, 354, 352, 352, 352, 352, 352, 352, 352, 352,
1034 352, 352, 352, 328, 352, 352, 374, 374, 374, 374,
1035 373, 352, 352, 352, 211, 211, 211, 211, 230, 253,
1036 207, 207, 207, 207, 353, 354, 254, 352, 253, 253,
1038 885, 232, 535, 256, 826, 233, 254, 211, 211, 211,
1039 211, 332, 694, 256, 634, 203, 827, 232, 458, 635,
1040 334, 712, 352, 352, 379, 380, 482, 482, 482, 482,
1041 286, 287, 288, 286, 458, 514, 535, 458, 391, 516,
1042 388, 388, 388, 388, 535, 253, 372, 253, 353, 356,
1043 392, 393, 254, 458, 254, 394, 977, 395, 710, 256,
1044 396, 256, 372, 484, 392, 484, 253, 393, 485, 485,
1045 485, 485, 956, 254, 254, 395, 513, 513, 513, 513,
1046 256, 296, 353, 354, 396, 378, 378, 379, 380, 378,
1047 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1049 519, 378, 378, 353, 354, 253, 253, 399, 378, 378,
1050 378, 398, 254, 254, 379, 380, 253, 542, 983, 256,
1051 256, 379, 380, 254, 378, 570, 570, 570, 253, 671,
1052 256, 253, 253, 379, 380, 254, 579, 672, 254, 254,
1053 673, 522, 256, 379, 382, 256, 256, 520, 521, 378,
1054 378, 378, 378, 379, 380, 378, 378, 378, 378, 378,
1055 378, 378, 378, 378, 378, 378, 517, 378, 378, 400,
1056 400, 400, 400, 399, 378, 378, 378, 518, 523, 524,
1057 253, 286, 287, 288, 286, 379, 380, 254, 379, 380,
1058 378, 535, 254, 433, 256, 540, 540, 540, 540, 296,
1060 300, 287, 301, 300, 300, 287, 301, 300, 310, 310,
1061 310, 310, 353, 360, 871, 378, 378, 405, 406, 353,
1062 354, 357, 525, 353, 360, 312, 434, 309, 309, 309,
1063 309, 417, 357, 414, 414, 414, 414, 328, 314, 595,
1064 379, 386, 315, 418, 419, 346, 379, 386, 420, 383,
1065 421, 405, 406, 422, 314, 383, 547, 418, 547, 1063,
1066 419, 548, 548, 548, 548, 968, 593, 447, 421, 319,
1067 319, 319, 319, 319, 319, 319, 319, 422, 404, 404,
1068 405, 406, 404, 404, 404, 404, 404, 404, 404, 404,
1069 404, 404, 404, 535, 404, 404, 310, 310, 310, 310,
1071 425, 404, 404, 404, 556, 353, 354, 543, 545, 545,
1072 545, 545, 730, 557, 405, 406, 731, 404, 872, 543,
1073 319, 581, 581, 543, 561, 561, 561, 561, 328, 337,
1074 337, 337, 337, 405, 406, 543, 328, 346, 346, 346,
1075 346, 535, 404, 404, 404, 404, 405, 406, 404, 404,
1076 404, 404, 404, 404, 404, 404, 404, 404, 404, 687,
1077 404, 404, 426, 426, 426, 426, 425, 404, 404, 404,
1078 870, 230, 575, 327, 327, 327, 327, 339, 692, 336,
1079 336, 336, 336, 404, 232, 1111, 379, 380, 233, 328,
1080 341, 568, 688, 568, 342, 319, 569, 569, 569, 569,
1082 232, 346, 346, 346, 346, 1049, 341, 721, 404, 404,
1083 440, 693, 437, 437, 437, 437, 372, 337, 337, 337,
1084 337, 735, 441, 442, 405, 408, 398, 443, 564, 444,
1085 405, 406, 445, 609, 405, 412, 441, 353, 354, 442,
1086 722, 576, 328, 409, 564, 629, 629, 444, 566, 566,
1087 566, 566, 1211, 584, 584, 584, 445, 430, 430, 564,
1088 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1089 430, 430, 969, 430, 430, 564, 632, 632, 632, 448,
1090 430, 430, 430, 353, 356, 353, 354, 357, 353, 356,
1091 405, 412, 357, 424, 353, 354, 430, 664, 665, 409,
1093 988, 363, 363, 363, 363, 582, 453, 582, 453, 453,
1094 583, 583, 583, 583, 372, 372, 372, 372, 405, 406,
1095 358, 430, 430, 430, 430, 358, 430, 430, 430, 430,
1096 430, 430, 430, 430, 430, 430, 430, 430, 1210, 430,
1097 430, 449, 449, 449, 449, 448, 430, 430, 430, 591,
1098 353, 354, 353, 354, 353, 354, 586, 483, 483, 379,
1099 382, 587, 430, 383, 1209, 625, 363, 363, 363, 363,
1100 580, 580, 580, 580, 379, 382, 328, 578, 383, 405,
1101 406, 578, 486, 486, 486, 379, 380, 430, 430, 550,
1102 550, 550, 550, 578, 546, 546, 384, 578, 550, 550,
1104 550, 597, 597, 886, 372, 372, 372, 372, 549, 549,
1105 549, 384, 550, 550, 550, 550, 550, 550, 302, 302,
1106 328, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1107 302, 302, 302, 611, 302, 302, 379, 380, 567, 567,
1108 320, 302, 302, 302, 592, 379, 380, 725, 810, 379,
1109 380, 1150, 389, 389, 389, 389, 598, 302, 598, 405,
1110 406, 599, 599, 599, 599, 600, 600, 600, 379, 380,
1111 405, 406, 602, 398, 618, 613, 613, 603, 982, 619,
1112 726, 811, 302, 302, 302, 302, 1208, 302, 302, 302,
1113 553, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1115 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1116 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1117 554, 554, 554, 302, 554, 554, 554, 554, 554, 554,
1118 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1119 554, 554, 554, 554, 554, 554, 554, 554, 302, 302,
1120 302, 302, 328, 302, 302, 302, 302, 302, 302, 302,
1121 302, 302, 302, 302, 302, 1207, 302, 302, 555, 555,
1122 555, 555, 320, 302, 302, 302, 736, 379, 380, 328,
1123 737, 379, 380, 398, 398, 398, 398, 353, 354, 302,
1124 570, 570, 570, 389, 389, 389, 389, 596, 596, 596,
1126 596, 405, 408, 535, 594, 409, 629, 629, 594, 438,
1127 438, 438, 438, 967, 302, 302, 571, 571, 571, 571,
1128 594, 353, 354, 608, 594, 571, 571, 571, 398, 398,
1129 398, 398, 957, 424, 424, 424, 424, 767, 410, 571,
1130 571, 571, 571, 571, 571, 332, 332, 332, 332, 332,
1131 332, 328, 332, 332, 332, 332, 332, 332, 332, 332,
1132 751, 332, 332, 607, 405, 406, 328, 347, 332, 332,
1133 332, 405, 408, 624, 884, 409, 405, 406, 881, 882,
1134 415, 415, 415, 415, 332, 405, 406, 614, 1206, 614,
1135 353, 354, 615, 615, 615, 615, 454, 454, 454, 454,
1137 1181, 616, 616, 616, 455, 455, 455, 455, 410, 332,
1138 332, 332, 332, 332, 332, 332, 332, 510, 332, 332,
1139 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
1140 332, 332, 332, 332, 332, 332, 332, 573, 573, 573,
1141 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1142 332, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1143 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1144 573, 573, 573, 573, 573, 332, 332, 332, 332, 332,
1145 332, 332, 332, 1034, 332, 332, 332, 332, 332, 332,
1146 332, 332, 319, 332, 332, 574, 574, 574, 574, 347,
1148 332, 332, 332, 405, 406, 332, 1043, 405, 406, 689,
1149 424, 424, 424, 424, 742, 346, 332, 353, 753, 415,
1150 415, 415, 415, 612, 612, 612, 612, 372, 746, 372,
1151 610, 894, 747, 895, 610, 440, 346, 437, 437, 437,
1152 437, 332, 332, 353, 354, 623, 610, 346, 442, 973,
1153 610, 254, 443, 456, 456, 456, 456, 365, 296, 362,
1154 362, 362, 362, 814, 442, 438, 438, 438, 438, 765,
1155 367, 253, 254, 766, 368, 1196, 626, 372, 254, 296,
1156 628, 628, 628, 628, 424, 256, 367, 353, 354, 987,
1157 714, 626, 626, 630, 447, 630, 815, 993, 631, 631,
1159 631, 631, 873, 585, 585, 585, 585, 626, 457, 457,
1160 457, 457, 585, 585, 585, 447, 447, 447, 447, 447,
1161 447, 447, 447, 379, 380, 1195, 585, 585, 585, 585,
1162 585, 585, 352, 352, 353, 354, 352, 352, 352, 352,
1163 352, 352, 352, 352, 352, 352, 352, 398, 352, 352,
1164 639, 899, 353, 757, 373, 352, 352, 352, 642, 640,
1165 642, 754, 770, 643, 643, 643, 643, 482, 482, 482,
1166 482, 352, 485, 485, 485, 485, 253, 253, 458, 485,
1167 485, 485, 485, 254, 254, 548, 548, 548, 548, 319,
1168 256, 256, 353, 354, 458, 1180, 352, 352, 352, 352,
1170 353, 354, 352, 352, 588, 352, 352, 352, 352, 352,
1171 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1172 352, 352, 352, 352, 589, 589, 589, 589, 589, 589,
1173 589, 589, 589, 589, 589, 589, 589, 352, 589, 589,
1174 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
1175 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
1176 589, 589, 352, 352, 352, 352, 353, 354, 352, 352,
1177 352, 352, 352, 352, 352, 352, 352, 352, 352, 1194,
1178 352, 352, 590, 590, 590, 590, 373, 352, 352, 352,
1179 253, 253, 253, 253, 253, 253, 1193, 254, 254, 254,
1181 254, 254, 254, 352, 256, 256, 256, 256, 256, 256,
1182 253, 1192, 253, 548, 548, 548, 548, 254, 687, 254,
1183 569, 569, 569, 569, 256, 698, 256, 253, 352, 352,
1184 379, 380, 353, 354, 254, 254, 701, 699, 697, 700,
1185 1191, 256, 296, 692, 391, 253, 388, 388, 388, 388,
1186 702, 688, 254, 253, 703, 353, 354, 393, 328, 256,
1187 254, 394, 569, 569, 569, 569, 715, 256, 704, 1190,
1188 716, 581, 581, 393, 379, 380, 693, 892, 717, 319,
1189 717, 1040, 705, 718, 718, 718, 718, 1097, 379, 776,
1190 601, 601, 601, 601, 332, 379, 380, 773, 689, 601,
1192 601, 601, 738, 742, 738, 353, 759, 739, 739, 739,
1193 739, 597, 597, 601, 601, 601, 601, 601, 601, 378,
1194 378, 379, 380, 378, 378, 378, 378, 378, 378, 378,
1195 378, 378, 378, 378, 535, 378, 378, 545, 545, 545,
1196 545, 399, 378, 378, 378, 632, 632, 632, 543, 566,
1197 566, 566, 566, 1029, 353, 354, 379, 380, 378, 398,
1198 564, 353, 354, 900, 543, 749, 319, 749, 253, 1147,
1199 750, 750, 750, 750, 447, 254, 564, 583, 583, 583,
1200 583, 991, 256, 378, 378, 378, 378, 379, 380, 378,
1201 378, 604, 378, 378, 378, 378, 378, 378, 378, 378,
1203 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1204 378, 605, 605, 605, 605, 605, 605, 605, 605, 605,
1205 605, 605, 605, 605, 378, 605, 605, 605, 605, 605,
1206 605, 605, 605, 605, 605, 605, 605, 605, 605, 605,
1207 605, 605, 605, 605, 605, 605, 605, 605, 605, 378,
1208 378, 378, 378, 379, 380, 378, 378, 378, 378, 378,
1209 378, 378, 378, 378, 378, 378, 328, 378, 378, 606,
1210 606, 606, 606, 399, 378, 378, 378, 353, 354, 721,
1211 398, 353, 354, 405, 406, 353, 354, 353, 753, 1041,
1212 378, 754, 1203, 580, 580, 580, 580, 583, 583, 583,
1214 583, 584, 584, 584, 578, 353, 759, 725, 810, 760,
1215 379, 380, 722, 379, 380, 378, 378, 405, 406, 1189,
1216 578, 768, 789, 768, 755, 254, 769, 769, 769, 769,
1217 254, 417, 296, 414, 414, 414, 414, 296, 379, 380,
1218 726, 811, 761, 424, 419, 379, 772, 904, 420, 773,
1219 379, 380, 379, 772, 596, 596, 596, 596, 424, 874,
1220 419, 405, 406, 786, 875, 594, 599, 599, 599, 599,
1221 1204, 405, 406, 379, 380, 405, 795, 617, 617, 617,
1222 617, 594, 774, 372, 792, 1106, 617, 617, 617, 599,
1223 599, 599, 599, 353, 354, 379, 778, 588, 1188, 779,
1225 617, 617, 617, 617, 617, 617, 404, 404, 405, 406,
1226 404, 404, 404, 404, 404, 404, 404, 404, 404, 404,
1227 404, 805, 404, 404, 379, 380, 353, 354, 425, 404,
1228 404, 404, 780, 405, 406, 784, 1187, 405, 406, 785,
1229 600, 600, 600, 398, 787, 404, 787, 405, 406, 788,
1230 788, 788, 788, 613, 613, 631, 631, 631, 631, 631,
1231 631, 631, 631, 615, 615, 615, 615, 379, 380, 896,
1232 404, 404, 404, 404, 405, 406, 404, 404, 620, 404,
1233 404, 404, 404, 404, 404, 404, 404, 404, 404, 404,
1234 404, 404, 404, 404, 404, 404, 404, 404, 621, 621,
1236 621, 621, 621, 621, 621, 621, 621, 621, 621, 621,
1237 621, 404, 621, 621, 621, 621, 621, 621, 621, 621,
1238 621, 621, 621, 621, 621, 621, 621, 621, 621, 621,
1239 621, 621, 621, 621, 621, 621, 404, 404, 404, 404,
1240 405, 406, 404, 404, 404, 404, 404, 404, 404, 404,
1241 404, 404, 404, 1112, 404, 404, 622, 622, 622, 622,
1242 425, 404, 404, 404, 803, 405, 406, 424, 804, 405,
1243 406, 905, 424, 405, 406, 405, 791, 404, 1119, 792,
1244 1183, 612, 612, 612, 612, 615, 615, 615, 615, 616,
1245 616, 616, 610, 806, 398, 806, 379, 778, 807, 807,
1247 807, 807, 404, 404, 633, 633, 633, 633, 610, 1177,
1248 353, 757, 793, 633, 633, 633, 405, 797, 819, 754,
1249 798, 814, 820, 447, 379, 380, 447, 633, 633, 633,
1250 633, 633, 633, 430, 430, 398, 430, 430, 430, 430,
1251 430, 430, 430, 430, 430, 430, 430, 430, 1110, 430,
1252 430, 379, 380, 799, 815, 448, 430, 430, 430, 628,
1253 628, 628, 628, 643, 643, 643, 643, 901, 353, 757,
1254 626, 253, 430, 643, 643, 643, 643, 754, 254, 718,
1255 718, 718, 718, 405, 406, 256, 626, 718, 718, 718,
1256 718, 739, 739, 739, 739, 346, 897, 430, 430, 430,
1258 430, 1182, 430, 430, 430, 636, 430, 430, 430, 430,
1259 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1260 430, 430, 430, 430, 430, 637, 637, 637, 637, 637,
1261 637, 637, 637, 637, 637, 637, 637, 637, 430, 637,
1262 637, 637, 637, 637, 637, 637, 637, 637, 637, 637,
1263 637, 637, 637, 637, 637, 637, 637, 637, 637, 637,
1264 637, 637, 637, 430, 430, 430, 430, 1176, 430, 430,
1265 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1266 1098, 430, 430, 638, 638, 638, 638, 448, 430, 430,
1267 430, 253, 405, 791, 253, 253, 253, 1115, 254, 253,
1269 253, 254, 254, 254, 430, 256, 254, 254, 256, 256,
1270 256, 379, 776, 256, 256, 739, 739, 739, 739, 978,
1271 773, 379, 380, 372, 863, 604, 319, 353, 354, 430,
1272 430, 550, 550, 550, 550, 865, 864, 866, 424, 867,
1273 550, 550, 550, 750, 750, 750, 750, 405, 406, 868,
1274 405, 406, 405, 797, 550, 550, 550, 550, 550, 550,
1275 302, 302, 328, 302, 302, 302, 302, 302, 302, 302,
1276 302, 302, 302, 302, 302, 424, 302, 302, 353, 354,
1277 379, 776, 728, 302, 302, 302, 353, 753, 1114, 773,
1278 754, 1175, 902, 254, 750, 750, 750, 750, 1101, 302,
1280 296, 328, 405, 795, 353, 753, 447, 992, 754, 353,
1281 759, 792, 1120, 760, 346, 353, 759, 405, 406, 760,
1282 1039, 620, 1102, 755, 302, 302, 302, 302, 959, 302,
1283 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1284 302, 755, 302, 302, 379, 380, 761, 1116, 320, 302,
1285 302, 302, 761, 379, 380, 405, 795, 447, 353, 354,
1286 769, 769, 769, 769, 792, 302, 353, 354, 979, 769,
1287 769, 769, 769, 379, 772, 379, 772, 773, 1093, 773,
1288 1144, 379, 778, 379, 778, 779, 1174, 779, 424, 1035,
1289 302, 302, 302, 302, 319, 302, 302, 302, 302, 302,
1291 302, 302, 302, 302, 302, 302, 302, 975, 302, 302,
1292 774, 1098, 774, 1148, 320, 302, 302, 302, 780, 1050,
1293 780, 405, 406, 405, 406, 405, 406, 1093, 405, 791,
1294 372, 302, 792, 807, 807, 807, 807, 788, 788, 788,
1295 788, 788, 788, 788, 788, 328, 729, 807, 807, 807,
1296 807, 379, 380, 984, 353, 354, 302, 302, 571, 571,
1297 571, 571, 405, 406, 989, 793, 906, 571, 571, 571,
1298 405, 791, 379, 380, 792, 1053, 405, 797, 1099, 398,
1299 798, 571, 571, 571, 571, 571, 571, 332, 332, 332,
1300 332, 332, 332, 1047, 332, 332, 332, 332, 332, 332,
1302 332, 332, 915, 332, 332, 353, 354, 793, 1173, 744,
1303 332, 332, 332, 799, 398, 916, 1027, 1027, 1027, 1027,
1304 253, 980, 917, 1036, 319, 1184, 332, 254, 319, 253,
1305 253, 405, 797, 253, 256, 798, 254, 254, 254, 1103,
1306 254, 1044, 1172, 256, 256, 296, 346, 256, 1171, 405,
1307 406, 332, 332, 332, 332, 332, 332, 332, 332, 953,
1308 332, 332, 332, 332, 332, 332, 332, 332, 799, 332,
1309 332, 949, 951, 254, 447, 347, 332, 332, 332, 958,
1310 296, 950, 253, 1118, 254, 346, 253, 253, 253, 254,
1311 253, 296, 332, 254, 254, 254, 256, 254, 985, 254,
1313 256, 256, 256, 1045, 256, 1058, 296, 1064, 346, 424,
1314 960, 447, 1065, 1103, 1031, 1144, 447, 332, 332, 332,
1315 332, 332, 332, 332, 332, 1030, 332, 332, 332, 332,
1316 332, 332, 332, 332, 952, 332, 332, 954, 253, 253,
1317 253, 347, 332, 332, 332, 254, 254, 254, 1028, 254,
1318 1028, 1028, 256, 256, 256, 1170, 296, 1107, 332, 1037,
1319 1037, 1037, 1037, 1046, 1046, 1046, 1046, 379, 380, 535,
1320 1094, 1024, 1169, 745, 353, 354, 1025, 1026, 447, 1032,
1321 379, 380, 1161, 332, 332, 353, 354, 1068, 328, 1168,
1322 1051, 1051, 1051, 1051, 379, 380, 1056, 1056, 1056, 1056,
1324 1069, 585, 585, 585, 585, 1095, 1052, 1070, 1108, 372,
1325 585, 585, 585, 1066, 1066, 1066, 1066, 405, 406, 1027,
1326 1027, 1027, 1027, 1167, 585, 585, 585, 585, 585, 585,
1327 352, 352, 353, 354, 352, 352, 352, 352, 352, 352,
1328 352, 352, 352, 352, 352, 1104, 352, 352, 405, 406,
1329 254, 254, 763, 352, 352, 352, 1057, 296, 296, 1093,
1330 372, 253, 1166, 253, 1061, 1061, 1061, 1061, 254, 352,
1331 254, 1028, 1094, 1028, 1028, 256, 253, 256, 405, 406,
1332 1165, 346, 1152, 254, 1151, 372, 353, 354, 1108, 1146,
1333 256, 346, 1164, 1096, 352, 352, 352, 352, 353, 354,
1335 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1336 352, 1092, 352, 352, 1093, 1094, 398, 424, 373, 352,
1337 352, 352, 1100, 1163, 1155, 254, 254, 1105, 1185, 353,
1338 354, 1109, 296, 296, 1120, 352, 1037, 1037, 1037, 1037,
1339 1121, 1046, 1046, 1046, 1046, 1051, 1051, 1051, 1051, 353,
1340 354, 1107, 1145, 1153, 1066, 1066, 1066, 1066, 353, 354,
1341 352, 352, 352, 352, 353, 354, 352, 352, 352, 352,
1342 352, 352, 352, 352, 352, 352, 352, 328, 352, 352,
1343 379, 380, 1113, 1104, 373, 352, 352, 352, 405, 406,
1344 1117, 379, 380, 1112, 1149, 253, 1056, 1056, 1056, 1056,
1346 424, 352, 254, 1099, 1061, 1061, 1061, 1061, 1158, 256,
1347 353, 354, 1200, 1119, 1154, 1162, 764, 379, 380, 1111,
1348 1145, 1156, 405, 406, 1116, 254, 352, 352, 379, 380,
1349 379, 380, 296, 1094, 1157, 405, 406, 1115, 1142, 1159,
1350 1143, 353, 354, 253, 601, 601, 601, 601, 405, 406,
1351 254, 1141, 1160, 601, 601, 601, 1140, 256, 379, 380,
1352 379, 380, 405, 406, 405, 406, 1179, 601, 601, 601,
1353 601, 601, 601, 378, 378, 379, 380, 378, 378, 378,
1354 378, 378, 378, 378, 378, 378, 378, 378, 1139, 378,
1355 378, 1178, 447, 254, 319, 782, 378, 378, 378, 1186,
1357 296, 1199, 346, 372, 1202, 447, 1138, 253, 253, 1201,
1358 254, 1137, 378, 1205, 254, 254, 1136, 296, 1135, 1134,
1359 1133, 256, 256, 1132, 1131, 1130, 1129, 1128, 1127, 1126,
1360 1125, 1124, 1123, 1122, 535, 1198, 1091, 378, 378, 378,
1361 378, 379, 380, 378, 378, 378, 378, 378, 378, 378,
1362 378, 378, 378, 378, 1090, 378, 378, 1197, 1089, 1088,
1363 1087, 399, 378, 378, 378, 1086, 1085, 1084, 1083, 1082,
1364 1081, 1080, 1079, 1078, 1077, 1076, 1075, 1074, 378, 1073,
1365 1072, 1071, 1067, 1062, 1060, 1059, 1055, 1054, 1042, 1038,
1366 1033, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015,
1368 1014, 1013, 1012, 378, 378, 378, 378, 379, 380, 378,
1369 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1370 1011, 378, 378, 1010, 1009, 1008, 1007, 399, 378, 378,
1371 378, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998,
1372 997, 996, 995, 994, 378, 990, 974, 970, 966, 881,
1373 965, 961, 535, 955, 948, 947, 946, 945, 944, 783,
1374 943, 942, 941, 940, 939, 938, 937, 936, 935, 378,
1375 378, 405, 406, 934, 933, 932, 931, 930, 929, 928,
1376 927, 926, 925, 924, 923, 922, 921, 617, 617, 617,
1377 617, 920, 919, 918, 914, 913, 617, 617, 617, 912,
1379 911, 910, 636, 810, 907, 891, 890, 510, 887, 883,
1380 617, 617, 617, 617, 617, 617, 404, 404, 405, 406,
1381 404, 404, 404, 404, 404, 404, 404, 404, 404, 404,
1382 404, 880, 404, 404, 879, 553, 721, 876, 801, 404,
1383 404, 404, 539, 708, 709, 869, 510, 696, 511, 687,
1384 862, 861, 860, 859, 858, 404, 855, 854, 853, 852,
1385 851, 850, 849, 848, 847, 846, 845, 844, 843, 842,
1386 841, 840, 839, 838, 837, 836, 835, 834, 833, 832,
1387 404, 404, 404, 404, 405, 406, 404, 404, 404, 404,
1388 404, 404, 404, 404, 404, 404, 404, 831, 404, 404,
1390 830, 829, 828, 825, 425, 404, 404, 404, 824, 823,
1391 822, 821, 810, 808, 748, 740, 328, 734, 733, 732,
1392 721, 404, 719, 713, 534, 535, 709, 531, 532, 707,
1393 671, 655, 652, 706, 696, 690, 687, 685, 684, 683,
1394 682, 681, 680, 679, 678, 677, 404, 404, 404, 404,
1395 405, 406, 404, 404, 404, 404, 404, 404, 404, 404,
1396 404, 404, 404, 676, 404, 404, 675, 674, 670, 669,
1397 425, 404, 404, 404, 668, 667, 666, 663, 662, 661,
1398 660, 659, 658, 657, 654, 651, 650, 404, 649, 648,
1399 647, 646, 645, 644, 641, 627, 433, 577, 565, 560,
1401 559, 558, 802, 544, 305, 535, 532, 499, 473, 471,
1402 527, 464, 404, 404, 633, 633, 633, 633, 526, 328,
1403 509, 503, 502, 633, 633, 633, 501, 500, 497, 489,
1404 488, 481, 480, 479, 478, 468, 465, 633, 633, 633,
1405 633, 633, 633, 430, 430, 462, 430, 430, 430, 430,
1406 430, 430, 430, 430, 430, 430, 430, 430, 461, 430,
1407 430, 460, 193, 452, 446, 817, 430, 430, 430, 433,
1408 431, 351, 345, 274, 328, 325, 324, 318, 305, 303,
1409 274, 285, 430, 193, 285, 274, 193, 200, 191, 1214,
1410 187, 172, 157, 142, 126, 113, 1214, 1214, 1214, 1214,
1412 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430, 430, 430,
1413 430, 1214, 430, 430, 430, 430, 430, 430, 430, 430,
1414 430, 430, 430, 430, 1214, 430, 430, 1214, 1214, 1214,
1415 1214, 448, 430, 430, 430, 1214, 1214, 1214, 1214, 1214,
1416 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430, 1214,
1417 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1418 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1419 1214, 1214, 1214, 430, 430, 430, 430, 1214, 430, 430,
1420 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1421 1214, 430, 430, 1214, 1214, 1214, 1214, 448, 430, 430,
1423 430, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1424 1214, 1214, 1214, 1214, 430, 1214, 1214, 1214, 1214, 1214,
1425 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 818,
1426 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430,
1427 430, 302, 302, 1214, 302, 302, 302, 302, 302, 302,
1428 302, 302, 302, 302, 302, 302, 1214, 302, 302, 1214,
1429 1214, 1214, 1214, 728, 302, 302, 302, 1214, 1214, 1214,
1430 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1431 302, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1432 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1434 1214, 1214, 1214, 1214, 1214, 302, 302, 302, 302, 1214,
1435 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1436 302, 302, 1214, 302, 302, 1214, 1214, 1214, 1214, 320,
1437 302, 302, 302, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1438 1214, 1214, 1214, 1214, 1214, 1214, 302, 1214, 1214, 1214,
1439 1214, 1214, 877, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1440 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1441 1214, 302, 302, 302, 302, 1214, 302, 302, 302, 302,
1442 302, 302, 302, 302, 302, 302, 302, 302, 1214, 302,
1443 302, 1214, 1214, 1214, 1214, 320, 302, 302, 302, 1214,
1445 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1446 1214, 1214, 302, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1447 1214, 1214, 878, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1448 1214, 1214, 1214, 1214, 1214, 1214, 1214, 302, 302, 332,
1449 332, 332, 332, 332, 332, 1214, 332, 332, 332, 332,
1450 332, 332, 332, 332, 1214, 332, 332, 1214, 1214, 1214,
1451 1214, 744, 332, 332, 332, 1214, 1214, 1214, 1214, 1214,
1452 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 332, 1214,
1453 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1454 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1456 1214, 1214, 1214, 332, 332, 332, 332, 332, 332, 332,
1457 332, 1214, 332, 332, 332, 332, 332, 332, 332, 332,
1458 1214, 332, 332, 1214, 1214, 1214, 1214, 347, 332, 332,
1459 332, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1460 1214, 1214, 1214, 1214, 332, 1214, 1214, 1214, 1214, 1214,
1461 888, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1462 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 332,
1463 332, 332, 332, 332, 332, 332, 332, 1214, 332, 332,
1464 332, 332, 332, 332, 332, 332, 1214, 332, 332, 1214,
1465 1214, 1214, 1214, 347, 332, 332, 332, 1214, 1214, 1214,
1467 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1468 332, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1469 889, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1470 1214, 1214, 1214, 1214, 1214, 332, 332, 352, 352, 353,
1471 354, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1472 352, 352, 1214, 352, 352, 1214, 1214, 1214, 1214, 763,
1473 352, 352, 352, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1474 1214, 1214, 1214, 1214, 1214, 1214, 352, 1214, 1214, 1214,
1475 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1476 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1478 1214, 352, 352, 352, 352, 353, 354, 352, 352, 352,
1479 352, 352, 352, 352, 352, 352, 352, 352, 372, 352,
1480 352, 372, 372, 372, 372, 373, 352, 352, 352, 372,
1481 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1482 372, 372, 352, 372, 372, 372, 372, 372, 893, 372,
1483 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1484 372, 372, 372, 372, 372, 372, 372, 352, 352, 378,
1485 378, 379, 380, 378, 378, 378, 378, 378, 378, 378,
1486 378, 378, 378, 378, 1214, 378, 378, 1214, 1214, 1214,
1487 1214, 782, 378, 378, 378, 1214, 1214, 1214, 1214, 1214,
1489 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 378, 1214,
1490 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1491 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1492 1214, 1214, 1214, 378, 378, 378, 378, 379, 380, 378,
1493 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1494 398, 378, 378, 398, 398, 398, 398, 399, 378, 378,
1495 378, 398, 398, 398, 398, 398, 398, 398, 398, 398,
1496 398, 398, 398, 398, 378, 398, 398, 398, 398, 398,
1497 898, 398, 398, 398, 398, 398, 398, 398, 398, 398,
1498 398, 398, 398, 398, 398, 398, 398, 398, 398, 378,
1500 378, 404, 404, 405, 406, 404, 404, 404, 404, 404,
1501 404, 404, 404, 404, 404, 404, 1214, 404, 404, 1214,
1502 1214, 1214, 1214, 801, 404, 404, 404, 1214, 1214, 1214,
1503 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1504 404, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1505 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1506 1214, 1214, 1214, 1214, 1214, 404, 404, 404, 404, 405,
1507 406, 404, 404, 404, 404, 404, 404, 404, 404, 404,
1508 404, 404, 424, 404, 404, 424, 424, 424, 424, 425,
1509 404, 404, 404, 424, 424, 424, 424, 424, 424, 424,
1511 424, 424, 424, 424, 424, 424, 404, 424, 424, 424,
1512 424, 424, 903, 424, 424, 424, 424, 424, 424, 424,
1513 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
1514 424, 404, 404, 430, 430, 1214, 430, 430, 430, 430,
1515 430, 430, 430, 430, 430, 430, 430, 430, 1214, 430,
1516 430, 1214, 1214, 1214, 1214, 817, 430, 430, 430, 1214,
1517 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1518 1214, 1214, 430, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1519 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1520 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430, 430, 430,
1522 430, 1214, 430, 430, 430, 430, 430, 430, 430, 430,
1523 430, 430, 430, 430, 1214, 430, 430, 1214, 1214, 1214,
1524 1214, 448, 430, 430, 430, 1214, 1214, 1214, 1214, 1214,
1525 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430, 1214,
1526 1214, 1214, 1214, 1214, 908, 1214, 1214, 1214, 1214, 1214,
1527 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1528 1214, 1214, 1214, 430, 430, 430, 430, 1214, 430, 430,
1529 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1530 1214, 430, 430, 1214, 1214, 1214, 1214, 448, 430, 430,
1531 430, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1533 1214, 1214, 1214, 1214, 430, 1214, 1214, 1214, 1214, 1214,
1534 1214, 1214, 1214, 1214, 909, 1214, 1214, 1214, 1214, 1214,
1535 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 430,
1536 430, 302, 302, 1214, 302, 302, 302, 302, 302, 302,
1537 302, 302, 302, 302, 302, 302, 1214, 302, 302, 1214,
1538 1214, 1214, 1214, 320, 302, 302, 302, 1214, 1214, 1214,
1539 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1540 302, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1541 1214, 1214, 1214, 1214, 1214, 1214, 1214, 962, 1214, 1214,
1542 1214, 1214, 1214, 1214, 1214, 302, 302, 302, 302, 1214,
1544 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
1545 302, 302, 1214, 302, 302, 1214, 1214, 1214, 1214, 320,
1546 302, 302, 302, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1547 1214, 1214, 1214, 1214, 1214, 1214, 302, 1214, 1214, 1214,
1548 1214, 1214, 1214, 1214, 1214, 1214, 1214, 963, 1214, 1214,
1549 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1550 1214, 302, 302, 332, 332, 332, 332, 332, 332, 1214,
1551 332, 332, 332, 332, 332, 332, 332, 332, 1214, 332,
1552 332, 1214, 1214, 1214, 1214, 347, 332, 332, 332, 1214,
1553 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1555 1214, 1214, 332, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1556 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 971,
1557 1214, 1214, 1214, 1214, 1214, 1214, 1214, 332, 332, 332,
1558 332, 332, 332, 332, 332, 1214, 332, 332, 332, 332,
1559 332, 332, 332, 332, 1214, 332, 332, 1214, 1214, 1214,
1560 1214, 347, 332, 332, 332, 1214, 1214, 1214, 1214, 1214,
1561 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 332, 1214,
1562 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 972,
1563 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1564 1214, 1214, 1214, 332, 332, 352, 352, 353, 354, 352,
1566 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1567 372, 352, 352, 372, 372, 372, 372, 373, 352, 352,
1568 352, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1569 372, 372, 372, 372, 352, 372, 372, 372, 372, 372,
1570 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1571 372, 976, 372, 372, 372, 372, 372, 372, 372, 352,
1572 352, 192, 1214, 192, 192, 192, 192, 192, 192, 192,
1573 192, 192, 195, 1214, 1214, 195, 195, 203, 1214, 203,
1574 203, 203, 203, 203, 203, 203, 203, 203, 255, 255,
1575 255, 255, 255, 255, 255, 255, 289, 289, 289, 289,
1577 291, 1214, 291, 1214, 291, 291, 291, 291, 295, 295,
1578 295, 295, 295, 295, 295, 302, 1214, 302, 302, 302,
1579 302, 302, 302, 302, 302, 302, 304, 1214, 304, 304,
1580 304, 304, 304, 304, 304, 304, 304, 307, 1214, 307,
1581 307, 307, 307, 307, 307, 307, 307, 307, 319, 1214,
1582 319, 319, 319, 319, 319, 319, 319, 319, 319, 254,
1583 254, 254, 254, 254, 254, 254, 332, 332, 1214, 332,
1584 332, 332, 332, 332, 332, 332, 332, 333, 333, 333,
1585 333, 333, 333, 333, 333, 333, 333, 333, 346, 346,
1586 1214, 346, 346, 346, 346, 346, 346, 346, 346, 352,
1588 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1589 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
1590 355, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1591 359, 359, 372, 372, 372, 372, 372, 372, 372, 372,
1592 372, 372, 372, 378, 378, 378, 378, 378, 378, 378,
1593 378, 378, 378, 378, 381, 381, 381, 381, 381, 381,
1594 381, 381, 381, 381, 381, 385, 385, 385, 385, 385,
1595 385, 385, 385, 385, 385, 385, 398, 398, 398, 398,
1596 398, 398, 398, 398, 398, 398, 398, 404, 404, 404,
1597 404, 404, 404, 404, 404, 404, 404, 404, 407, 407,
1599 407, 407, 407, 407, 407, 407, 407, 407, 407, 411,
1600 411, 411, 411, 411, 411, 411, 411, 411, 411, 411,
1601 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
1602 424, 430, 1214, 430, 430, 430, 430, 430, 430, 430,
1603 430, 430, 432, 1214, 432, 432, 432, 432, 432, 432,
1604 432, 432, 432, 435, 1214, 435, 435, 435, 435, 435,
1605 435, 435, 435, 435, 447, 1214, 447, 447, 447, 447,
1606 447, 447, 447, 447, 447, 195, 1214, 1214, 195, 195,
1607 203, 1214, 203, 203, 203, 203, 203, 203, 203, 203,
1608 203, 459, 1214, 1214, 459, 459, 459, 487, 1214, 1214,
1610 487, 254, 254, 254, 254, 254, 254, 254, 255, 255,
1611 255, 255, 255, 255, 255, 255, 512, 1214, 1214, 1214,
1612 512, 512, 512, 512, 512, 531, 531, 531, 531, 531,
1613 531, 533, 533, 533, 533, 534, 534, 534, 534, 534,
1614 534, 295, 295, 295, 295, 295, 295, 295, 302, 1214,
1615 302, 302, 302, 302, 302, 302, 302, 302, 302, 304,
1616 1214, 304, 304, 304, 304, 304, 304, 304, 304, 304,
1617 307, 1214, 307, 307, 307, 307, 307, 307, 307, 307,
1618 307, 319, 1214, 319, 319, 319, 319, 319, 319, 319,
1619 319, 319, 332, 332, 1214, 332, 332, 332, 332, 332,
1621 332, 332, 332, 333, 333, 333, 333, 333, 333, 333,
1622 333, 333, 333, 333, 346, 346, 1214, 346, 346, 346,
1623 346, 346, 346, 346, 346, 352, 352, 352, 352, 352,
1624 352, 352, 352, 352, 352, 352, 355, 355, 355, 355,
1625 355, 355, 355, 355, 355, 355, 355, 359, 359, 359,
1626 359, 359, 359, 359, 359, 359, 359, 359, 372, 372,
1627 372, 372, 372, 372, 372, 372, 372, 372, 372, 378,
1628 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1629 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
1630 381, 385, 385, 385, 385, 385, 385, 385, 385, 385,
1632 385, 385, 398, 398, 398, 398, 398, 398, 398, 398,
1633 398, 398, 398, 404, 404, 404, 404, 404, 404, 404,
1634 404, 404, 404, 404, 407, 407, 407, 407, 407, 407,
1635 407, 407, 407, 407, 407, 411, 411, 411, 411, 411,
1636 411, 411, 411, 411, 411, 411, 424, 424, 424, 424,
1637 424, 424, 424, 424, 424, 424, 424, 430, 1214, 430,
1638 430, 430, 430, 430, 430, 430, 430, 430, 432, 1214,
1639 432, 432, 432, 432, 432, 432, 432, 432, 432, 435,
1640 1214, 435, 435, 435, 435, 435, 435, 435, 435, 435,
1641 447, 1214, 447, 447, 447, 447, 447, 447, 447, 447,
1643 447, 195, 1214, 1214, 195, 195, 459, 1214, 1214, 459,
1644 459, 459, 487, 1214, 1214, 487, 686, 1214, 686, 686,
1645 686, 686, 686, 686, 686, 686, 686, 689, 1214, 689,
1646 689, 689, 689, 689, 689, 689, 689, 689, 691, 1214,
1647 691, 691, 691, 691, 691, 691, 691, 691, 691, 511,
1648 1214, 511, 511, 511, 511, 511, 511, 695, 695, 695,
1649 695, 695, 695, 695, 255, 255, 255, 255, 255, 255,
1650 255, 255, 531, 531, 531, 531, 531, 531, 708, 708,
1651 708, 708, 708, 708, 534, 534, 534, 534, 534, 534,
1652 539, 539, 539, 539, 539, 539, 295, 295, 295, 295,
1654 295, 295, 295, 302, 1214, 302, 302, 302, 302, 302,
1655 302, 302, 302, 302, 720, 1214, 720, 720, 720, 720,
1656 720, 720, 720, 720, 720, 723, 1214, 723, 723, 723,
1657 723, 723, 723, 723, 723, 723, 724, 1214, 724, 724,
1658 724, 724, 724, 724, 724, 724, 724, 727, 1214, 727,
1659 727, 727, 727, 727, 727, 727, 727, 727, 319, 1214,
1660 319, 319, 319, 319, 319, 319, 319, 319, 319, 254,
1661 254, 254, 254, 254, 254, 254, 332, 332, 1214, 332,
1662 332, 332, 332, 332, 332, 332, 332, 741, 741, 741,
1663 741, 741, 741, 741, 741, 741, 741, 741, 743, 743,
1665 1214, 743, 743, 743, 743, 743, 743, 743, 743, 346,
1666 346, 1214, 346, 346, 346, 346, 346, 346, 346, 346,
1667 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1668 352, 752, 752, 752, 752, 752, 752, 752, 752, 752,
1669 752, 752, 756, 756, 756, 756, 756, 756, 756, 756,
1670 756, 756, 756, 758, 758, 758, 758, 758, 758, 758,
1671 758, 758, 758, 758, 762, 762, 762, 762, 762, 762,
1672 762, 762, 762, 762, 762, 372, 372, 372, 372, 372,
1673 372, 372, 372, 372, 372, 372, 378, 378, 378, 378,
1674 378, 378, 378, 378, 378, 378, 378, 771, 771, 771,
1676 771, 771, 771, 771, 771, 771, 771, 771, 775, 775,
1677 775, 775, 775, 775, 775, 775, 775, 775, 775, 777,
1678 777, 777, 777, 777, 777, 777, 777, 777, 777, 777,
1679 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
1680 781, 398, 398, 398, 398, 398, 398, 398, 398, 398,
1681 398, 398, 404, 404, 404, 404, 404, 404, 404, 404,
1682 404, 404, 404, 790, 790, 790, 790, 790, 790, 790,
1683 790, 790, 790, 790, 794, 794, 794, 794, 794, 794,
1684 794, 794, 794, 794, 794, 796, 796, 796, 796, 796,
1685 796, 796, 796, 796, 796, 796, 800, 800, 800, 800,
1687 800, 800, 800, 800, 800, 800, 800, 424, 424, 424,
1688 424, 424, 424, 424, 424, 424, 424, 424, 430, 1214,
1689 430, 430, 430, 430, 430, 430, 430, 430, 430, 809,
1690 1214, 809, 809, 809, 809, 809, 809, 809, 809, 809,
1691 812, 1214, 812, 812, 812, 812, 812, 812, 812, 812,
1692 812, 813, 1214, 813, 813, 813, 813, 813, 813, 813,
1693 813, 813, 816, 1214, 816, 816, 816, 816, 816, 816,
1694 816, 816, 816, 447, 1214, 447, 447, 447, 447, 447,
1695 447, 447, 447, 447, 459, 1214, 1214, 459, 459, 459,
1696 686, 1214, 686, 686, 686, 686, 686, 686, 686, 686,
1698 686, 689, 1214, 689, 689, 689, 689, 689, 689, 689,
1699 689, 689, 691, 1214, 691, 691, 691, 691, 691, 691,
1700 691, 691, 691, 695, 695, 695, 695, 695, 695, 695,
1701 255, 255, 255, 255, 255, 255, 255, 255, 708, 708,
1702 708, 708, 708, 708, 534, 534, 534, 534, 534, 534,
1703 295, 295, 295, 295, 295, 295, 295, 302, 1214, 302,
1704 302, 302, 302, 302, 302, 302, 302, 302, 720, 1214,
1705 720, 720, 720, 720, 720, 720, 720, 720, 720, 723,
1706 1214, 723, 723, 723, 723, 723, 723, 723, 723, 723,
1707 724, 1214, 724, 724, 724, 724, 724, 724, 724, 724,
1709 724, 727, 1214, 727, 727, 727, 727, 727, 727, 727,
1710 727, 727, 319, 1214, 319, 319, 319, 319, 319, 319,
1711 319, 319, 319, 254, 254, 254, 254, 254, 254, 254,
1712 332, 332, 1214, 332, 332, 332, 332, 332, 332, 332,
1713 332, 741, 741, 741, 741, 741, 741, 741, 741, 741,
1714 741, 741, 743, 743, 1214, 743, 743, 743, 743, 743,
1715 743, 743, 743, 346, 346, 1214, 346, 346, 346, 346,
1716 346, 346, 346, 346, 352, 352, 352, 352, 352, 352,
1717 352, 352, 352, 352, 352, 752, 752, 752, 752, 752,
1718 752, 752, 752, 752, 752, 752, 756, 756, 756, 756,
1720 756, 756, 756, 756, 756, 756, 756, 758, 758, 758,
1721 758, 758, 758, 758, 758, 758, 758, 758, 762, 762,
1722 762, 762, 762, 762, 762, 762, 762, 762, 762, 378,
1723 378, 378, 378, 378, 378, 378, 378, 378, 378, 378,
1724 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
1725 771, 775, 775, 775, 775, 775, 775, 775, 775, 775,
1726 775, 775, 777, 777, 777, 777, 777, 777, 777, 777,
1727 777, 777, 777, 781, 781, 781, 781, 781, 781, 781,
1728 781, 781, 781, 781, 404, 404, 404, 404, 404, 404,
1729 404, 404, 404, 404, 404, 790, 790, 790, 790, 790,
1731 790, 790, 790, 790, 790, 790, 794, 794, 794, 794,
1732 794, 794, 794, 794, 794, 794, 794, 796, 796, 796,
1733 796, 796, 796, 796, 796, 796, 796, 796, 800, 800,
1734 800, 800, 800, 800, 800, 800, 800, 800, 800, 430,
1735 1214, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1736 809, 1214, 809, 809, 809, 809, 809, 809, 809, 809,
1737 809, 812, 1214, 812, 812, 812, 812, 812, 812, 812,
1738 812, 812, 813, 1214, 813, 813, 813, 813, 813, 813,
1739 813, 813, 813, 816, 1214, 816, 816, 816, 816, 816,
1740 816, 816, 816, 816, 447, 1214, 447, 447, 447, 447,
1742 447, 447, 447, 447, 447, 459, 1214, 1214, 459, 459,
1743 459, 255, 255, 255, 255, 255, 255, 255, 255, 534,
1744 534, 534, 534, 534, 534, 295, 295, 295, 295, 295,
1745 295, 295, 302, 1214, 302, 302, 302, 302, 302, 302,
1746 302, 302, 302, 319, 1214, 319, 319, 319, 319, 319,
1747 319, 319, 319, 319, 254, 254, 254, 254, 254, 254,
1748 254, 332, 332, 1214, 332, 332, 332, 332, 332, 332,
1749 332, 332, 346, 346, 1214, 346, 346, 346, 346, 346,
1750 346, 346, 346, 352, 352, 352, 352, 352, 352, 352,
1751 352, 352, 352, 352, 23, 1214, 1214, 1214, 1214, 1214,
1753 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1754 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1755 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1756 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1757 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1758 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
1759 1214
1762 static yyconst flex_int16_t yy_chk[8062] =
1763 { 0,
1764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1767 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1769 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1770 1, 1, 1, 1, 1, 1, 2, 6, 4, 6,
1771 6, 29, 8, 6, 40, 223, 25, 223, 25, 25,
1772 33, 40, 56, 2, 3, 4, 3, 3, 3, 8,
1773 6, 25, 3, 3, 33, 3, 3, 13, 3, 3,
1775 3, 14, 14, 73, 29, 3, 3, 3, 3, 13,
1776 13, 13, 13, 14, 14, 14, 14, 35, 27, 27,
1777 27, 27, 56, 31, 3, 31, 219, 31, 31, 35,
1778 3, 219, 3, 27, 81, 3, 73, 3, 44, 44,
1779 3, 81, 3, 45, 45, 46, 46, 3, 3, 5,
1780 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1781 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1782 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1783 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1784 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1786 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1787 5, 5, 5, 5, 5, 7, 7, 7, 7, 7,
1788 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1789 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1790 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1791 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1792 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1793 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1794 7, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1795 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1797 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1798 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1799 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1800 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1801 9, 9, 9, 9, 9, 9, 9, 11, 11, 11,
1802 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1803 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1804 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1805 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1806 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1808 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1809 11, 11, 11, 15, 15, 15, 15, 15, 15, 15,
1810 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1811 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1812 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1813 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1814 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1815 15, 15, 15, 15, 15, 15, 15, 15, 15, 17,
1816 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1817 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1819 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1820 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1821 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1822 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1823 17, 17, 17, 17, 17, 19, 19, 19, 19, 19,
1824 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1825 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1826 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1827 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1828 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1830 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1831 19, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1832 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1833 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1834 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1835 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1836 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1837 21, 21, 21, 21, 21, 21, 21, 36, 242, 36,
1838 36, 36, 36, 242, 38, 36, 38, 38, 38, 38,
1839 59, 59, 38, 39, 221, 39, 39, 39, 39, 128,
1841 128, 39, 221, 39, 39, 39, 39, 39, 39, 39,
1842 39, 39, 39, 39, 39, 39, 57, 39, 39, 39,
1843 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1844 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
1845 39, 41, 47, 41, 41, 41, 41, 111, 49, 47,
1846 130, 130, 51, 41, 41, 49, 47, 57, 41, 51,
1847 41, 50, 49, 41, 92, 111, 51, 41, 50, 42,
1848 41, 42, 42, 42, 42, 50, 83, 60, 41, 60,
1849 60, 48, 42, 83, 49, 1208, 42, 41, 48, 127,
1850 51, 48, 48, 48, 48, 48, 51, 92, 42, 43,
1852 285, 83, 112, 50, 43, 285, 50, 43, 43, 43,
1853 43, 43, 43, 52, 53, 43, 54, 43, 43, 55,
1854 52, 53, 127, 54, 318, 112, 55, 52, 53, 318,
1855 54, 142, 142, 55, 61, 61, 61, 61, 62, 64,
1856 62, 62, 62, 62, 224, 52, 224, 64, 64, 64,
1857 52, 64, 64, 54, 67, 66, 116, 53, 64, 224,
1858 116, 67, 66, 55, 52, 116, 54, 63, 67, 66,
1859 70, 70, 70, 70, 72, 72, 72, 72, 76, 142,
1860 76, 76, 76, 76, 63, 63, 63, 66, 63, 84,
1861 63, 67, 63, 63, 63, 63, 84, 63, 77, 63,
1863 63, 85, 85, 85, 85, 239, 63, 898, 77, 77,
1864 77, 77, 79, 239, 79, 79, 79, 79, 898, 84,
1865 86, 86, 86, 86, 222, 79, 256, 82, 222, 79,
1866 82, 82, 82, 82, 82, 77, 95, 95, 95, 95,
1867 77, 79, 256, 94, 77, 94, 94, 94, 94, 97,
1868 137, 137, 102, 102, 102, 102, 97, 143, 143, 97,
1869 131, 131, 330, 97, 131, 101, 101, 101, 101, 145,
1870 145, 137, 95, 96, 97, 96, 96, 96, 96, 102,
1871 132, 132, 176, 97, 120, 96, 96, 101, 278, 132,
1872 96, 120, 96, 330, 120, 96, 278, 131, 120, 96,
1874 157, 157, 96, 106, 106, 106, 106, 147, 147, 120,
1875 96, 107, 107, 107, 107, 176, 147, 247, 120, 96,
1876 99, 99, 247, 99, 99, 99, 99, 99, 99, 99,
1877 99, 99, 99, 99, 99, 247, 99, 99, 1206, 106,
1878 152, 152, 99, 99, 99, 99, 217, 108, 157, 108,
1879 108, 108, 108, 110, 110, 110, 110, 110, 217, 99,
1880 108, 152, 281, 117, 108, 117, 117, 117, 117, 158,
1881 158, 160, 160, 162, 162, 281, 108, 118, 118, 118,
1882 118, 470, 162, 470, 99, 99, 100, 100, 294, 100,
1883 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1885 100, 903, 100, 100, 100, 100, 100, 100, 100, 100,
1886 100, 100, 903, 118, 124, 124, 124, 124, 125, 125,
1887 125, 125, 294, 133, 133, 100, 141, 141, 141, 141,
1888 134, 134, 179, 179, 179, 179, 124, 133, 1205, 133,
1889 133, 133, 133, 231, 231, 125, 134, 134, 134, 134,
1890 100, 100, 119, 141, 119, 119, 119, 119, 140, 140,
1891 140, 140, 192, 136, 119, 119, 172, 172, 179, 119,
1892 136, 119, 295, 136, 119, 149, 149, 136, 119, 295,
1893 140, 119, 134, 146, 146, 238, 238, 146, 136, 119,
1894 976, 149, 149, 149, 149, 192, 331, 136, 119, 122,
1896 122, 122, 122, 122, 122, 976, 122, 122, 122, 122,
1897 122, 122, 122, 122, 172, 122, 122, 148, 148, 304,
1898 146, 122, 122, 122, 122, 167, 167, 149, 234, 234,
1899 234, 148, 331, 148, 148, 148, 148, 151, 122, 155,
1900 155, 155, 155, 879, 151, 879, 167, 151, 252, 252,
1901 283, 151, 304, 156, 156, 156, 156, 189, 283, 189,
1902 189, 155, 151, 122, 122, 123, 123, 123, 123, 123,
1903 123, 151, 123, 123, 123, 123, 123, 123, 123, 123,
1904 156, 123, 123, 123, 123, 123, 123, 123, 123, 123,
1905 123, 161, 161, 163, 163, 161, 282, 282, 296, 164,
1907 164, 240, 313, 313, 123, 240, 293, 163, 328, 163,
1908 163, 163, 163, 292, 296, 164, 164, 164, 164, 240,
1909 170, 170, 170, 170, 328, 293, 255, 166, 161, 123,
1910 123, 135, 135, 255, 166, 680, 275, 166, 275, 275,
1911 255, 166, 170, 292, 680, 135, 468, 135, 135, 135,
1912 135, 164, 166, 171, 171, 171, 171, 135, 135, 340,
1913 340, 166, 135, 468, 135, 259, 188, 135, 188, 188,
1914 537, 135, 259, 178, 135, 178, 178, 178, 178, 259,
1915 171, 188, 135, 1204, 345, 185, 185, 185, 185, 345,
1916 537, 135, 138, 138, 138, 138, 138, 138, 138, 138,
1918 138, 138, 138, 138, 138, 138, 138, 185, 138, 138,
1919 259, 181, 298, 540, 138, 138, 138, 138, 181, 298,
1920 540, 181, 316, 316, 316, 181, 186, 186, 186, 186,
1921 1203, 138, 196, 196, 196, 196, 181, 197, 197, 197,
1922 197, 198, 198, 198, 198, 181, 199, 199, 199, 199,
1923 298, 352, 352, 186, 354, 354, 138, 138, 139, 139,
1924 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1925 139, 139, 139, 736, 139, 139, 139, 139, 139, 139,
1926 139, 139, 139, 139, 206, 206, 206, 206, 207, 260,
1927 207, 207, 207, 207, 357, 357, 260, 139, 511, 258,
1929 736, 207, 538, 260, 649, 207, 258, 211, 211, 211,
1930 211, 333, 511, 258, 446, 333, 649, 207, 211, 446,
1931 333, 538, 139, 139, 150, 150, 230, 230, 230, 230,
1932 286, 286, 286, 286, 211, 258, 536, 230, 150, 260,
1933 150, 150, 150, 150, 871, 261, 1202, 264, 358, 358,
1934 150, 150, 261, 230, 264, 150, 894, 150, 536, 261,
1935 150, 264, 894, 232, 150, 232, 257, 150, 232, 232,
1936 232, 232, 871, 257, 299, 150, 257, 257, 257, 257,
1937 257, 299, 364, 364, 150, 153, 153, 153, 153, 153,
1938 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1940 264, 153, 153, 368, 368, 265, 266, 153, 153, 153,
1941 153, 900, 265, 266, 378, 378, 262, 299, 900, 265,
1942 266, 380, 380, 262, 153, 343, 343, 343, 267, 491,
1943 262, 268, 263, 383, 383, 267, 364, 491, 268, 263,
1944 491, 266, 267, 384, 384, 268, 263, 265, 265, 153,
1945 153, 154, 154, 154, 154, 154, 154, 154, 154, 154,
1946 154, 154, 154, 154, 154, 154, 262, 154, 154, 154,
1947 154, 154, 154, 154, 154, 154, 154, 263, 267, 268,
1948 269, 288, 288, 288, 288, 390, 390, 269, 394, 394,
1949 154, 711, 297, 432, 269, 297, 297, 297, 297, 297,
1951 300, 300, 300, 300, 301, 301, 301, 301, 308, 308,
1952 308, 308, 359, 359, 711, 154, 154, 165, 165, 377,
1953 377, 359, 269, 360, 360, 309, 432, 309, 309, 309,
1954 309, 165, 360, 165, 165, 165, 165, 885, 309, 390,
1955 385, 385, 309, 165, 165, 1201, 386, 386, 165, 385,
1956 165, 404, 404, 165, 309, 386, 314, 165, 314, 991,
1957 165, 314, 314, 314, 314, 885, 377, 991, 165, 322,
1958 322, 322, 322, 323, 323, 323, 323, 165, 168, 168,
1959 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1960 168, 168, 168, 712, 168, 168, 310, 310, 310, 310,
1962 168, 168, 168, 168, 322, 366, 366, 310, 312, 312,
1963 312, 312, 557, 323, 406, 406, 557, 168, 712, 312,
1964 557, 366, 366, 310, 329, 329, 329, 329, 329, 335,
1965 335, 335, 335, 409, 409, 312, 1200, 349, 349, 349,
1966 349, 710, 168, 168, 169, 169, 169, 169, 169, 169,
1967 169, 169, 169, 169, 169, 169, 169, 169, 169, 504,
1968 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
1969 710, 327, 349, 327, 327, 327, 327, 336, 510, 336,
1970 336, 336, 336, 169, 327, 1054, 403, 403, 327, 562,
1971 336, 341, 504, 341, 336, 1199, 341, 341, 341, 341,
1973 327, 350, 350, 350, 350, 977, 336, 551, 169, 169,
1974 180, 510, 180, 180, 180, 180, 977, 337, 337, 337,
1975 337, 562, 180, 180, 410, 410, 1054, 180, 337, 180,
1976 420, 420, 180, 403, 411, 411, 180, 369, 369, 180,
1977 551, 350, 886, 411, 337, 441, 441, 180, 339, 339,
1978 339, 339, 1194, 369, 369, 369, 180, 183, 183, 339,
1979 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1980 183, 183, 886, 183, 183, 339, 444, 444, 444, 183,
1981 183, 183, 183, 355, 355, 361, 361, 355, 356, 356,
1982 412, 412, 356, 905, 367, 367, 183, 478, 478, 412,
1984 905, 361, 361, 361, 361, 367, 453, 367, 453, 453,
1985 367, 367, 367, 367, 375, 375, 375, 375, 429, 429,
1986 355, 183, 183, 184, 184, 356, 184, 184, 184, 184,
1987 184, 184, 184, 184, 184, 184, 184, 184, 1193, 184,
1988 184, 184, 184, 184, 184, 184, 184, 184, 184, 375,
1989 363, 363, 371, 371, 365, 365, 371, 483, 483, 381,
1990 381, 371, 184, 381, 1192, 429, 363, 363, 363, 363,
1991 365, 365, 365, 365, 382, 382, 737, 363, 382, 416,
1992 416, 365, 486, 486, 486, 392, 392, 184, 184, 317,
1993 317, 317, 317, 363, 546, 546, 381, 365, 317, 317,
1995 317, 392, 392, 737, 376, 376, 376, 376, 549, 549,
1996 549, 382, 317, 317, 317, 317, 317, 317, 319, 319,
1997 1101, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1998 319, 319, 319, 416, 319, 319, 387, 387, 567, 567,
1999 319, 319, 319, 319, 376, 393, 393, 553, 634, 395,
2000 395, 1101, 387, 387, 387, 387, 393, 319, 393, 418,
2001 418, 393, 393, 393, 393, 395, 395, 395, 397, 397,
2002 423, 423, 397, 899, 423, 418, 418, 397, 899, 423,
2003 553, 634, 319, 319, 320, 320, 1191, 320, 320, 320,
2004 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2006 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2007 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2008 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2009 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2010 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2011 321, 321, 563, 321, 321, 321, 321, 321, 321, 321,
2012 321, 321, 321, 321, 321, 1189, 321, 321, 321, 321,
2013 321, 321, 321, 321, 321, 321, 563, 389, 389, 884,
2014 563, 391, 391, 402, 402, 402, 402, 593, 593, 321,
2015 570, 570, 570, 389, 389, 389, 389, 391, 391, 391,
2017 391, 407, 407, 872, 389, 407, 629, 629, 391, 436,
2018 436, 436, 436, 884, 321, 321, 344, 344, 344, 344,
2019 389, 579, 579, 402, 391, 344, 344, 344, 401, 401,
2020 401, 401, 872, 428, 428, 428, 428, 593, 407, 344,
2021 344, 344, 344, 344, 344, 346, 346, 346, 346, 346,
2022 346, 735, 346, 346, 346, 346, 346, 346, 346, 346,
2023 579, 346, 346, 401, 413, 413, 1150, 346, 346, 346,
2024 346, 408, 408, 428, 735, 408, 419, 419, 733, 733,
2025 413, 413, 413, 413, 346, 421, 421, 419, 1188, 419,
2026 754, 754, 419, 419, 419, 419, 454, 454, 454, 454,
2028 1150, 421, 421, 421, 455, 455, 455, 455, 408, 346,
2029 346, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2030 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2031 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2032 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2033 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2034 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
2035 347, 347, 347, 347, 347, 347, 347, 348, 348, 348,
2036 348, 348, 348, 962, 348, 348, 348, 348, 348, 348,
2037 348, 348, 962, 348, 348, 348, 348, 348, 348, 348,
2039 348, 348, 348, 415, 415, 572, 971, 417, 417, 572,
2040 427, 427, 427, 427, 572, 971, 348, 755, 755, 415,
2041 415, 415, 415, 417, 417, 417, 417, 765, 576, 766,
2042 415, 765, 576, 766, 417, 437, 576, 437, 437, 437,
2043 437, 348, 348, 362, 362, 427, 415, 890, 437, 890,
2044 417, 541, 437, 456, 456, 456, 456, 362, 541, 362,
2045 362, 362, 362, 636, 437, 438, 438, 438, 438, 592,
2046 362, 513, 714, 592, 362, 1177, 438, 592, 513, 714,
2047 440, 440, 440, 440, 904, 513, 362, 370, 370, 904,
2048 541, 440, 438, 442, 910, 442, 636, 910, 442, 442,
2050 442, 442, 714, 370, 370, 370, 370, 440, 457, 457,
2051 457, 457, 370, 370, 370, 450, 450, 450, 450, 451,
2052 451, 451, 451, 595, 595, 1176, 370, 370, 370, 370,
2053 370, 370, 372, 372, 372, 372, 372, 372, 372, 372,
2054 372, 372, 372, 372, 372, 372, 372, 784, 372, 372,
2055 450, 784, 587, 587, 372, 372, 372, 372, 458, 451,
2056 458, 587, 595, 458, 458, 458, 458, 482, 482, 482,
2057 482, 372, 484, 484, 484, 484, 517, 519, 482, 485,
2058 485, 485, 485, 517, 519, 547, 547, 547, 547, 1147,
2059 517, 519, 760, 760, 482, 1147, 372, 372, 373, 373,
2061 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2062 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2063 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2064 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2065 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2066 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
2067 373, 373, 373, 373, 374, 374, 374, 374, 374, 374,
2068 374, 374, 374, 374, 374, 374, 374, 374, 374, 1172,
2069 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
2070 514, 515, 516, 518, 520, 521, 1171, 514, 515, 516,
2072 518, 520, 521, 374, 514, 515, 516, 518, 520, 521,
2073 522, 1170, 523, 548, 548, 548, 548, 522, 686, 523,
2074 568, 568, 568, 568, 522, 515, 523, 524, 374, 374,
2075 388, 388, 751, 751, 524, 542, 520, 516, 514, 518,
2076 1169, 524, 542, 691, 388, 525, 388, 388, 388, 388,
2077 523, 686, 525, 697, 523, 581, 581, 388, 968, 525,
2078 697, 388, 569, 569, 569, 569, 542, 697, 524, 1167,
2079 542, 581, 581, 388, 396, 396, 691, 751, 543, 1034,
2080 543, 968, 525, 543, 543, 543, 543, 1034, 603, 603,
2081 396, 396, 396, 396, 741, 597, 597, 603, 741, 396,
2083 396, 396, 564, 741, 564, 761, 761, 564, 564, 564,
2084 564, 597, 597, 396, 396, 396, 396, 396, 396, 398,
2085 398, 398, 398, 398, 398, 398, 398, 398, 398, 398,
2086 398, 398, 398, 398, 957, 398, 398, 545, 545, 545,
2087 545, 398, 398, 398, 398, 632, 632, 632, 545, 566,
2088 566, 566, 566, 957, 578, 578, 773, 773, 398, 785,
2089 566, 582, 582, 785, 545, 578, 1097, 578, 699, 1097,
2090 578, 578, 578, 578, 908, 699, 566, 582, 582, 582,
2091 582, 908, 699, 398, 398, 399, 399, 399, 399, 399,
2092 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2094 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2095 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2096 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2097 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2098 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
2099 399, 400, 400, 400, 400, 400, 400, 400, 400, 400,
2100 400, 400, 400, 400, 400, 400, 969, 400, 400, 400,
2101 400, 400, 400, 400, 400, 400, 400, 580, 580, 720,
2102 1184, 583, 583, 611, 611, 584, 584, 586, 586, 969,
2103 400, 586, 1184, 580, 580, 580, 580, 583, 583, 583,
2105 583, 584, 584, 584, 580, 588, 588, 724, 809, 588,
2106 594, 594, 720, 609, 609, 400, 400, 414, 414, 1166,
2107 580, 594, 611, 594, 586, 715, 594, 594, 594, 594,
2108 716, 414, 715, 414, 414, 414, 414, 716, 596, 596,
2109 724, 809, 588, 803, 414, 602, 602, 803, 414, 602,
2110 598, 598, 774, 774, 596, 596, 596, 596, 1185, 715,
2111 414, 422, 422, 609, 716, 596, 598, 598, 598, 598,
2112 1185, 625, 625, 599, 599, 619, 619, 422, 422, 422,
2113 422, 596, 602, 1048, 619, 1048, 422, 422, 422, 599,
2114 599, 599, 599, 763, 763, 604, 604, 763, 1165, 604,
2116 422, 422, 422, 422, 422, 422, 424, 424, 424, 424,
2117 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
2118 424, 625, 424, 424, 600, 600, 767, 767, 424, 424,
2119 424, 424, 604, 610, 610, 608, 1164, 613, 613, 608,
2120 600, 600, 600, 608, 610, 424, 610, 614, 614, 610,
2121 610, 610, 610, 613, 613, 630, 630, 630, 630, 631,
2122 631, 631, 631, 614, 614, 614, 614, 779, 779, 767,
2123 424, 424, 425, 425, 425, 425, 425, 425, 425, 425,
2124 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
2125 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
2127 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
2128 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
2129 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
2130 425, 425, 425, 425, 425, 425, 425, 425, 426, 426,
2131 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
2132 426, 426, 426, 1055, 426, 426, 426, 426, 426, 426,
2133 426, 426, 426, 426, 624, 612, 612, 804, 624, 615,
2134 615, 804, 624, 616, 616, 618, 618, 426, 1064, 618,
2135 1152, 612, 612, 612, 612, 615, 615, 615, 615, 616,
2136 616, 616, 612, 626, 1055, 626, 780, 780, 626, 626,
2138 626, 626, 426, 426, 445, 445, 445, 445, 612, 1142,
2139 756, 756, 618, 445, 445, 445, 620, 620, 640, 756,
2140 620, 813, 640, 1064, 786, 786, 640, 445, 445, 445,
2141 445, 445, 445, 447, 447, 1053, 447, 447, 447, 447,
2142 447, 447, 447, 447, 447, 447, 447, 447, 1053, 447,
2143 447, 770, 770, 620, 813, 447, 447, 447, 447, 628,
2144 628, 628, 628, 642, 642, 642, 642, 786, 757, 757,
2145 628, 701, 447, 643, 643, 643, 643, 757, 701, 717,
2146 717, 717, 717, 792, 792, 701, 628, 718, 718, 718,
2147 718, 738, 738, 738, 738, 1151, 770, 447, 447, 448,
2149 448, 1151, 448, 448, 448, 448, 448, 448, 448, 448,
2150 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2151 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2152 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2153 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2154 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
2155 448, 448, 448, 448, 448, 449, 449, 1137, 449, 449,
2156 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
2157 1035, 449, 449, 449, 449, 449, 449, 449, 449, 449,
2158 449, 698, 793, 793, 702, 704, 703, 1059, 698, 700,
2160 705, 702, 704, 703, 449, 698, 700, 705, 702, 704,
2161 703, 775, 775, 700, 705, 739, 739, 739, 739, 895,
2162 775, 782, 782, 895, 698, 782, 1035, 749, 749, 449,
2163 449, 550, 550, 550, 550, 702, 700, 703, 1059, 704,
2164 550, 550, 550, 749, 749, 749, 749, 789, 789, 705,
2165 798, 798, 799, 799, 550, 550, 550, 550, 550, 550,
2166 554, 554, 1039, 554, 554, 554, 554, 554, 554, 554,
2167 554, 554, 554, 554, 554, 1058, 554, 554, 750, 750,
2168 776, 776, 554, 554, 554, 554, 752, 752, 1058, 776,
2169 752, 1136, 789, 874, 750, 750, 750, 750, 1039, 554,
2171 874, 967, 794, 794, 753, 753, 909, 909, 753, 758,
2172 758, 794, 1065, 758, 1043, 759, 759, 801, 801, 759,
2173 967, 801, 1043, 752, 554, 554, 555, 555, 874, 555,
2174 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
2175 555, 753, 555, 555, 768, 768, 758, 1060, 555, 555,
2176 555, 555, 759, 769, 769, 795, 795, 1065, 892, 892,
2177 768, 768, 768, 768, 795, 555, 896, 896, 896, 769,
2178 769, 769, 769, 771, 771, 772, 772, 771, 1093, 772,
2179 1093, 777, 777, 778, 778, 777, 1134, 778, 1060, 963,
2180 555, 555, 556, 556, 963, 556, 556, 556, 556, 556,
2182 556, 556, 556, 556, 556, 556, 556, 892, 556, 556,
2183 771, 1098, 772, 1098, 556, 556, 556, 556, 777, 978,
2184 778, 787, 787, 805, 805, 788, 788, 1040, 790, 790,
2185 978, 556, 790, 806, 806, 806, 806, 787, 787, 787,
2186 787, 788, 788, 788, 788, 1040, 556, 807, 807, 807,
2187 807, 901, 901, 901, 975, 975, 556, 556, 571, 571,
2188 571, 571, 906, 906, 906, 790, 805, 571, 571, 571,
2189 791, 791, 897, 897, 791, 981, 796, 796, 1036, 981,
2190 796, 571, 571, 571, 571, 571, 571, 573, 573, 573,
2191 573, 573, 573, 975, 573, 573, 573, 573, 573, 573,
2193 573, 573, 826, 573, 573, 1047, 1047, 791, 1133, 573,
2194 573, 573, 573, 796, 1155, 826, 955, 955, 955, 955,
2195 867, 897, 826, 964, 1036, 1155, 573, 867, 964, 863,
2196 865, 797, 797, 864, 867, 797, 863, 865, 873, 1044,
2197 864, 972, 1132, 863, 865, 873, 972, 864, 1130, 902,
2198 902, 573, 573, 574, 574, 574, 574, 574, 574, 867,
2199 574, 574, 574, 574, 574, 574, 574, 574, 797, 574,
2200 574, 863, 865, 875, 1063, 574, 574, 574, 574, 873,
2201 875, 864, 949, 1063, 959, 1044, 953, 954, 868, 949,
2202 866, 959, 574, 953, 954, 868, 949, 866, 902, 958,
2204 953, 954, 868, 973, 866, 986, 958, 992, 973, 986,
2205 875, 992, 993, 1103, 959, 1103, 993, 574, 574, 575,
2206 575, 575, 575, 575, 575, 958, 575, 575, 575, 575,
2207 575, 575, 575, 575, 866, 575, 575, 868, 950, 951,
2208 952, 575, 575, 575, 575, 950, 951, 952, 956, 960,
2209 956, 956, 950, 951, 952, 1129, 960, 1049, 575, 965,
2210 965, 965, 965, 974, 974, 974, 974, 980, 980, 956,
2211 1041, 950, 1128, 575, 979, 979, 951, 952, 1118, 960,
2212 984, 984, 1118, 575, 575, 585, 585, 996, 1041, 1127,
2213 979, 979, 979, 979, 1052, 1052, 984, 984, 984, 984,
2215 996, 585, 585, 585, 585, 1027, 980, 996, 1050, 1049,
2216 585, 585, 585, 994, 994, 994, 994, 985, 985, 1027,
2217 1027, 1027, 1027, 1126, 585, 585, 585, 585, 585, 585,
2218 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
2219 589, 589, 589, 589, 589, 1045, 589, 589, 989, 989,
2220 1030, 1096, 589, 589, 589, 589, 985, 1030, 1096, 1025,
2221 1050, 1024, 1124, 1025, 989, 989, 989, 989, 1024, 589,
2222 1025, 1028, 1026, 1028, 1028, 1024, 1026, 1025, 1057, 1057,
2223 1123, 1102, 1106, 1026, 1102, 1106, 1108, 1108, 1108, 1096,
2224 1026, 1045, 1122, 1030, 589, 589, 590, 590, 590, 590,
2226 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,
2227 590, 1024, 590, 590, 1031, 1032, 1110, 1158, 590, 590,
2228 590, 590, 1037, 1121, 1110, 1031, 1032, 1046, 1158, 1051,
2229 1051, 1051, 1031, 1032, 1120, 590, 1037, 1037, 1037, 1037,
2230 1066, 1046, 1046, 1046, 1046, 1051, 1051, 1051, 1051, 1107,
2231 1107, 1107, 1105, 1107, 1066, 1066, 1066, 1066, 1153, 1153,
2232 590, 590, 591, 591, 591, 591, 591, 591, 591, 591,
2233 591, 591, 591, 591, 591, 591, 591, 1181, 591, 591,
2234 1056, 1056, 1056, 1104, 591, 591, 591, 591, 1061, 1061,
2235 1061, 1112, 1112, 1112, 1100, 1092, 1056, 1056, 1056, 1056,
2237 1114, 591, 1092, 1099, 1061, 1061, 1061, 1061, 1114, 1092,
2238 1109, 1109, 1181, 1119, 1109, 1119, 591, 1111, 1111, 1111,
2239 1095, 1111, 1116, 1116, 1116, 1146, 591, 591, 601, 601,
2240 1113, 1113, 1146, 1094, 1113, 1115, 1115, 1115, 1091, 1115,
2241 1092, 1154, 1154, 1143, 601, 601, 601, 601, 1117, 1117,
2242 1143, 1090, 1117, 601, 601, 601, 1089, 1143, 1156, 1156,
2243 1157, 1157, 1159, 1159, 1160, 1160, 1146, 601, 601, 601,
2244 601, 601, 601, 605, 605, 605, 605, 605, 605, 605,
2245 605, 605, 605, 605, 605, 605, 605, 605, 1088, 605,
2246 605, 1143, 1161, 1179, 1180, 605, 605, 605, 605, 1161,
2248 1179, 1180, 1182, 1183, 1183, 1186, 1087, 1197, 1178, 1182,
2249 1198, 1086, 605, 1186, 1197, 1178, 1085, 1198, 1083, 1082,
2250 1081, 1197, 1178, 1080, 1078, 1076, 1075, 1074, 1073, 1072,
2251 1071, 1070, 1069, 1068, 1029, 1179, 1022, 605, 605, 606,
2252 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
2253 606, 606, 606, 606, 1020, 606, 606, 1178, 1019, 1018,
2254 1016, 606, 606, 606, 606, 1015, 1014, 1010, 1009, 1008,
2255 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 606, 999,
2256 998, 997, 995, 990, 988, 987, 983, 982, 970, 966,
2257 961, 948, 947, 946, 945, 943, 942, 939, 937, 936,
2259 935, 933, 932, 606, 606, 607, 607, 607, 607, 607,
2260 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
2261 931, 607, 607, 930, 928, 927, 926, 607, 607, 607,
2262 607, 925, 923, 922, 921, 920, 919, 918, 917, 916,
2263 915, 913, 912, 911, 607, 907, 891, 887, 883, 882,
2264 880, 876, 870, 869, 862, 861, 860, 859, 858, 607,
2265 857, 856, 855, 854, 853, 850, 849, 848, 846, 607,
2266 607, 617, 617, 843, 842, 841, 840, 839, 838, 837,
2267 836, 835, 834, 833, 832, 831, 830, 617, 617, 617,
2268 617, 829, 828, 827, 825, 823, 617, 617, 617, 822,
2270 821, 820, 817, 812, 808, 748, 747, 744, 740, 734,
2271 617, 617, 617, 617, 617, 617, 621, 621, 621, 621,
2272 621, 621, 621, 621, 621, 621, 621, 621, 621, 621,
2273 621, 732, 621, 621, 731, 728, 723, 719, 621, 621,
2274 621, 621, 713, 709, 708, 706, 696, 695, 694, 689,
2275 685, 684, 683, 682, 681, 621, 679, 678, 677, 676,
2276 675, 674, 673, 672, 671, 670, 669, 668, 667, 665,
2277 664, 663, 662, 661, 660, 659, 658, 657, 656, 655,
2278 621, 621, 622, 622, 622, 622, 622, 622, 622, 622,
2279 622, 622, 622, 622, 622, 622, 622, 653, 622, 622,
2281 652, 651, 650, 648, 622, 622, 622, 622, 647, 646,
2282 644, 641, 635, 627, 577, 565, 561, 560, 559, 558,
2283 552, 622, 544, 539, 535, 534, 533, 532, 531, 530,
2284 529, 528, 527, 526, 512, 508, 505, 503, 502, 501,
2285 500, 499, 498, 497, 496, 495, 622, 622, 623, 623,
2286 623, 623, 623, 623, 623, 623, 623, 623, 623, 623,
2287 623, 623, 623, 494, 623, 623, 493, 492, 490, 489,
2288 623, 623, 623, 623, 488, 480, 479, 477, 476, 475,
2289 474, 473, 472, 471, 469, 467, 466, 623, 465, 464,
2290 463, 462, 461, 460, 452, 439, 435, 351, 338, 326,
2292 325, 324, 623, 311, 307, 291, 289, 284, 280, 279,
2293 277, 276, 623, 623, 633, 633, 633, 633, 274, 254,
2294 253, 246, 245, 633, 633, 633, 244, 243, 241, 237,
2295 236, 228, 227, 226, 225, 220, 218, 633, 633, 633,
2296 633, 633, 633, 637, 637, 216, 637, 637, 637, 637,
2297 637, 637, 637, 637, 637, 637, 637, 637, 215, 637,
2298 637, 214, 203, 187, 182, 637, 637, 637, 637, 177,
2299 175, 126, 121, 113, 109, 104, 103, 98, 93, 91,
2300 87, 80, 637, 75, 65, 58, 34, 32, 28, 23,
2301 22, 20, 18, 16, 12, 10, 0, 0, 0, 0,
2303 0, 0, 0, 0, 0, 0, 0, 637, 637, 638,
2304 638, 0, 638, 638, 638, 638, 638, 638, 638, 638,
2305 638, 638, 638, 638, 0, 638, 638, 0, 0, 0,
2306 0, 638, 638, 638, 638, 0, 0, 0, 0, 0,
2307 0, 0, 0, 0, 0, 0, 0, 0, 638, 0,
2308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2310 0, 0, 0, 638, 638, 639, 639, 0, 639, 639,
2311 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
2312 0, 639, 639, 0, 0, 0, 0, 639, 639, 639,
2314 639, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 639, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0, 0, 0, 639,
2317 0, 0, 0, 0, 0, 0, 0, 0, 0, 639,
2318 639, 727, 727, 0, 727, 727, 727, 727, 727, 727,
2319 727, 727, 727, 727, 727, 727, 0, 727, 727, 0,
2320 0, 0, 0, 727, 727, 727, 727, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2322 727, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 727, 727, 729, 729, 0,
2326 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
2327 729, 729, 0, 729, 729, 0, 0, 0, 0, 729,
2328 729, 729, 729, 0, 0, 0, 0, 0, 0, 0,
2329 0, 0, 0, 0, 0, 0, 729, 0, 0, 0,
2330 0, 0, 729, 0, 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2332 0, 729, 729, 730, 730, 0, 730, 730, 730, 730,
2333 730, 730, 730, 730, 730, 730, 730, 730, 0, 730,
2334 730, 0, 0, 0, 0, 730, 730, 730, 730, 0,
2336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 730, 0, 0, 0, 0, 0, 0, 0,
2338 0, 0, 730, 0, 0, 0, 0, 0, 0, 0,
2339 0, 0, 0, 0, 0, 0, 0, 730, 730, 743,
2340 743, 743, 743, 743, 743, 0, 743, 743, 743, 743,
2341 743, 743, 743, 743, 0, 743, 743, 0, 0, 0,
2342 0, 743, 743, 743, 743, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0, 0, 743, 0,
2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 743, 743, 745, 745, 745, 745, 745,
2348 745, 0, 745, 745, 745, 745, 745, 745, 745, 745,
2349 0, 745, 745, 0, 0, 0, 0, 745, 745, 745,
2350 745, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 745, 0, 0, 0, 0, 0,
2352 745, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0, 0, 0, 745,
2354 745, 746, 746, 746, 746, 746, 746, 0, 746, 746,
2355 746, 746, 746, 746, 746, 746, 0, 746, 746, 0,
2356 0, 0, 0, 746, 746, 746, 746, 0, 0, 0,
2358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2359 746, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2360 746, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2361 0, 0, 0, 0, 0, 746, 746, 762, 762, 762,
2362 762, 762, 762, 762, 762, 762, 762, 762, 762, 762,
2363 762, 762, 0, 762, 762, 0, 0, 0, 0, 762,
2364 762, 762, 762, 0, 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 0, 0, 762, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2369 0, 762, 762, 764, 764, 764, 764, 764, 764, 764,
2370 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
2371 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
2372 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
2373 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
2374 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
2375 764, 764, 764, 764, 764, 764, 764, 764, 764, 781,
2376 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
2377 781, 781, 781, 781, 0, 781, 781, 0, 0, 0,
2378 0, 781, 781, 781, 781, 0, 0, 0, 0, 0,
2380 0, 0, 0, 0, 0, 0, 0, 0, 781, 0,
2381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2383 0, 0, 0, 781, 781, 783, 783, 783, 783, 783,
2384 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2385 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2386 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2387 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2388 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2389 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
2391 783, 800, 800, 800, 800, 800, 800, 800, 800, 800,
2392 800, 800, 800, 800, 800, 800, 0, 800, 800, 0,
2393 0, 0, 0, 800, 800, 800, 800, 0, 0, 0,
2394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2395 800, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2397 0, 0, 0, 0, 0, 800, 800, 802, 802, 802,
2398 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2399 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2400 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2402 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2403 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2404 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
2405 802, 802, 802, 816, 816, 0, 816, 816, 816, 816,
2406 816, 816, 816, 816, 816, 816, 816, 816, 0, 816,
2407 816, 0, 0, 0, 0, 816, 816, 816, 816, 0,
2408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2409 0, 0, 816, 0, 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2411 0, 0, 0, 0, 0, 0, 0, 816, 816, 818,
2413 818, 0, 818, 818, 818, 818, 818, 818, 818, 818,
2414 818, 818, 818, 818, 0, 818, 818, 0, 0, 0,
2415 0, 818, 818, 818, 818, 0, 0, 0, 0, 0,
2416 0, 0, 0, 0, 0, 0, 0, 0, 818, 0,
2417 0, 0, 0, 0, 818, 0, 0, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 818, 818, 819, 819, 0, 819, 819,
2420 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
2421 0, 819, 819, 0, 0, 0, 0, 819, 819, 819,
2422 819, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 819, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 819, 0, 0, 0, 0, 0,
2426 0, 0, 0, 0, 0, 0, 0, 0, 0, 819,
2427 819, 877, 877, 0, 877, 877, 877, 877, 877, 877,
2428 877, 877, 877, 877, 877, 877, 0, 877, 877, 0,
2429 0, 0, 0, 877, 877, 877, 877, 0, 0, 0,
2430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2431 877, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2432 0, 0, 0, 0, 0, 0, 0, 877, 0, 0,
2433 0, 0, 0, 0, 0, 877, 877, 878, 878, 0,
2435 878, 878, 878, 878, 878, 878, 878, 878, 878, 878,
2436 878, 878, 0, 878, 878, 0, 0, 0, 0, 878,
2437 878, 878, 878, 0, 0, 0, 0, 0, 0, 0,
2438 0, 0, 0, 0, 0, 0, 878, 0, 0, 0,
2439 0, 0, 0, 0, 0, 0, 0, 878, 0, 0,
2440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2441 0, 878, 878, 888, 888, 888, 888, 888, 888, 0,
2442 888, 888, 888, 888, 888, 888, 888, 888, 0, 888,
2443 888, 0, 0, 0, 0, 888, 888, 888, 888, 0,
2444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2446 0, 0, 888, 0, 0, 0, 0, 0, 0, 0,
2447 0, 0, 0, 0, 0, 0, 0, 0, 0, 888,
2448 0, 0, 0, 0, 0, 0, 0, 888, 888, 889,
2449 889, 889, 889, 889, 889, 0, 889, 889, 889, 889,
2450 889, 889, 889, 889, 0, 889, 889, 0, 0, 0,
2451 0, 889, 889, 889, 889, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 0, 889, 0,
2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 889,
2454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 889, 889, 893, 893, 893, 893, 893,
2457 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2458 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2459 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2460 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2461 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2462 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
2463 893, 1215, 0, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
2464 1215, 1215, 1216, 0, 0, 1216, 1216, 1217, 0, 1217,
2465 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218,
2466 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1219, 1219, 1219,
2468 1220, 0, 1220, 0, 1220, 1220, 1220, 1220, 1221, 1221,
2469 1221, 1221, 1221, 1221, 1221, 1222, 0, 1222, 1222, 1222,
2470 1222, 1222, 1222, 1222, 1222, 1222, 1223, 0, 1223, 1223,
2471 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1224, 0, 1224,
2472 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1225, 0,
2473 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226,
2474 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 0, 1227,
2475 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 1228,
2476 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229,
2477 0, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1230,
2479 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
2480 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
2481 1231, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
2482 1232, 1232, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
2483 1233, 1233, 1233, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2484 1234, 1234, 1234, 1234, 1235, 1235, 1235, 1235, 1235, 1235,
2485 1235, 1235, 1235, 1235, 1235, 1236, 1236, 1236, 1236, 1236,
2486 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237, 1237, 1237,
2487 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1238, 1238, 1238,
2488 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 1239,
2490 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240,
2491 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
2492 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2493 1241, 1242, 0, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
2494 1242, 1242, 1243, 0, 1243, 1243, 1243, 1243, 1243, 1243,
2495 1243, 1243, 1243, 1244, 0, 1244, 1244, 1244, 1244, 1244,
2496 1244, 1244, 1244, 1244, 1245, 0, 1245, 1245, 1245, 1245,
2497 1245, 1245, 1245, 1245, 1245, 1246, 0, 0, 1246, 1246,
2498 1247, 0, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
2499 1247, 1248, 0, 0, 1248, 1248, 1248, 1249, 0, 0,
2501 1249, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1251, 1251,
2502 1251, 1251, 1251, 1251, 1251, 1251, 1252, 0, 0, 0,
2503 1252, 1252, 1252, 1252, 1252, 1253, 1253, 1253, 1253, 1253,
2504 1253, 1254, 1254, 1254, 1254, 1255, 1255, 1255, 1255, 1255,
2505 1255, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1257, 0,
2506 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258,
2507 0, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
2508 1259, 0, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
2509 1259, 1260, 0, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
2510 1260, 1260, 1261, 1261, 0, 1261, 1261, 1261, 1261, 1261,
2512 1261, 1261, 1261, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
2513 1262, 1262, 1262, 1262, 1263, 1263, 0, 1263, 1263, 1263,
2514 1263, 1263, 1263, 1263, 1263, 1264, 1264, 1264, 1264, 1264,
2515 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1265, 1265,
2516 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1266, 1266, 1266,
2517 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1267, 1267,
2518 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268,
2519 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
2520 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
2521 1269, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
2523 1270, 1270, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
2524 1271, 1271, 1271, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
2525 1272, 1272, 1272, 1272, 1273, 1273, 1273, 1273, 1273, 1273,
2526 1273, 1273, 1273, 1273, 1273, 1274, 1274, 1274, 1274, 1274,
2527 1274, 1274, 1274, 1274, 1274, 1274, 1275, 1275, 1275, 1275,
2528 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1276, 0, 1276,
2529 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1277, 0,
2530 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1278,
2531 0, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278,
2532 1279, 0, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
2534 1279, 1280, 0, 0, 1280, 1280, 1281, 0, 0, 1281,
2535 1281, 1281, 1282, 0, 0, 1282, 1283, 0, 1283, 1283,
2536 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1284, 0, 1284,
2537 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1285, 0,
2538 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1286,
2539 0, 1286, 1286, 1286, 1286, 1286, 1286, 1287, 1287, 1287,
2540 1287, 1287, 1287, 1287, 1288, 1288, 1288, 1288, 1288, 1288,
2541 1288, 1288, 1289, 1289, 1289, 1289, 1289, 1289, 1290, 1290,
2542 1290, 1290, 1290, 1290, 1291, 1291, 1291, 1291, 1291, 1291,
2543 1292, 1292, 1292, 1292, 1292, 1292, 1293, 1293, 1293, 1293,
2545 1293, 1293, 1293, 1294, 0, 1294, 1294, 1294, 1294, 1294,
2546 1294, 1294, 1294, 1294, 1295, 0, 1295, 1295, 1295, 1295,
2547 1295, 1295, 1295, 1295, 1295, 1296, 0, 1296, 1296, 1296,
2548 1296, 1296, 1296, 1296, 1296, 1296, 1297, 0, 1297, 1297,
2549 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1298, 0, 1298,
2550 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 0,
2551 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1300,
2552 1300, 1300, 1300, 1300, 1300, 1300, 1301, 1301, 0, 1301,
2553 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1302, 1302, 1302,
2554 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303, 1303,
2556 0, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1304,
2557 1304, 0, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304,
2558 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305,
2559 1305, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
2560 1306, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
2561 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
2562 1308, 1308, 1308, 1308, 1309, 1309, 1309, 1309, 1309, 1309,
2563 1309, 1309, 1309, 1309, 1309, 1310, 1310, 1310, 1310, 1310,
2564 1310, 1310, 1310, 1310, 1310, 1310, 1311, 1311, 1311, 1311,
2565 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1312, 1312, 1312,
2567 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313, 1313,
2568 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1314,
2569 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
2570 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
2571 1315, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
2572 1316, 1316, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
2573 1317, 1317, 1317, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
2574 1318, 1318, 1318, 1318, 1319, 1319, 1319, 1319, 1319, 1319,
2575 1319, 1319, 1319, 1319, 1319, 1320, 1320, 1320, 1320, 1320,
2576 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1321, 1321, 1321,
2578 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1322, 1322,
2579 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1323, 0,
2580 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1324,
2581 0, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324,
2582 1325, 0, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325,
2583 1325, 1326, 0, 1326, 1326, 1326, 1326, 1326, 1326, 1326,
2584 1326, 1326, 1327, 0, 1327, 1327, 1327, 1327, 1327, 1327,
2585 1327, 1327, 1327, 1328, 0, 1328, 1328, 1328, 1328, 1328,
2586 1328, 1328, 1328, 1328, 1329, 0, 0, 1329, 1329, 1329,
2587 1330, 0, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330,
2589 1330, 1331, 0, 1331, 1331, 1331, 1331, 1331, 1331, 1331,
2590 1331, 1331, 1332, 0, 1332, 1332, 1332, 1332, 1332, 1332,
2591 1332, 1332, 1332, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
2592 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1335, 1335,
2593 1335, 1335, 1335, 1335, 1336, 1336, 1336, 1336, 1336, 1336,
2594 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1338, 0, 1338,
2595 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1339, 0,
2596 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1340,
2597 0, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340,
2598 1341, 0, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
2600 1341, 1342, 0, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
2601 1342, 1342, 1343, 0, 1343, 1343, 1343, 1343, 1343, 1343,
2602 1343, 1343, 1343, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
2603 1345, 1345, 0, 1345, 1345, 1345, 1345, 1345, 1345, 1345,
2604 1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
2605 1346, 1346, 1347, 1347, 0, 1347, 1347, 1347, 1347, 1347,
2606 1347, 1347, 1347, 1348, 1348, 0, 1348, 1348, 1348, 1348,
2607 1348, 1348, 1348, 1348, 1349, 1349, 1349, 1349, 1349, 1349,
2608 1349, 1349, 1349, 1349, 1349, 1350, 1350, 1350, 1350, 1350,
2609 1350, 1350, 1350, 1350, 1350, 1350, 1351, 1351, 1351, 1351,
2611 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1352, 1352, 1352,
2612 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1353, 1353,
2613 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1354,
2614 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
2615 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
2616 1355, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356,
2617 1356, 1356, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
2618 1357, 1357, 1357, 1358, 1358, 1358, 1358, 1358, 1358, 1358,
2619 1358, 1358, 1358, 1358, 1359, 1359, 1359, 1359, 1359, 1359,
2620 1359, 1359, 1359, 1359, 1359, 1360, 1360, 1360, 1360, 1360,
2622 1360, 1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, 1361,
2623 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1362, 1362, 1362,
2624 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363, 1363,
2625 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364,
2626 0, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
2627 1365, 0, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
2628 1365, 1366, 0, 1366, 1366, 1366, 1366, 1366, 1366, 1366,
2629 1366, 1366, 1367, 0, 1367, 1367, 1367, 1367, 1367, 1367,
2630 1367, 1367, 1367, 1368, 0, 1368, 1368, 1368, 1368, 1368,
2631 1368, 1368, 1368, 1368, 1369, 0, 1369, 1369, 1369, 1369,
2633 1369, 1369, 1369, 1369, 1369, 1370, 0, 0, 1370, 1370,
2634 1370, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1372,
2635 1372, 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, 1373,
2636 1373, 1373, 1374, 0, 1374, 1374, 1374, 1374, 1374, 1374,
2637 1374, 1374, 1374, 1375, 0, 1375, 1375, 1375, 1375, 1375,
2638 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, 1376, 1376,
2639 1376, 1377, 1377, 0, 1377, 1377, 1377, 1377, 1377, 1377,
2640 1377, 1377, 1378, 1378, 0, 1378, 1378, 1378, 1378, 1378,
2641 1378, 1378, 1378, 1379, 1379, 1379, 1379, 1379, 1379, 1379,
2642 1379, 1379, 1379, 1379, 1214, 1214, 1214, 1214, 1214, 1214,
2644 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2645 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2646 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2647 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2648 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2649 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
2650 1214
2653 /* The intent behind this definition is that it'll catch
2654 * any uses of REJECT which flex missed.
2656 #define REJECT reject_used_but_not_detected
2657 #define yymore() yymore_used_but_not_detected
2658 #define YY_MORE_ADJ 0
2659 #define YY_RESTORE_YY_MORE_OFFSET
2660 #line 1 "compilers/imcc/imcc.l"
2662 #line 23 "compilers/imcc/imcc.l"
2664 * imcc.l
2666 * Intermediate Code Compiler for Parrot
2668 * Copyright (C) 2002 Melvin Smith <melvin.smith@mindspring.com>
2669 * Copyright (C) 2002-2008, The Perl Foundation.
2671 * The tokenizer.
2673 * $Id$
2678 #include <stdio.h>
2679 #include <stdlib.h>
2680 #include <string.h>
2681 #include "imc.h"
2682 #include "parser.h"
2684 #define MAX_PARAM 16
2686 typedef struct yyguts_t yyguts_t;
2687 typedef struct parser_state_t parser_state_t;
2689 typedef struct params_t {
2690 char *name[MAX_PARAM];
2691 int num_param;
2692 } params_t;
2694 typedef struct macro_t {
2695 char *expansion;
2696 int line;
2697 params_t params;
2698 } macro_t;
2700 /* parser state structure
2701 * the first few items are common to struct parser_state, but
2702 * we AFAIK need this hack as flex doesn't export YY_BUFFER_STATE
2704 typedef struct macro_frame_t {
2705 struct parser_state_t s;
2707 /* macro stuff */
2708 params_t *params;
2709 char *heredoc_rest;
2711 params_t expansion;
2712 int label;
2713 int is_macro;
2714 YY_BUFFER_STATE buffer;
2715 } macro_frame_t;
2717 /* static function declarations */
2718 static void pop_parser_state(PARROT_INTERP, ARGMOD(void *yyscanner));
2720 static struct macro_frame_t *new_frame(PARROT_INTERP);
2722 static void define_macro(PARROT_INTERP, ARGIN(const char *name), ARGIN(const params_t *params),
2723 ARGIN(const char *expansion), int start_line);
2725 static macro_t *find_macro(PARROT_INTERP, ARGIN(const char *name));
2727 static void scan_string(macro_frame_t *frame, ARGIN(const char *expansion),
2728 ARGMOD(void *yyscanner));
2730 static void scan_file(PARROT_INTERP, ARGIN(struct macro_frame_t *frame), ARGMOD(FILE *file),
2731 ARGMOD(void *yyscanner));
2733 static int destroy_frame(macro_frame_t *frame, ARGMOD(void *yyscanner));
2735 static int yylex_skip(YYSTYPE *valp, PARROT_INTERP, ARGIN(const char *skip),
2736 ARGMOD(void *yyscanner));
2738 static int read_macro(YYSTYPE *valp, PARROT_INTERP, ARGMOD(void *yyscanner));
2740 static int expand_macro(PARROT_INTERP, ARGIN(const char *name), ARGMOD(void *yyscanner));
2742 static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
2744 #define YY_DECL int yylex(YYSTYPE *valp,yyscan_t yyscanner,PARROT_INTERP)
2746 #define YYCHOP() (yytext[--yyleng] = '\0')
2748 #define DUP_AND_RET(valp, token) \
2749 do { \
2750 if (valp) (valp)->s = str_dup(yytext); \
2751 return (token); \
2752 } while (0)
2754 #define DUP_AND_RET_FREE(valp, token) \
2755 do { \
2756 if (valp) { \
2757 mem_sys_free((valp)->s); \
2758 (valp)->s = str_dup(yytext); \
2759 return (token); \
2761 } while (0)
2773 #line 2774 "compilers/imcc/imclexer.c"
2775 #define INITIAL 0
2776 #define emit 1
2777 #define macro 2
2778 #define pod 3
2779 #define cmt1 4
2780 #define cmt2 5
2781 #define cmt3 6
2782 #define cmt4 7
2783 #define cmt5 8
2784 #define heredoc1 9
2785 #define heredoc2 10
2787 #ifndef YY_NO_UNISTD_H
2788 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2789 * down here because we want the user's section 1 to have been scanned first.
2790 * The user has a chance to override it with an option.
2792 #include <unistd.h>
2793 #endif
2795 #ifndef YY_EXTRA_TYPE
2796 #define YY_EXTRA_TYPE void *
2797 #endif
2799 /* Holds the entire state of the reentrant scanner. */
2800 struct yyguts_t
2803 /* User-defined. Not touched by flex. */
2804 YY_EXTRA_TYPE yyextra_r;
2806 /* The rest are the same as the globals declared in the non-reentrant scanner. */
2807 FILE *yyin_r, *yyout_r;
2808 size_t yy_buffer_stack_top; /**< index of top of stack. */
2809 size_t yy_buffer_stack_max; /**< capacity of stack. */
2810 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
2811 char yy_hold_char;
2812 int yy_n_chars;
2813 int yyleng_r;
2814 char *yy_c_buf_p;
2815 int yy_init;
2816 int yy_start;
2817 int yy_did_buffer_switch_on_eof;
2818 int yy_start_stack_ptr;
2819 int yy_start_stack_depth;
2820 int *yy_start_stack;
2821 yy_state_type yy_last_accepting_state;
2822 char* yy_last_accepting_cpos;
2824 int yylineno_r;
2825 int yy_flex_debug_r;
2827 char *yytext_r;
2828 int yy_more_flag;
2829 int yy_more_len;
2831 }; /* end struct yyguts_t */
2833 static int yy_init_globals (yyscan_t yyscanner );
2835 int yylex_init (yyscan_t* scanner);
2837 int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
2839 /* Accessor methods to globals.
2840 These are made visible to non-reentrant scanners for convenience. */
2842 int yylex_destroy (yyscan_t yyscanner );
2844 int yyget_debug (yyscan_t yyscanner );
2846 void yyset_debug (int debug_flag ,yyscan_t yyscanner );
2848 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
2850 void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
2852 FILE *yyget_in (yyscan_t yyscanner );
2854 void yyset_in (FILE * in_str ,yyscan_t yyscanner );
2856 FILE *yyget_out (yyscan_t yyscanner );
2858 void yyset_out (FILE * out_str ,yyscan_t yyscanner );
2860 int yyget_leng (yyscan_t yyscanner );
2862 char *yyget_text (yyscan_t yyscanner );
2864 int yyget_lineno (yyscan_t yyscanner );
2866 void yyset_lineno (int line_number ,yyscan_t yyscanner );
2868 /* Macros after this point can all be overridden by user definitions in
2869 * section 1.
2872 #ifndef YY_SKIP_YYWRAP
2873 #ifdef __cplusplus
2874 extern "C" int yywrap (yyscan_t yyscanner );
2875 #else
2876 extern int yywrap (yyscan_t yyscanner );
2877 #endif
2878 #endif
2880 static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
2882 #ifndef yytext_ptr
2883 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
2884 #endif
2886 #ifdef YY_NEED_STRLEN
2887 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
2888 #endif
2890 #ifndef YY_NO_INPUT
2892 #ifdef __cplusplus
2893 static int yyinput (yyscan_t yyscanner );
2894 #else
2895 static int input (yyscan_t yyscanner );
2896 #endif
2898 #endif
2900 static void yy_push_state (int new_state ,yyscan_t yyscanner);
2902 static void yy_pop_state (yyscan_t yyscanner );
2904 static int yy_top_state (yyscan_t yyscanner );
2906 /* Amount of stuff to slurp up with each read. */
2907 #ifndef YY_READ_BUF_SIZE
2908 #define YY_READ_BUF_SIZE 8192
2909 #endif
2911 /* Copy whatever the last rule matched to the standard output. */
2912 #ifndef ECHO
2913 /* This used to be an fputs(), but since the string might contain NUL's,
2914 * we now use fwrite().
2916 #define ECHO fwrite( yytext, yyleng, 1, yyout )
2917 #endif
2919 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2920 * is returned in "result".
2922 #ifndef YY_INPUT
2923 #define YY_INPUT(buf,result,max_size) \
2924 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2926 int c = '*'; \
2927 size_t n; \
2928 for ( n = 0; n < max_size && \
2929 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2930 buf[n] = (char) c; \
2931 if ( c == '\n' ) \
2932 buf[n++] = (char) c; \
2933 if ( c == EOF && ferror( yyin ) ) \
2934 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2935 result = n; \
2937 else \
2939 errno=0; \
2940 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2942 if( errno != EINTR) \
2944 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2945 break; \
2947 errno=0; \
2948 clearerr(yyin); \
2953 #endif
2955 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2956 * we don't want an extra ';' after the "return" because that will cause
2957 * some compilers to complain about unreachable statements.
2959 #ifndef yyterminate
2960 #define yyterminate() return YY_NULL
2961 #endif
2963 /* Number of entries by which start-condition stack grows. */
2964 #ifndef YY_START_STACK_INCR
2965 #define YY_START_STACK_INCR 25
2966 #endif
2968 /* Report a fatal error. */
2969 #ifndef YY_FATAL_ERROR
2970 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
2971 #endif
2973 /* end tables serialization structures and prototypes */
2975 /* Default declaration of generated scanner - a define so the user can
2976 * easily add parameters.
2978 #ifndef YY_DECL
2979 #define YY_DECL_IS_OURS 1
2981 extern int yylex (yyscan_t yyscanner);
2983 #define YY_DECL int yylex (yyscan_t yyscanner)
2984 #endif /* !YY_DECL */
2986 /* Code executed at the beginning of each rule, after yytext and yyleng
2987 * have been set up.
2989 #ifndef YY_USER_ACTION
2990 #define YY_USER_ACTION
2991 #endif
2993 /* Code executed at the end of each rule. */
2994 #ifndef YY_BREAK
2995 #define YY_BREAK break;
2996 #endif
2998 #define YY_RULE_SETUP \
2999 if ( yyleng > 0 ) \
3000 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3001 (yytext[yyleng - 1] == '\n'); \
3002 YY_USER_ACTION
3004 /** The main scanner function which does all the work.
3006 YY_DECL
3008 register yy_state_type yy_current_state;
3009 register char *yy_cp, *yy_bp;
3010 register int yy_act;
3011 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3013 #line 166 "compilers/imcc/imcc.l"
3015 /* for emacs "*/
3016 if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
3017 IMCC_INFO(interp)->expect_pasm = 2;
3018 BEGIN(emit);
3021 if (IMCC_INFO(interp)->frames->s.pasm_file && YYSTATE == INITIAL &&
3022 !IMCC_INFO(interp)->in_pod)
3024 if (IMCC_INFO(interp)->frames->s.pasm_file == 1) {
3025 BEGIN(emit);
3026 return EMIT;
3029 return 0;
3032 #line 3033 "compilers/imcc/imclexer.c"
3034 if ( !yyg->yy_init )
3036 yyg->yy_init = 1;
3038 #ifdef YY_USER_INIT
3039 YY_USER_INIT;
3040 #endif
3042 if ( ! yyg->yy_start )
3043 yyg->yy_start = 1; /* first start state */
3045 if ( ! yyin )
3046 yyin = stdin;
3048 if ( ! yyout )
3049 yyout = stdout;
3051 if ( ! YY_CURRENT_BUFFER ) {
3052 yyensure_buffer_stack (yyscanner);
3053 YY_CURRENT_BUFFER_LVALUE =
3054 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
3057 yy_load_buffer_state(yyscanner );
3060 while ( 1 ) /* loops until end-of-file is reached */
3062 yy_cp = yyg->yy_c_buf_p;
3064 /* Support of yytext. */
3065 *yy_cp = yyg->yy_hold_char;
3067 /* yy_bp points to the position in yy_ch_buf of the start of
3068 * the current run.
3070 yy_bp = yy_cp;
3072 yy_current_state = yyg->yy_start;
3073 yy_current_state += YY_AT_BOL();
3074 yy_match:
3077 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3078 if ( yy_accept[yy_current_state] )
3080 yyg->yy_last_accepting_state = yy_current_state;
3081 yyg->yy_last_accepting_cpos = yy_cp;
3083 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3085 yy_current_state = (int) yy_def[yy_current_state];
3086 if ( yy_current_state >= 1215 )
3087 yy_c = yy_meta[(unsigned int) yy_c];
3089 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3090 ++yy_cp;
3092 while ( yy_current_state != 1214 );
3093 yy_cp = yyg->yy_last_accepting_cpos;
3094 yy_current_state = yyg->yy_last_accepting_state;
3096 yy_find_action:
3097 yy_act = yy_accept[yy_current_state];
3099 YY_DO_BEFORE_ACTION;
3101 do_action: /* This label is used only to access EOF actions. */
3103 switch ( yy_act )
3104 { /* beginning of action switch */
3105 case 0: /* must back up */
3106 /* undo the effects of YY_DO_BEFORE_ACTION */
3107 *yy_cp = yyg->yy_hold_char;
3108 yy_cp = yyg->yy_last_accepting_cpos;
3109 yy_current_state = yyg->yy_last_accepting_state;
3110 goto yy_find_action;
3112 case 1:
3113 /* rule 1 can match eol */
3114 YY_RULE_SETUP
3115 #line 184 "compilers/imcc/imcc.l"
3117 IMCC_INFO(interp)->frames->heredoc_rest = str_dup(yytext);
3118 BEGIN(heredoc2);
3120 YY_BREAK
3121 case 2:
3122 /* rule 2 can match eol */
3123 YY_RULE_SETUP
3124 #line 189 "compilers/imcc/imcc.l"
3126 /* heredocs have highest priority
3127 * arrange them befor all wildcard state matches
3130 /* Newline in the heredoc. Realloc and cat on. */
3131 IMCC_INFO(interp)->line++;
3132 IMCC_INFO(interp)->heredoc_content =
3133 (char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
3134 strlen(IMCC_INFO(interp)->heredoc_content) +
3135 strlen(yytext) + 2);
3136 strcpy(IMCC_INFO(interp)->heredoc_content +
3137 strlen(IMCC_INFO(interp)->heredoc_content), yytext);
3139 YY_BREAK
3140 case 3:
3141 YY_RULE_SETUP
3142 #line 204 "compilers/imcc/imcc.l"
3144 /* Are we at the end of the heredoc? */
3145 if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
3146 /* End of the heredoc. */
3147 yyguts_t * const yyg = (yyguts_t *)yyscanner;
3148 const int len = strlen(IMCC_INFO(interp)->heredoc_content);
3150 /* delim */
3151 IMCC_INFO(interp)->heredoc_content[len] =
3152 IMCC_INFO(interp)->heredoc_content[0];
3154 IMCC_INFO(interp)->heredoc_content[len + 1] = 0;
3156 mem_sys_free(IMCC_INFO(interp)->heredoc_end);
3157 IMCC_INFO(interp)->heredoc_end = NULL;
3159 IMCC_INFO(interp)->frames->buffer = YY_CURRENT_BUFFER;
3160 valp->s =
3161 IMCC_INFO(interp)->heredoc_content;
3163 yy_pop_state(yyscanner);
3164 yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest,yyscanner);
3166 /* RT #42382 delete quotes, -> emit, pbc */
3167 return STRINGC;
3169 else {
3170 /* Part of the heredoc. Realloc and cat the line on. */
3171 IMCC_INFO(interp)->heredoc_content =
3172 (char *)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
3173 strlen(IMCC_INFO(interp)->heredoc_content) +
3174 strlen(yytext) + 2);
3175 strcpy(IMCC_INFO(interp)->heredoc_content +
3176 strlen(IMCC_INFO(interp)->heredoc_content), yytext);
3179 YY_BREAK
3180 case 4:
3181 YY_RULE_SETUP
3182 #line 242 "compilers/imcc/imcc.l"
3184 yy_push_state(cmt2, yyscanner);
3185 IMCC_INFO(interp)->line = atoi(yytext+6);
3186 return LINECOMMENT;
3188 YY_BREAK
3189 case 5:
3190 /* rule 5 can match eol */
3191 YY_RULE_SETUP
3192 #line 248 "compilers/imcc/imcc.l"
3194 yy_pop_state(yyscanner);
3195 yy_push_state(cmt3, yyscanner);
3197 IMCC_INFO(interp)->frames->s.file = str_dup(yytext);
3198 IMCC_INFO(interp)->cur_unit->file = str_dup(yytext);
3200 return FILECOMMENT;
3202 YY_BREAK
3203 case 6:
3204 YY_RULE_SETUP
3205 #line 258 "compilers/imcc/imcc.l"
3207 yy_pop_state(yyscanner);
3208 yy_push_state(cmt4, yyscanner);
3210 YY_BREAK
3211 case 7:
3212 YY_RULE_SETUP
3213 #line 263 "compilers/imcc/imcc.l"
3214 { yy_push_state(cmt2, yyscanner); }
3215 YY_BREAK
3216 case 8:
3217 YY_RULE_SETUP
3218 #line 265 "compilers/imcc/imcc.l"
3219 { yy_push_state(cmt1, yyscanner); }
3220 YY_BREAK
3221 case 9:
3222 YY_RULE_SETUP
3223 #line 267 "compilers/imcc/imcc.l"
3225 IMCC_INFO(interp)->line = atoi(yytext);
3226 yy_pop_state(yyscanner);
3227 yy_push_state(cmt4, yyscanner);
3228 return LINECOMMENT;
3230 YY_BREAK
3231 case 10:
3232 /* rule 10 can match eol */
3233 YY_RULE_SETUP
3234 #line 274 "compilers/imcc/imcc.l"
3236 yy_pop_state(yyscanner);
3237 IMCC_INFO(interp)->line++;
3239 YY_BREAK
3240 case 11:
3241 /* rule 11 can match eol */
3242 YY_RULE_SETUP
3243 #line 279 "compilers/imcc/imcc.l"
3245 if (IMCC_INFO(interp)->expect_pasm == 2)
3246 BEGIN(INITIAL);
3248 IMCC_INFO(interp)->expect_pasm = 0;
3249 IMCC_INFO(interp)->line++;
3251 return '\n';
3253 YY_BREAK
3254 case 12:
3255 YY_RULE_SETUP
3256 #line 289 "compilers/imcc/imcc.l"
3258 yy_push_state(cmt5, yyscanner);
3260 YY_BREAK
3261 case 13:
3262 /* rule 13 can match eol */
3263 YY_RULE_SETUP
3264 #line 293 "compilers/imcc/imcc.l"
3266 if (IMCC_INFO(interp)->expect_pasm == 2)
3267 BEGIN(INITIAL);
3268 else
3269 yy_pop_state(yyscanner);
3271 IMCC_INFO(interp)->expect_pasm = 0;
3272 IMCC_INFO(interp)->line++;
3274 return '\n';
3276 YY_BREAK
3277 case 14:
3278 YY_RULE_SETUP
3279 #line 306 "compilers/imcc/imcc.l"
3281 valp->s = str_dup(yytext);
3282 return REG;
3284 YY_BREAK
3285 case 15:
3286 YY_RULE_SETUP
3287 #line 311 "compilers/imcc/imcc.l"
3289 IMCC_INFO(interp)->in_pod = 1;
3290 yy_push_state(pod, yyscanner);
3292 YY_BREAK
3293 case 16:
3294 /* rule 16 can match eol */
3295 YY_RULE_SETUP
3296 #line 316 "compilers/imcc/imcc.l"
3298 IMCC_INFO(interp)->in_pod = 0;
3299 yy_pop_state(yyscanner);
3300 IMCC_INFO(interp)->line++;
3302 YY_BREAK
3303 case 17:
3304 YY_RULE_SETUP
3305 #line 322 "compilers/imcc/imcc.l"
3306 { /*ignore*/ }
3307 YY_BREAK
3308 case 18:
3309 /* rule 18 can match eol */
3310 YY_RULE_SETUP
3311 #line 324 "compilers/imcc/imcc.l"
3312 { IMCC_INFO(interp)->line++; }
3313 YY_BREAK
3314 case 19:
3315 YY_RULE_SETUP
3316 #line 326 "compilers/imcc/imcc.l"
3317 return LEXICAL;
3318 YY_BREAK
3319 case 20:
3320 YY_RULE_SETUP
3321 #line 327 "compilers/imcc/imcc.l"
3322 return ARG;
3323 YY_BREAK
3324 case 21:
3325 YY_RULE_SETUP
3326 #line 328 "compilers/imcc/imcc.l"
3327 return SUB;
3328 YY_BREAK
3329 case 22:
3330 YY_RULE_SETUP
3331 #line 329 "compilers/imcc/imcc.l"
3332 return ESUB;
3333 YY_BREAK
3334 case 23:
3335 YY_RULE_SETUP
3336 #line 330 "compilers/imcc/imcc.l"
3337 return PCC_BEGIN;
3338 YY_BREAK
3339 case 24:
3340 YY_RULE_SETUP
3341 #line 331 "compilers/imcc/imcc.l"
3342 return PCC_END;
3343 YY_BREAK
3344 case 25:
3345 YY_RULE_SETUP
3346 #line 332 "compilers/imcc/imcc.l"
3347 return PCC_CALL;
3348 YY_BREAK
3349 case 26:
3350 YY_RULE_SETUP
3351 #line 333 "compilers/imcc/imcc.l"
3352 return NCI_CALL;
3353 YY_BREAK
3354 case 27:
3355 YY_RULE_SETUP
3356 #line 334 "compilers/imcc/imcc.l"
3357 return METH_CALL;
3358 YY_BREAK
3359 case 28:
3360 YY_RULE_SETUP
3361 #line 335 "compilers/imcc/imcc.l"
3362 return INVOCANT;
3363 YY_BREAK
3364 case 29:
3365 YY_RULE_SETUP
3366 #line 336 "compilers/imcc/imcc.l"
3367 return PCC_SUB;
3368 YY_BREAK
3369 case 30:
3370 YY_RULE_SETUP
3371 #line 337 "compilers/imcc/imcc.l"
3372 return PCC_BEGIN_RETURN;
3373 YY_BREAK
3374 case 31:
3375 YY_RULE_SETUP
3376 #line 338 "compilers/imcc/imcc.l"
3377 return PCC_END_RETURN;
3378 YY_BREAK
3379 case 32:
3380 YY_RULE_SETUP
3381 #line 339 "compilers/imcc/imcc.l"
3382 return PCC_BEGIN_YIELD;
3383 YY_BREAK
3384 case 33:
3385 YY_RULE_SETUP
3386 #line 340 "compilers/imcc/imcc.l"
3387 return PCC_END_YIELD;
3388 YY_BREAK
3389 case 34:
3390 YY_RULE_SETUP
3391 #line 342 "compilers/imcc/imcc.l"
3392 return METHOD;
3393 YY_BREAK
3394 case 35:
3395 YY_RULE_SETUP
3396 #line 343 "compilers/imcc/imcc.l"
3397 return MULTI;
3398 YY_BREAK
3399 case 36:
3400 YY_RULE_SETUP
3401 #line 344 "compilers/imcc/imcc.l"
3402 return MAIN;
3403 YY_BREAK
3404 case 37:
3405 YY_RULE_SETUP
3406 #line 345 "compilers/imcc/imcc.l"
3407 return LOAD;
3408 YY_BREAK
3409 case 38:
3410 YY_RULE_SETUP
3411 #line 346 "compilers/imcc/imcc.l"
3412 return INIT;
3413 YY_BREAK
3414 case 39:
3415 YY_RULE_SETUP
3416 #line 347 "compilers/imcc/imcc.l"
3417 return IMMEDIATE;
3418 YY_BREAK
3419 case 40:
3420 YY_RULE_SETUP
3421 #line 348 "compilers/imcc/imcc.l"
3422 return POSTCOMP;
3423 YY_BREAK
3424 case 41:
3425 YY_RULE_SETUP
3426 #line 349 "compilers/imcc/imcc.l"
3427 return ANON;
3428 YY_BREAK
3429 case 42:
3430 YY_RULE_SETUP
3431 #line 350 "compilers/imcc/imcc.l"
3432 return OUTER;
3433 YY_BREAK
3434 case 43:
3435 YY_RULE_SETUP
3436 #line 351 "compilers/imcc/imcc.l"
3437 return NEED_LEX;
3438 YY_BREAK
3439 case 44:
3440 YY_RULE_SETUP
3441 #line 352 "compilers/imcc/imcc.l"
3442 return VTABLE_METHOD;
3443 YY_BREAK
3444 case 45:
3445 YY_RULE_SETUP
3446 #line 353 "compilers/imcc/imcc.l"
3447 return UNIQUE_REG;
3448 YY_BREAK
3449 case 46:
3450 YY_RULE_SETUP
3451 #line 354 "compilers/imcc/imcc.l"
3452 return SUB_INSTANCE_OF;
3453 YY_BREAK
3454 case 47:
3455 YY_RULE_SETUP
3456 #line 355 "compilers/imcc/imcc.l"
3457 return SUB_LEXID;
3458 YY_BREAK
3459 case 48:
3460 YY_RULE_SETUP
3461 #line 357 "compilers/imcc/imcc.l"
3462 return RESULT;
3463 YY_BREAK
3464 case 49:
3465 YY_RULE_SETUP
3466 #line 358 "compilers/imcc/imcc.l"
3467 return GET_RESULTS;
3468 YY_BREAK
3469 case 50:
3470 YY_RULE_SETUP
3471 #line 359 "compilers/imcc/imcc.l"
3472 return YIELDT;
3473 YY_BREAK
3474 case 51:
3475 YY_RULE_SETUP
3476 #line 360 "compilers/imcc/imcc.l"
3477 return RETURN;
3478 YY_BREAK
3479 case 52:
3480 YY_RULE_SETUP
3481 #line 361 "compilers/imcc/imcc.l"
3482 return LOADLIB;
3483 YY_BREAK
3484 case 53:
3485 YY_RULE_SETUP
3486 #line 363 "compilers/imcc/imcc.l"
3487 return ADV_FLAT;
3488 YY_BREAK
3489 case 54:
3490 YY_RULE_SETUP
3491 #line 364 "compilers/imcc/imcc.l"
3492 return ADV_SLURPY;
3493 YY_BREAK
3494 case 55:
3495 YY_RULE_SETUP
3496 #line 365 "compilers/imcc/imcc.l"
3497 return ADV_OPTIONAL;
3498 YY_BREAK
3499 case 56:
3500 YY_RULE_SETUP
3501 #line 366 "compilers/imcc/imcc.l"
3502 return ADV_OPT_FLAG;
3503 YY_BREAK
3504 case 57:
3505 YY_RULE_SETUP
3506 #line 367 "compilers/imcc/imcc.l"
3507 return ADV_NAMED;
3508 YY_BREAK
3509 case 58:
3510 YY_RULE_SETUP
3511 #line 368 "compilers/imcc/imcc.l"
3512 return ADV_ARROW;
3513 YY_BREAK
3514 case 59:
3515 YY_RULE_SETUP
3516 #line 369 "compilers/imcc/imcc.l"
3517 return ADV_INVOCANT;
3518 YY_BREAK
3519 case 60:
3520 YY_RULE_SETUP
3521 #line 371 "compilers/imcc/imcc.l"
3522 return NAMESPACE;
3523 YY_BREAK
3524 case 61:
3525 YY_RULE_SETUP
3526 #line 372 "compilers/imcc/imcc.l"
3527 return HLL;
3528 YY_BREAK
3529 case 62:
3530 YY_RULE_SETUP
3531 #line 373 "compilers/imcc/imcc.l"
3532 return HLL_MAP;
3533 YY_BREAK
3534 case 63:
3535 YY_RULE_SETUP
3536 #line 374 "compilers/imcc/imcc.l"
3537 return ENDNAMESPACE;
3538 YY_BREAK
3539 case 64:
3540 YY_RULE_SETUP
3541 #line 375 "compilers/imcc/imcc.l"
3542 return LOCAL;
3543 YY_BREAK
3544 case 65:
3545 YY_RULE_SETUP
3546 #line 376 "compilers/imcc/imcc.l"
3547 return GLOBAL;
3548 YY_BREAK
3549 case 66:
3550 YY_RULE_SETUP
3551 #line 377 "compilers/imcc/imcc.l"
3552 return CONST;
3553 YY_BREAK
3554 case 67:
3555 YY_RULE_SETUP
3556 #line 378 "compilers/imcc/imcc.l"
3557 return GLOBAL_CONST;
3558 YY_BREAK
3559 case 68:
3560 YY_RULE_SETUP
3561 #line 379 "compilers/imcc/imcc.l"
3562 return PARAM;
3563 YY_BREAK
3564 case 69:
3565 YY_RULE_SETUP
3566 #line 380 "compilers/imcc/imcc.l"
3567 return PRAGMA;
3568 YY_BREAK
3569 case 70:
3570 YY_RULE_SETUP
3571 #line 381 "compilers/imcc/imcc.l"
3572 return N_OPERATORS;
3573 YY_BREAK
3574 case 71:
3575 YY_RULE_SETUP
3576 #line 382 "compilers/imcc/imcc.l"
3577 return GOTO;
3578 YY_BREAK
3579 case 72:
3580 YY_RULE_SETUP
3581 #line 383 "compilers/imcc/imcc.l"
3582 return IF;
3583 YY_BREAK
3584 case 73:
3585 YY_RULE_SETUP
3586 #line 384 "compilers/imcc/imcc.l"
3587 return UNLESS;
3588 YY_BREAK
3589 case 74:
3590 YY_RULE_SETUP
3591 #line 385 "compilers/imcc/imcc.l"
3592 return PNULL;
3593 YY_BREAK
3594 case 75:
3595 YY_RULE_SETUP
3596 #line 386 "compilers/imcc/imcc.l"
3597 return INTV;
3598 YY_BREAK
3599 case 76:
3600 YY_RULE_SETUP
3601 #line 387 "compilers/imcc/imcc.l"
3602 return FLOATV;
3603 YY_BREAK
3604 case 77:
3605 YY_RULE_SETUP
3606 #line 388 "compilers/imcc/imcc.l"
3607 return NEW;
3608 YY_BREAK
3609 case 78:
3610 YY_RULE_SETUP
3611 #line 389 "compilers/imcc/imcc.l"
3612 return ADDR;
3613 YY_BREAK
3614 case 79:
3615 YY_RULE_SETUP
3616 #line 390 "compilers/imcc/imcc.l"
3617 return GLOBALOP;
3618 YY_BREAK
3619 case 80:
3620 YY_RULE_SETUP
3621 #line 391 "compilers/imcc/imcc.l"
3622 return PMCV;
3623 YY_BREAK
3624 case 81:
3625 YY_RULE_SETUP
3626 #line 392 "compilers/imcc/imcc.l"
3627 return STRINGV;
3628 YY_BREAK
3629 case 82:
3630 YY_RULE_SETUP
3631 #line 393 "compilers/imcc/imcc.l"
3632 return SHIFT_LEFT;
3633 YY_BREAK
3634 case 83:
3635 YY_RULE_SETUP
3636 #line 394 "compilers/imcc/imcc.l"
3637 return SHIFT_RIGHT;
3638 YY_BREAK
3639 case 84:
3640 YY_RULE_SETUP
3641 #line 395 "compilers/imcc/imcc.l"
3642 return SHIFT_RIGHT_U;
3643 YY_BREAK
3644 case 85:
3645 YY_RULE_SETUP
3646 #line 396 "compilers/imcc/imcc.l"
3647 return LOG_AND;
3648 YY_BREAK
3649 case 86:
3650 YY_RULE_SETUP
3651 #line 397 "compilers/imcc/imcc.l"
3652 return LOG_OR;
3653 YY_BREAK
3654 case 87:
3655 YY_RULE_SETUP
3656 #line 398 "compilers/imcc/imcc.l"
3657 return LOG_XOR;
3658 YY_BREAK
3659 case 88:
3660 YY_RULE_SETUP
3661 #line 399 "compilers/imcc/imcc.l"
3662 return RELOP_LT;
3663 YY_BREAK
3664 case 89:
3665 YY_RULE_SETUP
3666 #line 400 "compilers/imcc/imcc.l"
3667 return RELOP_LTE;
3668 YY_BREAK
3669 case 90:
3670 YY_RULE_SETUP
3671 #line 401 "compilers/imcc/imcc.l"
3672 return RELOP_GT;
3673 YY_BREAK
3674 case 91:
3675 YY_RULE_SETUP
3676 #line 402 "compilers/imcc/imcc.l"
3677 return RELOP_GTE;
3678 YY_BREAK
3679 case 92:
3680 YY_RULE_SETUP
3681 #line 403 "compilers/imcc/imcc.l"
3682 return RELOP_EQ;
3683 YY_BREAK
3684 case 93:
3685 YY_RULE_SETUP
3686 #line 404 "compilers/imcc/imcc.l"
3687 return RELOP_NE;
3688 YY_BREAK
3689 case 94:
3690 YY_RULE_SETUP
3691 #line 405 "compilers/imcc/imcc.l"
3692 return POW;
3693 YY_BREAK
3694 case 95:
3695 YY_RULE_SETUP
3696 #line 407 "compilers/imcc/imcc.l"
3697 return CONCAT;
3698 YY_BREAK
3699 case 96:
3700 YY_RULE_SETUP
3701 #line 408 "compilers/imcc/imcc.l"
3702 return DOT;
3703 YY_BREAK
3704 case 97:
3705 YY_RULE_SETUP
3706 #line 409 "compilers/imcc/imcc.l"
3707 return DOTDOT;
3708 YY_BREAK
3709 case 98:
3710 YY_RULE_SETUP
3711 #line 410 "compilers/imcc/imcc.l"
3712 return PLUS_ASSIGN;
3713 YY_BREAK
3714 case 99:
3715 YY_RULE_SETUP
3716 #line 411 "compilers/imcc/imcc.l"
3717 return MINUS_ASSIGN;
3718 YY_BREAK
3719 case 100:
3720 YY_RULE_SETUP
3721 #line 412 "compilers/imcc/imcc.l"
3722 return MUL_ASSIGN;
3723 YY_BREAK
3724 case 101:
3725 YY_RULE_SETUP
3726 #line 413 "compilers/imcc/imcc.l"
3727 return DIV_ASSIGN;
3728 YY_BREAK
3729 case 102:
3730 YY_RULE_SETUP
3731 #line 414 "compilers/imcc/imcc.l"
3732 return MOD_ASSIGN;
3733 YY_BREAK
3734 case 103:
3735 YY_RULE_SETUP
3736 #line 415 "compilers/imcc/imcc.l"
3737 return FDIV;
3738 YY_BREAK
3739 case 104:
3740 YY_RULE_SETUP
3741 #line 416 "compilers/imcc/imcc.l"
3742 return FDIV_ASSIGN;
3743 YY_BREAK
3744 case 105:
3745 YY_RULE_SETUP
3746 #line 417 "compilers/imcc/imcc.l"
3747 return BAND_ASSIGN;
3748 YY_BREAK
3749 case 106:
3750 YY_RULE_SETUP
3751 #line 418 "compilers/imcc/imcc.l"
3752 return BOR_ASSIGN;
3753 YY_BREAK
3754 case 107:
3755 YY_RULE_SETUP
3756 #line 419 "compilers/imcc/imcc.l"
3757 return BXOR_ASSIGN;
3758 YY_BREAK
3759 case 108:
3760 YY_RULE_SETUP
3761 #line 420 "compilers/imcc/imcc.l"
3762 return SHR_ASSIGN;
3763 YY_BREAK
3764 case 109:
3765 YY_RULE_SETUP
3766 #line 421 "compilers/imcc/imcc.l"
3767 return SHL_ASSIGN;
3768 YY_BREAK
3769 case 110:
3770 YY_RULE_SETUP
3771 #line 422 "compilers/imcc/imcc.l"
3772 return SHR_U_ASSIGN;
3773 YY_BREAK
3774 case 111:
3775 YY_RULE_SETUP
3776 #line 423 "compilers/imcc/imcc.l"
3777 return CONCAT_ASSIGN;
3778 YY_BREAK
3779 case 112:
3780 YY_RULE_SETUP
3781 #line 425 "compilers/imcc/imcc.l"
3783 int c;
3784 int start_line;
3785 int start_cond = YY_START;
3787 BEGIN(macro);
3788 c = yylex_skip(valp, interp, " ", yyscanner);
3790 if (c != IDENTIFIER)
3791 IMCC_fataly(interp, E_SyntaxError,
3792 "Constant names must be identifiers");
3794 IMCC_INFO(interp)->cur_macro_name = valp->s;
3795 start_line = IMCC_INFO(interp)->line;
3797 c = yylex_skip(valp, interp, " ", yyscanner);
3799 if (c != INTC && c != FLOATC && c != STRINGC && c != REG)
3800 IMCC_fataly(interp, E_SyntaxError,
3801 "Constant '%s' value must be a number, "
3802 "stringliteral or register", IMCC_INFO(interp)->cur_macro_name);
3804 define_macro(interp, IMCC_INFO(interp)->cur_macro_name, NULL, valp->s, start_line);
3806 IMCC_INFO(interp)->cur_macro_name = NULL;
3808 BEGIN(start_cond);
3809 return MACRO;
3811 YY_BREAK
3812 case 113:
3813 YY_RULE_SETUP
3814 #line 455 "compilers/imcc/imcc.l"
3816 return read_macro(valp, interp, yyscanner);
3818 YY_BREAK
3819 case 114:
3820 YY_RULE_SETUP
3821 #line 459 "compilers/imcc/imcc.l"
3823 const int c = yylex(valp,yyscanner,interp);
3824 if (c != STRINGC)
3825 return c;
3827 YYCHOP();
3828 include_file(interp, yytext + 1, yyscanner);
3830 YY_BREAK
3831 case 115:
3832 YY_RULE_SETUP
3833 #line 468 "compilers/imcc/imcc.l"
3835 if (valp) {
3836 char *label;
3837 size_t len;
3839 YYCHOP();
3840 YYCHOP();
3842 if (!IMCC_INFO(interp)->frames || !IMCC_INFO(interp)->frames->label)
3843 IMCC_fataly(interp, E_SyntaxError, "missing space?");
3845 len = yyleng + 10;
3846 label = (char *)mem_sys_allocate(len);
3847 snprintf(label, len, "%s%d", yytext, IMCC_INFO(interp)->frames->label);
3849 /* XXX: free valp->s if it exists? */
3850 valp->s = label;
3853 return LABEL;
3855 YY_BREAK
3856 case 116:
3857 YY_RULE_SETUP
3858 #line 490 "compilers/imcc/imcc.l"
3861 if (valp) {
3862 char *label;
3863 size_t len;
3864 YYCHOP();
3866 /* RT #32421 if$I0 is parsed as if$ I0 */
3867 if (!IMCC_INFO(interp)->frames || !IMCC_INFO(interp)->frames->label)
3868 IMCC_fataly(interp, E_SyntaxError, "missing space?");
3870 len = yyleng + 10;
3871 label = (char *)mem_sys_allocate(len);
3872 snprintf(label, len, "%s%d", yytext, IMCC_INFO(interp)->frames->label);
3874 /* XXX: free valp->s if it exists? */
3875 valp->s = label;
3878 return IDENTIFIER;
3880 YY_BREAK
3881 case 117:
3882 YY_RULE_SETUP
3883 #line 512 "compilers/imcc/imcc.l"
3884 return COMMA;
3885 YY_BREAK
3886 case 118:
3887 YY_RULE_SETUP
3888 #line 514 "compilers/imcc/imcc.l"
3890 /* trim last ':' */
3891 YYCHOP();
3893 if (valp)
3894 valp->s = yytext;
3896 return LABEL;
3898 YY_BREAK
3899 case 119:
3900 YY_RULE_SETUP
3901 #line 524 "compilers/imcc/imcc.l"
3903 char * const macro_name = yytext + 1;
3904 STRING * name_string = string_from_cstring(interp, macro_name, 0);
3905 const int type = pmc_type(interp, name_string);
3907 if (type > 0) {
3908 const size_t len = 16;
3909 char * const buf = (char *)mem_sys_allocate(len);
3910 snprintf(buf, len, "%d", type);
3912 /* XXX: free valp->s if already used? Sounds like a good idea, */
3913 /* but big segfaults if you do. */
3914 valp->s = buf;
3915 return INTC;
3918 if (!expand_macro(interp, macro_name, yyscanner)) {
3919 yyless(1);
3920 return DOT;
3923 YY_BREAK
3924 case 120:
3925 YY_RULE_SETUP
3926 #line 546 "compilers/imcc/imcc.l"
3928 if (!is_def) {
3929 SymReg *r = find_sym(interp, yytext);
3931 if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
3932 valp->sr = r;
3933 return VAR;
3936 if (IMCC_INFO(interp)->cur_unit &&
3937 IMCC_INFO(interp)->cur_unit->instructions &&
3938 (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0]) &&
3939 r->pcc_sub)
3941 if ((r->pcc_sub->pragma & P_METHOD) &&
3942 !strcmp(yytext, "self")) {
3943 valp->sr = mk_ident(interp, "self", 'P');
3944 IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
3945 return VAR;
3950 valp->s = str_dup(yytext);
3951 return (!is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
3953 YY_BREAK
3954 case 121:
3955 YY_RULE_SETUP
3956 #line 573 "compilers/imcc/imcc.l"
3957 DUP_AND_RET(valp, FLOATC);
3958 YY_BREAK
3959 case 122:
3960 YY_RULE_SETUP
3961 #line 574 "compilers/imcc/imcc.l"
3962 DUP_AND_RET(valp, INTC);
3963 YY_BREAK
3964 case 123:
3965 YY_RULE_SETUP
3966 #line 575 "compilers/imcc/imcc.l"
3967 DUP_AND_RET(valp, INTC);
3968 YY_BREAK
3969 case 124:
3970 YY_RULE_SETUP
3971 #line 576 "compilers/imcc/imcc.l"
3972 DUP_AND_RET(valp, INTC);
3973 YY_BREAK
3974 case 125:
3975 YY_RULE_SETUP
3976 #line 577 "compilers/imcc/imcc.l"
3977 DUP_AND_RET(valp, INTC);
3978 YY_BREAK
3979 case 126:
3980 YY_RULE_SETUP
3981 #line 579 "compilers/imcc/imcc.l"
3983 valp->s = str_dup(yytext);
3985 /* trailing 'L' */
3986 valp->s[strlen(valp->s) - 1] = '\0';
3988 /* no BIGINT native format yet */
3989 return STRINGC;
3991 YY_BREAK
3992 case 127:
3993 YY_RULE_SETUP
3994 #line 589 "compilers/imcc/imcc.l"
3996 valp->s = str_dup(yytext);
3998 /* RT #42382 delete quotes, -> emit, pbc */
3999 return STRINGC;
4001 YY_BREAK
4002 case 128:
4003 YY_RULE_SETUP
4004 #line 596 "compilers/imcc/imcc.l"
4006 macro_frame_t *frame;
4008 /* Save the string we want to mark the end of the heredoc and snip
4009 off newline and quote. */
4010 if (IMCC_INFO(interp)->frames->heredoc_rest)
4011 IMCC_fataly(interp, E_SyntaxError,
4012 "nested heredoc not supported");
4013 IMCC_INFO(interp)->heredoc_end = str_dup(yytext + 3);
4014 IMCC_INFO(interp)->heredoc_end[strlen(IMCC_INFO(interp)->heredoc_end) - 1] = 0;
4016 if (!strlen(IMCC_INFO(interp)->heredoc_end))
4017 IMCC_fataly(interp, E_SyntaxError, "empty heredoc delimiter");
4019 frame = new_frame(interp);
4020 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
4021 IMCC_INFO(interp)->frames = frame;
4023 /* Start slurping up the heredoc. */
4024 IMCC_INFO(interp)->heredoc_content = (char *)mem_sys_allocate(2);
4026 /* preserve delim */
4027 IMCC_INFO(interp)->heredoc_content[0] = yytext[2];
4029 /* eos */
4030 IMCC_INFO(interp)->heredoc_content[1] = 0;
4031 yy_push_state(heredoc1, yyscanner);
4033 YY_BREAK
4034 case 129:
4035 YY_RULE_SETUP
4036 #line 625 "compilers/imcc/imcc.l"
4038 /* charset:"..." */
4039 valp->s = str_dup(yytext);
4041 /* this is actually not unicode but a string with a charset */
4042 return USTRINGC;
4044 YY_BREAK
4045 case 130:
4046 YY_RULE_SETUP
4047 #line 633 "compilers/imcc/imcc.l"
4049 if (valp) (valp)->s = yytext;
4050 if (IMCC_INFO(interp)->state->pasm_file)
4051 IMCC_fataly(interp, E_SyntaxError,
4052 "'%s' is not a valid register name in pasm mode", yytext);
4053 return IREG;
4055 YY_BREAK
4056 case 131:
4057 YY_RULE_SETUP
4058 #line 641 "compilers/imcc/imcc.l"
4060 if (valp) (valp)->s = yytext;
4061 if (IMCC_INFO(interp)->state->pasm_file)
4062 IMCC_fataly(interp, E_SyntaxError,
4063 "'%s' is not a valid register name in pasm mode", yytext);
4064 return NREG;
4066 YY_BREAK
4067 case 132:
4068 YY_RULE_SETUP
4069 #line 649 "compilers/imcc/imcc.l"
4071 if (valp) (valp)->s = yytext;
4072 if (IMCC_INFO(interp)->state->pasm_file)
4073 IMCC_fataly(interp, E_SyntaxError,
4074 "'%s' is not a valid register name in pasm mode", yytext);
4075 return SREG;
4077 YY_BREAK
4078 case 133:
4079 YY_RULE_SETUP
4080 #line 657 "compilers/imcc/imcc.l"
4082 if (valp) (valp)->s = yytext;
4083 if (IMCC_INFO(interp)->state->pasm_file)
4084 IMCC_fataly(interp, E_SyntaxError,
4085 "'%s' is not a valid register name in pasm mode", yytext);
4086 return PREG;
4088 YY_BREAK
4089 case 134:
4090 YY_RULE_SETUP
4091 #line 665 "compilers/imcc/imcc.l"
4093 IMCC_fataly(interp, E_SyntaxError,
4094 "'%s' is not a valid register name", yytext);
4096 YY_BREAK
4097 case 135:
4098 YY_RULE_SETUP
4099 #line 671 "compilers/imcc/imcc.l"
4100 /* skip */;
4101 YY_BREAK
4102 case 136:
4103 YY_RULE_SETUP
4104 #line 673 "compilers/imcc/imcc.l"
4106 /* catch all except for state macro */
4107 return yytext[0];
4109 YY_BREAK
4110 case YY_STATE_EOF(emit):
4111 #line 678 "compilers/imcc/imcc.l"
4113 BEGIN(INITIAL);
4115 if (IMCC_INFO(interp)->frames->s.pasm_file) {
4116 IMCC_INFO(interp)->frames->s.pasm_file = 2;
4117 return EOM;
4120 return 0;
4122 YY_BREAK
4123 case YY_STATE_EOF(INITIAL):
4124 #line 689 "compilers/imcc/imcc.l"
4125 yyterminate();
4126 YY_BREAK
4127 case 137:
4128 YY_RULE_SETUP
4129 #line 691 "compilers/imcc/imcc.l"
4130 DUP_AND_RET(valp, ENDM);
4131 YY_BREAK
4132 case 138:
4133 /* rule 138 can match eol */
4134 YY_RULE_SETUP
4135 #line 693 "compilers/imcc/imcc.l"
4137 IMCC_INFO(interp)->line++;
4138 DUP_AND_RET(valp, '\n');
4140 YY_BREAK
4141 case 139:
4142 YY_RULE_SETUP
4143 #line 698 "compilers/imcc/imcc.l"
4144 return LABEL;
4145 YY_BREAK
4146 case 140:
4147 YY_RULE_SETUP
4148 #line 700 "compilers/imcc/imcc.l"
4151 if (yylex(valp,yyscanner,interp) != LABEL)
4152 IMCC_fataly(interp, E_SyntaxError, "LABEL expected");
4154 if (valp) {
4155 char *label;
4156 size_t len;
4157 YYCHOP();
4159 len = strlen(IMCC_INFO(interp)->cur_macro_name) + yyleng + 15;
4160 label = (char *)mem_sys_allocate(len);
4162 snprintf(label, len, "local__%s__%s__$:",
4163 IMCC_INFO(interp)->cur_macro_name, yytext+1);
4165 /* XXX: free valp->s if it exists? */
4166 valp->s = label;
4169 return LABEL;
4171 YY_BREAK
4172 case 141:
4173 YY_RULE_SETUP
4174 #line 723 "compilers/imcc/imcc.l"
4176 if (valp) {
4177 const size_t len = strlen(IMCC_INFO(interp)->cur_macro_name) + yyleng + 12;
4178 char * const label = (char *)mem_sys_allocate(len);
4180 snprintf(label, len, "local__%s__%s__$",
4181 IMCC_INFO(interp)->cur_macro_name, yytext+2);
4183 valp->s = label;
4186 return IDENTIFIER;
4188 YY_BREAK
4189 case 142:
4190 YY_RULE_SETUP
4191 #line 737 "compilers/imcc/imcc.l"
4192 /* skip leading ws */;
4193 YY_BREAK
4194 case 143:
4195 YY_RULE_SETUP
4196 #line 738 "compilers/imcc/imcc.l"
4197 DUP_AND_RET(valp, ' ');
4198 YY_BREAK
4199 case 144:
4200 YY_RULE_SETUP
4201 #line 739 "compilers/imcc/imcc.l"
4202 DUP_AND_RET(valp, IDENTIFIER);
4203 YY_BREAK
4204 case 145:
4205 YY_RULE_SETUP
4206 #line 740 "compilers/imcc/imcc.l"
4207 DUP_AND_RET(valp, MACRO);
4208 YY_BREAK
4209 case 146:
4210 YY_RULE_SETUP
4211 #line 741 "compilers/imcc/imcc.l"
4212 DUP_AND_RET(valp, yytext[0]);
4213 YY_BREAK
4214 case YY_STATE_EOF(macro):
4215 #line 742 "compilers/imcc/imcc.l"
4216 yyterminate();
4217 YY_BREAK
4218 case 147:
4219 YY_RULE_SETUP
4220 #line 744 "compilers/imcc/imcc.l"
4221 ECHO;
4222 YY_BREAK
4223 #line 4224 "compilers/imcc/imclexer.c"
4224 case YY_STATE_EOF(pod):
4225 case YY_STATE_EOF(cmt1):
4226 case YY_STATE_EOF(cmt2):
4227 case YY_STATE_EOF(cmt3):
4228 case YY_STATE_EOF(cmt4):
4229 case YY_STATE_EOF(cmt5):
4230 case YY_STATE_EOF(heredoc1):
4231 case YY_STATE_EOF(heredoc2):
4232 yyterminate();
4234 case YY_END_OF_BUFFER:
4236 /* Amount of text matched not including the EOB char. */
4237 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
4239 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4240 *yy_cp = yyg->yy_hold_char;
4241 YY_RESTORE_YY_MORE_OFFSET
4243 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4245 /* We're scanning a new file or input source. It's
4246 * possible that this happened because the user
4247 * just pointed yyin at a new source and called
4248 * yylex(). If so, then we have to assure
4249 * consistency between YY_CURRENT_BUFFER and our
4250 * globals. Here is the right place to do so, because
4251 * this is the first action (other than possibly a
4252 * back-up) that will match for the new input source.
4254 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4255 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4256 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4259 /* Note that here we test for yy_c_buf_p "<=" to the position
4260 * of the first EOB in the buffer, since yy_c_buf_p will
4261 * already have been incremented past the NUL character
4262 * (since all states make transitions on EOB to the
4263 * end-of-buffer state). Contrast this with the test
4264 * in input().
4266 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4267 { /* This was really a NUL. */
4268 yy_state_type yy_next_state;
4270 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
4272 yy_current_state = yy_get_previous_state( yyscanner );
4274 /* Okay, we're now positioned to make the NUL
4275 * transition. We couldn't have
4276 * yy_get_previous_state() go ahead and do it
4277 * for us because it doesn't know how to deal
4278 * with the possibility of jamming (and we don't
4279 * want to build jamming into it because then it
4280 * will run more slowly).
4283 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
4285 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4287 if ( yy_next_state )
4289 /* Consume the NUL. */
4290 yy_cp = ++yyg->yy_c_buf_p;
4291 yy_current_state = yy_next_state;
4292 goto yy_match;
4295 else
4297 yy_cp = yyg->yy_last_accepting_cpos;
4298 yy_current_state = yyg->yy_last_accepting_state;
4299 goto yy_find_action;
4303 else switch ( yy_get_next_buffer( yyscanner ) )
4305 case EOB_ACT_END_OF_FILE:
4307 yyg->yy_did_buffer_switch_on_eof = 0;
4309 if ( yywrap(yyscanner ) )
4311 /* Note: because we've taken care in
4312 * yy_get_next_buffer() to have set up
4313 * yytext, we can now set up
4314 * yy_c_buf_p so that if some total
4315 * hoser (like flex itself) wants to
4316 * call the scanner after we return the
4317 * YY_NULL, it'll still work - another
4318 * YY_NULL will get returned.
4320 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
4322 yy_act = YY_STATE_EOF(YY_START);
4323 goto do_action;
4326 else
4328 if ( ! yyg->yy_did_buffer_switch_on_eof )
4329 YY_NEW_FILE;
4331 break;
4334 case EOB_ACT_CONTINUE_SCAN:
4335 yyg->yy_c_buf_p =
4336 yyg->yytext_ptr + yy_amount_of_matched_text;
4338 yy_current_state = yy_get_previous_state( yyscanner );
4340 yy_cp = yyg->yy_c_buf_p;
4341 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4342 goto yy_match;
4344 case EOB_ACT_LAST_MATCH:
4345 yyg->yy_c_buf_p =
4346 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
4348 yy_current_state = yy_get_previous_state( yyscanner );
4350 yy_cp = yyg->yy_c_buf_p;
4351 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4352 goto yy_find_action;
4354 break;
4357 default:
4358 YY_FATAL_ERROR(
4359 "fatal flex scanner internal error--no action found" );
4360 } /* end of action switch */
4361 } /* end of scanning one token */
4362 } /* end of yylex */
4364 /* yy_get_next_buffer - try to read in a new buffer
4366 * Returns a code representing an action:
4367 * EOB_ACT_LAST_MATCH -
4368 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4369 * EOB_ACT_END_OF_FILE - end of file
4371 static int yy_get_next_buffer (yyscan_t yyscanner)
4373 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4374 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4375 register char *source = yyg->yytext_ptr;
4376 register int number_to_move, i;
4377 int ret_val;
4379 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
4380 YY_FATAL_ERROR(
4381 "fatal flex scanner internal error--end of buffer missed" );
4383 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4384 { /* Don't try to fill the buffer, so this is an EOF. */
4385 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
4387 /* We matched a single character, the EOB, so
4388 * treat this as a final EOF.
4390 return EOB_ACT_END_OF_FILE;
4393 else
4395 /* We matched some text prior to the EOB, first
4396 * process it.
4398 return EOB_ACT_LAST_MATCH;
4402 /* Try to read more data. */
4404 /* First move last chars to start of buffer. */
4405 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
4407 for ( i = 0; i < number_to_move; ++i )
4408 *(dest++) = *(source++);
4410 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4411 /* don't do the read, it's not guaranteed to return an EOF,
4412 * just force an EOF
4414 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
4416 else
4418 int num_to_read =
4419 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4421 while ( num_to_read <= 0 )
4422 { /* Not enough room in the buffer - grow it. */
4424 /* just a shorter name for the current buffer */
4425 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4427 int yy_c_buf_p_offset =
4428 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
4430 if ( b->yy_is_our_buffer )
4432 int new_size = b->yy_buf_size * 2;
4434 if ( new_size <= 0 )
4435 b->yy_buf_size += b->yy_buf_size / 8;
4436 else
4437 b->yy_buf_size *= 2;
4439 b->yy_ch_buf = (char *)
4440 /* Include room in for 2 EOB chars. */
4441 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
4443 else
4444 /* Can't grow it, we don't own it. */
4445 b->yy_ch_buf = 0;
4447 if ( ! b->yy_ch_buf )
4448 YY_FATAL_ERROR(
4449 "fatal error - scanner input buffer overflow" );
4451 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4453 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4454 number_to_move - 1;
4458 if ( num_to_read > YY_READ_BUF_SIZE )
4459 num_to_read = YY_READ_BUF_SIZE;
4461 /* Read in more data. */
4462 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4463 yyg->yy_n_chars, (size_t) num_to_read );
4465 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4468 if ( yyg->yy_n_chars == 0 )
4470 if ( number_to_move == YY_MORE_ADJ )
4472 ret_val = EOB_ACT_END_OF_FILE;
4473 yyrestart(yyin ,yyscanner);
4476 else
4478 ret_val = EOB_ACT_LAST_MATCH;
4479 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4480 YY_BUFFER_EOF_PENDING;
4484 else
4485 ret_val = EOB_ACT_CONTINUE_SCAN;
4487 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4488 /* Extend the array by 50%, plus the number we really need. */
4489 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
4490 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
4491 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4492 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4495 yyg->yy_n_chars += number_to_move;
4496 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4497 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4499 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4501 return ret_val;
4504 /* yy_get_previous_state - get the state just before the EOB char was reached */
4506 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
4508 register yy_state_type yy_current_state;
4509 register char *yy_cp;
4510 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4512 yy_current_state = yyg->yy_start;
4513 yy_current_state += YY_AT_BOL();
4515 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
4517 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4518 if ( yy_accept[yy_current_state] )
4520 yyg->yy_last_accepting_state = yy_current_state;
4521 yyg->yy_last_accepting_cpos = yy_cp;
4523 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4525 yy_current_state = (int) yy_def[yy_current_state];
4526 if ( yy_current_state >= 1215 )
4527 yy_c = yy_meta[(unsigned int) yy_c];
4529 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4532 return yy_current_state;
4535 /* yy_try_NUL_trans - try to make a transition on the NUL character
4537 * synopsis
4538 * next_state = yy_try_NUL_trans( current_state );
4540 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
4542 register int yy_is_jam;
4543 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
4544 register char *yy_cp = yyg->yy_c_buf_p;
4546 register YY_CHAR yy_c = 1;
4547 if ( yy_accept[yy_current_state] )
4549 yyg->yy_last_accepting_state = yy_current_state;
4550 yyg->yy_last_accepting_cpos = yy_cp;
4552 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4554 yy_current_state = (int) yy_def[yy_current_state];
4555 if ( yy_current_state >= 1215 )
4556 yy_c = yy_meta[(unsigned int) yy_c];
4558 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4559 yy_is_jam = (yy_current_state == 1214);
4561 return yy_is_jam ? 0 : yy_current_state;
4564 static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
4566 register char *yy_cp;
4567 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4569 yy_cp = yyg->yy_c_buf_p;
4571 /* undo effects of setting up yytext */
4572 *yy_cp = yyg->yy_hold_char;
4574 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4575 { /* need to shift things up to make room */
4576 /* +2 for EOB chars. */
4577 register int number_to_move = yyg->yy_n_chars + 2;
4578 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
4579 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
4580 register char *source =
4581 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
4583 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4584 *--dest = *--source;
4586 yy_cp += (int) (dest - source);
4587 yy_bp += (int) (dest - source);
4588 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
4589 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
4591 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4592 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4595 *--yy_cp = (char) c;
4597 yyg->yytext_ptr = yy_bp;
4598 yyg->yy_hold_char = *yy_cp;
4599 yyg->yy_c_buf_p = yy_cp;
4602 #ifndef YY_NO_INPUT
4603 #ifdef __cplusplus
4604 static int yyinput (yyscan_t yyscanner)
4605 #else
4606 static int input (yyscan_t yyscanner)
4607 #endif
4610 int c;
4611 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4613 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4615 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4617 /* yy_c_buf_p now points to the character we want to return.
4618 * If this occurs *before* the EOB characters, then it's a
4619 * valid NUL; if not, then we've hit the end of the buffer.
4621 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4622 /* This was really a NUL. */
4623 *yyg->yy_c_buf_p = '\0';
4625 else
4626 { /* need more input */
4627 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
4628 ++yyg->yy_c_buf_p;
4630 switch ( yy_get_next_buffer( yyscanner ) )
4632 case EOB_ACT_LAST_MATCH:
4633 /* This happens because yy_g_n_b()
4634 * sees that we've accumulated a
4635 * token and flags that we need to
4636 * try matching the token before
4637 * proceeding. But for input(),
4638 * there's no matching to consider.
4639 * So convert the EOB_ACT_LAST_MATCH
4640 * to EOB_ACT_END_OF_FILE.
4643 /* Reset buffer status. */
4644 yyrestart(yyin ,yyscanner);
4646 /*FALLTHROUGH*/
4648 case EOB_ACT_END_OF_FILE:
4650 if ( yywrap(yyscanner ) )
4651 return EOF;
4653 if ( ! yyg->yy_did_buffer_switch_on_eof )
4654 YY_NEW_FILE;
4655 #ifdef __cplusplus
4656 return yyinput(yyscanner);
4657 #else
4658 return input(yyscanner);
4659 #endif
4662 case EOB_ACT_CONTINUE_SCAN:
4663 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
4664 break;
4669 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
4670 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
4671 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
4673 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
4675 return c;
4677 #endif /* ifndef YY_NO_INPUT */
4679 /** Immediately switch to a different input stream.
4680 * @param input_file A readable stream.
4681 * @param yyscanner The scanner object.
4682 * @note This function does not reset the start condition to @c INITIAL .
4684 void yyrestart (FILE * input_file , yyscan_t yyscanner)
4686 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4688 if ( ! YY_CURRENT_BUFFER ){
4689 yyensure_buffer_stack (yyscanner);
4690 YY_CURRENT_BUFFER_LVALUE =
4691 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
4694 yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
4695 yy_load_buffer_state(yyscanner );
4698 /** Switch to a different input buffer.
4699 * @param new_buffer The new input buffer.
4700 * @param yyscanner The scanner object.
4702 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4704 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4706 /* TODO. We should be able to replace this entire function body
4707 * with
4708 * yypop_buffer_state();
4709 * yypush_buffer_state(new_buffer);
4711 yyensure_buffer_stack (yyscanner);
4712 if ( YY_CURRENT_BUFFER == new_buffer )
4713 return;
4715 if ( YY_CURRENT_BUFFER )
4717 /* Flush out information for old buffer. */
4718 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4719 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4720 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4723 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4724 yy_load_buffer_state(yyscanner );
4726 /* We don't actually know whether we did this switch during
4727 * EOF (yywrap()) processing, but the only time this flag
4728 * is looked at is after yywrap() is called, so it's safe
4729 * to go ahead and always set it.
4731 yyg->yy_did_buffer_switch_on_eof = 1;
4734 static void yy_load_buffer_state (yyscan_t yyscanner)
4736 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4737 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4738 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4739 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4740 yyg->yy_hold_char = *yyg->yy_c_buf_p;
4743 /** Allocate and initialize an input buffer state.
4744 * @param file A readable stream.
4745 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4746 * @param yyscanner The scanner object.
4747 * @return the allocated buffer state.
4749 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
4751 YY_BUFFER_STATE b;
4753 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4754 if ( ! b )
4755 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4757 b->yy_buf_size = size;
4759 /* yy_ch_buf has to be 2 characters longer than the size given because
4760 * we need to put in 2 end-of-buffer characters.
4762 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
4763 if ( ! b->yy_ch_buf )
4764 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4766 b->yy_is_our_buffer = 1;
4768 yy_init_buffer(b,file ,yyscanner);
4770 return b;
4773 /** Destroy the buffer.
4774 * @param b a buffer created with yy_create_buffer()
4775 * @param yyscanner The scanner object.
4777 void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4779 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4781 if ( ! b )
4782 return;
4784 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4785 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4787 if ( b->yy_is_our_buffer )
4788 yyfree((void *) b->yy_ch_buf ,yyscanner );
4790 yyfree((void *) b ,yyscanner );
4793 /* Initializes or reinitializes a buffer.
4794 * This function is sometimes called more than once on the same buffer,
4795 * such as during a yyrestart() or at EOF.
4797 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
4800 int oerrno = errno;
4801 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4803 yy_flush_buffer(b ,yyscanner);
4805 b->yy_input_file = file;
4806 b->yy_fill_buffer = 1;
4808 /* If b is the current buffer, then yy_init_buffer was _probably_
4809 * called from yyrestart() or through yy_get_next_buffer.
4810 * In that case, we don't want to reset the lineno or column.
4812 if (b != YY_CURRENT_BUFFER){
4813 b->yy_bs_lineno = 1;
4814 b->yy_bs_column = 0;
4817 b->yy_is_interactive = 0;
4819 errno = oerrno;
4822 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4823 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4824 * @param yyscanner The scanner object.
4826 void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4828 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4829 if ( ! b )
4830 return;
4832 b->yy_n_chars = 0;
4834 /* We always need two end-of-buffer characters. The first causes
4835 * a transition to the end-of-buffer state. The second causes
4836 * a jam in that state.
4838 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4839 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4841 b->yy_buf_pos = &b->yy_ch_buf[0];
4843 b->yy_at_bol = 1;
4844 b->yy_buffer_status = YY_BUFFER_NEW;
4846 if ( b == YY_CURRENT_BUFFER )
4847 yy_load_buffer_state(yyscanner );
4850 /** Pushes the new state onto the stack. The new state becomes
4851 * the current state. This function will allocate the stack
4852 * if necessary.
4853 * @param new_buffer The new state.
4854 * @param yyscanner The scanner object.
4856 void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4858 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4859 if (new_buffer == NULL)
4860 return;
4862 yyensure_buffer_stack(yyscanner);
4864 /* This block is copied from yy_switch_to_buffer. */
4865 if ( YY_CURRENT_BUFFER )
4867 /* Flush out information for old buffer. */
4868 *yyg->yy_c_buf_p = yyg->yy_hold_char;
4869 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4870 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4873 /* Only push if top exists. Otherwise, replace top. */
4874 if (YY_CURRENT_BUFFER)
4875 yyg->yy_buffer_stack_top++;
4876 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4878 /* copied from yy_switch_to_buffer. */
4879 yy_load_buffer_state(yyscanner );
4880 yyg->yy_did_buffer_switch_on_eof = 1;
4883 /** Removes and deletes the top of the stack, if present.
4884 * The next element becomes the new top.
4885 * @param yyscanner The scanner object.
4887 void yypop_buffer_state (yyscan_t yyscanner)
4889 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4890 if (!YY_CURRENT_BUFFER)
4891 return;
4893 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
4894 YY_CURRENT_BUFFER_LVALUE = NULL;
4895 if (yyg->yy_buffer_stack_top > 0)
4896 --yyg->yy_buffer_stack_top;
4898 if (YY_CURRENT_BUFFER) {
4899 yy_load_buffer_state(yyscanner );
4900 yyg->yy_did_buffer_switch_on_eof = 1;
4904 /* Allocates the stack if it does not exist.
4905 * Guarantees space for at least one push.
4907 static void yyensure_buffer_stack (yyscan_t yyscanner)
4909 int num_to_alloc;
4910 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4912 if (!yyg->yy_buffer_stack) {
4914 /* First allocation is just for 2 elements, since we don't know if this
4915 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4916 * immediate realloc on the next call.
4918 num_to_alloc = 1;
4919 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
4920 (num_to_alloc * sizeof(struct yy_buffer_state*)
4921 , yyscanner);
4922 if ( ! yyg->yy_buffer_stack )
4923 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4925 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4927 yyg->yy_buffer_stack_max = num_to_alloc;
4928 yyg->yy_buffer_stack_top = 0;
4929 return;
4932 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4934 /* Increase the buffer to prepare for a possible push. */
4935 int grow_size = 8 /* arbitrary grow size */;
4937 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4938 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
4939 (yyg->yy_buffer_stack,
4940 num_to_alloc * sizeof(struct yy_buffer_state*)
4941 , yyscanner);
4942 if ( ! yyg->yy_buffer_stack )
4943 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4945 /* zero only the new slots.*/
4946 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4947 yyg->yy_buffer_stack_max = num_to_alloc;
4951 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4952 * @param base the character buffer
4953 * @param size the size in bytes of the character buffer
4954 * @param yyscanner The scanner object.
4955 * @return the newly allocated buffer state object.
4957 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
4959 YY_BUFFER_STATE b;
4961 if ( size < 2 ||
4962 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4963 base[size-1] != YY_END_OF_BUFFER_CHAR )
4964 /* They forgot to leave room for the EOB's. */
4965 return 0;
4967 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4968 if ( ! b )
4969 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4971 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4972 b->yy_buf_pos = b->yy_ch_buf = base;
4973 b->yy_is_our_buffer = 0;
4974 b->yy_input_file = 0;
4975 b->yy_n_chars = b->yy_buf_size;
4976 b->yy_is_interactive = 0;
4977 b->yy_at_bol = 1;
4978 b->yy_fill_buffer = 0;
4979 b->yy_buffer_status = YY_BUFFER_NEW;
4981 yy_switch_to_buffer(b ,yyscanner );
4983 return b;
4986 /** Setup the input buffer state to scan a string. The next call to yylex() will
4987 * scan from a @e copy of @a str.
4988 * @param yystr a NUL-terminated string to scan
4989 * @param yyscanner The scanner object.
4990 * @return the newly allocated buffer state object.
4991 * @note If you want to scan bytes that may contain NUL values, then use
4992 * yy_scan_bytes() instead.
4994 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
4997 return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
5000 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
5001 * scan from a @e copy of @a bytes.
5002 * @param bytes the byte buffer to scan
5003 * @param len the number of bytes in the buffer pointed to by @a bytes.
5004 * @param yyscanner The scanner object.
5005 * @return the newly allocated buffer state object.
5007 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
5009 YY_BUFFER_STATE b;
5010 char *buf;
5011 yy_size_t n;
5012 int i;
5014 /* Get memory for full buffer, including space for trailing EOB's. */
5015 n = _yybytes_len + 2;
5016 buf = (char *) yyalloc(n ,yyscanner );
5017 if ( ! buf )
5018 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5020 for ( i = 0; i < _yybytes_len; ++i )
5021 buf[i] = yybytes[i];
5023 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5025 b = yy_scan_buffer(buf,n ,yyscanner);
5026 if ( ! b )
5027 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5029 /* It's okay to grow etc. this buffer, and we should throw it
5030 * away when we're done.
5032 b->yy_is_our_buffer = 1;
5034 return b;
5037 static void yy_push_state (int new_state , yyscan_t yyscanner)
5039 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5040 if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
5042 yy_size_t new_size;
5044 yyg->yy_start_stack_depth += YY_START_STACK_INCR;
5045 new_size = yyg->yy_start_stack_depth * sizeof( int );
5047 if ( ! yyg->yy_start_stack )
5048 yyg->yy_start_stack = (int *) yyalloc(new_size ,yyscanner );
5050 else
5051 yyg->yy_start_stack = (int *) yyrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
5053 if ( ! yyg->yy_start_stack )
5054 YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
5057 yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
5059 BEGIN(new_state);
5062 static void yy_pop_state (yyscan_t yyscanner)
5064 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5065 if ( --yyg->yy_start_stack_ptr < 0 )
5066 YY_FATAL_ERROR( "start-condition stack underflow" );
5068 BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
5071 static int yy_top_state (yyscan_t yyscanner)
5073 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5074 return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
5077 #ifndef YY_EXIT_FAILURE
5078 #define YY_EXIT_FAILURE 2
5079 #endif
5081 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
5083 (void) fprintf( stderr, "%s\n", msg );
5084 exit( YY_EXIT_FAILURE );
5087 /* Redefine yyless() so it works in section 3 code. */
5089 #undef yyless
5090 #define yyless(n) \
5091 do \
5093 /* Undo effects of setting up yytext. */ \
5094 int yyless_macro_arg = (n); \
5095 YY_LESS_LINENO(yyless_macro_arg);\
5096 yytext[yyleng] = yyg->yy_hold_char; \
5097 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
5098 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
5099 *yyg->yy_c_buf_p = '\0'; \
5100 yyleng = yyless_macro_arg; \
5102 while ( 0 )
5104 /* Accessor methods (get/set functions) to struct members. */
5106 /** Get the user-defined data for this scanner.
5107 * @param yyscanner The scanner object.
5109 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
5111 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5112 return yyextra;
5115 /** Get the current line number.
5116 * @param yyscanner The scanner object.
5118 int yyget_lineno (yyscan_t yyscanner)
5120 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5122 if (! YY_CURRENT_BUFFER)
5123 return 0;
5125 return yylineno;
5128 /** Get the current column number.
5129 * @param yyscanner The scanner object.
5131 int yyget_column (yyscan_t yyscanner)
5133 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5135 if (! YY_CURRENT_BUFFER)
5136 return 0;
5138 return yycolumn;
5141 /** Get the input stream.
5142 * @param yyscanner The scanner object.
5144 FILE *yyget_in (yyscan_t yyscanner)
5146 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5147 return yyin;
5150 /** Get the output stream.
5151 * @param yyscanner The scanner object.
5153 FILE *yyget_out (yyscan_t yyscanner)
5155 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5156 return yyout;
5159 /** Get the length of the current token.
5160 * @param yyscanner The scanner object.
5162 int yyget_leng (yyscan_t yyscanner)
5164 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5165 return yyleng;
5168 /** Get the current token.
5169 * @param yyscanner The scanner object.
5172 char *yyget_text (yyscan_t yyscanner)
5174 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5175 return yytext;
5178 /** Set the user-defined data. This data is never touched by the scanner.
5179 * @param user_defined The data to be associated with this scanner.
5180 * @param yyscanner The scanner object.
5182 void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
5184 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5185 yyextra = user_defined ;
5188 /** Set the current line number.
5189 * @param line_number
5190 * @param yyscanner The scanner object.
5192 void yyset_lineno (int line_number , yyscan_t yyscanner)
5194 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5196 /* lineno is only valid if an input buffer exists. */
5197 if (! YY_CURRENT_BUFFER )
5198 yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner);
5200 yylineno = line_number;
5203 /** Set the current column.
5204 * @param line_number
5205 * @param yyscanner The scanner object.
5207 void yyset_column (int column_no , yyscan_t yyscanner)
5209 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5211 /* column is only valid if an input buffer exists. */
5212 if (! YY_CURRENT_BUFFER )
5213 yy_fatal_error( "yyset_column called with no buffer" , yyscanner);
5215 yycolumn = column_no;
5218 /** Set the input stream. This does not discard the current
5219 * input buffer.
5220 * @param in_str A readable stream.
5221 * @param yyscanner The scanner object.
5222 * @see yy_switch_to_buffer
5224 void yyset_in (FILE * in_str , yyscan_t yyscanner)
5226 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5227 yyin = in_str ;
5230 void yyset_out (FILE * out_str , yyscan_t yyscanner)
5232 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5233 yyout = out_str ;
5236 int yyget_debug (yyscan_t yyscanner)
5238 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5239 return yy_flex_debug;
5242 void yyset_debug (int bdebug , yyscan_t yyscanner)
5244 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5245 yy_flex_debug = bdebug ;
5248 /* Accessor methods for yylval and yylloc */
5250 /* User-visible API */
5252 /* yylex_init is special because it creates the scanner itself, so it is
5253 * the ONLY reentrant function that doesn't take the scanner as the last argument.
5254 * That's why we explicitly handle the declaration, instead of using our macros.
5257 int yylex_init(yyscan_t* ptr_yy_globals)
5260 if (ptr_yy_globals == NULL){
5261 errno = EINVAL;
5262 return 1;
5265 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
5267 if (*ptr_yy_globals == NULL){
5268 errno = ENOMEM;
5269 return 1;
5272 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
5273 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5275 return yy_init_globals ( *ptr_yy_globals );
5278 /* yylex_init_extra has the same functionality as yylex_init, but follows the
5279 * convention of taking the scanner as the last argument. Note however, that
5280 * this is a *pointer* to a scanner, as it will be allocated by this call (and
5281 * is the reason, too, why this function also must handle its own declaration).
5282 * The user defined value in the first argument will be available to yyalloc in
5283 * the yyextra field.
5286 int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
5289 struct yyguts_t dummy_yyguts;
5291 yyset_extra (yy_user_defined, &dummy_yyguts);
5293 if (ptr_yy_globals == NULL){
5294 errno = EINVAL;
5295 return 1;
5298 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
5300 if (*ptr_yy_globals == NULL){
5301 errno = ENOMEM;
5302 return 1;
5305 /* By setting to 0xAA, we expose bugs in
5306 yy_init_globals. Leave at 0x00 for releases. */
5307 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5309 yyset_extra (yy_user_defined, *ptr_yy_globals);
5311 return yy_init_globals ( *ptr_yy_globals );
5314 static int yy_init_globals (yyscan_t yyscanner)
5316 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5317 /* Initialization is the same as for the non-reentrant scanner.
5318 * This function is called from yylex_destroy(), so don't allocate here.
5321 yyg->yy_buffer_stack = 0;
5322 yyg->yy_buffer_stack_top = 0;
5323 yyg->yy_buffer_stack_max = 0;
5324 yyg->yy_c_buf_p = (char *) 0;
5325 yyg->yy_init = 0;
5326 yyg->yy_start = 0;
5328 yyg->yy_start_stack_ptr = 0;
5329 yyg->yy_start_stack_depth = 0;
5330 yyg->yy_start_stack = NULL;
5332 /* Defined in main.c */
5333 #ifdef YY_STDINIT
5334 yyin = stdin;
5335 yyout = stdout;
5336 #else
5337 yyin = (FILE *) 0;
5338 yyout = (FILE *) 0;
5339 #endif
5341 /* For future reference: Set errno on error, since we are called by
5342 * yylex_init()
5344 return 0;
5347 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
5348 int yylex_destroy (yyscan_t yyscanner)
5350 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5352 /* Pop the buffer stack, destroying each element. */
5353 while(YY_CURRENT_BUFFER){
5354 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
5355 YY_CURRENT_BUFFER_LVALUE = NULL;
5356 yypop_buffer_state(yyscanner);
5359 /* Destroy the stack itself. */
5360 yyfree(yyg->yy_buffer_stack ,yyscanner);
5361 yyg->yy_buffer_stack = NULL;
5363 /* Destroy the start condition stack. */
5364 yyfree(yyg->yy_start_stack ,yyscanner );
5365 yyg->yy_start_stack = NULL;
5367 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5368 * yylex() is called, initialization will occur. */
5369 yy_init_globals( yyscanner);
5371 /* Destroy the main struct (reentrant only). */
5372 yyfree ( yyscanner , yyscanner );
5373 yyscanner = NULL;
5374 return 0;
5378 * Internal utility routines.
5381 #ifndef yytext_ptr
5382 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
5384 register int i;
5385 for ( i = 0; i < n; ++i )
5386 s1[i] = s2[i];
5388 #endif
5390 #ifdef YY_NEED_STRLEN
5391 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
5393 register int n;
5394 for ( n = 0; s[n]; ++n )
5397 return n;
5399 #endif
5401 void *yyalloc (yy_size_t size , yyscan_t yyscanner)
5403 return (void *) malloc( size );
5406 void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
5408 /* The cast to (char *) in the following accommodates both
5409 * implementations that use char* generic pointers, and those
5410 * that use void* generic pointers. It works with the latter
5411 * because both ANSI C and C++ allow castless assignment from
5412 * any pointer type to void*, and deal with argument conversions
5413 * as though doing an assignment.
5415 return (void *) realloc( (char *) ptr, size );
5418 void yyfree (void * ptr , yyscan_t yyscanner)
5420 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
5423 #define YYTABLES_NAME "yytables"
5425 #line 744 "compilers/imcc/imcc.l"
5429 #ifdef yywrap
5430 # undef yywrap
5431 #endif
5433 int yywrap(void* yyscanner) {
5434 /* Add code here to open next source file and start scanning
5435 * yywrap returns 0 if scanning is to continue */
5436 Interp * const interp = yyget_extra(yyscanner);
5437 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5439 if (!interp) {
5440 fprintf(stderr, "Argh, interp not found\n");
5441 exit(1);
5444 yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner);
5446 /* pop old frame */
5447 if (IMCC_INFO(interp)->frames->s.next) {
5448 pop_parser_state(IMCC_INFO(interp)->frames->s.interp, yyscanner);
5449 if (YYSTATE == INITIAL || YYSTATE == emit)
5450 BEGIN(IMCC_INFO(interp)->frames->s.pasm_file ? emit : INITIAL);
5451 return 0;
5454 return 1;
5457 static macro_frame_t *
5458 new_frame(PARROT_INTERP) {
5459 static int label = 0;
5460 macro_frame_t * const tmp = mem_allocate_zeroed_typed(macro_frame_t);
5462 tmp->label = ++label;
5463 tmp->s.line = IMCC_INFO(interp)->line;
5464 tmp->s.handle = NULL;
5466 if (IMCC_INFO(interp)->frames) {
5467 tmp->s.pasm_file = IMCC_INFO(interp)->frames->s.pasm_file;
5468 tmp->s.file = IMCC_INFO(interp)->frames->s.file;
5469 tmp->s.pragmas = IMCC_INFO(interp)->frames->s.pragmas;
5472 tmp->s.interp = interp;
5474 return tmp;
5477 static void
5478 scan_string(macro_frame_t *frame, ARGIN(const char *expansion), void *yyscanner)
5480 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5481 Interp * const interp = yyget_extra(yyscanner);
5483 frame->buffer = YY_CURRENT_BUFFER;
5484 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5485 IMCC_INFO(interp)->frames = frame;
5487 yy_scan_string(expansion,yyscanner);
5490 static int
5491 destroy_frame(struct macro_frame_t *frame, void *yyscanner)
5493 YY_BUFFER_STATE buffer = frame->buffer;
5494 int ret = 0;
5495 int i;
5498 for (i = 0; i < frame->expansion.num_param; i++) {
5499 mem_sys_free(frame->expansion.name[i]);
5500 frame->expansion.name[i] = NULL;
5503 if (frame->heredoc_rest) {
5504 mem_sys_free(frame->heredoc_rest);
5505 frame->heredoc_rest = NULL;
5506 } else
5507 ret = frame->s.line;
5509 /* RT #42383 if frame->s.file was allocated free it */
5510 mem_sys_free(frame);
5512 if (buffer != NULL)
5513 yy_switch_to_buffer(buffer,yyscanner);
5515 return ret;
5518 static int
5519 yylex_skip(YYSTYPE *valp, PARROT_INTERP, const char *skip, void *yyscanner)
5521 int c;
5522 const char *p;
5523 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5525 do {
5526 c = yylex(valp,yyscanner,interp);
5527 p = skip;
5529 while (*p && c != *p)
5530 p++;
5532 } while (*p != '\0');
5534 if (c)
5535 DUP_AND_RET_FREE(valp, c);
5537 return c;
5540 static char*
5541 read_braced(YYSTYPE *valp, PARROT_INTERP, const char *macro_name,
5542 char *current, void *yyscanner)
5544 YYSTYPE val;
5545 size_t len = strlen(current);
5546 int c = yylex(&val,yyscanner,interp);
5547 int count = 0;
5549 while (c != '}' || count > 0) {
5551 if (c == '}')
5552 count--;
5553 else if (c == '{')
5554 count++;
5556 if (c <= 0)
5557 IMCC_fataly(interp, E_SyntaxError,
5558 "End of file reached while reading arguments in '%s'",
5559 macro_name);
5561 len += strlen(val.s);
5562 current = (char *)realloc(current, len + 1);
5563 strcat(current,val.s);
5565 mem_sys_free(val.s);
5566 val.s = NULL;
5567 c = yylex(&val,yyscanner,interp);
5570 if (valp)
5571 *valp = val;
5572 else
5573 mem_sys_free(val.s);
5575 return current;
5578 static int
5579 read_params(YYSTYPE *valp, PARROT_INTERP, params_t *params,
5580 ARGIN(const char *macro_name), int need_id, void *yyscanner)
5582 YYSTYPE val;
5583 int len = 0;
5584 char *current = str_dup("");
5585 yyguts_t *yyg = (yyguts_t *)yyscanner;
5586 int c = yylex_skip(&val, interp, " \n", yyscanner);
5588 params->num_param = 0;
5590 /* See http://rt.perl.org/rt3/Ticket/Display.html?id=50920 for the saga of this bug. */
5591 /* For some reason, we have to use a dupe of the macro name to pass in to */
5592 /* read_params, or we get a segfault. XXX Make it stop. */
5593 macro_name = str_dup(macro_name);
5595 while (c != ')') {
5596 if (YYSTATE == heredoc2)
5597 IMCC_fataly(interp, E_SyntaxError,
5598 "Heredoc in macro '%s' not allowed", macro_name);
5600 if (c <= 0)
5601 IMCC_fataly(interp, E_SyntaxError,
5602 "End of file reached while reading arguments in '%s'",
5603 macro_name);
5604 else if (c == ',') {
5605 if (params->num_param == MAX_PARAM)
5606 IMCC_fataly(interp, E_SyntaxError,
5607 "More then %d params in '%s'",
5608 MAX_PARAM, macro_name);
5610 params->name[params->num_param++] = current;
5611 current = str_dup("");
5612 len = 0;
5614 c = yylex_skip(&val, interp, " \n", yyscanner);
5616 else if (need_id && (*current || c != IDENTIFIER) && c != ' ') {
5617 IMCC_fataly(interp, E_SyntaxError,
5618 "Parameter definition in '%s' must be IDENTIFIER",
5619 macro_name);
5621 else if (c == '{') {
5622 current = read_braced(&val, interp, macro_name, current, yyscanner);
5623 c = yylex_skip(&val, interp, " \n", yyscanner);
5624 len = strlen(current);
5626 else {
5627 if (!need_id || c != ' ') {
5628 len += strlen(val.s);
5629 current = (char *)realloc(current, len + 1);
5630 strcat(current, val.s);
5633 mem_sys_free(val.s);
5634 val.s = NULL;
5635 c = yylex(&val,yyscanner,interp);
5639 params->name[params->num_param++] = current;
5641 if (valp)
5642 *valp = val;
5643 else
5644 mem_sys_free(val.s);
5646 return c;
5649 static int
5650 read_macro(YYSTYPE *valp, PARROT_INTERP, void *yyscanner)
5652 int c, start_line;
5653 params_t params;
5654 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5655 int start_cond = YY_START;
5656 int buffer_size = 0;
5657 int buffer_used = 0;
5659 BEGIN(macro);
5661 c = yylex_skip(valp, interp, " ", yyscanner);
5663 if (c != IDENTIFIER)
5664 IMCC_fataly(interp, E_SyntaxError, "Macro names must be identifiers");
5666 IMCC_INFO(interp)->cur_macro_name = valp->s;
5667 start_line = IMCC_INFO(interp)->line++;
5669 memset(&params, 0, sizeof (params_t));
5671 /* white space is allowed between macro and opening paren) */
5672 c = yylex_skip(valp, interp, " ", yyscanner);
5674 if (c == '(') {
5675 mem_sys_free(valp->s);
5676 valp->s = NULL;
5678 c = read_params(NULL, interp, &params,
5679 IMCC_INFO(interp)->cur_macro_name, 1, yyscanner);
5681 c = yylex(valp,yyscanner,interp);
5684 while (c != ENDM) {
5685 int elem_len;
5687 if (c <= 0)
5688 IMCC_fataly(interp, E_SyntaxError,
5689 "File ended before macro '%s' was complete",
5690 IMCC_INFO(interp)->cur_macro_name);
5692 PARROT_ASSERT(valp->s);
5693 elem_len = strlen(valp->s);
5695 if (buffer_used) {
5696 if (buffer_used + elem_len > buffer_size) {
5697 buffer_size += elem_len;
5698 buffer_size <<= 1;
5700 IMCC_INFO(interp)->macro_buffer =
5701 (char *)mem_sys_realloc(IMCC_INFO(interp)->macro_buffer,
5702 buffer_size);
5705 else {
5706 buffer_size = (elem_len << 1) > 1024 ? elem_len << 1 : 1024;
5708 IMCC_INFO(interp)->macro_buffer =
5709 (char *)mem_sys_allocate_zeroed(buffer_size);
5711 strcat(IMCC_INFO(interp)->macro_buffer, valp->s);
5712 buffer_used += elem_len;
5713 mem_sys_free(valp->s);
5714 valp->s = NULL;
5716 c = yylex(valp,yyscanner,interp);
5719 mem_sys_free(valp->s);
5720 valp->s = NULL;
5722 BEGIN(start_cond);
5724 define_macro(interp, IMCC_INFO(interp)->cur_macro_name,
5725 &params, IMCC_INFO(interp)->macro_buffer, start_line);
5727 mem_sys_free(IMCC_INFO(interp)->macro_buffer);
5728 IMCC_INFO(interp)->macro_buffer = NULL;
5729 IMCC_INFO(interp)->cur_macro_name = NULL;
5731 return MACRO;
5734 static char *
5735 find_macro_param(PARROT_INTERP, const char *name)
5737 macro_frame_t *f;
5739 for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) {
5740 if (f->params) {
5741 int i;
5742 for (i = 0; i < f->params->num_param; i++) {
5743 if (STREQ(f->params->name[i], name))
5744 return f->expansion.name[i];
5749 return NULL;
5752 static void
5753 define_macro(PARROT_INTERP, ARGIN(const char *name), ARGIN(const params_t *params),
5754 ARGIN(const char *expansion), int start_line)
5756 macro_t *m = find_macro(interp, name);
5758 if (m) {
5759 mem_sys_free(m->expansion);
5760 m->expansion = NULL;
5762 else {
5763 m = mem_allocate_zeroed_typed(macro_t);
5765 if (!IMCC_INFO(interp)->macros)
5766 parrot_new_cstring_hash(interp, &IMCC_INFO(interp)->macros);
5767 parrot_hash_put(interp, IMCC_INFO(interp)->macros, str_dup(name), m);
5770 if (params)
5771 m->params = *params;
5772 else
5773 memset(&m->params, 0, sizeof (params_t));
5775 m->expansion = str_dup(expansion);
5776 m->line = start_line;
5779 static macro_t *
5780 find_macro(PARROT_INTERP, const char *name)
5782 if (!IMCC_INFO(interp)->macros)
5783 return NULL;
5785 return (macro_t *)parrot_hash_get(interp, IMCC_INFO(interp)->macros, name);
5788 static int
5789 expand_macro(PARROT_INTERP, ARGIN(const char *name), void *yyscanner)
5791 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5792 const char * const expansion = find_macro_param(interp, name);
5793 macro_t *m;
5795 if (expansion) {
5796 macro_frame_t * const frame = new_frame(interp);
5798 /* When an error occurs, then report it as being in a macro */
5799 frame->is_macro = 1;
5800 scan_string(frame, expansion, yyscanner);
5801 return 1;
5804 m = find_macro(interp, name);
5805 if (m) {
5806 int i,c,start_cond;
5808 macro_frame_t * const frame = new_frame(interp);
5809 frame->params = &m->params;
5811 /* When an error occurs, then report it as being in a macro */
5812 frame->is_macro = 1;
5814 /* remember macro name for error reporting
5815 RT #42384 check that all the .file text is malloced / freed */
5816 frame->s.file = str_dup(name);
5818 /* whitespace can be safely ignored */
5819 do {
5820 #ifdef __cplusplus
5821 c = yyinput(yyscanner);
5822 #else
5823 c = input(yyscanner);
5824 #endif
5825 } while (c == ' ' || c == '\t');
5827 if (c != '(') {
5828 if (m->params.num_param != 0)
5829 IMCC_fataly(interp, E_SyntaxError,
5830 "Macro '%s' needs %d arguments",
5831 name, m->params.num_param);
5832 unput(c);
5833 scan_string(frame, m->expansion, yyscanner);
5834 return 1;
5837 start_cond = YY_START;
5838 BEGIN(macro);
5840 read_params(NULL, interp, &frame->expansion, name, 0, yyscanner);
5842 BEGIN(start_cond);
5844 if (frame->expansion.num_param == 0 && m->params.num_param == 1) {
5845 frame->expansion.name[0] = str_dup("");
5846 frame->expansion.num_param = 1;
5849 if (frame->expansion.num_param != m->params.num_param) {
5850 IMCC_fataly(interp, E_SyntaxError,
5851 "Macro '%s' requires %d arguments, but %d given",
5852 name, m->params.num_param, frame->expansion.num_param);
5855 /* expand arguments */
5856 for (i = 0; i < frame->expansion.num_param; i++) {
5857 char * const current = frame->expansion.name[i];
5859 /* parameter of outer macro */
5860 if (current[0] == '.') {
5861 const char * const s = find_macro_param(interp, current + 1);
5863 if (s) {
5864 frame->expansion.name[i] = str_dup(s);
5865 mem_sys_free(current);
5869 else {
5870 const size_t len = strlen(current);
5871 if (len && (current[len - 1] == '$')) { /* local label */
5872 const size_t slen = len + 10;
5873 char * const s = (char *)mem_sys_allocate(slen);
5875 current[len - 1] = '\0';
5877 snprintf(s, slen, "%s%d", current, IMCC_INFO(interp)->frames->label);
5879 frame->expansion.name[i] = s;
5880 mem_sys_free(current);
5885 IMCC_INFO(interp)->line = m->line;
5886 scan_string(frame, m->expansion, yyscanner);
5887 return 1;
5890 return 0;
5893 static void
5894 include_file(PARROT_INTERP, char *file_name, void *yyscanner)
5896 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5897 macro_frame_t * const frame = new_frame(interp);
5898 char *s = Parrot_locate_runtime_file(interp, file_name,
5899 PARROT_RUNTIME_FT_INCLUDE);
5900 char *ext;
5901 FILE *file;
5903 if (!s || !(file = fopen(s, "r")))
5904 IMCC_fataly(interp, E_IOError, strerror(errno));
5906 mem_sys_free(s);
5907 frame->s.file = file_name;
5908 frame->s.handle = file;
5909 ext = strrchr(file_name, '.');
5911 if (ext) {
5912 if (STREQ(ext, ".pasm")) {
5913 frame->s.pasm_file = 1;
5914 BEGIN(emit);
5916 else if (STREQ(ext, ".pir")) {
5917 frame->s.pasm_file = 0;
5918 BEGIN(INITIAL);
5922 scan_file(interp, frame, file, yyscanner);
5925 static void
5926 scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
5928 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5929 frame->buffer = YY_CURRENT_BUFFER;
5930 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5931 IMCC_INFO(interp)->frames = frame;
5932 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5934 IMCC_INFO(interp)->line = 1;
5936 yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
5939 void
5940 IMCC_push_parser_state(PARROT_INTERP)
5942 macro_frame_t * const frame = new_frame(interp);
5943 frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
5944 IMCC_INFO(interp)->frames = frame;
5945 frame->s.line = IMCC_INFO(interp)->line
5946 = 1;
5947 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5950 static void
5951 pop_parser_state(PARROT_INTERP, void *yyscanner)
5953 macro_frame_t * const tmp = IMCC_INFO(interp)->frames;
5954 if (tmp) {
5955 int l;
5956 if (tmp->s.handle)
5957 fclose(tmp->s.handle);
5959 IMCC_INFO(interp)->frames =
5960 (macro_frame_t *)IMCC_INFO(interp)->frames->s.next;
5962 l = destroy_frame(tmp, yyscanner);
5964 if (l)
5965 IMCC_INFO(interp)->line = l;
5968 IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
5971 void
5972 IMCC_pop_parser_state(PARROT_INTERP, void *yyscanner)
5974 pop_parser_state(interp, yyscanner);
5977 void
5978 compile_file(PARROT_INTERP, FILE *file, void *yyscanner)
5980 yyguts_t * const yyg = (yyguts_t *)yyscanner;
5981 YY_BUFFER_STATE buffer;
5983 IMCC_INFO(interp)->frames->s.next = NULL;
5984 buffer = YY_CURRENT_BUFFER;
5986 yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
5988 emit_open(interp, 1, NULL);
5990 IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) {
5991 yyparse(yyscanner, interp);
5992 imc_compile_all_units(interp);
5995 IMCC_CATCH(IMCC_FATAL_EXCEPTION) {
5996 IMCC_INFO(interp)->error_code = IMCC_FATAL_EXCEPTION;
5999 IMCC_CATCH(IMCC_FATALY_EXCEPTION) {
6000 IMCC_INFO(interp)->error_code = IMCC_FATALY_EXCEPTION;
6003 IMCC_END_TRY;
6005 if (buffer)
6006 yy_switch_to_buffer(buffer,yyscanner);
6009 void
6010 compile_string(PARROT_INTERP, const char *s, void *yyscanner)
6012 yyguts_t * const yyg = (yyguts_t *)yyscanner;
6013 YY_BUFFER_STATE buffer;
6015 IMCC_INFO(interp)->frames->s.next = NULL;
6016 buffer = YY_CURRENT_BUFFER;
6018 yy_scan_string(s,yyscanner);
6019 emit_open(interp, 1, NULL);
6021 IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) {
6022 yyparse(yyscanner, interp);
6023 imc_compile_all_units(interp);
6026 IMCC_CATCH(IMCC_FATAL_EXCEPTION) {
6027 IMCC_INFO(interp)->error_code = IMCC_FATAL_EXCEPTION;
6030 IMCC_CATCH(IMCC_FATALY_EXCEPTION) {
6031 IMCC_INFO(interp)->error_code = IMCC_FATALY_EXCEPTION;
6034 IMCC_END_TRY;
6036 if (buffer)
6037 yy_switch_to_buffer(buffer,yyscanner);
6040 void
6041 IMCC_print_inc(PARROT_INTERP)
6043 macro_frame_t *f;
6044 const char *old = IMCC_INFO(interp)->frames->s.file;
6046 if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro)
6047 fprintf(stderr, "\n\tin macro '.%s' line %d\n",
6048 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line);
6049 else
6050 fprintf(stderr, "\n\tin file '%s' line %d\n",
6051 IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line);
6054 for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) {
6055 if (!STREQ(f->s.file, old)) {
6056 fprintf(stderr, "\tincluded from '%s' line %d\n",
6057 f->s.file, f->s.line);
6060 old = f->s.file;
6064 /* Functions to set and get yyin, as we can't decorate it for export
6065 (since it is defined in a file generated by yacc/bison). */
6066 FILE* imc_yyin_set(FILE* new_yyin, void *yyscanner)
6068 yyguts_t * const yyg = (yyguts_t *)yyscanner;
6069 yyg->yyin_r = new_yyin;
6071 return yyg->yyin_r;
6074 FILE* imc_yyin_get(void *yyscanner)
6076 const yyguts_t * const yyg = (yyguts_t *)yyscanner;
6077 return yyg->yyin_r;
6080 /* return true if scanner is at EOF */
6081 int at_eof(yyscan_t yyscanner)
6083 yyguts_t * const yyg = (yyguts_t *)yyscanner;
6084 return yyg->yy_hold_char == '\0';
6088 * Local variables:
6089 * c-file-style: "parrot"
6090 * End:
6091 * vim: expandtab shiftwidth=4: