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