4 #define YY_INT_ALIGNED short int
6 /* A lexical scanner generated by flex */
8 #define yy_create_buffer preYY_create_buffer
9 #define yy_delete_buffer preYY_delete_buffer
10 #define yy_flex_debug preYY_flex_debug
11 #define yy_init_buffer preYY_init_buffer
12 #define yy_flush_buffer preYY_flush_buffer
13 #define yy_load_buffer_state preYY_load_buffer_state
14 #define yy_switch_to_buffer preYY_switch_to_buffer
16 #define yyleng preYYleng
17 #define yylex preYYlex
18 #define yylineno preYYlineno
19 #define yyout preYYout
20 #define yyrestart preYYrestart
21 #define yytext preYYtext
22 #define yywrap preYYwrap
23 #define yyalloc preYYalloc
24 #define yyrealloc preYYrealloc
25 #define yyfree preYYfree
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 35
31 #if YY_FLEX_SUBMINOR_VERSION > 0
35 /* First, we deal with platform-specific or compiler-specific issues. */
37 /* begin standard C headers. */
43 /* end standard C headers. */
45 /* flex integer type definitions */
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 typedef uint64_t flex_uint64_t;
70 typedef signed char flex_int8_t;
71 typedef short int flex_int16_t;
72 typedef int flex_int32_t;
73 typedef unsigned char flex_uint8_t;
74 typedef unsigned short int flex_uint16_t;
75 typedef unsigned int flex_uint32_t;
78 /* Limits of integral types. */
80 #define INT8_MIN (-128)
83 #define INT16_MIN (-32767-1)
86 #define INT32_MIN (-2147483647-1)
89 #define INT8_MAX (127)
92 #define INT16_MAX (32767)
95 #define INT32_MAX (2147483647)
98 #define UINT8_MAX (255U)
101 #define UINT16_MAX (65535U)
104 #define UINT32_MAX (4294967295U)
107 #endif /* ! FLEXINT_H */
111 /* The "const" storage-class-modifier is valid. */
114 #else /* ! __cplusplus */
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
121 #endif /* defined (__STDC__) */
122 #endif /* ! __cplusplus */
125 #define yyconst const
130 /* Returned upon end-of-file. */
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134 * integer for use as an array index. If the signed char is negative,
135 * we want to instead treat it as an 8-bit unsigned char, hence the
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
140 /* Enter a start condition. This macro really ought to take a parameter,
141 * but we do it the disgusting crufty way forced on us by the ()-less
142 * definition of BEGIN.
144 #define BEGIN (yy_start) = 1 + 2 *
146 /* Translate the current start state into a value that can be later handed
147 * to BEGIN to return to the state. The YYSTATE alias is for lex
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE preYYrestart(preYYin )
159 #define YY_END_OF_BUFFER_CHAR 0
161 /* Size of default input buffer. */
163 #define YY_BUF_SIZE 262144
166 /* The state buf must be large enough to hold one state per character in the main buffer.
168 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
170 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
171 #define YY_TYPEDEF_YY_BUFFER_STATE
172 typedef struct yy_buffer_state *YY_BUFFER_STATE;
175 #ifndef YY_TYPEDEF_YY_SIZE_T
176 #define YY_TYPEDEF_YY_SIZE_T
177 typedef size_t yy_size_t;
180 extern yy_size_t preYYleng;
182 extern FILE *preYYin, *preYYout;
184 #define EOB_ACT_CONTINUE_SCAN 0
185 #define EOB_ACT_END_OF_FILE 1
186 #define EOB_ACT_LAST_MATCH 2
188 #define YY_LESS_LINENO(n)
190 /* Return all but the first "n" matched characters back to the input stream. */
194 /* Undo effects of setting up preYYtext. */ \
195 int yyless_macro_arg = (n); \
196 YY_LESS_LINENO(yyless_macro_arg);\
197 *yy_cp = (yy_hold_char); \
198 YY_RESTORE_YY_MORE_OFFSET \
199 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
200 YY_DO_BEFORE_ACTION; /* set up preYYtext again */ \
204 #define unput(c) yyunput( c, (yytext_ptr) )
206 #ifndef YY_STRUCT_YY_BUFFER_STATE
207 #define YY_STRUCT_YY_BUFFER_STATE
208 struct yy_buffer_state
212 char *yy_ch_buf; /* input buffer */
213 char *yy_buf_pos; /* current position in input buffer */
215 /* Size of input buffer in bytes, not including room for EOB
218 yy_size_t yy_buf_size;
220 /* Number of characters read into yy_ch_buf, not including EOB
223 yy_size_t yy_n_chars;
225 /* Whether we "own" the buffer - i.e., we know we created it,
226 * and can realloc() it to grow it, and should free() it to
229 int yy_is_our_buffer;
231 /* Whether this is an "interactive" input source; if so, and
232 * if we're using stdio for input, then we want to use getc()
233 * instead of fread(), to make sure we stop fetching input after
236 int yy_is_interactive;
238 /* Whether we're considered to be at the beginning of a line.
239 * If so, '^' rules will be active on the next match, otherwise
244 int yy_bs_lineno; /**< The line count. */
245 int yy_bs_column; /**< The column count. */
247 /* Whether to try to fill the input buffer when we reach the
252 int yy_buffer_status;
254 #define YY_BUFFER_NEW 0
255 #define YY_BUFFER_NORMAL 1
256 /* When an EOF's been seen but there's still some text to process
257 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
258 * shouldn't try reading from the input source any more. We might
259 * still have a bunch of tokens to match, though, because of
260 * possible backing-up.
262 * When we actually see the EOF, we change the status to "new"
263 * (via preYYrestart()), so that the user can continue scanning by
264 * just pointing preYYin at a new input file.
266 #define YY_BUFFER_EOF_PENDING 2
269 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
271 /* Stack of input buffers. */
272 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
273 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
274 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
276 /* We provide macros for accessing buffer states in case in the
277 * future we want to put the buffer states in a more general
280 * Returns the top of the stack, or NULL.
282 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
283 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
286 /* Same as previous macro, but useful when we know that the buffer stack is not
287 * NULL or when we need an lvalue. For internal use only.
289 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
291 /* yy_hold_char holds the character lost when preYYtext is formed. */
292 static char yy_hold_char;
293 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
296 /* Points to current character in buffer. */
297 static char *yy_c_buf_p = (char *) 0;
298 static int yy_init = 0; /* whether we need to initialize */
299 static int yy_start = 0; /* start state number */
301 /* Flag which is used to allow preYYwrap()'s to do buffer switches
302 * instead of setting up a fresh preYYin. A bit of a hack ...
304 static int yy_did_buffer_switch_on_eof;
306 void preYYrestart (FILE *input_file );
307 void preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
308 YY_BUFFER_STATE preYY_create_buffer (FILE *file,int size );
309 void preYY_delete_buffer (YY_BUFFER_STATE b );
310 void preYY_flush_buffer (YY_BUFFER_STATE b );
311 void preYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
312 void preYYpop_buffer_state (void );
314 static void preYYensure_buffer_stack (void );
315 static void preYY_load_buffer_state (void );
316 static void preYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
318 #define YY_FLUSH_BUFFER preYY_flush_buffer(YY_CURRENT_BUFFER )
320 YY_BUFFER_STATE preYY_scan_buffer (char *base,yy_size_t size );
321 YY_BUFFER_STATE preYY_scan_string (yyconst char *yy_str );
322 YY_BUFFER_STATE preYY_scan_bytes (yyconst char *bytes,yy_size_t len );
324 void *preYYalloc (yy_size_t );
325 void *preYYrealloc (void *,yy_size_t );
326 void preYYfree (void * );
328 #define yy_new_buffer preYY_create_buffer
330 #define yy_set_interactive(is_interactive) \
332 if ( ! YY_CURRENT_BUFFER ){ \
333 preYYensure_buffer_stack (); \
334 YY_CURRENT_BUFFER_LVALUE = \
335 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
337 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
340 #define yy_set_bol(at_bol) \
342 if ( ! YY_CURRENT_BUFFER ){\
343 preYYensure_buffer_stack (); \
344 YY_CURRENT_BUFFER_LVALUE = \
345 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
347 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
350 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
352 /* Begin user sect3 */
354 #define preYYwrap(n) 1
355 #define YY_SKIP_YYWRAP
357 typedef unsigned char YY_CHAR;
359 FILE *preYYin = (FILE *) 0, *preYYout = (FILE *) 0;
361 typedef int yy_state_type;
363 extern int preYYlineno;
367 extern char *preYYtext;
368 #define yytext_ptr preYYtext
370 static yy_state_type yy_get_previous_state (void );
371 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
372 static int yy_get_next_buffer (void );
373 static void yy_fatal_error (yyconst char msg[] );
375 /* Done after the current pattern has been matched and before the
376 * corresponding action - sets up preYYtext.
378 #define YY_DO_BEFORE_ACTION \
379 (yytext_ptr) = yy_bp; \
380 preYYleng = (yy_size_t) (yy_cp - yy_bp); \
381 (yy_hold_char) = *yy_cp; \
383 (yy_c_buf_p) = yy_cp;
385 #define YY_NUM_RULES 169
386 #define YY_END_OF_BUFFER 170
387 /* This struct is not used in this scanner,
388 but its presence is necessary. */
391 flex_int32_t yy_verify;
394 static yyconst flex_int16_t yy_acclist[1254] =
396 151, 151, 170, 168, 169, 1, 168, 169, 167, 169,
397 3, 168, 169, 168, 169, 168, 169, 2, 168, 169,
398 6, 168, 169, 1, 6, 168, 169, 6, 168, 169,
399 6, 167, 169, 3, 6, 168, 169, 5, 168, 169,
400 6, 168, 169, 6, 168, 169, 6, 168, 169, 2,
401 6, 168, 169, 54, 168, 169, 1, 54, 168, 169,
402 49, 167, 169, 3, 54, 168, 169, 54, 168, 169,
403 54, 168, 169, 51, 54, 168, 169, 51, 54, 168,
404 169, 51, 54, 168, 169, 51, 54, 168, 169, 51,
405 54, 168, 169, 51, 54, 168, 169, 51, 54, 168,
407 169, 2, 54, 168, 169, 78, 168, 169, 1, 78,
408 168, 169, 76, 167, 169, 3, 78, 168, 169, 78,
409 168, 169, 78, 168, 169, 77, 78, 168, 169, 77,
410 78, 168, 169, 77, 78, 168, 169, 2, 78, 168,
411 169, 79, 82, 168, 169, 1, 79, 82, 168, 169,
412 87, 167, 169, 3, 79, 82, 168, 169, 81, 82,
413 168, 169, 82, 168, 169, 82, 168, 169, 79, 82,
414 168, 169, 2, 79, 82, 168, 169, 88, 91, 168,
415 169, 1, 88, 91, 168, 169, 3, 88, 91, 168,
416 169, 90, 91, 168, 169, 88, 91, 168, 169, 88,
418 91, 168, 169, 91, 168, 169, 2, 88, 91, 168,
419 169, 23, 168, 169, 1, 23, 168, 169, 24, 167,
420 169, 3, 23, 168, 169, 16, 23, 168, 169, 23,
421 168, 169, 23, 168, 169, 23, 168, 169, 21, 23,
422 168, 169,16404, 23, 168, 169, 21, 23, 168, 169,
423 16404, 11, 23, 168, 169, 12, 23, 168, 169, 2,
424 23, 168, 169, 17, 168, 169, 1, 17, 168, 169,
425 19, 168, 169, 17, 168, 169, 17, 168, 169, 168,
426 169, 2, 17, 168, 169, 168, 169, 1, 168, 169,
427 3, 168, 169, 168, 169, 168, 169, 2, 168, 169,
429 93, 168, 169, 97, 168, 169, 1, 97, 168, 169,
430 95, 167, 169, 3, 97, 168, 169, 97, 168, 169,
431 97, 168, 169, 97, 168, 169, 2, 97, 168, 169,
432 8293, 168, 169,16482,16484,16485, 168, 169, 104, 168,
433 169, 105, 168, 169, 103, 168, 169, 168, 169, 107,
434 168, 169, 168, 169, 163, 168, 169, 1, 163, 168,
435 169, 151, 163, 168, 169, 150, 167, 169, 3, 163,
436 168, 169, 154, 163, 168, 169, 146, 163, 168, 169,
437 155, 163, 168, 169, 163, 168, 169, 163, 168, 169,
438 153, 163, 168, 169, 147, 163, 168, 169, 163, 168,
440 169, 2, 163, 168, 169, 71, 168, 169, 1, 71,
441 168, 169, 70, 167, 169, 3, 71, 168, 169, 71,
442 168, 169, 71, 168, 169, 2, 71, 168, 169, 69,
443 71, 168, 169, 1, 69, 71, 168, 169, 69, 71,
444 168, 169, 69, 70, 167, 169, 3, 69, 71, 168,
445 169, 68, 71, 168, 169, 69, 71, 168, 169, 69,
446 71, 168, 169, 2, 69, 71, 168, 169, 123, 125,
447 168, 169, 1, 125, 168, 169, 124, 167, 169, 3,
448 123, 125, 168, 169, 125, 168, 169, 125, 168, 169,
449 123, 125, 168, 169, 125, 168, 169, 2, 123, 125,
451 168, 169, 126, 148, 168, 169, 1, 126, 148, 168,
452 169, 128, 167, 169, 3, 126, 148, 168, 169, 148,
453 168, 169, 126, 148, 168, 169, 126, 148, 168, 169,
454 147, 148, 168, 169, 2, 126, 148, 168, 169, 125,
455 168, 169, 125, 168, 169, 125, 168, 169, 136, 140,
456 141, 168, 169, 1, 136, 141, 168, 169, 137, 167,
457 169, 3, 136, 140, 141, 168, 169, 140, 141, 168,
458 169, 136, 140, 141, 168, 169, 141, 168, 169, 2,
459 136, 140, 141, 168, 169, 133, 135, 168, 169, 1,
460 135, 168, 169, 134, 167, 169, 3, 133, 135, 168,
462 169, 135, 168, 169, 133, 135, 168, 169, 133, 135,
463 168, 169, 2, 133, 135, 168, 169, 144, 145, 168,
464 169, 1, 145, 168, 169, 3, 144, 145, 168, 169,
465 144, 145, 168, 169, 144, 145, 168, 169, 2, 144,
466 145, 168, 169, 60, 168, 169, 1, 60, 168, 169,
467 61, 167, 169, 3, 60, 168, 169, 60, 168, 169,
468 60, 168, 169, 59, 60, 168, 169, 60, 168, 169,
469 59, 60, 168, 169, 2, 60, 168, 169, 67, 168,
470 169, 1, 67, 168, 169, 65, 167, 169, 3, 67,
471 168, 169, 67, 168, 169, 67, 168, 169, 63, 67,
473 168, 169, 67, 168, 169, 2, 67, 168, 169, 66,
474 67, 168, 169, 64, 67, 168, 169, 161, 168, 169,
475 1, 161, 168, 169, 3, 161, 168, 169, 158, 161,
476 168, 169, 161, 168, 169, 161, 168, 169, 161, 168,
477 169, 2, 161, 168, 169, 162, 168, 169, 1, 162,
478 168, 169, 3, 162, 168, 169, 160, 162, 168, 169,
479 162, 168, 169, 162, 168, 169, 162, 168, 169, 2,
480 162, 168, 169, 55, 168, 169, 53, 168, 169, 1,
481 53, 168, 169, 3, 53, 168, 169, 53, 168, 169,
482 53, 168, 169, 53, 168, 169, 2, 53, 168, 169,
484 31, 168, 169, 1, 31, 168, 169, 29, 167, 169,
485 3, 31, 168, 169, 28, 31, 168, 169, 31, 168,
486 169, 25, 31, 168, 169, 26, 31, 168, 169, 31,
487 168, 169, 31, 168, 169, 30, 31, 168, 169, 2,
488 31, 168, 169, 35, 168, 169, 1, 35, 168, 169,
489 3, 35, 168, 169, 32, 35, 168, 169, 35, 168,
490 169, 35, 168, 169, 35, 168, 169, 2, 35, 168,
491 169, 119, 168, 169, 1, 119, 168, 169, 3, 119,
492 168, 169, 119, 168, 169, 119, 168, 169, 117, 119,
493 168, 169, 2, 119, 168, 169, 165, 166, 6, 6,
495 5, 6, 51, 51, 51, 51, 51, 51, 51, 51,
496 51, 51, 86, 165, 84, 166, 77, 77, 77, 77,
497 79, 79, 88, 85, 88, 165, 83, 88, 166, 88,
498 89, 8212, 21,16404, 22, 21,16404, 17, 17, 165,
499 17, 166, 17, 18, 94, 165, 166, 92, 93, 95,
500 165, 166, 96, 8293, 8292, 8290, 8293,16482,16484,16485,
501 105, 104, 105, 103, 107, 107, 102, 151, 152, 108,
502 165, 109, 166, 147, 149, 69, 69, 68, 123, 110,
503 112, 165, 111, 166, 123, 126, 127, 126, 166, 126,
504 122, 122, 165, 136, 140, 136, 140, 138, 140, 165,
506 139, 140, 166, 136, 140, 133, 130, 132, 165, 131,
507 133, 166, 133, 144, 142, 144, 165, 143, 144, 166,
508 144, 59, 56, 59, 63, 62, 64, 157, 165, 156,
509 166, 159, 55, 52, 33, 165, 33, 166, 34, 117,
510 165, 166, 4,16391, 51, 51, 51, 51, 51, 43,
511 51, 51, 51, 51, 51, 51, 86, 86, 165, 84,
512 84, 166, 77, 77, 77, 72, 77, 77, 80, 4,
513 79, 85, 88, 85, 85, 88, 165, 83, 88, 83,
514 83, 88, 166, 4, 88, 15, 15, 21,16404, 17,
515 165, 17, 166, 4, 17, 165, 166, 4, 4, 94,
517 165, 166, 4, 106, 152, 108, 108, 165, 109, 109,
518 166, 111, 166, 4, 123, 126, 166, 4, 126, 121,
519 140, 165, 140, 166, 4, 136, 140, 4, 140, 129,
520 133, 166, 4, 133, 144, 165, 144, 166, 4, 144,
521 59, 156, 166, 27, 164,16391, 9, 8199, 51, 51,
522 51, 51, 51, 51, 51, 51, 51, 51, 51, 86,
523 164, 77, 73, 77, 77, 77, 80, 85, 88, 164,
524 14, 13, 14, 21,16404, 17, 164, 164, 164, 99,
525 107, 111, 113, 140, 164, 144, 164, 59, 27, 8199,
526 9, 51, 51, 44, 47, 45, 45, 51, 51, 51,
528 51, 51, 51, 51, 51, 74, 77, 75, 77, 77,
529 13, 21,16404, 115, 59, 8, 9, 51, 51, 48,
530 40, 39, 51, 51, 51, 51, 46, 21,16404, 114,
531 116, 118, 59, 9, 38, 42, 41,16420, 37, 10,
532 59, 9, 8228, 58, 57, 9, 8228, 120, 9, 9,
536 static yyconst flex_int16_t yy_accept[1173] =
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 1, 2, 3, 3,
541 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
542 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
543 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
544 3, 3, 3, 3, 3, 3, 3, 4, 6, 9,
545 11, 14, 16, 18, 21, 24, 28, 31, 34, 38,
546 41, 44, 47, 50, 54, 57, 61, 64, 68, 71,
547 74, 78, 82, 86, 90, 94, 98, 102, 106, 109,
549 113, 116, 120, 123, 126, 130, 134, 138, 142, 146,
550 151, 154, 159, 163, 166, 169, 173, 178, 182, 187,
551 192, 196, 200, 204, 207, 212, 215, 219, 222, 226,
552 230, 233, 236, 239, 244, 247, 252, 256, 260, 264,
553 267, 271, 274, 277, 280, 282, 286, 288, 291, 294,
554 296, 298, 301, 304, 307, 311, 314, 318, 321, 324,
555 327, 331, 337, 339, 342, 345, 348, 350, 353, 355,
556 358, 362, 366, 369, 373, 377, 381, 385, 388, 391,
557 395, 399, 402, 406, 409, 413, 416, 420, 423, 426,
558 430, 434, 439, 443, 447, 452, 456, 460, 464, 469,
560 473, 477, 480, 485, 488, 491, 495, 498, 503, 507,
561 512, 515, 520, 523, 527, 531, 535, 540, 543, 546,
562 549, 554, 559, 562, 568, 572, 577, 580, 586, 590,
563 594, 597, 602, 605, 609, 613, 618, 622, 626, 631,
564 635, 639, 644, 647, 651, 654, 658, 661, 664, 668,
565 671, 675, 679, 682, 686, 689, 693, 696, 699, 703,
566 706, 710, 714, 718, 721, 725, 729, 733, 736, 739,
567 742, 746, 749, 753, 757, 761, 764, 767, 770, 774,
568 777, 780, 784, 788, 791, 794, 797, 801, 804, 808,
569 811, 815, 819, 822, 826, 830, 833, 836, 840, 844,
571 847, 851, 855, 859, 862, 865, 868, 872, 875, 879,
572 883, 886, 889, 893, 897, 898, 899, 899, 900, 901,
573 902, 903, 903, 903, 903, 904, 905, 906, 907, 908,
574 909, 910, 911, 912, 913, 915, 917, 918, 919, 920,
575 921, 922, 922, 922, 923, 924, 927, 930, 931, 932,
576 932, 932, 932, 933, 935, 936, 936, 938, 939, 941,
577 943, 944, 945, 945, 946, 947, 948, 948, 948, 949,
578 950, 950, 951, 952, 953, 953, 954, 954, 955, 956,
579 957, 961, 961, 961, 962, 963, 964, 965, 965, 966,
580 966, 967, 968, 969, 969, 970, 972, 974, 975, 976,
582 976, 977, 978, 979, 980, 981, 983, 985, 986, 986,
583 986, 986, 986, 986, 986, 986, 986, 986, 986, 987,
584 988, 990, 991, 992, 994, 994, 994, 996, 997, 998,
585 1001, 1004, 1006, 1006, 1007, 1008, 1010, 1013, 1014, 1015,
586 1018, 1021, 1022, 1023, 1024, 1024, 1025, 1026, 1027, 1028,
587 1030, 1032, 1033, 1034, 1035, 1035, 1035, 1035, 1037, 1039,
588 1040, 1041, 1042, 1043, 1044, 1044, 1044, 1045, 1046, 1047,
589 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
590 1058, 1060, 1061, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
591 1069, 1070, 1070, 1070, 1072, 1074, 1075, 1078, 1080, 1081,
593 1084, 1086, 1087, 1087, 1088, 1088, 1088, 1090, 1092, 1094,
594 1096, 1097, 1098, 1099, 1101, 1102, 1103, 1104, 1104, 1104,
595 1105, 1105, 1106, 1107, 1109, 1110, 1112, 1114, 1116, 1116,
596 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
597 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1118, 1120, 1120,
598 1121, 1123, 1125, 1128, 1130, 1130, 1130, 1131, 1133, 1135,
599 1137, 1139, 1141, 1142, 1144, 1144, 1145, 1145, 1145, 1146,
600 1146, 1147, 1147, 1148, 1148, 1149, 1150, 1151, 1152, 1153,
601 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163, 1165,
602 1166, 1167, 1167, 1168, 1168, 1171, 1172, 1174, 1174, 1174,
604 1176, 1178, 1179, 1180, 1181, 1182, 1183, 1183, 1183, 1184,
605 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
606 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1186, 1188, 1189,
607 1189, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191, 1192,
608 1192, 1193, 1194, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
609 1203, 1204, 1205, 1206, 1207, 1207, 1208, 1210, 1211, 1211,
610 1211, 1212, 1212, 1212, 1214, 1214, 1214, 1214, 1214, 1214,
611 1214, 1214, 1214, 1214, 1215, 1215, 1215, 1215, 1215, 1215,
612 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
613 1216, 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1218, 1218,
615 1219, 1220, 1220, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
616 1227, 1228, 1228, 1228, 1230, 1231, 1231, 1231, 1231, 1231,
617 1231, 1231, 1232, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
618 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
619 1234, 1234, 1234, 1234, 1235, 1235, 1236, 1236, 1237, 1238,
620 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1241, 1241, 1241,
621 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
622 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1242,
623 1242, 1242, 1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244,
624 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
626 1244, 1244, 1244, 1244, 1244, 1245, 1246, 1246, 1246, 1246,
627 1247, 1247, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
628 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
629 1249, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
630 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1251, 1251, 1252,
631 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1253,
632 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1254, 1254,
633 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
634 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
635 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
637 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
638 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
639 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
640 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
641 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
642 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
643 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
644 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
645 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
646 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
648 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
649 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
650 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
651 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
652 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
653 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
654 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
655 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
656 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
657 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
659 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
660 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
661 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
662 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
663 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
664 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
665 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
669 static yyconst flex_int32_t yy_ec[256] =
671 1, 1, 1, 1, 1, 2, 1, 1, 3, 4,
672 1, 1, 5, 1, 1, 1, 1, 1, 1, 1,
673 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
674 1, 3, 6, 7, 8, 9, 1, 1, 10, 11,
675 12, 13, 1, 14, 15, 16, 17, 18, 19, 18,
676 18, 18, 18, 18, 18, 20, 20, 21, 1, 22,
677 23, 24, 25, 26, 27, 27, 28, 27, 27, 27,
678 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
679 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
680 29, 30, 31, 1, 27, 1, 32, 33, 34, 35,
682 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
683 46, 47, 41, 48, 49, 50, 51, 52, 41, 53,
684 54, 41, 55, 1, 56, 1, 1, 1, 1, 1,
685 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
688 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
689 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
691 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
693 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
694 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
695 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
696 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
697 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
701 static yyconst flex_int32_t yy_meta[58] =
703 1, 2, 3, 4, 5, 6, 7, 1, 1, 8,
704 9, 6, 10, 1, 11, 12, 13, 14, 14, 14,
705 1, 15, 6, 6, 1, 16, 17, 17, 1, 18,
706 1, 17, 17, 17, 17, 17, 17, 17, 17, 17,
707 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
708 17, 17, 17, 17, 1, 1, 1
711 static yyconst flex_int16_t yy_base[1283] =
713 0, 4, 9, 65, 122, 0, 179, 0, 26, 37,
714 235, 239, 296, 0, 352, 356, 363, 387, 444, 0,
715 54, 500, 531, 0, 585, 0, 642, 0, 504, 698,
716 703, 707, 712, 717, 773, 829, 886, 0, 942, 998,
717 731, 766, 780, 804, 810, 948, 1055, 0, 1112, 0,
718 1158, 0, 959, 976, 952, 1211, 1242, 0, 1215, 1295,
719 1351, 1407, 1302, 1309, 1464, 0, 2845, 5439, 5439, 5439,
720 5439, 2, 2818, 5439, 5439, 5439, 37, 5439, 5439, 5439,
721 3, 2817, 69, 5439, 5439, 5439, 5439, 5439, 5, 2814,
722 0, 2787, 2784, 3, 41, 2758, 2752, 5439, 5439, 5439,
724 5439, 5439, 10, 2767, 0, 7, 2753, 5439, 0, 0,
725 5439, 0, 5439, 2759, 36, 2762, 0, 0, 0, 0,
726 5439, 64, 2761, 0, 0, 5439, 5439, 5439, 5439, 5439,
727 2748, 78, 2751, 95, 33, 507, 5439, 5439, 5439, 0,
728 0, 5439, 88, 2750, 0, 0, 0, 95, 96, 97,
729 238, 231, 52, 2763, 2758, 5439, 2756, 244, 243, 70,
730 2754, 247, 0, 2750, 2748, 2747, 2724, 250, 2730, 5439,
731 5439, 104, 5439, 5439, 5439, 2717, 5439, 96, 2694, 5439,
732 0, 111, 5439, 5439, 5439, 5439, 5439, 254, 2681, 5439,
733 5439, 5439, 246, 5439, 5439, 5439, 257, 2680, 5439, 0,
735 5439, 5439, 0, 2682, 259, 2665, 1496, 0, 0, 0,
736 5439, 0, 2671, 262, 2661, 0, 0, 2664, 265, 81,
737 271, 0, 5439, 278, 268, 373, 250, 362, 0, 5439,
738 5439, 0, 2662, 270, 2653, 0, 0, 5439, 0, 276,
739 2647, 0, 5439, 5439, 5439, 5439, 277, 2641, 0, 367,
740 2623, 5439, 5439, 5439, 5439, 5439, 349, 2628, 0, 2647,
741 5439, 5439, 0, 5439, 5439, 5439, 5439, 361, 2620, 0,
742 5439, 5439, 5439, 5439, 5439, 380, 2619, 0, 5439, 0,
743 5439, 5439, 5439, 382, 2610, 379, 5439, 5439, 5439, 5439,
744 5439, 5439, 2604, 5439, 5439, 383, 2606, 5439, 5439, 5439,
746 5439, 5439, 5439, 388, 2601, 0, 5439, 5439, 5439, 5439,
747 389, 2600, 0, 5439, 2610, 2605, 0, 5439, 400, 5439,
748 404, 407, 405, 504, 0, 2581, 2575, 336, 2563, 813,
749 2550, 2561, 2559, 2544, 2565, 2547, 0, 381, 2527, 833,
750 0, 2546, 407, 1544, 0, 506, 412, 1563, 5439, 2545,
751 516, 430, 5439, 534, 5439, 2536, 776, 0, 2522, 2513,
752 1582, 5439, 496, 5439, 520, 723, 1601, 537, 5439, 538,
753 2525, 5439, 538, 539, 1622, 5439, 2522, 543, 5439, 5439,
754 735, 2517, 701, 2517, 2515, 2514, 2506, 2492, 715, 2490,
755 738, 5439, 435, 2496, 2495, 737, 745, 0, 5439, 2493,
757 5439, 547, 5439, 0, 5439, 423, 2466, 1641, 1632, 2428,
758 2427, 2425, 2412, 2424, 2419, 2400, 2412, 2403, 0, 5439,
759 2422, 1680, 5439, 2424, 2391, 764, 708, 0, 0, 2420,
760 2410, 1703, 2380, 0, 741, 2411, 2406, 1722, 0, 2405,
761 2399, 1741, 0, 5439, 2410, 2372, 0, 5439, 0, 2394,
762 2389, 5439, 0, 5439, 2391, 2372, 534, 2367, 2354, 5439,
763 0, 2345, 5439, 5439, 715, 2347, 797, 2308, 2309, 2306,
764 2297, 2287, 5439, 2282, 2279, 2260, 2262, 2259, 2256, 0,
765 2274, 0, 0, 2253, 2247, 2230, 5439, 2222, 2222, 2245,
766 5439, 2241, 748, 0, 407, 0, 746, 815, 0, 821,
768 0, 5439, 2231, 2228, 822, 859, 983, 2220, 0, 0,
769 787, 765, 836, 5439, 821, 2227, 2217, 868, 836, 5439,
770 2203, 2201, 5439, 2186, 5439, 5439, 2183, 0, 2146, 2134,
771 942, 2129, 2146, 2134, 2100, 2113, 2099, 830, 2086, 2088,
772 2077, 2070, 2074, 2079, 2067, 2069, 0, 0, 2072, 5439,
773 2089, 0, 867, 0, 2059, 871, 5439, 0, 0, 2082,
774 0, 0, 2055, 5439, 2074, 5439, 2072, 994, 5439, 2069,
775 1168, 987, 1243, 1246, 5439, 2044, 2032, 874, 1765, 2039,
776 2038, 2028, 2012, 2003, 2008, 2014, 0, 1011, 810, 2013,
777 2011, 2037, 5439, 1008, 846, 5439, 5439, 1011, 1032, 1254,
779 0, 951, 2032, 5439, 5439, 1998, 1978, 1962, 5439, 1960,
780 1949, 1953, 1955, 1938, 1929, 1933, 1933, 878, 1933, 1907,
781 1913, 1899, 1898, 1910, 1890, 1190, 0, 0, 1883, 1916,
782 5439, 1021, 845, 1250, 1319, 945, 1034, 1325, 1333, 1339,
783 1890, 1888, 5439, 5439, 967, 1886, 1822, 1038, 1883, 1869,
784 1881, 1875, 1895, 5439, 992, 1860, 0, 1041, 1873, 1752,
785 5439, 1751, 1171, 1346, 1724, 1174, 1716, 1721, 1709, 1708,
786 1716, 1697, 1366, 1378, 1692, 1690, 1682, 1686, 1685, 1692,
787 1674, 1671, 1665, 1660, 1676, 1675, 1656, 1665, 1652, 1658,
788 1678, 1677, 1381, 1392, 1047, 5439, 1395, 1402, 1524, 1643,
790 1674, 1178, 1637, 5439, 1042, 5439, 1211, 1418, 1637, 1667,
791 1665, 1620, 1423, 1877, 1426, 1609, 1601, 1605, 1604, 1616,
792 1595, 1434, 5439, 1438, 1591, 1590, 1585, 1587, 1584, 1569,
793 1567, 1565, 1546, 1547, 1539, 1532, 1539, 1523, 1527, 1527,
794 1560, 1617, 1638, 1657, 1695, 1555, 1224, 1228, 5439, 1441,
795 5439, 1180, 1361, 1448, 1882, 1525, 5439, 1507, 1505, 1504,
796 1499, 1475, 1481, 1488, 1417, 1400, 1381, 1368, 1380, 1361,
797 1374, 1360, 1365, 1333, 1327, 1332, 1301, 1241, 1887, 1891,
798 1897, 1901, 1906, 0, 1296, 1451, 1910, 1328, 1290, 1276,
799 1263, 1261, 1268, 1249, 0, 1219, 1223, 1217, 1210, 1184,
801 1143, 1009, 1016, 989, 1307, 5439, 1926, 1936, 1930, 1950,
802 1955, 0, 991, 1579, 1959, 1970, 966, 967, 954, 5439,
803 942, 940, 933, 931, 917, 895, 813, 1975, 1985, 1979,
804 1990, 1998, 723, 1598, 2013, 2004, 698, 702, 509, 474,
805 462, 474, 385, 2023, 2034, 2028, 2053, 2058, 5439, 1678,
806 2062, 2038, 301, 248, 215, 2082, 2093, 2067, 2097, 2106,
807 1718, 2121, 2087, 54, 2126, 2141, 2130, 2136, 2151, 1737,
808 2160, 2155, 2165, 2190, 2018, 2194, 2170, 2179, 2219, 2184,
809 2224, 2229, 2204, 2239, 2249, 2209, 2258, 2268, 2213, 2277,
810 2282, 2243, 2291, 2296, 2262, 2305, 2308, 2273, 2321, 2331,
812 2317, 2336, 2341, 2326, 2350, 2353, 2362, 2365, 2380, 2370,
813 2389, 2394, 2374, 2399, 2408, 2385, 2417, 2427, 2438, 2441,
814 2450, 2455, 2461, 2464, 2473, 2476, 2481, 2486, 2491, 2496,
815 2508, 2511, 2520, 2529, 2534, 2539, 2544, 2549, 2554, 2563,
816 2566, 2569, 2578, 2582, 2585, 2597, 2600, 2603, 2612, 2616,
817 2625, 2634, 2638, 2643, 2652, 2657, 2666, 2660, 2671, 2680,
818 2689, 2692, 2697, 2706, 2709, 2719, 2713, 2728, 2738, 2724,
819 2743, 2752, 2733, 2761, 2766, 2777, 2780, 2791, 2796, 2800,
820 2805, 2810, 2814, 2819, 2824, 2830, 2833, 2844, 2850, 2859,
821 2853, 2864, 2873, 2868, 2878, 2887, 2882, 2892, 2902, 2897,
823 2907, 2922, 2912, 2927, 2936, 2916, 2945, 2955, 2931, 2950,
824 2965, 2941, 2970, 2990, 2960, 2979, 2995, 2975, 3000, 3014,
825 2984, 3023, 3033, 3004, 3038, 3049, 3009, 3062, 3067, 3028,
826 3076, 3086, 3043, 3081, 3096, 3058, 3091, 3105, 3072, 3114,
827 3125, 3130, 3134, 3139, 3144, 3150, 3159, 3153, 3164, 3179,
828 3168, 3184, 3193, 3173, 3198, 3208, 3188, 3213, 3222, 3202,
829 3227, 3242, 3217, 3247, 3257, 3232, 3262, 3271, 3236, 3281,
830 3291, 3251, 3296, 3306, 3266, 65, 3311, 3276, 3325, 3285,
831 3330, 3300, 3340, 3320, 3345, 3354, 3360, 3365, 3369, 3373,
832 3378, 3383, 3386, 5, 3389, 3393, 3398, 3401, 3407, 3413,
834 3418, 3422, 3426, 3431, 3442, 3446, 3454, 3460, 3466, 3471,
835 3475, 3479, 3484, 3487, 3490, 3495, 3499, 3502, 3507, 3513,
836 3519, 3524, 3528, 3532, 3543, 3548, 3555, 3560, 3566, 3572,
837 3577, 3581, 3585, 3588, 3591, 3596, 3601, 3604, 3608, 3613,
838 3619, 3625, 3630, 3634, 3644, 3649, 3657, 3661, 3666, 3672,
839 3678, 3683, 3687, 3690, 3693, 3697, 3702, 3705, 3710, 3714,
840 3719, 3725, 3731, 3736, 3746, 3750, 3758, 3763, 3767, 3772,
841 5439, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971,
842 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151,
843 18, 793, 4169, 4187, 4205, 4222, 4240, 4256, 4273, 4290,
845 4308, 4324, 4341, 4356, 4372, 1170, 4389, 4407, 4424, 4442,
846 4459, 4476, 4493, 4511, 1246, 1331, 1361, 4529, 1373, 4547,
847 4565, 4573, 4585, 4600, 1375, 4618, 4636, 1432, 4654, 4672,
848 4689, 4707, 4724, 4742, 4760, 4776, 4793, 4810, 4826, 4843,
849 4858, 4874, 1444, 4891, 4909, 4926, 4944, 4961, 4978, 4995,
850 5013, 1519, 1520, 1524, 1529, 5031, 5048, 5056, 5073, 5091,
851 1543, 5109, 5127, 1581, 5145, 5162, 5180, 5198, 5216, 5234,
852 5252, 5267, 5284, 5301, 5319, 5336, 5353, 5371, 5388, 5403,
856 static yyconst flex_int16_t yy_def[1283] =
858 1172, 1172, 1172, 1173, 1171, 5, 1171, 7, 1174, 1174,
859 1175, 1175, 1171, 13, 1176, 1176, 1177, 1177, 1171, 19,
860 1178, 1178, 19, 23, 1171, 25, 1171, 27, 1179, 1180,
861 1172, 1172, 1172, 1172, 1181, 1181, 1171, 37, 1181, 1181,
862 1182, 1182, 1183, 1183, 1184, 1184, 1171, 47, 1171, 49,
863 49, 51, 1185, 1185, 1186, 1186, 23, 57, 1187, 1187,
864 1188, 1188, 1189, 1189, 1171, 65, 1171, 1171, 1171, 1171,
865 1171, 1171, 1171, 1171, 1171, 1171, 1190, 1171, 1171, 1171,
866 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
867 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1171, 1171, 1171,
869 1171, 1171, 1171, 1171, 1192, 1192, 1192, 1171, 1193, 1193,
870 1171, 1193, 1171, 1194, 1171, 1193, 1193, 1195, 1195, 1195,
871 1171, 1195, 1195, 1196, 1195, 1171, 1171, 1171, 1171, 1171,
872 1197, 1171, 1171, 1198, 1171, 1198, 1171, 1171, 1171, 1199,
873 1199, 1171, 1199, 1199, 1200, 1199, 1201, 1201, 1201, 1201,
874 1201, 1201, 1202, 1203, 1203, 1171, 1203, 1203, 1203, 1171,
875 1203, 1204, 1171, 1171, 1171, 1171, 1171, 1205, 1171, 1171,
876 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
877 1206, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
878 1171, 1171, 1207, 1171, 1171, 1171, 1171, 1171, 1171, 1208,
880 1171, 1171, 1208, 1171, 1171, 1208, 1171, 1208, 1209, 1209,
881 1171, 1209, 1171, 1209, 1209, 1206, 1209, 1171, 1171, 1171,
882 1210, 1211, 1171, 1210, 1212, 1210, 1171, 1210, 1213, 1171,
883 1171, 1213, 1171, 1213, 1213, 1213, 1214, 1171, 1214, 1214,
884 1214, 1214, 1171, 1171, 1171, 1171, 1171, 1171, 1215, 1171,
885 1215, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1216, 1171,
886 1171, 1171, 1217, 1171, 1171, 1171, 1171, 1171, 1171, 1218,
887 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1218, 1171, 1219,
888 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
889 1171, 1171, 1220, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
891 1171, 1171, 1171, 1171, 1171, 1221, 1171, 1171, 1171, 1171,
892 1171, 1171, 1222, 1171, 1171, 1171, 1223, 1171, 1190, 1171,
893 1171, 1171, 1224, 1171, 1225, 1225, 1225, 1225, 1225, 1225,
894 1225, 1225, 1225, 1225, 1226, 1227, 1228, 1228, 1228, 1228,
895 1229, 1230, 1231, 1229, 1232, 1233, 1234, 1232, 1171, 1171,
896 1235, 1171, 1171, 1236, 1171, 1171, 1236, 1237, 1237, 1237,
897 1237, 1171, 1238, 1171, 1238, 1238, 1238, 1171, 1171, 1239,
898 1240, 1171, 1240, 1240, 1240, 1171, 1171, 1171, 1171, 1171,
899 1241, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
900 1242, 1171, 1171, 1171, 1171, 1171, 1171, 1243, 1171, 1171,
902 1171, 1244, 1171, 1245, 1171, 1171, 1171, 1245, 1171, 1171,
903 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1246, 1171,
904 1246, 1246, 1171, 1171, 1171, 1171, 1247, 1248, 1249, 1249,
905 1249, 1247, 1171, 1250, 1171, 1171, 1250, 1250, 1251, 1251,
906 1251, 1251, 1252, 1171, 1171, 1252, 1253, 1171, 1254, 1171,
907 1171, 1171, 1255, 1171, 1171, 1256, 1257, 1171, 1171, 1171,
908 1258, 1171, 1171, 1171, 1259, 1260, 1171, 1261, 1261, 1261,
909 1261, 1261, 1171, 1261, 1261, 1261, 1261, 1261, 1261, 1262,
910 1262, 1263, 1263, 1264, 1264, 1264, 1171, 1264, 1264, 1265,
911 1171, 1171, 1171, 1266, 1267, 1268, 1267, 1269, 1270, 1269,
913 1271, 1171, 1171, 1171, 1171, 1171, 1272, 1273, 1273, 1273,
914 1274, 1274, 1274, 1171, 1275, 1275, 1275, 1171, 1171, 1171,
915 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1245, 1171, 1171,
916 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
917 1171, 1171, 1171, 1171, 1171, 1171, 1246, 1246, 1171, 1171,
918 1249, 1249, 1247, 1249, 1171, 1171, 1171, 1250, 1250, 1251,
919 1251, 1251, 1252, 1171, 1276, 1171, 1171, 1171, 1171, 1260,
920 1277, 1171, 1171, 1171, 1171, 1261, 1261, 1261, 1171, 1261,
921 1261, 1261, 1261, 1261, 1261, 1261, 1262, 1264, 1264, 1264,
922 1264, 1278, 1171, 1171, 1267, 1171, 1171, 1171, 1171, 1272,
924 1273, 1274, 1275, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
925 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
926 1171, 1171, 1171, 1171, 1171, 1171, 1249, 1251, 1252, 1279,
927 1171, 1171, 1277, 1277, 1277, 1171, 1277, 1171, 1171, 1171,
928 1261, 1261, 1171, 1171, 1171, 1261, 1171, 1261, 1261, 1261,
929 1261, 1261, 1261, 1171, 1171, 1264, 1264, 1264, 1171, 1171,
930 1171, 1171, 1171, 1272, 1171, 1171, 1171, 1171, 1171, 1171,
931 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
932 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1252,
933 1171, 1171, 1277, 1277, 1171, 1171, 1171, 1171, 1171, 1261,
935 1261, 1171, 1171, 1171, 1171, 1171, 1261, 1261, 1261, 1261,
936 1171, 1171, 1171, 1272, 1171, 1171, 1171, 1171, 1171, 1171,
937 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
938 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1252,
939 1277, 1277, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1280,
940 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
941 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
942 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1252, 1277, 1277,
943 1171, 1171, 1171, 1281, 1171, 1171, 1171, 1171, 1171, 1171,
944 1171, 1171, 1171, 1171, 1282, 1171, 1171, 1171, 1171, 1171,
946 1171, 1171, 1171, 1171, 1171, 1171, 1277, 1277, 1171, 1171,
947 1171, 1281, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
948 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1277, 1277, 1171,
949 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
950 1171, 1171, 1171, 1277, 1277, 1171, 1171, 1171, 1171, 1171,
951 1171, 1171, 1171, 1171, 1171, 1277, 1277, 1171, 1171, 1171,
952 1171, 1171, 1171, 1171, 1277, 1277, 1171, 1171, 1171, 1171,
953 1171, 1171, 1277, 1277, 1171, 1171, 1171, 1171, 1171, 1171,
954 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
955 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
957 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
958 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
959 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
960 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
961 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
962 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
963 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
964 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
965 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
966 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
968 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
969 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
970 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
971 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
972 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
973 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
974 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
975 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
976 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
977 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
979 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
980 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
981 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
982 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
983 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
984 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
985 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
986 0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
987 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
988 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
990 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
991 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
992 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
993 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
994 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
995 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
996 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
997 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1001 static yyconst flex_int16_t yy_nxt[5497] =
1003 1171, 69, 383, 70, 71, 69, 364, 70, 71, 1171,
1004 69, 384, 70, 71, 315, 315, 72, 315, 316, 316,
1005 72, 316, 335, 364, 73, 72, 336, 110, 73, 111,
1006 112, 325, 113, 73, 325, 114, 355, 356, 110, 319,
1007 111, 112, 115, 113, 320, 328, 114, 329, 335, 338,
1008 116, 339, 336, 115, 368, 155, 74, 156, 157, 757,
1009 74, 116, 369, 321, 321, 74, 76, 77, 78, 79,
1010 158, 322, 80, 376, 377, 353, 346, 330, 159, 323,
1011 347, 81, 117, 160, 331, 332, 324, 324, 324, 82,
1012 315, 83, 83, 117, 316, 324, 324, 352, 352, 352,
1014 359, 364, 364, 364, 360, 353, 393, 550, 396, 365,
1015 161, 394, 397, 366, 399, 400, 425, 426, 364, 364,
1016 364, 84, 85, 86, 85, 87, 88, 85, 85, 85,
1017 85, 85, 85, 85, 85, 85, 85, 85, 89, 85,
1018 85, 85, 85, 85, 85, 85, 90, 85, 91, 91,
1019 85, 85, 85, 91, 91, 92, 93, 94, 91, 91,
1020 91, 95, 91, 91, 91, 91, 91, 91, 96, 91,
1021 91, 91, 97, 91, 91, 91, 85, 85, 98, 99,
1022 100, 99, 101, 102, 99, 99, 99, 99, 99, 99,
1023 99, 99, 99, 99, 99, 103, 99, 99, 99, 99,
1025 99, 99, 99, 104, 99, 105, 105, 99, 99, 99,
1026 105, 105, 105, 105, 106, 105, 105, 105, 107, 105,
1027 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1028 105, 105, 105, 99, 99, 108, 119, 364, 70, 120,
1029 119, 121, 70, 120, 364, 121, 372, 372, 402, 378,
1030 379, 122, 389, 403, 364, 122, 373, 380, 550, 123,
1031 374, 364, 367, 123, 124, 390, 335, 375, 124, 335,
1032 336, 406, 428, 336, 315, 407, 382, 424, 421, 428,
1033 430, 316, 436, 433, 431, 412, 437, 429, 440, 315,
1034 864, 125, 441, 316, 429, 125, 126, 127, 126, 128,
1036 129, 126, 130, 126, 126, 131, 126, 126, 126, 126,
1037 126, 126, 132, 126, 126, 126, 126, 126, 126, 126,
1038 133, 126, 134, 134, 126, 135, 126, 134, 134, 134,
1039 134, 136, 134, 134, 134, 134, 134, 134, 134, 134,
1040 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1041 137, 138, 139, 141, 550, 70, 71, 141, 142, 70,
1042 71, 315, 142, 428, 148, 316, 70, 149, 143, 68,
1043 444, 445, 143, 450, 428, 470, 144, 451, 429, 150,
1044 144, 145, 454, 455, 471, 145, 68, 151, 148, 429,
1045 70, 149, 315, 68, 315, 315, 316, 432, 316, 316,
1047 458, 315, 319, 150, 459, 316, 322, 320, 146, 322,
1048 68, 151, 146, 496, 323, 466, 467, 323, 499, 152,
1049 484, 324, 324, 324, 493, 493, 321, 321, 500, 485,
1050 324, 324, 506, 506, 506, 462, 496, 393, 550, 405,
1051 353, 499, 394, 152, 68, 69, 68, 70, 71, 68,
1052 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1053 72, 68, 68, 68, 68, 68, 68, 68, 73, 68,
1054 153, 153, 68, 68, 68, 153, 153, 153, 153, 153,
1055 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1056 153, 153, 153, 153, 153, 153, 153, 153, 68, 68,
1058 74, 155, 364, 156, 157, 185, 322, 186, 187, 352,
1059 352, 352, 496, 855, 323, 550, 158, 353, 497, 364,
1060 188, 324, 324, 324, 159, 504, 364, 550, 189, 160,
1061 324, 324, 511, 505, 505, 496, 352, 352, 352, 368,
1062 368, 372, 372, 364, 353, 378, 379, 369, 369, 402,
1063 515, 568, 568, 854, 403, 516, 161, 162, 162, 357,
1064 190, 518, 162, 162, 162, 162, 162, 162, 162, 162,
1065 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
1066 162, 162, 162, 162, 162, 68, 69, 163, 70, 71,
1067 68, 68, 68, 68, 68, 164, 165, 68, 166, 68,
1069 167, 72, 68, 68, 68, 68, 68, 68, 68, 73,
1070 68, 168, 168, 68, 169, 68, 168, 168, 168, 168,
1071 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1072 168, 168, 168, 168, 168, 168, 168, 168, 168, 68,
1073 68, 74, 170, 171, 172, 173, 174, 170, 175, 176,
1074 170, 177, 170, 170, 170, 170, 170, 170, 178, 170,
1075 170, 170, 170, 170, 170, 170, 179, 180, 181, 181,
1076 170, 182, 170, 181, 181, 181, 181, 181, 181, 181,
1077 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1078 181, 181, 181, 181, 181, 181, 170, 170, 183, 192,
1080 193, 194, 195, 383, 69, 196, 70, 71, 69, 428,
1081 70, 71, 384, 69, 197, 70, 71, 389, 69, 72,
1082 70, 71, 198, 72, 429, 466, 467, 73, 72, 364,
1083 390, 73, 222, 72, 223, 224, 73, 378, 379, 512,
1084 389, 73, 523, 556, 853, 380, 364, 225, 557, 524,
1085 525, 666, 496, 390, 199, 226, 227, 593, 849, 74,
1086 227, 526, 595, 74, 382, 594, 594, 222, 74, 223,
1087 224, 364, 550, 74, 201, 496, 202, 203, 352, 352,
1088 352, 230, 225, 231, 232, 204, 353, 228, 364, 205,
1089 226, 227, 233, 364, 550, 227, 234, 206, 207, 572,
1091 573, 574, 207, 602, 235, 230, 337, 231, 232, 337,
1092 364, 238, 655, 223, 239, 473, 233, 575, 473, 550,
1093 234, 499, 228, 473, 372, 507, 240, 499, 235, 208,
1094 201, 597, 202, 203, 241, 487, 236, 603, 487, 598,
1095 598, 204, 364, 487, 499, 205, 380, 474, 1171, 656,
1096 499, 575, 496, 206, 207, 843, 636, 475, 207, 364,
1097 236, 599, 599, 599, 616, 382, 242, 488, 428, 353,
1098 604, 604, 604, 556, 617, 496, 643, 489, 557, 643,
1099 674, 674, 674, 429, 643, 208, 209, 210, 209, 211,
1100 212, 209, 209, 209, 209, 209, 209, 209, 213, 209,
1102 209, 209, 214, 209, 209, 209, 209, 209, 209, 209,
1103 215, 209, 216, 216, 209, 209, 209, 216, 216, 216,
1104 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
1105 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
1106 209, 209, 217, 201, 842, 202, 203, 695, 696, 238,
1107 609, 223, 239, 273, 218, 70, 274, 364, 219, 841,
1108 265, 275, 70, 266, 240, 267, 206, 220, 276, 702,
1109 609, 220, 241, 840, 364, 268, 277, 265, 839, 70,
1110 266, 278, 267, 269, 838, 352, 352, 352, 270, 638,
1111 639, 640, 268, 353, 655, 618, 609, 666, 208, 201,
1113 269, 202, 203, 631, 242, 270, 703, 575, 279, 837,
1114 218, 632, 632, 654, 219, 271, 654, 491, 600, 666,
1115 661, 654, 206, 220, 833, 660, 660, 220, 662, 662,
1116 566, 712, 271, 827, 663, 663, 663, 1171, 692, 692,
1117 705, 575, 353, 487, 705, 636, 487, 826, 706, 695,
1118 696, 487, 706, 825, 208, 243, 244, 243, 245, 246,
1119 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1120 243, 247, 243, 243, 243, 243, 243, 243, 243, 248,
1121 243, 249, 249, 243, 250, 243, 249, 249, 249, 251,
1122 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1124 249, 249, 249, 249, 249, 249, 249, 249, 249, 243,
1125 243, 252, 253, 254, 253, 255, 256, 253, 253, 253,
1126 253, 253, 253, 253, 253, 253, 253, 253, 257, 253,
1127 253, 253, 253, 253, 253, 253, 258, 253, 259, 259,
1128 253, 260, 253, 259, 259, 259, 259, 259, 259, 259,
1129 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
1130 259, 259, 259, 259, 259, 259, 253, 253, 261, 262,
1131 634, 573, 635, 713, 713, 713, 715, 715, 715, 636,
1132 702, 353, 752, 398, 263, 263, 398, 824, 637, 263,
1133 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1135 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1136 263, 263, 273, 748, 70, 274, 282, 703, 87, 283,
1137 275, 749, 637, 682, 683, 785, 643, 276, 684, 643,
1138 748, 284, 685, 686, 643, 277, 823, 687, 749, 285,
1139 278, 688, 689, 805, 286, 640, 640, 640, 640, 640,
1140 640, 806, 693, 639, 694, 822, 352, 352, 352, 443,
1141 618, 636, 443, 575, 353, 821, 575, 279, 280, 280,
1142 637, 287, 618, 280, 280, 280, 280, 280, 280, 280,
1143 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1144 280, 280, 280, 280, 280, 280, 282, 575, 87, 283,
1146 575, 664, 666, 301, 637, 70, 302, 819, 303, 805,
1147 301, 284, 70, 302, 666, 303, 666, 806, 304, 285,
1148 818, 694, 640, 694, 286, 304, 305, 697, 698, 699,
1149 636, 306, 817, 305, 816, 699, 699, 699, 306, 637,
1150 813, 699, 699, 699, 447, 575, 804, 447, 352, 352,
1151 352, 287, 289, 575, 290, 291, 353, 292, 307, 575,
1152 293, 294, 295, 654, 803, 307, 654, 296, 722, 723,
1153 724, 654, 802, 637, 449, 297, 298, 449, 801, 575,
1154 674, 674, 674, 741, 698, 742, 453, 575, 325, 453,
1155 714, 325, 636, 575, 742, 699, 742, 743, 744, 745,
1157 800, 637, 799, 636, 745, 745, 745, 299, 289, 550,
1158 290, 291, 637, 292, 618, 575, 293, 294, 295, 798,
1159 750, 618, 575, 296, 751, 754, 754, 754, 715, 715,
1160 715, 297, 298, 353, 618, 637, 722, 723, 724, 751,
1161 724, 723, 724, 750, 797, 337, 637, 751, 337, 575,
1162 786, 786, 786, 814, 814, 814, 575, 398, 353, 796,
1163 398, 353, 751, 299, 308, 309, 308, 70, 310, 308,
1164 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
1165 311, 308, 308, 308, 308, 308, 308, 308, 312, 308,
1166 313, 313, 308, 308, 308, 313, 313, 313, 313, 313,
1168 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
1169 313, 313, 313, 313, 313, 313, 313, 313, 308, 308,
1170 314, 409, 795, 794, 793, 409, 745, 745, 745, 410,
1171 411, 412, 443, 447, 413, 443, 447, 449, 414, 415,
1172 449, 792, 453, 416, 575, 453, 791, 417, 418, 494,
1173 790, 789, 788, 464, 494, 494, 325, 746, 494, 325,
1174 464, 778, 779, 744, 780, 494, 494, 494, 501, 777,
1175 776, 636, 501, 501, 501, 775, 774, 501, 575, 501,
1176 637, 834, 834, 834, 501, 501, 501, 510, 773, 353,
1177 772, 510, 510, 510, 337, 550, 510, 337, 510, 771,
1179 850, 850, 850, 510, 510, 510, 513, 364, 353, 770,
1180 513, 513, 513, 812, 637, 513, 812, 513, 769, 780,
1181 745, 780, 513, 513, 514, 372, 768, 517, 636, 767,
1182 766, 517, 517, 517, 765, 764, 517, 637, 517, 763,
1183 781, 782, 783, 517, 517, 517, 528, 762, 761, 760,
1184 528, 528, 528, 759, 758, 528, 753, 464, 575, 783,
1185 783, 783, 528, 528, 528, 529, 530, 711, 531, 752,
1186 532, 637, 708, 747, 533, 534, 746, 575, 327, 535,
1187 861, 861, 861, 536, 537, 548, 566, 566, 353, 548,
1188 548, 548, 575, 740, 548, 739, 548, 783, 783, 783,
1190 738, 548, 548, 548, 428, 737, 736, 735, 553, 734,
1191 733, 575, 553, 553, 553, 575, 732, 553, 731, 554,
1192 870, 870, 870, 730, 553, 553, 553, 559, 353, 729,
1193 728, 559, 559, 559, 727, 726, 559, 725, 559, 875,
1194 875, 875, 721, 559, 559, 559, 562, 353, 720, 575,
1195 562, 562, 562, 719, 718, 562, 717, 562, 716, 666,
1196 661, 491, 562, 562, 562, 644, 644, 645, 644, 644,
1197 644, 644, 644, 644, 644, 644, 644, 644, 644, 644,
1198 644, 644, 325, 325, 325, 644, 644, 644, 644, 644,
1199 644, 325, 325, 644, 644, 644, 325, 325, 325, 325,
1201 325, 325, 325, 325, 646, 325, 325, 325, 325, 325,
1202 325, 325, 325, 325, 325, 325, 325, 325, 325, 644,
1203 644, 644, 704, 704, 704, 704, 704, 704, 704, 704,
1204 704, 704, 704, 704, 704, 704, 704, 704, 704, 325,
1205 325, 325, 704, 704, 704, 704, 704, 704, 325, 325,
1206 704, 704, 704, 325, 325, 325, 325, 325, 325, 325,
1207 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
1208 325, 325, 325, 325, 325, 325, 704, 704, 704, 755,
1209 755, 755, 491, 756, 787, 787, 787, 353, 756, 807,
1210 782, 808, 353, 808, 783, 808, 588, 711, 636, 809,
1212 810, 811, 636, 811, 811, 811, 710, 637, 811, 811,
1213 811, 637, 815, 815, 815, 709, 756, 575, 708, 707,
1214 353, 575, 578, 701, 700, 566, 575, 690, 828, 810,
1215 829, 757, 830, 831, 832, 681, 757, 636, 829, 811,
1216 829, 637, 680, 679, 678, 637, 637, 636, 677, 676,
1217 575, 575, 832, 832, 832, 575, 637, 832, 832, 832,
1218 575, 835, 835, 835, 757, 756, 675, 673, 618, 353,
1219 575, 672, 836, 836, 836, 575, 756, 844, 831, 845,
1220 637, 846, 847, 848, 575, 671, 636, 845, 832, 845,
1221 637, 670, 848, 848, 848, 637, 636, 669, 668, 575,
1223 848, 848, 848, 667, 575, 637, 852, 852, 852, 575,
1224 575, 666, 665, 757, 606, 851, 851, 851, 575, 756,
1225 878, 878, 878, 353, 757, 856, 847, 857, 353, 637,
1226 858, 859, 860, 575, 636, 372, 857, 848, 857, 637,
1227 863, 863, 863, 637, 575, 636, 491, 658, 575, 657,
1228 653, 652, 575, 651, 637, 860, 860, 860, 757, 650,
1229 860, 860, 860, 649, 862, 862, 862, 757, 756, 867,
1230 868, 869, 353, 575, 648, 647, 642, 637, 575, 641,
1231 571, 566, 575, 566, 865, 859, 866, 575, 637, 872,
1232 872, 872, 757, 636, 629, 866, 860, 866, 628, 869,
1234 869, 869, 637, 617, 636, 627, 626, 575, 869, 869,
1235 869, 625, 575, 637, 624, 623, 757, 575, 622, 621,
1236 620, 575, 619, 871, 871, 871, 575, 756, 873, 868,
1237 874, 353, 867, 868, 869, 618, 637, 636, 869, 869,
1238 869, 757, 615, 874, 869, 874, 637, 637, 614, 613,
1239 575, 575, 636, 869, 869, 869, 575, 877, 877, 877,
1240 575, 637, 876, 876, 876, 612, 756, 873, 868, 874,
1241 353, 575, 880, 880, 880, 757, 636, 611, 610, 608,
1242 637, 881, 881, 881, 575, 637, 883, 883, 883, 353,
1243 575, 607, 874, 869, 874, 637, 879, 879, 879, 606,
1245 756, 636, 569, 522, 353, 575, 886, 886, 886, 757,
1246 637, 889, 889, 889, 757, 892, 892, 892, 605, 637,
1247 372, 882, 882, 882, 757, 756, 884, 884, 884, 353,
1248 372, 885, 885, 885, 353, 756, 601, 596, 757, 353,
1249 596, 887, 887, 887, 637, 895, 895, 895, 757, 353,
1250 491, 888, 888, 888, 491, 756, 488, 591, 757, 353,
1251 890, 890, 890, 757, 898, 898, 898, 757, 353, 590,
1252 891, 891, 891, 757, 756, 901, 901, 901, 353, 893,
1253 893, 893, 589, 757, 894, 894, 894, 353, 756, 588,
1254 587, 586, 353, 896, 896, 896, 585, 757, 897, 897,
1256 897, 353, 756, 757, 584, 583, 353, 899, 899, 899,
1257 900, 900, 900, 582, 756, 353, 757, 581, 353, 904,
1258 904, 904, 757, 902, 902, 902, 580, 757, 907, 907,
1259 907, 353, 579, 903, 903, 903, 757, 756, 905, 905,
1260 905, 353, 578, 906, 906, 906, 353, 756, 577, 576,
1261 757, 353, 908, 908, 908, 909, 909, 909, 571, 756,
1262 353, 569, 757, 353, 910, 910, 910, 911, 911, 911,
1263 463, 757, 913, 913, 913, 353, 916, 916, 916, 462,
1264 757, 566, 912, 912, 912, 757, 756, 919, 919, 919,
1265 353, 914, 914, 914, 454, 757, 915, 915, 915, 353,
1267 756, 917, 917, 917, 353, 564, 462, 757, 563, 353,
1268 918, 918, 918, 444, 756, 561, 757, 560, 353, 920,
1269 920, 920, 558, 462, 757, 555, 552, 353, 757, 921,
1270 921, 921, 551, 756, 757, 549, 462, 353, 547, 757,
1271 922, 922, 922, 923, 923, 923, 546, 545, 757, 544,
1272 543, 353, 924, 924, 924, 542, 756, 925, 925, 925,
1273 353, 541, 757, 926, 926, 926, 927, 927, 927, 540,
1274 756, 353, 539, 538, 353, 928, 928, 928, 929, 929,
1275 929, 757, 527, 930, 930, 930, 353, 756, 931, 931,
1276 931, 353, 757, 932, 932, 932, 399, 522, 933, 933,
1278 933, 353, 756, 395, 757, 521, 353, 520, 387, 757,
1279 934, 934, 934, 935, 935, 935, 386, 385, 757, 386,
1280 519, 353, 936, 936, 936, 376, 756, 757, 372, 509,
1281 353, 937, 937, 937, 508, 757, 938, 938, 938, 355,
1282 757, 939, 939, 939, 353, 756, 940, 940, 940, 353,
1283 757, 941, 941, 941, 502, 491, 942, 942, 942, 353,
1284 756, 486, 757, 483, 353, 943, 943, 943, 944, 944,
1285 944, 945, 945, 945, 757, 756, 353, 481, 479, 353,
1286 946, 946, 946, 757, 947, 947, 947, 948, 948, 948,
1287 478, 756, 353, 757, 477, 353, 476, 472, 757, 949,
1289 949, 949, 950, 950, 950, 951, 951, 951, 757, 756,
1290 353, 469, 468, 353, 952, 952, 952, 757, 953, 953,
1291 953, 463, 462, 757, 317, 317, 353, 954, 954, 954,
1292 317, 756, 757, 457, 317, 353, 955, 955, 955, 757,
1293 956, 956, 956, 317, 317, 957, 957, 957, 353, 756,
1294 448, 757, 317, 353, 958, 958, 958, 757, 446, 959,
1295 959, 959, 961, 961, 961, 317, 757, 353, 960, 960,
1296 960, 442, 756, 962, 962, 962, 353, 438, 435, 757,
1297 423, 353, 963, 963, 963, 422, 756, 420, 757, 408,
1298 353, 964, 964, 964, 965, 965, 965, 757, 405, 966,
1300 966, 966, 353, 756, 317, 317, 757, 353, 967, 967,
1301 967, 968, 968, 968, 757, 970, 970, 970, 317, 353,
1302 757, 969, 969, 969, 395, 756, 973, 973, 973, 353,
1303 971, 971, 971, 392, 757, 976, 976, 976, 353, 388,
1304 972, 972, 972, 757, 756, 974, 974, 974, 353, 387,
1305 386, 757, 385, 353, 975, 975, 975, 372, 756, 372,
1306 757, 372, 353, 977, 977, 977, 372, 757, 978, 978,
1307 978, 353, 756, 757, 361, 317, 353, 351, 757, 979,
1308 979, 979, 980, 980, 980, 348, 344, 757, 343, 340,
1309 353, 317, 757, 981, 981, 981, 334, 756, 982, 982,
1311 982, 353, 983, 983, 983, 333, 757, 984, 984, 984,
1312 353, 756, 985, 985, 985, 353, 986, 986, 986, 327,
1313 757, 987, 987, 987, 353, 756, 988, 988, 988, 353,
1314 326, 757, 989, 989, 989, 990, 990, 990, 317, 756,
1315 353, 317, 317, 353, 1171, 757, 991, 991, 991, 1171,
1316 757, 1171, 992, 992, 992, 994, 994, 994, 1171, 757,
1317 353, 993, 993, 993, 757, 756, 995, 995, 995, 353,
1318 997, 997, 997, 757, 353, 996, 996, 996, 757, 756,
1319 998, 998, 998, 353, 1000, 1000, 1000, 757, 353, 999,
1320 999, 999, 1171, 756, 1001, 1001, 1001, 353, 757, 1003,
1322 1003, 1003, 353, 1171, 1002, 1002, 1002, 757, 756, 1004,
1323 1004, 1004, 353, 757, 1006, 1006, 1006, 353, 1009, 1009,
1324 1009, 1171, 757, 1171, 1005, 1005, 1005, 757, 756, 1007,
1325 1007, 1007, 353, 1012, 1012, 1012, 757, 353, 1008, 1008,
1326 1008, 757, 756, 1015, 1015, 1015, 353, 1010, 1010, 1010,
1327 1171, 757, 1013, 1013, 1013, 353, 757, 1011, 1011, 1011,
1328 353, 756, 1018, 1018, 1018, 353, 757, 1014, 1014, 1014,
1329 757, 756, 1016, 1016, 1016, 353, 757, 1021, 1021, 1021,
1330 353, 1019, 1019, 1019, 1171, 757, 1024, 1024, 1024, 353,
1331 757, 1171, 1017, 1017, 1017, 757, 756, 1020, 1020, 1020,
1333 353, 756, 1022, 1022, 1022, 353, 1027, 1027, 1027, 757,
1334 353, 1030, 1030, 1030, 757, 1171, 1023, 1023, 1023, 757,
1335 756, 1171, 1171, 1171, 353, 1025, 1025, 1025, 1171, 757,
1336 1033, 1033, 1033, 353, 1171, 1026, 1026, 1026, 757, 756,
1337 1028, 1028, 1028, 353, 757, 1036, 1036, 1036, 353, 757,
1338 1171, 1029, 1029, 1029, 1171, 756, 1171, 1171, 757, 353,
1339 1039, 1039, 1039, 757, 1031, 1031, 1031, 1171, 757, 1032,
1340 1032, 1032, 353, 756, 1042, 1042, 1042, 353, 1034, 1034,
1341 1034, 1171, 757, 1037, 1037, 1037, 353, 757, 1035, 1035,
1342 1035, 353, 756, 1040, 1040, 1040, 353, 757, 1038, 1038,
1344 1038, 353, 756, 757, 1171, 1171, 353, 1041, 1041, 1041,
1345 1171, 756, 757, 1171, 1171, 353, 1043, 1043, 1043, 1171,
1346 1171, 757, 1171, 1171, 353, 1171, 757, 1044, 1044, 1044,
1347 1171, 756, 1045, 1045, 1045, 353, 1046, 1046, 1046, 1171,
1348 757, 1047, 1047, 1047, 353, 756, 1048, 1048, 1048, 353,
1349 757, 1171, 1049, 1049, 1049, 1051, 1051, 1051, 1171, 757,
1350 353, 1050, 1050, 1050, 1171, 756, 1052, 1052, 1052, 353,
1351 1054, 1054, 1054, 1171, 353, 1057, 1057, 1057, 1171, 757,
1352 1171, 1053, 1053, 1053, 757, 756, 1055, 1055, 1055, 353,
1353 1060, 1060, 1060, 757, 353, 1056, 1056, 1056, 757, 756,
1355 1058, 1058, 1058, 353, 1063, 1063, 1063, 757, 353, 1171,
1356 1059, 1059, 1059, 757, 756, 1061, 1061, 1061, 353, 1066,
1357 1066, 1066, 757, 353, 1062, 1062, 1062, 757, 756, 1064,
1358 1064, 1064, 353, 757, 1069, 1069, 1069, 353, 1072, 1072,
1359 1072, 1171, 757, 1171, 1065, 1065, 1065, 757, 756, 1067,
1360 1067, 1067, 353, 1075, 1075, 1075, 757, 353, 1171, 1068,
1361 1068, 1068, 757, 756, 1070, 1070, 1070, 353, 1078, 1078,
1362 1078, 757, 353, 1071, 1071, 1071, 757, 756, 1080, 1080,
1363 1080, 353, 1171, 1073, 1073, 1073, 757, 1082, 1082, 1082,
1364 757, 353, 1171, 1074, 1074, 1074, 757, 756, 1076, 1076,
1366 1076, 353, 1084, 1084, 1084, 757, 353, 1171, 1077, 1077,
1367 1077, 757, 756, 1079, 1079, 1079, 353, 756, 1171, 1171,
1368 757, 353, 1086, 1086, 1086, 757, 1171, 1081, 1081, 1081,
1369 757, 756, 1083, 1083, 1083, 353, 756, 1171, 1171, 757,
1370 353, 1171, 1085, 1085, 1085, 757, 756, 1087, 1087, 1087,
1371 353, 756, 1171, 1171, 757, 353, 1088, 1088, 1088, 1171,
1372 757, 1171, 1089, 1089, 1089, 757, 756, 1090, 1090, 1090,
1373 353, 1091, 1091, 1091, 757, 1092, 1092, 1092, 1171, 757,
1374 1093, 1093, 1093, 1171, 757, 1094, 1094, 1094, 1095, 1095,
1375 1095, 1096, 1096, 1096, 757, 1097, 1097, 1097, 1171, 757,
1377 1098, 1098, 1098, 1099, 1099, 1099, 1171, 1171, 757, 1100,
1378 1100, 1100, 1171, 1171, 757, 1101, 1101, 1101, 1171, 757,
1379 1102, 1102, 1102, 757, 1103, 1103, 1103, 757, 1104, 1104,
1380 1104, 1171, 757, 1105, 1105, 1105, 1171, 757, 1171, 1171,
1381 757, 1171, 1171, 757, 1106, 1106, 1106, 757, 1107, 1107,
1382 1107, 1171, 757, 1171, 1171, 757, 1108, 1108, 1108, 1171,
1383 1171, 757, 1109, 1109, 1109, 1171, 1171, 757, 1110, 1110,
1384 1110, 1171, 757, 1111, 1111, 1111, 757, 1112, 1112, 1112,
1385 757, 1113, 1113, 1113, 1171, 757, 1114, 1114, 1114, 1115,
1386 1115, 1115, 1116, 1116, 1116, 1171, 757, 1117, 1117, 1117,
1388 757, 1118, 1118, 1118, 1119, 1119, 1119, 1171, 757, 1120,
1389 1120, 1120, 1171, 1171, 757, 1121, 1121, 1121, 1171, 1171,
1390 757, 1122, 1122, 1122, 1171, 757, 1123, 1123, 1123, 757,
1391 1124, 1124, 1124, 757, 1125, 1125, 1125, 1171, 757, 1171,
1392 1171, 757, 1171, 1171, 757, 1126, 1126, 1126, 1171, 757,
1393 1127, 1127, 1127, 757, 1171, 1171, 757, 1128, 1128, 1128,
1394 1171, 757, 1129, 1129, 1129, 1171, 1171, 757, 1130, 1130,
1395 1130, 1171, 1171, 757, 1131, 1131, 1131, 1171, 757, 1132,
1396 1132, 1132, 757, 1133, 1133, 1133, 757, 1134, 1134, 1134,
1397 1135, 1135, 1135, 1136, 1136, 1136, 1171, 757, 1137, 1137,
1399 1137, 1171, 757, 1138, 1138, 1138, 1139, 1139, 1139, 757,
1400 1140, 1140, 1140, 1171, 757, 1141, 1141, 1141, 1171, 1171,
1401 757, 1142, 1142, 1142, 1171, 1171, 757, 1143, 1143, 1143,
1402 1171, 757, 1144, 1144, 1144, 757, 1145, 1145, 1145, 757,
1403 1171, 1171, 757, 1171, 1171, 757, 1146, 1146, 1146, 1171,
1404 757, 1147, 1147, 1147, 1171, 757, 1171, 1171, 757, 1148,
1405 1148, 1148, 757, 1149, 1149, 1149, 1171, 757, 1150, 1150,
1406 1150, 1171, 1171, 757, 1151, 1151, 1151, 1171, 1171, 757,
1407 1152, 1152, 1152, 1171, 757, 1153, 1153, 1153, 757, 1154,
1408 1154, 1154, 1155, 1155, 1155, 1156, 1156, 1156, 757, 1157,
1410 1157, 1157, 1171, 757, 1158, 1158, 1158, 1159, 1159, 1159,
1411 1171, 757, 1160, 1160, 1160, 757, 1161, 1161, 1161, 1171,
1412 757, 1162, 1162, 1162, 1171, 1171, 757, 1163, 1163, 1163,
1413 1171, 1171, 757, 1164, 1164, 1164, 1171, 757, 1165, 1165,
1414 1165, 757, 1171, 1171, 757, 1171, 1171, 757, 1166, 1166,
1415 1166, 757, 1167, 1167, 1167, 1171, 757, 1171, 1171, 757,
1416 1168, 1168, 1168, 1171, 757, 1169, 1169, 1169, 757, 1170,
1417 1170, 1170, 1171, 757, 1094, 1094, 1094, 1171, 1171, 757,
1418 1171, 1171, 1171, 1171, 1171, 757, 1171, 1171, 1171, 1171,
1419 757, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1421 757, 1171, 1171, 1171, 757, 1171, 1171, 1171, 1171, 1171,
1422 1171, 1171, 757, 1171, 1171, 1171, 1171, 757, 1171, 1171,
1423 1171, 757, 1171, 1171, 1171, 1171, 757, 68, 68, 68,
1424 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1425 68, 68, 68, 68, 68, 75, 75, 75, 75, 75,
1426 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
1427 75, 75, 75, 109, 109, 109, 109, 109, 109, 109,
1428 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1429 109, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1430 118, 118, 118, 118, 118, 118, 118, 118, 118, 140,
1432 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1433 140, 140, 140, 140, 140, 140, 140, 147, 147, 147,
1434 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1435 147, 147, 147, 147, 147, 154, 154, 154, 154, 154,
1436 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
1437 154, 154, 154, 184, 184, 184, 184, 184, 184, 184,
1438 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1439 184, 191, 191, 191, 191, 191, 191, 191, 191, 191,
1440 191, 191, 191, 191, 191, 191, 191, 191, 191, 200,
1441 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
1443 200, 200, 200, 200, 200, 200, 200, 221, 221, 221,
1444 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
1445 221, 221, 221, 221, 221, 229, 229, 229, 229, 229,
1446 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1447 229, 229, 229, 237, 237, 237, 237, 237, 237, 237,
1448 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1449 237, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1450 264, 264, 264, 264, 264, 264, 264, 264, 264, 272,
1451 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
1452 272, 272, 272, 272, 272, 272, 272, 281, 281, 281,
1454 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1455 281, 281, 281, 281, 281, 288, 288, 288, 288, 288,
1456 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
1457 288, 288, 288, 300, 300, 300, 300, 300, 300, 300,
1458 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
1459 300, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1460 318, 318, 318, 318, 318, 318, 318, 318, 318, 341,
1461 341, 341, 1171, 341, 341, 1171, 1171, 341, 341, 341,
1462 341, 1171, 341, 341, 341, 341, 341, 342, 342, 342,
1463 1171, 342, 342, 342, 1171, 342, 342, 342, 342, 342,
1465 342, 342, 342, 342, 342, 345, 345, 345, 1171, 345,
1466 345, 1171, 345, 345, 345, 345, 345, 345, 345, 345,
1467 345, 345, 349, 349, 349, 1171, 349, 349, 349, 349,
1468 349, 349, 349, 349, 349, 349, 349, 349, 349, 349,
1469 350, 350, 350, 1171, 350, 350, 350, 350, 350, 350,
1470 350, 350, 350, 350, 350, 350, 350, 350, 354, 354,
1471 354, 1171, 1171, 1171, 354, 1171, 1171, 1171, 1171, 354,
1472 1171, 1171, 354, 358, 358, 358, 1171, 1171, 358, 1171,
1473 358, 358, 358, 358, 358, 358, 358, 358, 358, 358,
1474 362, 362, 362, 1171, 362, 362, 362, 362, 362, 362,
1476 362, 362, 362, 362, 362, 362, 362, 362, 363, 363,
1477 363, 1171, 363, 363, 363, 363, 363, 363, 363, 363,
1478 363, 363, 363, 363, 363, 363, 370, 1171, 1171, 1171,
1479 1171, 1171, 370, 1171, 1171, 1171, 1171, 370, 1171, 1171,
1480 370, 371, 371, 371, 371, 371, 371, 371, 371, 371,
1481 371, 371, 371, 371, 371, 371, 371, 371, 381, 381,
1482 1171, 1171, 1171, 1171, 381, 1171, 1171, 1171, 1171, 381,
1483 1171, 1171, 381, 381, 391, 1171, 1171, 1171, 1171, 1171,
1484 1171, 1171, 1171, 391, 1171, 391, 1171, 1171, 391, 401,
1485 401, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1487 401, 401, 401, 401, 401, 401, 401, 404, 1171, 404,
1488 1171, 404, 404, 404, 404, 404, 1171, 404, 404, 1171,
1489 404, 404, 1171, 404, 419, 419, 419, 1171, 419, 419,
1490 419, 419, 419, 1171, 419, 419, 419, 419, 419, 419,
1491 1171, 419, 427, 427, 427, 1171, 427, 427, 427, 427,
1492 427, 427, 427, 427, 427, 427, 427, 1171, 427, 428,
1493 428, 428, 1171, 428, 428, 428, 428, 428, 428, 428,
1494 428, 1171, 428, 428, 1171, 428, 429, 1171, 429, 1171,
1495 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
1496 429, 1171, 429, 434, 1171, 434, 1171, 434, 434, 434,
1498 434, 434, 1171, 434, 434, 434, 434, 434, 434, 434,
1499 434, 439, 1171, 439, 1171, 439, 439, 439, 439, 439,
1500 439, 439, 439, 439, 439, 439, 439, 439, 439, 452,
1501 452, 452, 1171, 452, 452, 452, 452, 452, 452, 452,
1502 452, 452, 452, 452, 452, 452, 452, 456, 456, 456,
1503 1171, 456, 456, 456, 1171, 456, 456, 456, 456, 456,
1504 456, 456, 456, 456, 456, 460, 460, 460, 1171, 460,
1505 460, 460, 460, 460, 460, 460, 460, 460, 460, 460,
1506 460, 460, 460, 461, 461, 1171, 461, 1171, 1171, 461,
1507 464, 1171, 464, 464, 1171, 464, 1171, 464, 1171, 464,
1509 465, 465, 465, 1171, 465, 465, 465, 465, 465, 465,
1510 465, 465, 465, 465, 465, 465, 465, 465, 480, 480,
1511 480, 1171, 480, 480, 480, 480, 480, 480, 480, 480,
1512 480, 480, 480, 480, 480, 480, 482, 482, 482, 1171,
1513 482, 482, 482, 482, 482, 482, 482, 482, 482, 482,
1514 482, 482, 482, 482, 341, 341, 341, 1171, 341, 341,
1515 1171, 1171, 341, 341, 341, 341, 1171, 341, 341, 341,
1516 341, 341, 490, 490, 490, 1171, 490, 490, 490, 490,
1517 490, 490, 490, 490, 490, 490, 490, 490, 490, 492,
1518 492, 492, 1171, 492, 492, 492, 492, 492, 492, 492,
1520 492, 492, 492, 492, 492, 492, 492, 345, 345, 345,
1521 1171, 345, 345, 1171, 345, 345, 345, 345, 345, 345,
1522 345, 345, 345, 345, 495, 495, 495, 1171, 495, 495,
1523 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1524 495, 495, 498, 498, 498, 1171, 498, 498, 498, 498,
1525 498, 498, 498, 498, 498, 498, 498, 498, 498, 498,
1526 503, 503, 503, 1171, 503, 503, 503, 503, 503, 503,
1527 503, 503, 503, 503, 503, 503, 503, 503, 354, 354,
1528 354, 1171, 1171, 1171, 354, 1171, 1171, 1171, 1171, 354,
1529 1171, 1171, 354, 358, 358, 358, 1171, 1171, 358, 1171,
1531 358, 358, 358, 358, 358, 358, 358, 358, 358, 358,
1532 363, 363, 363, 1171, 363, 363, 363, 363, 363, 363,
1533 363, 363, 363, 363, 363, 363, 363, 363, 370, 1171,
1534 1171, 1171, 1171, 1171, 370, 1171, 1171, 1171, 1171, 370,
1535 1171, 1171, 370, 371, 371, 371, 371, 371, 371, 371,
1536 371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
1537 381, 381, 1171, 1171, 1171, 1171, 381, 1171, 1171, 1171,
1538 1171, 381, 1171, 1171, 381, 381, 391, 1171, 1171, 1171,
1539 1171, 1171, 1171, 1171, 1171, 391, 1171, 391, 1171, 1171,
1540 391, 401, 401, 401, 401, 401, 401, 401, 401, 401,
1542 401, 401, 401, 401, 401, 401, 401, 401, 401, 404,
1543 1171, 404, 1171, 404, 404, 404, 404, 404, 1171, 404,
1544 404, 1171, 404, 404, 1171, 404, 419, 419, 419, 1171,
1545 419, 419, 419, 419, 419, 1171, 419, 419, 419, 419,
1546 419, 419, 1171, 419, 427, 427, 427, 1171, 427, 427,
1547 427, 427, 427, 427, 427, 427, 427, 427, 427, 1171,
1548 427, 428, 428, 428, 1171, 428, 428, 428, 428, 428,
1549 428, 428, 428, 1171, 428, 428, 1171, 428, 429, 1171,
1550 429, 1171, 429, 429, 429, 429, 429, 429, 429, 429,
1551 429, 429, 429, 1171, 429, 434, 1171, 434, 1171, 434,
1553 434, 434, 434, 434, 1171, 434, 434, 434, 434, 434,
1554 434, 434, 434, 439, 1171, 439, 1171, 439, 439, 439,
1555 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
1556 439, 565, 565, 565, 1171, 565, 565, 565, 565, 565,
1557 565, 565, 565, 565, 565, 565, 565, 565, 567, 567,
1558 567, 1171, 567, 567, 567, 567, 567, 567, 567, 567,
1559 567, 567, 567, 567, 567, 567, 461, 461, 1171, 461,
1560 1171, 1171, 461, 465, 465, 465, 1171, 465, 465, 465,
1561 465, 465, 465, 465, 465, 465, 465, 465, 465, 465,
1562 465, 570, 570, 570, 1171, 570, 570, 570, 570, 570,
1564 570, 570, 570, 570, 570, 570, 570, 570, 570, 480,
1565 480, 480, 1171, 480, 480, 480, 480, 480, 480, 480,
1566 480, 480, 480, 480, 480, 480, 480, 482, 482, 482,
1567 1171, 482, 482, 482, 482, 482, 482, 482, 482, 482,
1568 482, 482, 482, 482, 482, 592, 592, 592, 1171, 592,
1569 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
1570 592, 592, 341, 341, 341, 1171, 341, 341, 1171, 1171,
1571 341, 341, 341, 341, 1171, 341, 341, 341, 341, 341,
1572 495, 495, 495, 1171, 495, 495, 495, 495, 495, 495,
1573 495, 495, 495, 495, 495, 495, 495, 495, 496, 496,
1575 496, 1171, 496, 496, 496, 496, 496, 496, 496, 496,
1576 496, 496, 496, 496, 496, 496, 498, 498, 498, 1171,
1577 498, 498, 498, 498, 498, 498, 498, 498, 498, 498,
1578 498, 498, 498, 498, 499, 499, 499, 1171, 499, 499,
1579 499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
1580 499, 499, 345, 345, 345, 1171, 345, 345, 1171, 345,
1581 345, 345, 345, 345, 345, 345, 345, 345, 345, 354,
1582 354, 354, 1171, 1171, 1171, 354, 1171, 1171, 1171, 1171,
1583 354, 1171, 1171, 354, 358, 358, 358, 1171, 1171, 358,
1584 1171, 358, 358, 358, 358, 358, 358, 358, 358, 358,
1586 358, 363, 363, 363, 1171, 363, 363, 363, 363, 363,
1587 363, 363, 363, 363, 363, 363, 363, 363, 363, 371,
1588 371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
1589 371, 371, 371, 371, 371, 371, 630, 630, 630, 1171,
1590 630, 630, 630, 630, 630, 630, 630, 630, 630, 630,
1591 630, 630, 630, 633, 633, 633, 633, 633, 633, 633,
1592 633, 633, 633, 633, 633, 633, 633, 633, 633, 633,
1593 633, 659, 659, 659, 1171, 659, 659, 659, 659, 659,
1594 659, 659, 659, 659, 659, 659, 659, 659, 691, 691,
1595 691, 1171, 691, 691, 691, 691, 691, 691, 691, 691,
1597 691, 691, 691, 691, 691, 784, 1171, 1171, 1171, 784,
1598 1171, 1171, 1171, 1171, 1171, 1171, 1171, 784, 1171, 784,
1599 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
1600 820, 820, 820, 1171, 820, 820, 1171, 820, 67, 1171,
1601 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1602 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1603 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1604 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1605 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
1606 1171, 1171, 1171, 1171, 1171, 1171
1610 static yyconst flex_int16_t yy_chk[5497] =
1612 0, 1, 163, 1, 1, 2, 147, 2, 2, 0,
1613 3, 163, 3, 3, 72, 81, 1, 89, 72, 81,
1614 2, 89, 103, 147, 1, 3, 103, 9, 2, 9,
1615 9, 1191, 9, 3, 1191, 9, 135, 135, 10, 77,
1616 10, 10, 9, 10, 77, 94, 10, 94, 115, 106,
1617 9, 106, 115, 10, 153, 21, 1, 21, 21, 1094,
1618 2, 10, 153, 77, 77, 3, 4, 4, 4, 4,
1619 21, 83, 4, 160, 160, 1076, 122, 95, 21, 83,
1620 122, 4, 9, 21, 95, 95, 83, 83, 83, 4,
1621 132, 4, 4, 10, 132, 83, 83, 134, 134, 134,
1623 143, 148, 149, 150, 143, 134, 172, 864, 178, 150,
1624 21, 172, 178, 150, 182, 182, 220, 220, 148, 149,
1625 150, 4, 5, 5, 5, 5, 5, 5, 5, 5,
1626 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1627 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1628 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1629 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1630 5, 5, 5, 5, 5, 5, 5, 5, 5, 7,
1631 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1632 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1634 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1635 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1636 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1637 7, 7, 7, 7, 7, 7, 11, 152, 11, 11,
1638 12, 11, 12, 12, 151, 12, 159, 158, 193, 162,
1639 162, 11, 168, 193, 152, 12, 158, 162, 855, 11,
1640 158, 151, 151, 12, 11, 168, 188, 159, 12, 197,
1641 188, 205, 221, 197, 214, 205, 162, 219, 214, 224,
1642 225, 219, 234, 227, 225, 227, 234, 221, 240, 247,
1643 854, 11, 240, 247, 224, 12, 13, 13, 13, 13,
1645 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1646 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1647 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1648 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1649 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1650 13, 13, 13, 15, 853, 15, 15, 16, 15, 16,
1651 16, 257, 16, 228, 17, 257, 17, 17, 15, 17,
1652 250, 250, 16, 268, 226, 328, 15, 268, 228, 17,
1653 16, 15, 286, 286, 328, 16, 17, 17, 18, 226,
1654 18, 18, 276, 18, 284, 296, 276, 226, 284, 296,
1656 304, 311, 319, 18, 304, 311, 321, 319, 15, 322,
1657 18, 18, 16, 495, 321, 323, 323, 322, 347, 17,
1658 338, 321, 321, 321, 343, 343, 319, 319, 347, 338,
1659 321, 321, 352, 352, 352, 406, 495, 393, 843, 406,
1660 352, 347, 393, 18, 19, 19, 19, 19, 19, 19,
1661 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1662 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1663 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1664 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1665 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1667 19, 22, 363, 22, 22, 29, 324, 29, 29, 136,
1668 136, 136, 346, 842, 324, 841, 22, 136, 346, 363,
1669 29, 324, 324, 324, 22, 351, 365, 840, 29, 22,
1670 324, 324, 365, 351, 351, 346, 354, 354, 354, 368,
1671 370, 373, 374, 365, 354, 378, 378, 368, 370, 402,
1672 373, 457, 457, 839, 402, 374, 22, 23, 23, 136,
1673 29, 378, 23, 23, 23, 23, 23, 23, 23, 23,
1674 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1675 23, 23, 23, 23, 23, 25, 25, 25, 25, 25,
1676 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1678 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1679 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1680 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1681 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1682 25, 25, 27, 27, 27, 27, 27, 27, 27, 27,
1683 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1684 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1685 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1686 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1687 27, 27, 27, 27, 27, 27, 27, 27, 27, 30,
1689 30, 30, 30, 383, 31, 30, 31, 31, 32, 427,
1690 32, 32, 383, 33, 30, 33, 33, 389, 34, 31,
1691 34, 34, 30, 32, 427, 465, 465, 31, 33, 366,
1692 389, 32, 41, 34, 41, 41, 33, 381, 381, 366,
1693 391, 34, 396, 435, 838, 381, 366, 41, 435, 396,
1694 397, 837, 497, 391, 30, 41, 41, 493, 833, 31,
1695 41, 397, 497, 32, 381, 493, 493, 42, 33, 42,
1696 42, 512, 426, 34, 35, 497, 35, 35, 357, 357,
1697 357, 43, 42, 43, 43, 35, 357, 41, 512, 35,
1698 42, 42, 43, 511, 426, 42, 43, 35, 35, 467,
1700 467, 467, 35, 511, 43, 44, 1192, 44, 44, 1192,
1701 511, 45, 589, 45, 45, 330, 44, 467, 330, 426,
1702 44, 498, 42, 330, 515, 357, 45, 500, 44, 35,
1703 36, 505, 36, 36, 45, 340, 43, 515, 340, 505,
1704 505, 36, 513, 340, 498, 36, 519, 330, 633, 589,
1705 500, 467, 595, 36, 36, 827, 633, 330, 36, 513,
1706 44, 506, 506, 506, 538, 519, 45, 340, 553, 506,
1707 518, 518, 518, 556, 538, 595, 578, 340, 556, 578,
1708 618, 618, 618, 553, 578, 36, 37, 37, 37, 37,
1709 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1711 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1712 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1713 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1714 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1715 37, 37, 37, 39, 826, 39, 39, 636, 636, 46,
1716 531, 46, 46, 55, 39, 55, 55, 602, 39, 825,
1717 53, 55, 53, 53, 46, 53, 39, 39, 55, 645,
1718 531, 39, 46, 824, 602, 53, 55, 54, 823, 54,
1719 54, 55, 54, 53, 822, 507, 507, 507, 53, 572,
1720 572, 572, 54, 507, 655, 821, 531, 819, 39, 40,
1722 54, 40, 40, 568, 46, 54, 645, 572, 55, 818,
1723 40, 568, 568, 588, 40, 53, 588, 594, 507, 817,
1724 598, 588, 40, 40, 813, 594, 594, 40, 598, 598,
1725 632, 655, 54, 804, 599, 599, 599, 637, 632, 632,
1726 648, 572, 599, 658, 705, 637, 658, 803, 648, 695,
1727 695, 658, 705, 802, 40, 47, 47, 47, 47, 47,
1728 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1729 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1730 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1731 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1733 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1734 47, 47, 49, 49, 49, 49, 49, 49, 49, 49,
1735 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1736 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1737 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1738 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1739 49, 49, 49, 49, 49, 49, 49, 49, 49, 51,
1740 571, 571, 571, 663, 663, 663, 666, 666, 666, 571,
1741 702, 663, 752, 1206, 51, 51, 1206, 801, 571, 51,
1742 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1744 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1745 51, 51, 56, 707, 56, 56, 59, 702, 59, 59,
1746 56, 707, 571, 626, 626, 752, 747, 56, 626, 747,
1747 748, 59, 626, 626, 747, 56, 800, 626, 748, 59,
1748 56, 626, 626, 778, 59, 573, 573, 573, 574, 574,
1749 574, 778, 634, 634, 634, 799, 600, 600, 600, 1215,
1750 798, 634, 1215, 573, 600, 797, 574, 56, 57, 57,
1751 634, 59, 796, 57, 57, 57, 57, 57, 57, 57,
1752 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
1753 57, 57, 57, 57, 57, 57, 60, 573, 60, 60,
1755 574, 600, 794, 63, 634, 63, 63, 793, 63, 805,
1756 64, 60, 64, 64, 792, 64, 791, 805, 63, 60,
1757 790, 635, 635, 635, 60, 64, 63, 638, 638, 638,
1758 635, 63, 789, 64, 788, 639, 639, 639, 64, 635,
1759 785, 640, 640, 640, 1216, 638, 777, 1216, 664, 664,
1760 664, 60, 61, 639, 61, 61, 664, 61, 63, 640,
1761 61, 61, 61, 753, 776, 64, 753, 61, 673, 673,
1762 673, 753, 775, 635, 1217, 61, 61, 1217, 774, 638,
1763 674, 674, 674, 693, 693, 693, 1219, 639, 1225, 1219,
1764 664, 1225, 693, 640, 694, 694, 694, 697, 697, 697,
1766 773, 693, 772, 694, 698, 698, 698, 61, 62, 771,
1767 62, 62, 694, 62, 770, 697, 62, 62, 62, 769,
1768 708, 768, 698, 62, 708, 713, 713, 713, 715, 715,
1769 715, 62, 62, 713, 767, 693, 722, 722, 722, 708,
1770 724, 724, 724, 750, 766, 1228, 694, 750, 1228, 697,
1771 754, 754, 754, 786, 786, 786, 698, 1243, 754, 765,
1772 1243, 786, 750, 62, 65, 65, 65, 65, 65, 65,
1773 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1774 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1775 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1777 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1778 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1779 65, 207, 764, 763, 762, 207, 699, 699, 699, 207,
1780 207, 207, 1252, 1253, 207, 1252, 1253, 1254, 207, 207,
1781 1254, 761, 1255, 207, 699, 1255, 760, 207, 207, 344,
1782 759, 758, 756, 344, 344, 344, 1261, 746, 344, 1261,
1783 344, 740, 741, 741, 741, 344, 344, 344, 348, 739,
1784 738, 741, 348, 348, 348, 737, 736, 348, 699, 348,
1785 741, 814, 814, 814, 348, 348, 348, 361, 735, 814,
1786 734, 361, 361, 361, 1264, 733, 361, 1264, 361, 732,
1788 834, 834, 834, 361, 361, 361, 367, 367, 834, 731,
1789 367, 367, 367, 1281, 741, 367, 1281, 367, 730, 742,
1790 742, 742, 367, 367, 367, 375, 729, 375, 742, 728,
1791 727, 375, 375, 375, 726, 725, 375, 742, 375, 721,
1792 743, 743, 743, 375, 375, 375, 408, 720, 719, 718,
1793 408, 408, 408, 717, 716, 408, 712, 408, 743, 744,
1794 744, 744, 408, 408, 408, 409, 409, 711, 409, 710,
1795 409, 742, 709, 703, 409, 409, 701, 744, 700, 409,
1796 850, 850, 850, 409, 409, 422, 692, 691, 850, 422,
1797 422, 422, 743, 690, 422, 689, 422, 745, 745, 745,
1799 688, 422, 422, 422, 432, 687, 686, 685, 432, 684,
1800 683, 744, 432, 432, 432, 745, 682, 432, 681, 432,
1801 861, 861, 861, 680, 432, 432, 432, 438, 861, 679,
1802 678, 438, 438, 438, 677, 676, 438, 675, 438, 870,
1803 870, 870, 672, 438, 438, 438, 442, 870, 671, 745,
1804 442, 442, 442, 670, 669, 442, 668, 442, 667, 665,
1805 662, 660, 442, 442, 442, 579, 579, 579, 579, 579,
1806 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
1807 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
1808 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
1810 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
1811 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
1812 579, 579, 647, 647, 647, 647, 647, 647, 647, 647,
1813 647, 647, 647, 647, 647, 647, 647, 647, 647, 647,
1814 647, 647, 647, 647, 647, 647, 647, 647, 647, 647,
1815 647, 647, 647, 647, 647, 647, 647, 647, 647, 647,
1816 647, 647, 647, 647, 647, 647, 647, 647, 647, 647,
1817 647, 647, 647, 647, 647, 647, 647, 647, 647, 714,
1818 714, 714, 659, 714, 755, 755, 755, 714, 755, 779,
1819 779, 779, 755, 780, 780, 780, 656, 653, 779, 781,
1821 781, 781, 780, 782, 782, 782, 652, 779, 783, 783,
1822 783, 780, 787, 787, 787, 651, 787, 781, 650, 649,
1823 787, 782, 646, 642, 641, 630, 783, 629, 807, 807,
1824 807, 714, 809, 809, 809, 625, 755, 807, 808, 808,
1825 808, 779, 624, 623, 622, 780, 807, 808, 621, 620,
1826 809, 781, 810, 810, 810, 782, 808, 811, 811, 811,
1827 783, 815, 815, 815, 787, 815, 619, 617, 616, 815,
1828 810, 615, 816, 816, 816, 811, 816, 828, 828, 828,
1829 807, 830, 830, 830, 809, 614, 828, 829, 829, 829,
1830 808, 613, 831, 831, 831, 828, 829, 612, 611, 830,
1832 832, 832, 832, 610, 810, 829, 836, 836, 836, 811,
1833 831, 608, 607, 815, 606, 835, 835, 835, 832, 835,
1834 875, 875, 875, 835, 816, 844, 844, 844, 875, 828,
1835 846, 846, 846, 830, 844, 603, 845, 845, 845, 829,
1836 852, 852, 852, 844, 831, 845, 592, 591, 846, 590,
1837 586, 585, 832, 584, 845, 847, 847, 847, 836, 583,
1838 848, 848, 848, 582, 851, 851, 851, 835, 851, 858,
1839 858, 858, 851, 847, 581, 580, 577, 844, 848, 576,
1840 570, 567, 846, 565, 856, 856, 856, 858, 845, 863,
1841 863, 863, 852, 856, 563, 857, 857, 857, 560, 859,
1843 859, 859, 856, 555, 857, 551, 549, 847, 860, 860,
1844 860, 546, 848, 857, 545, 544, 851, 859, 543, 542,
1845 541, 858, 540, 862, 862, 862, 860, 862, 865, 865,
1846 865, 862, 867, 867, 867, 539, 856, 865, 868, 868,
1847 868, 863, 537, 866, 866, 866, 865, 857, 536, 535,
1848 867, 859, 866, 869, 869, 869, 868, 872, 872, 872,
1849 860, 866, 871, 871, 871, 534, 871, 873, 873, 873,
1850 871, 869, 877, 877, 877, 862, 873, 533, 532, 530,
1851 865, 878, 878, 878, 867, 873, 880, 880, 880, 878,
1852 868, 529, 874, 874, 874, 866, 876, 876, 876, 527,
1854 876, 874, 524, 522, 876, 869, 883, 883, 883, 872,
1855 874, 886, 886, 886, 871, 889, 889, 889, 521, 873,
1856 517, 879, 879, 879, 877, 879, 881, 881, 881, 879,
1857 516, 882, 882, 882, 881, 882, 508, 504, 880, 882,
1858 503, 884, 884, 884, 874, 892, 892, 892, 876, 884,
1859 492, 885, 885, 885, 490, 885, 489, 488, 883, 885,
1860 887, 887, 887, 886, 895, 895, 895, 889, 887, 486,
1861 888, 888, 888, 879, 888, 898, 898, 898, 888, 890,
1862 890, 890, 485, 882, 891, 891, 891, 890, 891, 484,
1863 481, 479, 891, 893, 893, 893, 478, 892, 894, 894,
1865 894, 893, 894, 885, 477, 476, 894, 896, 896, 896,
1866 897, 897, 897, 475, 897, 896, 895, 474, 897, 901,
1867 901, 901, 888, 899, 899, 899, 472, 898, 904, 904,
1868 904, 899, 471, 900, 900, 900, 891, 900, 902, 902,
1869 902, 900, 470, 903, 903, 903, 902, 903, 469, 468,
1870 894, 903, 905, 905, 905, 906, 906, 906, 466, 906,
1871 905, 462, 897, 906, 907, 907, 907, 908, 908, 908,
1872 459, 901, 910, 910, 910, 908, 913, 913, 913, 458,
1873 904, 456, 909, 909, 909, 900, 909, 916, 916, 916,
1874 909, 911, 911, 911, 455, 903, 912, 912, 912, 911,
1876 912, 914, 914, 914, 912, 451, 450, 906, 446, 914,
1877 915, 915, 915, 445, 915, 441, 907, 440, 915, 917,
1878 917, 917, 437, 436, 910, 433, 431, 917, 913, 918,
1879 918, 918, 430, 918, 909, 425, 424, 918, 421, 916,
1880 919, 919, 919, 920, 920, 920, 418, 417, 912, 416,
1881 415, 920, 921, 921, 921, 414, 921, 922, 922, 922,
1882 921, 413, 915, 923, 923, 923, 924, 924, 924, 412,
1883 924, 923, 411, 410, 924, 925, 925, 925, 926, 926,
1884 926, 918, 407, 927, 927, 927, 926, 927, 928, 928,
1885 928, 927, 919, 929, 929, 929, 400, 395, 930, 930,
1887 930, 929, 930, 394, 921, 390, 930, 388, 387, 922,
1888 931, 931, 931, 932, 932, 932, 386, 385, 924, 384,
1889 382, 932, 933, 933, 933, 377, 933, 925, 371, 360,
1890 933, 934, 934, 934, 359, 927, 935, 935, 935, 356,
1891 928, 936, 936, 936, 935, 936, 937, 937, 937, 936,
1892 930, 938, 938, 938, 350, 342, 939, 939, 939, 938,
1893 939, 339, 931, 336, 939, 940, 940, 940, 941, 941,
1894 941, 942, 942, 942, 933, 942, 941, 335, 334, 942,
1895 943, 943, 943, 934, 944, 944, 944, 945, 945, 945,
1896 333, 945, 944, 936, 332, 945, 331, 329, 937, 946,
1898 946, 946, 947, 947, 947, 948, 948, 948, 939, 948,
1899 947, 327, 326, 948, 949, 949, 949, 940, 950, 950,
1900 950, 316, 315, 942, 312, 305, 950, 951, 951, 951,
1901 297, 951, 943, 293, 285, 951, 952, 952, 952, 945,
1902 953, 953, 953, 277, 269, 954, 954, 954, 953, 954,
1903 260, 946, 258, 954, 955, 955, 955, 948, 251, 956,
1904 956, 956, 958, 958, 958, 248, 949, 956, 957, 957,
1905 957, 241, 957, 959, 959, 959, 957, 235, 233, 951,
1906 218, 959, 960, 960, 960, 215, 960, 213, 952, 206,
1907 960, 961, 961, 961, 962, 962, 962, 954, 204, 963,
1909 963, 963, 962, 963, 198, 189, 955, 963, 964, 964,
1910 964, 965, 965, 965, 958, 967, 967, 967, 179, 965,
1911 957, 966, 966, 966, 176, 966, 970, 970, 970, 966,
1912 968, 968, 968, 169, 960, 973, 973, 973, 968, 167,
1913 969, 969, 969, 961, 969, 971, 971, 971, 969, 166,
1914 165, 963, 164, 971, 972, 972, 972, 161, 972, 157,
1915 964, 155, 972, 974, 974, 974, 154, 967, 975, 975,
1916 975, 974, 975, 966, 144, 133, 975, 131, 970, 976,
1917 976, 976, 977, 977, 977, 123, 116, 973, 114, 107,
1918 977, 104, 969, 978, 978, 978, 97, 978, 979, 979,
1920 979, 978, 980, 980, 980, 96, 972, 981, 981, 981,
1921 980, 981, 982, 982, 982, 981, 983, 983, 983, 93,
1922 975, 984, 984, 984, 983, 984, 985, 985, 985, 984,
1923 92, 976, 986, 986, 986, 987, 987, 987, 90, 987,
1924 986, 82, 73, 987, 67, 978, 988, 988, 988, 0,
1925 979, 0, 989, 989, 989, 991, 991, 991, 0, 981,
1926 989, 990, 990, 990, 982, 990, 992, 992, 992, 990,
1927 994, 994, 994, 984, 992, 993, 993, 993, 985, 993,
1928 995, 995, 995, 993, 997, 997, 997, 987, 995, 996,
1929 996, 996, 0, 996, 998, 998, 998, 996, 988, 1000,
1931 1000, 1000, 998, 0, 999, 999, 999, 991, 999, 1001,
1932 1001, 1001, 999, 990, 1003, 1003, 1003, 1001, 1006, 1006,
1933 1006, 0, 994, 0, 1002, 1002, 1002, 993, 1002, 1004,
1934 1004, 1004, 1002, 1009, 1009, 1009, 997, 1004, 1005, 1005,
1935 1005, 996, 1005, 1012, 1012, 1012, 1005, 1007, 1007, 1007,
1936 0, 1000, 1010, 1010, 1010, 1007, 999, 1008, 1008, 1008,
1937 1010, 1008, 1015, 1015, 1015, 1008, 1003, 1011, 1011, 1011,
1938 1006, 1011, 1013, 1013, 1013, 1011, 1002, 1018, 1018, 1018,
1939 1013, 1016, 1016, 1016, 0, 1009, 1021, 1021, 1021, 1016,
1940 1005, 0, 1014, 1014, 1014, 1012, 1014, 1017, 1017, 1017,
1942 1014, 1017, 1019, 1019, 1019, 1017, 1024, 1024, 1024, 1008,
1943 1019, 1027, 1027, 1027, 1015, 0, 1020, 1020, 1020, 1011,
1944 1020, 0, 0, 0, 1020, 1022, 1022, 1022, 0, 1018,
1945 1030, 1030, 1030, 1022, 0, 1023, 1023, 1023, 1021, 1023,
1946 1025, 1025, 1025, 1023, 1014, 1033, 1033, 1033, 1025, 1017,
1947 0, 1026, 1026, 1026, 0, 1026, 0, 0, 1024, 1026,
1948 1036, 1036, 1036, 1027, 1028, 1028, 1028, 0, 1020, 1029,
1949 1029, 1029, 1028, 1029, 1039, 1039, 1039, 1029, 1031, 1031,
1950 1031, 0, 1030, 1034, 1034, 1034, 1031, 1023, 1032, 1032,
1951 1032, 1034, 1032, 1037, 1037, 1037, 1032, 1033, 1035, 1035,
1953 1035, 1037, 1035, 1026, 0, 0, 1035, 1038, 1038, 1038,
1954 0, 1038, 1036, 0, 0, 1038, 1040, 1040, 1040, 0,
1955 0, 1029, 0, 0, 1040, 0, 1039, 1041, 1041, 1041,
1956 0, 1041, 1042, 1042, 1042, 1041, 1043, 1043, 1043, 0,
1957 1032, 1044, 1044, 1044, 1043, 1044, 1045, 1045, 1045, 1044,
1958 1035, 0, 1046, 1046, 1046, 1048, 1048, 1048, 0, 1038,
1959 1046, 1047, 1047, 1047, 0, 1047, 1049, 1049, 1049, 1047,
1960 1051, 1051, 1051, 0, 1049, 1054, 1054, 1054, 0, 1041,
1961 0, 1050, 1050, 1050, 1042, 1050, 1052, 1052, 1052, 1050,
1962 1057, 1057, 1057, 1044, 1052, 1053, 1053, 1053, 1045, 1053,
1964 1055, 1055, 1055, 1053, 1060, 1060, 1060, 1048, 1055, 0,
1965 1056, 1056, 1056, 1047, 1056, 1058, 1058, 1058, 1056, 1063,
1966 1063, 1063, 1051, 1058, 1059, 1059, 1059, 1054, 1059, 1061,
1967 1061, 1061, 1059, 1050, 1066, 1066, 1066, 1061, 1069, 1069,
1968 1069, 0, 1057, 0, 1062, 1062, 1062, 1053, 1062, 1064,
1969 1064, 1064, 1062, 1072, 1072, 1072, 1060, 1064, 0, 1065,
1970 1065, 1065, 1056, 1065, 1067, 1067, 1067, 1065, 1075, 1075,
1971 1075, 1063, 1067, 1068, 1068, 1068, 1059, 1068, 1078, 1078,
1972 1078, 1068, 0, 1070, 1070, 1070, 1066, 1080, 1080, 1080,
1973 1069, 1070, 0, 1071, 1071, 1071, 1062, 1071, 1073, 1073,
1975 1073, 1071, 1082, 1082, 1082, 1072, 1073, 0, 1074, 1074,
1976 1074, 1065, 1074, 1077, 1077, 1077, 1074, 1077, 0, 0,
1977 1075, 1077, 1084, 1084, 1084, 1068, 0, 1079, 1079, 1079,
1978 1078, 1079, 1081, 1081, 1081, 1079, 1081, 0, 0, 1080,
1979 1081, 0, 1083, 1083, 1083, 1071, 1083, 1085, 1085, 1085,
1980 1083, 1085, 0, 0, 1082, 1085, 1086, 1086, 1086, 0,
1981 1074, 0, 1087, 1087, 1087, 1077, 1087, 1088, 1088, 1088,
1982 1087, 1089, 1089, 1089, 1084, 1090, 1090, 1090, 0, 1079,
1983 1091, 1091, 1091, 0, 1081, 1092, 1092, 1092, 1093, 1093,
1984 1093, 1095, 1095, 1095, 1083, 1096, 1096, 1096, 0, 1085,
1986 1097, 1097, 1097, 1098, 1098, 1098, 0, 0, 1086, 1099,
1987 1099, 1099, 0, 0, 1087, 1100, 1100, 1100, 0, 1088,
1988 1101, 1101, 1101, 1089, 1102, 1102, 1102, 1090, 1103, 1103,
1989 1103, 0, 1091, 1104, 1104, 1104, 0, 1092, 0, 0,
1990 1093, 0, 0, 1095, 1105, 1105, 1105, 1096, 1106, 1106,
1991 1106, 0, 1097, 0, 0, 1098, 1107, 1107, 1107, 0,
1992 0, 1099, 1108, 1108, 1108, 0, 0, 1100, 1109, 1109,
1993 1109, 0, 1101, 1110, 1110, 1110, 1102, 1111, 1111, 1111,
1994 1103, 1112, 1112, 1112, 0, 1104, 1113, 1113, 1113, 1114,
1995 1114, 1114, 1115, 1115, 1115, 0, 1105, 1116, 1116, 1116,
1997 1106, 1117, 1117, 1117, 1118, 1118, 1118, 0, 1107, 1119,
1998 1119, 1119, 0, 0, 1108, 1120, 1120, 1120, 0, 0,
1999 1109, 1121, 1121, 1121, 0, 1110, 1122, 1122, 1122, 1111,
2000 1123, 1123, 1123, 1112, 1124, 1124, 1124, 0, 1113, 0,
2001 0, 1114, 0, 0, 1115, 1125, 1125, 1125, 0, 1116,
2002 1126, 1126, 1126, 1117, 0, 0, 1118, 1127, 1127, 1127,
2003 0, 1119, 1128, 1128, 1128, 0, 0, 1120, 1129, 1129,
2004 1129, 0, 0, 1121, 1130, 1130, 1130, 0, 1122, 1131,
2005 1131, 1131, 1123, 1132, 1132, 1132, 1124, 1133, 1133, 1133,
2006 1134, 1134, 1134, 1135, 1135, 1135, 0, 1125, 1136, 1136,
2008 1136, 0, 1126, 1137, 1137, 1137, 1138, 1138, 1138, 1127,
2009 1139, 1139, 1139, 0, 1128, 1140, 1140, 1140, 0, 0,
2010 1129, 1141, 1141, 1141, 0, 0, 1130, 1142, 1142, 1142,
2011 0, 1131, 1143, 1143, 1143, 1132, 1144, 1144, 1144, 1133,
2012 0, 0, 1134, 0, 0, 1135, 1145, 1145, 1145, 0,
2013 1136, 1146, 1146, 1146, 0, 1137, 0, 0, 1138, 1147,
2014 1147, 1147, 1139, 1148, 1148, 1148, 0, 1140, 1149, 1149,
2015 1149, 0, 0, 1141, 1150, 1150, 1150, 0, 0, 1142,
2016 1151, 1151, 1151, 0, 1143, 1152, 1152, 1152, 1144, 1153,
2017 1153, 1153, 1154, 1154, 1154, 1155, 1155, 1155, 1145, 1156,
2019 1156, 1156, 0, 1146, 1157, 1157, 1157, 1158, 1158, 1158,
2020 0, 1147, 1159, 1159, 1159, 1148, 1160, 1160, 1160, 0,
2021 1149, 1161, 1161, 1161, 0, 0, 1150, 1162, 1162, 1162,
2022 0, 0, 1151, 1163, 1163, 1163, 0, 1152, 1164, 1164,
2023 1164, 1153, 0, 0, 1154, 0, 0, 1155, 1165, 1165,
2024 1165, 1156, 1166, 1166, 1166, 0, 1157, 0, 0, 1158,
2025 1167, 1167, 1167, 0, 1159, 1168, 1168, 1168, 1160, 1169,
2026 1169, 1169, 0, 1161, 1170, 1170, 1170, 0, 0, 1162,
2027 0, 0, 0, 0, 0, 1163, 0, 0, 0, 0,
2028 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 1165, 0, 0, 0, 1166, 0, 0, 0, 0, 0,
2031 0, 0, 1167, 0, 0, 0, 0, 1168, 0, 0,
2032 0, 1169, 0, 0, 0, 0, 1170, 1172, 1172, 1172,
2033 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
2034 1172, 1172, 1172, 1172, 1172, 1173, 1173, 1173, 1173, 1173,
2035 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2036 1173, 1173, 1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2037 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2038 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
2039 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176,
2041 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
2042 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 1177, 1177,
2043 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
2044 1177, 1177, 1177, 1177, 1177, 1178, 1178, 1178, 1178, 1178,
2045 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
2046 1178, 1178, 1178, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
2047 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
2048 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
2049 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181,
2050 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
2052 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182, 1182,
2053 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2054 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183, 1183,
2055 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
2056 1183, 1183, 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
2057 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
2058 1184, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2059 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186,
2060 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
2061 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187,
2063 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
2064 1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188,
2065 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
2066 1188, 1188, 1188, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2067 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2068 1189, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
2069 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1193,
2070 1193, 1193, 0, 1193, 1193, 0, 0, 1193, 1193, 1193,
2071 1193, 0, 1193, 1193, 1193, 1193, 1193, 1194, 1194, 1194,
2072 0, 1194, 1194, 1194, 0, 1194, 1194, 1194, 1194, 1194,
2074 1194, 1194, 1194, 1194, 1194, 1195, 1195, 1195, 0, 1195,
2075 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2076 1195, 1195, 1196, 1196, 1196, 0, 1196, 1196, 1196, 1196,
2077 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
2078 1197, 1197, 1197, 0, 1197, 1197, 1197, 1197, 1197, 1197,
2079 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1198, 1198,
2080 1198, 0, 0, 0, 1198, 0, 0, 0, 0, 1198,
2081 0, 0, 1198, 1199, 1199, 1199, 0, 0, 1199, 0,
2082 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
2083 1200, 1200, 1200, 0, 1200, 1200, 1200, 1200, 1200, 1200,
2085 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 1201,
2086 1201, 0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
2087 1201, 1201, 1201, 1201, 1201, 1201, 1202, 0, 0, 0,
2088 0, 0, 1202, 0, 0, 0, 0, 1202, 0, 0,
2089 1202, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
2090 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204, 1204,
2091 0, 0, 0, 0, 1204, 0, 0, 0, 0, 1204,
2092 0, 0, 1204, 1204, 1205, 0, 0, 0, 0, 0,
2093 0, 0, 0, 1205, 0, 1205, 0, 0, 1205, 1207,
2094 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
2096 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 0, 1208,
2097 0, 1208, 1208, 1208, 1208, 1208, 0, 1208, 1208, 0,
2098 1208, 1208, 0, 1208, 1209, 1209, 1209, 0, 1209, 1209,
2099 1209, 1209, 1209, 0, 1209, 1209, 1209, 1209, 1209, 1209,
2100 0, 1209, 1210, 1210, 1210, 0, 1210, 1210, 1210, 1210,
2101 1210, 1210, 1210, 1210, 1210, 1210, 1210, 0, 1210, 1211,
2102 1211, 1211, 0, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2103 1211, 0, 1211, 1211, 0, 1211, 1212, 0, 1212, 0,
2104 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
2105 1212, 0, 1212, 1213, 0, 1213, 0, 1213, 1213, 1213,
2107 1213, 1213, 0, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
2108 1213, 1214, 0, 1214, 0, 1214, 1214, 1214, 1214, 1214,
2109 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1218,
2110 1218, 1218, 0, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
2111 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1220, 1220, 1220,
2112 0, 1220, 1220, 1220, 0, 1220, 1220, 1220, 1220, 1220,
2113 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221, 0, 1221,
2114 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
2115 1221, 1221, 1221, 1222, 1222, 0, 1222, 0, 0, 1222,
2116 1223, 0, 1223, 1223, 0, 1223, 0, 1223, 0, 1223,
2118 1224, 1224, 1224, 0, 1224, 1224, 1224, 1224, 1224, 1224,
2119 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1226, 1226,
2120 1226, 0, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
2121 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 0,
2122 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
2123 1227, 1227, 1227, 1227, 1229, 1229, 1229, 0, 1229, 1229,
2124 0, 0, 1229, 1229, 1229, 1229, 0, 1229, 1229, 1229,
2125 1229, 1229, 1230, 1230, 1230, 0, 1230, 1230, 1230, 1230,
2126 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1231,
2127 1231, 1231, 0, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
2129 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1232, 1232, 1232,
2130 0, 1232, 1232, 0, 1232, 1232, 1232, 1232, 1232, 1232,
2131 1232, 1232, 1232, 1232, 1233, 1233, 1233, 0, 1233, 1233,
2132 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
2133 1233, 1233, 1234, 1234, 1234, 0, 1234, 1234, 1234, 1234,
2134 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2135 1235, 1235, 1235, 0, 1235, 1235, 1235, 1235, 1235, 1235,
2136 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1236,
2137 1236, 0, 0, 0, 1236, 0, 0, 0, 0, 1236,
2138 0, 0, 1236, 1237, 1237, 1237, 0, 0, 1237, 0,
2140 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
2141 1238, 1238, 1238, 0, 1238, 1238, 1238, 1238, 1238, 1238,
2142 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 0,
2143 0, 0, 0, 0, 1239, 0, 0, 0, 0, 1239,
2144 0, 0, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
2145 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
2146 1241, 1241, 0, 0, 0, 0, 1241, 0, 0, 0,
2147 0, 1241, 0, 0, 1241, 1241, 1242, 0, 0, 0,
2148 0, 0, 0, 0, 0, 1242, 0, 1242, 0, 0,
2149 1242, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
2151 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1245,
2152 0, 1245, 0, 1245, 1245, 1245, 1245, 1245, 0, 1245,
2153 1245, 0, 1245, 1245, 0, 1245, 1246, 1246, 1246, 0,
2154 1246, 1246, 1246, 1246, 1246, 0, 1246, 1246, 1246, 1246,
2155 1246, 1246, 0, 1246, 1247, 1247, 1247, 0, 1247, 1247,
2156 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 0,
2157 1247, 1248, 1248, 1248, 0, 1248, 1248, 1248, 1248, 1248,
2158 1248, 1248, 1248, 0, 1248, 1248, 0, 1248, 1249, 0,
2159 1249, 0, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
2160 1249, 1249, 1249, 0, 1249, 1250, 0, 1250, 0, 1250,
2162 1250, 1250, 1250, 1250, 0, 1250, 1250, 1250, 1250, 1250,
2163 1250, 1250, 1250, 1251, 0, 1251, 0, 1251, 1251, 1251,
2164 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
2165 1251, 1256, 1256, 1256, 0, 1256, 1256, 1256, 1256, 1256,
2166 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1257, 1257,
2167 1257, 0, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
2168 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1258, 0, 1258,
2169 0, 0, 1258, 1259, 1259, 1259, 0, 1259, 1259, 1259,
2170 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
2171 1259, 1260, 1260, 1260, 0, 1260, 1260, 1260, 1260, 1260,
2173 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1262,
2174 1262, 1262, 0, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
2175 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263, 1263, 1263,
2176 0, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
2177 1263, 1263, 1263, 1263, 1263, 1265, 1265, 1265, 0, 1265,
2178 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265,
2179 1265, 1265, 1266, 1266, 1266, 0, 1266, 1266, 0, 0,
2180 1266, 1266, 1266, 1266, 0, 1266, 1266, 1266, 1266, 1266,
2181 1267, 1267, 1267, 0, 1267, 1267, 1267, 1267, 1267, 1267,
2182 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268, 1268,
2184 1268, 0, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
2185 1268, 1268, 1268, 1268, 1268, 1268, 1269, 1269, 1269, 0,
2186 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
2187 1269, 1269, 1269, 1269, 1270, 1270, 1270, 0, 1270, 1270,
2188 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
2189 1270, 1270, 1271, 1271, 1271, 0, 1271, 1271, 0, 1271,
2190 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1272,
2191 1272, 1272, 0, 0, 0, 1272, 0, 0, 0, 0,
2192 1272, 0, 0, 1272, 1273, 1273, 1273, 0, 0, 1273,
2193 0, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
2195 1273, 1274, 1274, 1274, 0, 1274, 1274, 1274, 1274, 1274,
2196 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1275,
2197 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
2198 1275, 1275, 1275, 1275, 1275, 1275, 1276, 1276, 1276, 0,
2199 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
2200 1276, 1276, 1276, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
2201 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
2202 1277, 1278, 1278, 1278, 0, 1278, 1278, 1278, 1278, 1278,
2203 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1279, 1279,
2204 1279, 0, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
2206 1279, 1279, 1279, 1279, 1279, 1280, 0, 0, 0, 1280,
2207 0, 0, 0, 0, 0, 0, 0, 1280, 0, 1280,
2208 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282,
2209 1282, 1282, 1282, 0, 1282, 1282, 0, 1282, 1171, 1171,
2210 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2211 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2212 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2213 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2214 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2215 1171, 1171, 1171, 1171, 1171, 1171
2219 extern int preYY_flex_debug;
2220 int preYY_flex_debug = 0;
2222 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
2223 static char *yy_full_match;
2225 static int yy_looking_for_trail_begin = 0;
2226 static int yy_full_lp;
2227 static int *yy_full_state;
2228 #define YY_TRAILING_MASK 0x2000
2229 #define YY_TRAILING_HEAD_MASK 0x4000
2232 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */ \
2233 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2234 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
2235 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
2236 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
2241 #define yymore() yymore_used_but_not_detected
2242 #define YY_MORE_ADJ 0
2243 #define YY_RESTORE_YY_MORE_OFFSET
2246 /******************************************************************************
2250 * Copyright (C) 1997-2012 by Dimitri van Heesch.
2252 * Permission to use, copy, modify, and distribute this software and its
2253 * documentation under the terms of the GNU General Public License is hereby
2254 * granted. No representations are made about the suitability of this software
2255 * for any purpose. It is provided "as is" without express or implied warranty.
2256 * See the GNU General Public License for more details.
2258 * Documents produced by Doxygen are derivative works derived from the
2259 * input used in their production; they are not affected by this license.
2277 #include <qstrlist.h>
2279 #include <qregexp.h>
2280 #include <qfileinfo.h>
2284 #include "constexp.h"
2286 #include "doxygen.h"
2287 #include "message.h"
2289 #include "defargs.h"
2292 #include "portable.h"
2294 #include "arguments.h"
2297 #define YY_NEVER_INTERACTIVE 1
2302 FileState(int size) : fileBuf(size),
2303 oldFileBuf(0), oldFileBufPos(0) {}
2308 YY_BUFFER_STATE bufState;
2312 /** @brief Singleton that manages the defines available while
2313 * proprocessing files.
2317 /** Local class used to hold the defines for a single file */
2318 class DefinesPerFile
2321 /** Creates an empty container for defines */
2322 DefinesPerFile() : m_defines(257), m_includedFiles(17)
2324 m_defines.setAutoDelete(TRUE);
2326 /** Destroys the object */
2327 virtual ~DefinesPerFile()
2330 /** Adds a define in the context of a file. Will replace
2331 * an existing define with the same name (redefinition)
2332 * @param def The Define object to add.
2334 void addDefine(Define *def)
2336 Define *d = m_defines.find(def->name);
2337 if (d!=0) // redefine
2339 m_defines.remove(d->name);
2341 m_defines.insert(def->name,def);
2343 /** Adds an include file for this file
2344 * @param fileName The name of the include file
2346 void addInclude(const char *fileName)
2348 m_includedFiles.insert(fileName,(void*)0x8);
2350 void collectDefines(DefineDict *dict,QDict<void> &includeStack);
2352 DefineDict m_defines;
2353 QDict<void> m_includedFiles;
2357 friend class DefinesPerFile;
2358 /** Returns a reference to the singleton */
2359 static DefineManager &instance()
2361 if (theInstance==0) theInstance = new DefineManager;
2362 return *theInstance;
2364 /** Deletes the singleton */
2365 static void deleteInstance()
2370 /** Starts a context in which defines are collected.
2371 * Called at the start of a new file that is preprocessed.
2372 * @param fileName the name of the file to process.
2374 void startContext(const char *fileName)
2376 //printf("DefineManager::startContext()\n");
2377 m_contextDefines.clear();
2378 if (fileName==0) return;
2379 DefinesPerFile *dpf = m_fileMap.find(fileName);
2382 //printf("New file!\n");
2383 dpf = new DefinesPerFile;
2384 m_fileMap.insert(fileName,dpf);
2387 /** Ends the context started with startContext() freeing any
2388 * defines collected within in this context.
2392 //printf("DefineManager::endContext()\n");
2393 m_contextDefines.clear();
2395 /** Add an included file to the current context.
2396 * If the file has been pre-processed already, all defines are added
2398 * @param fileName The name of the include file to add to the context.
2400 void addFileToContext(const char *fileName)
2402 if (fileName==0) return;
2403 //printf("DefineManager::addFileToContext(%s)\n",fileName);
2404 DefinesPerFile *dpf = m_fileMap.find(fileName);
2407 //printf("New file!\n");
2408 dpf = new DefinesPerFile;
2409 m_fileMap.insert(fileName,dpf);
2413 //printf("existing file!\n");
2414 QDict<void> includeStack(17);
2415 dpf->collectDefines(&m_contextDefines,includeStack);
2419 /** Add a define to the manager object.
2420 * @param fileName The file in which the define was found
2421 * @param def The Define object to add.
2423 void addDefine(const char *fileName,Define *def)
2425 if (fileName==0) return;
2426 //printf("DefineManager::addDefine(%s,%s)\n",fileName,def->name.data());
2427 Define *d = m_contextDefines.find(def->name);
2428 if (d!=0) // redefine
2430 m_contextDefines.remove(d->name);
2432 m_contextDefines.insert(def->name,def);
2434 DefinesPerFile *dpf = m_fileMap.find(fileName);
2437 dpf = new DefinesPerFile;
2439 dpf->addDefine(def);
2442 /** Add an include relation to the manager object.
2443 * @param fromFileName file name in which the include was found.
2444 * @param toFileName file name that is included.
2446 void addInclude(const char *fromFileName,const char *toFileName)
2448 //printf("DefineManager::addInclude(%s,%s)\n",fromFileName,toFileName);
2449 if (fromFileName==0 || toFileName==0) return;
2450 DefinesPerFile *dpf = m_fileMap.find(fromFileName);
2453 dpf = new DefinesPerFile;
2455 dpf->addInclude(toFileName);
2457 /** Returns a Define object given its name or 0 if the Define does
2460 Define *isDefined(const char *name) const
2462 return m_contextDefines.find(name);
2464 /** Returns a reference to the defines found in the current context. */
2465 const DefineDict &defineContext() const
2467 return m_contextDefines;
2470 static DefineManager *theInstance;
2472 /** Helper function to collect all define for a given file */
2473 void collectDefinesForFile(const char *fileName,DefineDict *dict)
2475 if (fileName==0) return;
2476 DefinesPerFile *dpf = m_fileMap.find(fileName);
2479 QDict<void> includeStack(17);
2480 dpf->collectDefines(dict,includeStack);
2484 /** Helper function to return the DefinesPerFile object for a given file name. */
2485 DefinesPerFile *find(const char *fileName) const
2487 if (fileName==0) return 0;
2488 return m_fileMap.find(fileName);
2491 /** Creates a new DefineManager object */
2492 DefineManager() : m_fileMap(1009), m_contextDefines(1009)
2494 m_fileMap.setAutoDelete(TRUE);
2497 /** Destroys the object */
2498 virtual ~DefineManager()
2502 QDict<DefinesPerFile> m_fileMap;
2503 DefineDict m_contextDefines;
2506 /** Singleton instance */
2507 DefineManager *DefineManager::theInstance = 0;
2509 /** Collects all defines for a file and all files that the file includes.
2510 * This function will recursively call itself for each file.
2511 * @param dict The dictionary to fill with the defines. A redefine will
2512 * replace a previous definition.
2513 * @param includeStack The stack of includes, used to stop recursion in
2514 * case there is a cyclic include dependency.
2516 void DefineManager::DefinesPerFile::collectDefines(
2517 DefineDict *dict,QDict<void> &includeStack)
2519 //printf("DefinesPerFile::collectDefines #defines=%d\n",m_defines.count());
2521 QDictIterator<void> di(m_includedFiles);
2522 for (di.toFirst();(di.current());++di)
2524 QCString incFile = di.currentKey();
2525 DefinesPerFile *dpf = DefineManager::instance().find(incFile);
2526 if (dpf && includeStack.find(incFile)==0)
2528 //printf(" processing include %s\n",incFile.data());
2529 includeStack.insert(incFile,(void*)0x8);
2530 dpf->collectDefines(dict,includeStack);
2535 QDictIterator<Define> di(m_defines);
2537 for (di.toFirst();(def=di.current());++di)
2539 Define *d = dict->find(def->name);
2540 if (d!=0) // redefine
2542 dict->remove(d->name);
2544 dict->insert(def->name,def);
2545 //printf(" adding define %s\n",def->name.data());
2550 /* -----------------------------------------------------------------
2555 static int g_yyLineNr = 1;
2556 static QCString g_yyFileName;
2557 static FileDef *g_yyFileDef;
2558 static FileDef *g_inputFileDef;
2559 static int g_ifcount = 0;
2560 static QStrList *g_pathList = 0;
2561 static QStack<FileState> g_includeStack;
2562 static QDict<int> *g_argDict;
2563 static int g_defArgs = -1;
2564 static QCString g_defName;
2565 static QCString g_defText;
2566 static QCString g_defLitText;
2567 static QCString g_defArgsStr;
2568 static QCString g_defExtraSpacing;
2569 static bool g_defVarArgs;
2571 static int g_lastCContext;
2572 static int g_lastCPPContext;
2573 static QArray<int> g_levelGuard;
2574 static BufStr *g_inputBuf;
2575 static int g_inputBufPos;
2576 static BufStr *g_outputBuf;
2577 static int g_roundCount;
2578 static bool g_quoteArg;
2579 static DefineDict *g_expandedDict;
2580 static int g_findDefArgContext;
2581 static bool g_expectGuard;
2582 static QCString g_guardName;
2583 static QCString g_lastGuardName;
2584 static QCString g_incName;
2585 static QCString g_guardExpr;
2586 static int g_curlyCount;
2587 static bool g_nospaces; // add extra spaces during macro expansion
2589 static bool g_macroExpansion; // from the configuration
2590 static bool g_expandOnlyPredef; // from the configuration
2591 static int g_commentCount;
2592 static bool g_insideComment;
2593 static bool g_isImported;
2594 static QCString g_blockName;
2595 static int g_condCtx;
2597 static QStack<bool> g_condStack;
2598 static bool g_insideCS; // C# has simpler preprocessor
2599 static bool g_isSource;
2601 static bool g_lexInit = FALSE;
2603 //DefineDict* getGlobalDefineDict()
2605 // return g_globalDefineDict;
2608 static void setFileName(const char *name)
2612 g_yyFileName=convertToQCString(fi.absFilePath());
2613 g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig);
2614 if (g_yyFileDef==0) // if this is not an input file check if it is an
2617 g_yyFileDef=findFileDef(Doxygen::includeNameDict,g_yyFileName,ambig);
2619 //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n",
2620 // name,g_yyFileName.data(),g_yyFileDef);
2621 if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0;
2622 g_insideCS = getLanguageFromFileName(g_yyFileName)==SrcLangExt_CSharp;
2623 g_isSource = guessSection(g_yyFileName);
2626 static void incrLevel()
2629 g_levelGuard.resize(g_level);
2630 g_levelGuard[g_level-1]=FALSE;
2631 //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2634 static void decrLevel()
2636 //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2640 g_levelGuard.resize(g_level);
2644 warn(g_yyFileName,g_yyLineNr,"warning: More #endif's than #if's found.\n");
2648 static bool otherCaseDone()
2652 warn(g_yyFileName,g_yyLineNr,"warning: Found an #else without a preceding #if.\n");
2657 return g_levelGuard[g_level-1];
2661 static void setCaseDone(bool value)
2663 g_levelGuard[g_level-1]=value;
2667 static bool macroIsAccessible(Define *def)
2669 //printf("macroIsAccessible(%s) input=%s def=%s\n",
2670 // def->name.data(),g_inputFileDef?g_inputFileDef->name().data():"<none>",
2671 // def->fileDef ? def->fileDef->name().data() : "<none>");
2672 if (def && def->isPredefined) // predefined macro -> globally accessible
2674 //printf("%s: predefined macro %s\n",g_inputFileDef->name().data(),def->name.data());
2677 if (def && def->fileDef==g_inputFileDef)
2679 //printf("%s: macro %s defined in this file at line %d now at %d\n",
2680 // g_inputFileDef->name().data(),def->name.data(),def->lineNr,g_yyLineNr);
2681 return def->lineNr<=g_yyLineNr;
2683 if (g_inputFileDef && def && def->fileDef) // check if g_inputFileDef actually includes def->fileDef
2685 QDict<FileDef> includedFiles(257);
2686 bool b = g_inputFileDef->includes(def->fileDef,&includedFiles);
2687 //printf("%s: Checking for accessibility of define '%s' (defined in %s): result=%d\n",
2688 // g_inputFileDef->name().data(),def->name.data(),def->fileDef->name().data(),b);
2691 if (g_inputFileDef && def && !def->fileName.isEmpty())
2693 bool b = g_inputFileDef->includesByName(def->fileName);
2694 //printf("%s: Checking for accessibility of define '%s' (defined in %s): result=%d\n",
2695 // g_inputFileDef->name().data(),def->name.data(),def->fileName.data(),b);
2698 //printf("not accessible!\n");
2702 static Define *isDefined(const char *name)
2707 def=g_globalDefineDict->find(name);
2708 if (def && def->undef) def=0;
2709 if (def && !macroIsAccessible(def)) def=0;
2711 //printf("isDefined(%s)=%p\n",name,def);
2717 static QDict<void> g_allIncludes(10009);
2719 static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyIncluded)
2721 alreadyIncluded = FALSE;
2723 //printf("checkAndOpenFile(%s)\n",fileName.data());
2724 QFileInfo fi(fileName);
2725 if (fi.exists() && fi.isFile())
2727 static QStrList &exclPatterns = Config_getList("EXCLUDE_PATTERNS");
2728 if (patternMatch(fi,&exclPatterns)) return 0;
2730 QCString absName = convertToQCString(fi.absFilePath());
2733 if (g_curlyCount==0) // not #include inside { ... }
2735 if (g_allIncludes.find(absName)!=0)
2737 alreadyIncluded = TRUE;
2738 //printf(" already included 1\n");
2739 return 0; // already done
2741 g_allIncludes.insert(absName,(void *)0x8);
2743 // check include stack for absName
2745 QStack<FileState> tmpStack;
2746 g_includeStack.setAutoDelete(FALSE);
2747 while ((fs=g_includeStack.pop()))
2749 if (fs->fileName==absName) alreadyIncluded=TRUE;
2752 while ((fs=tmpStack.pop()))
2754 g_includeStack.push(fs);
2756 g_includeStack.setAutoDelete(TRUE);
2758 if (alreadyIncluded)
2760 //printf(" already included 2\n");
2763 //printf("#include %s\n",absName.data());
2765 fs = new FileState(fi.size()+4096);
2766 alreadyIncluded = FALSE;
2767 if (!readInputFile(absName,fs->fileBuf))
2769 //printf(" error reading\n");
2775 fs->oldFileBuf = g_inputBuf;
2776 fs->oldFileBufPos = g_inputBufPos;
2782 static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyIncluded)
2784 //printf("** findFile(%s,%d) g_yyFileName=%s\n",fileName,localInclude,g_yyFileName.data());
2785 if (localInclude && !g_yyFileName.isEmpty())
2787 QFileInfo fi(g_yyFileName);
2790 QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+fileName;
2791 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2794 setFileName(absName);
2798 else if (alreadyIncluded)
2808 char *s=g_pathList->first();
2811 QCString absName = (QCString)s+"/"+fileName;
2812 //printf(" Looking for %s in %s\n",fileName,s);
2813 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2816 setFileName(absName);
2818 //printf(" -> found it\n");
2821 else if (alreadyIncluded)
2826 s=g_pathList->next();
2831 static QCString extractTrailingComment(const char *s)
2833 if (s==0) return "";
2843 if (i>=0 && s[i]=='*') // end of a comment block
2846 while (i>0 && !(s[i-1]=='/' && s[i]=='*')) i--;
2851 // only /*!< or /**< are treated as a comment for the macro name,
2852 // otherwise the comment is treated as part of the macro definition
2853 return ((s[i+1]=='*' || s[i+1]=='!') && s[i+2]=='<') ? &s[i-1] : "";
2861 // whitespace or line-continuation
2876 static int getNextChar(const QCString &expr,QCString *rest,uint &pos);
2877 static int getCurrentChar(const QCString &expr,QCString *rest,uint pos);
2878 static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c);
2879 static void expandExpression(QCString &expr,QCString *rest,int pos);
2881 static QCString stringize(const QCString &s)
2885 bool inString=FALSE;
2888 while (i<s.length())
2890 if (!inString && !inChar)
2892 while (i<s.length() && !inString && !inChar)
2913 while (i<s.length() && inChar)
2934 while (i<s.length() && inString)
2950 //printf("stringize `%s'->`%s'\n",s.data(),result.data());
2954 /*! Execute all ## operators in expr.
2955 * If the macro name before or after the operator contains a no-rescan
2956 * marker (@-) then this is removed (before the concatenated macro name
2957 * may be expanded again.
2959 static void processConcatOperators(QCString &expr)
2961 //printf("processConcatOperators: in=`%s'\n",expr.data());
2962 QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
2964 if (expr.isEmpty()) return;
2965 while ((n=r.match(expr,i,&l))!=-1)
2967 //printf("Match: `%s'\n",expr.data()+i);
2968 if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-')
2970 // remove no-rescan marker after ID
2973 //printf("found `%s'\n",expr.mid(n,l).data());
2974 // remove the ## operator and the surrounding whitespace
2975 expr=expr.left(n)+expr.right(expr.length()-n-l);
2977 while (k>=0 && isId(expr.at(k))) k--;
2978 if (k>0 && expr.at(k)=='-' && expr.at(k-1)=='@')
2980 // remove no-rescan marker before ID
2981 expr=expr.left(k-1)+expr.right(expr.length()-k-1);
2986 //printf("processConcatOperators: out=`%s'\n",expr.data());
2989 static void yyunput (int c,char *buf_ptr );
2990 static void returnCharToStream(char c)
2995 static inline void addTillEndOfString(const QCString &expr,QCString *rest,
2996 uint &pos,char term,QCString &arg)
2999 while ((cc=getNextChar(expr,rest,pos))!=EOF)
3001 if (cc=='\\') arg+=(char)cc,cc=getNextChar(expr,rest,pos);
3002 else if (cc==term) return;
3007 /*! replaces the function macro \a def whose argument list starts at
3008 * \a pos in expression \a expr.
3009 * Notice that this routine may scan beyond the \a expr string if needed.
3010 * In that case the characters will be read from the input file.
3011 * The replacement string will be returned in \a result and the
3012 * length of the (unexpanded) argument list is stored in \a len.
3014 static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result)
3016 //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),g_level);
3021 while ((cc=getCurrentChar(expr,rest,j))!=EOF && isspace(cc))
3024 getNextChar(expr,rest,j);
3028 unputChar(expr,rest,j,' ');
3031 getNextChar(expr,rest,j); // eat the `(' character
3033 QDict<QCString> argTable; // list of arguments
3034 argTable.setAutoDelete(TRUE);
3039 // PHASE 1: read the macro arguments
3042 while ((cc=getNextChar(expr,rest,j))!=EOF)
3050 while (!done && (argCount<def->nargs || def->varArgs) &&
3051 ((cc=getNextChar(expr,rest,j))!=EOF)
3055 if (c=='(') // argument is a function => search for matching )
3060 while ((cc=getNextChar(expr,rest,j))!=EOF)
3063 //printf("processing %c: term=%c (%d)\n",c,term,term);
3064 if (c=='\'' || c=='\"') // skip ('s and )'s inside strings
3067 addTillEndOfString(expr,rest,j,c,arg);
3073 if (level==0) break;
3084 else if (c==')' || c==',') // last or next argument found
3086 if (c==',' && argCount==def->nargs-1 && def->varArgs)
3088 arg=arg.stripWhiteSpace();
3094 argKey.sprintf("@%d",argCount++); // key name
3095 arg=arg.stripWhiteSpace();
3096 // add argument to the lookup table
3097 argTable.insert(argKey, new QCString(arg));
3099 if (c==')') // end of the argument list
3105 else if (c=='\"') // append literal strings
3109 while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
3116 if ((cc=getNextChar(expr,rest,j))==EOF) break;
3122 else if (c=='\'') // append literal characters
3126 while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
3133 if ((cc=getNextChar(expr,rest,j))==EOF) break;
3139 else // append other characters
3146 // PHASE 2: apply the macro function
3147 if (argCount==def->nargs ||
3148 (argCount>def->nargs && def->varArgs)) // matching parameters lists
3151 // substitution of all formal arguments
3153 const QCString d=def->definition.stripWhiteSpace();
3154 //printf("Macro definition: %s\n",d.data());
3155 bool inString=FALSE;
3156 while (k<d.length())
3158 if (d.at(k)=='@') // maybe a marker, otherwise an escaped @
3160 if (d.at(k+1)=='@') // escaped @ => copy it (is unescaped later)
3163 resExpr+="@@"; // we unescape these later
3165 else if (d.at(k+1)=='-') // no-rescan marker
3170 else // argument marker => read the argument number
3176 // search for ## backward
3177 if (l>=0 && d.at(l)=='"') l--;
3178 while (l>=0 && d.at(l)==' ') l--;
3179 if (l>0 && d.at(l)=='#' && d.at(l-1)=='#') hash=TRUE;
3182 while (k<d.length() && d.at(k)>='0' && d.at(k)<='9') key+=d.at(k++);
3185 // search for ## forward
3187 if (l<(int)d.length() && d.at(l)=='"') l++;
3188 while (l<(int)d.length() && d.at(l)==' ') l++;
3189 if (l<(int)d.length()-1 && d.at(l)=='#' && d.at(l+1)=='#') hash=TRUE;
3191 //printf("request key %s result %s\n",key.data(),argTable[key]->data());
3192 if (key.length()>1 && (subst=argTable[key]))
3194 QCString substArg=*subst;
3195 //printf("substArg=`%s'\n",substArg.data());
3196 // only if no ## operator is before or after the argument
3197 // marker we do macro expansion.
3198 if (!hash) expandExpression(substArg,0,0);
3201 //printf("`%s'=stringize(`%s')\n",stringize(*subst).data(),subst->data());
3203 // if the marker is inside a string (because a # was put
3204 // before the macro name) we must escape " and \ characters
3205 resExpr+=stringize(substArg);
3209 if (hash && substArg.isEmpty())
3211 resExpr+="@E"; // empty argument will be remove later on
3213 else if (g_nospaces)
3219 resExpr+=" "+substArg+" ";
3225 else // no marker, just copy
3227 if (!inString && d.at(k)=='\"')
3229 inString=TRUE; // entering a literal string
3231 else if (inString && d.at(k)=='\"' && (d.at(k-1)!='\\' || d.at(k-2)=='\\'))
3233 inString=FALSE; // leaving a literal string
3240 //printf("result after substitution `%s' expr=`%s'\n",
3241 // result.data(),expr.mid(pos,len).data());
3248 /*! returns the next identifier in string \a expr by starting at position \a p.
3249 * The position of the identifier is returned (or -1 if nothing is found)
3250 * and \a l is its length. Any quoted strings are skipping during the search.
3252 static int getNextId(const QCString &expr,int p,int *l)
3255 while (p<(int)expr.length())
3257 char c=expr.at(p++);
3258 if (isdigit(c)) // skip number
3260 while (p<(int)expr.length() && isId(expr.at(p))) p++;
3262 else if (isalpha(c) || c=='_') // read id
3265 while (p<(int)expr.length() && isId(expr.at(p))) p++;
3269 else if (c=='"') // skip string
3272 if (p<(int)expr.length()) c=expr.at(p);
3273 while (p<(int)expr.length() && (c!='"' || (pc=='\\' && ppc!='\\')))
3274 // continue as long as no " is found, but ignoring \", but not \\"
3281 if (p<(int)expr.length()) ++p; // skip closing quote
3283 else if (c=='/') // skip C Comment
3285 //printf("Found C comment at p=%d\n",p);
3287 if (p<(int)expr.length())
3290 if (c=='*') // Start of C comment
3293 while (p<(int)expr.length() && !(pc=='*' && c=='/'))
3300 //printf("Found end of C comment at p=%d\n",p);
3306 /*! preforms recursive macro expansion on the string \a expr
3307 * starting at position \a pos.
3308 * May read additional characters from the input while re-scanning!
3309 * If \a expandAll is \c TRUE then all macros in the expression are
3310 * expanded, otherwise only the first is expanded.
3312 static void expandExpression(QCString &expr,QCString *rest,int pos)
3314 //printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0);
3317 bool definedTest=FALSE;
3319 while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name
3321 bool replaced=FALSE;
3322 macroName=expr.mid(p,l);
3323 //printf("macroName=%s\n",macroName.data());
3324 if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker?
3326 if (g_expandedDict->find(macroName)==0) // expand macro
3328 Define *def=DefineManager::instance().isDefined(macroName);
3329 if (definedTest) // macro name was found after defined
3331 if (def) expMacro = " 1 "; else expMacro = " 0 ";
3336 else if (def && def->nargs==-1) // simple macro
3338 // substitute the definition of the macro
3339 //printf("macro `%s'->`%s'\n",macroName.data(),def->definition.data());
3342 expMacro=def->definition.stripWhiteSpace();
3346 expMacro=" "+def->definition.stripWhiteSpace()+" ";
3348 //expMacro=def->definition.stripWhiteSpace();
3351 //printf("simple macro expansion=`%s'->`%s'\n",macroName.data(),expMacro.data());
3353 else if (def && def->nargs>=0) // function macro
3355 replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro);
3358 else if (macroName=="defined")
3360 //printf("found defined inside macro definition '%s'\n",expr.right(expr.length()-p).data());
3364 if (replaced) // expand the macro and rescan the expression
3367 //printf("replacing `%s'->`%s'\n",expr.mid(p,len).data(),expMacro.data());
3368 QCString resultExpr=expMacro;
3369 QCString restExpr=expr.right(expr.length()-len-p);
3370 processConcatOperators(resultExpr);
3371 if (def && !def->nonRecursive)
3373 g_expandedDict->insert(macroName,def);
3374 expandExpression(resultExpr,&restExpr,0);
3375 g_expandedDict->remove(macroName);
3377 expr=expr.left(p)+resultExpr+restExpr;
3379 //printf("new expression: %s\n",expr.data());
3381 else // move to the next macro name
3383 //printf("moving to the next macro old=%d new=%d\n",i,p+l);
3387 else // move to the next macro name
3389 expr=expr.left(p)+"@-"+expr.right(expr.length()-p);
3390 //printf("macro already expanded, moving to the next macro expr=%s\n",expr.data());
3395 else // no re-scan marker found, skip the macro name
3397 //printf("skipping marked macro\n");
3403 /*! replaces all occurrences of @@@@ in \a s by @@
3404 * and removes all occurrences of @@E.
3405 * All identifiers found are replaced by 0L
3407 QCString removeIdsAndMarkers(const char *s)
3409 //printf("removeIdsAndMarkers(%s)\n",s);
3418 if (c=='@') // replace @@ with @ and remove @E
3424 else if (*(p+1)=='E')
3430 else if (isdigit(c)) // number
3436 else if (c=='d' && !inNum) // identifier starting with a `d'
3438 if (strncmp(p,"defined ",8)==0 || strncmp(p,"defined(",8)==0)
3441 p+=7; // skip defined
3447 while ((c=*p) && isId(c)) p++;
3450 else if ((isalpha(c) || c=='_') && !inNum) // replace identifier with 0L
3454 while ((c=*p) && isId(c)) p++;
3455 if (*p=='(') // undefined function macro
3461 if (c=='(') count++;
3465 if (count==0) break;
3471 if (c=='*') // start of C comment
3473 while (*p && !(pc=='*' && c=='/')) // search end of comment
3484 else if (c=='/') // skip C comments
3488 if (c=='*') // start of C comment
3490 while (*p && !(pc=='*' && c=='/')) // search end of comment
3497 else // oops, not comment but division
3508 if (!isId(lc) && lc!='.' /*&& lc!='-' && lc!='+'*/) inNum=FALSE;
3513 //printf("removeIdsAndMarkers(%s)=%s\n",s,result.data());
3517 /*! replaces all occurrences of @@ in \a s by @
3519 * \a s only contains pairs of @@'s
3521 QCString removeMarkers(const char *s)
3532 case '@': // replace @@ with @
3541 case '/': // skip C comments
3546 if (c=='*') // start of C comment
3548 while (*p && !(pc=='*' && c=='/')) // search end of comment
3550 if (*p=='@' && *(p+1)=='@')
3557 if (*p) result+=c,p++;
3561 case '"': // skip string literals
3566 while (*p && (c!='"' || pc=='\\')) // no end quote
3571 if (*p) result+=c,p++;
3574 case '\'': // skip char literals
3579 while (*p && (c!='\'' || pc=='\\')) // no end quote
3584 if (*p) result+=c,p++;
3596 //printf("RemoveMarkers(%s)=%s\n",s,result.data());
3600 /*! compute the value of the expression in string \a expr.
3601 * If needed the function may read additional characters from the input.
3604 bool computeExpression(const QCString &expr)
3607 expandExpression(e,0,0);
3608 //printf("after expansion `%s'\n",e.data());
3609 e = removeIdsAndMarkers(e);
3610 if (e.isEmpty()) return FALSE;
3611 //printf("parsing `%s'\n",e.data());
3612 return parseCppExpression(g_yyFileName,g_yyLineNr,e);
3615 /*! expands the macro definition in \a name
3616 * If needed the function may read additional characters from the input
3619 QCString expandMacro(const QCString &name)
3622 expandExpression(n,0,0);
3624 //printf("expandMacro `%s'->`%s'\n",name.data(),n.data());
3630 Define *def=new Define;
3631 def->name = g_defName;
3632 def->definition = g_defText.stripWhiteSpace();
3633 def->nargs = g_defArgs;
3634 def->fileName = g_yyFileName;
3635 def->fileDef = g_yyFileDef;
3636 def->lineNr = g_yyLineNr;
3637 def->varArgs = g_defVarArgs;
3638 //printf("newDefine: %s %s file: %s\n",def->name.data(),def->definition.data(),
3639 // def->fileDef ? def->fileDef->name().data() : def->fileName.data());
3640 //printf("newDefine: `%s'->`%s'\n",def->name.data(),def->definition.data());
3641 if (!def->name.isEmpty() && Doxygen::expandAsDefinedDict[def->name])
3643 def->isPredefined=TRUE;
3650 if (g_skip) return; // do not add this define as it is inside a
3651 // conditional section (cond command) that is disabled.
3652 if (!Doxygen::gatherDefines) return;
3654 //printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data());
3655 //ArgumentList *al = new ArgumentList;
3656 //stringToArgumentList(g_defArgsStr,al);
3657 MemberDef *md=new MemberDef(
3658 g_yyFileName,g_yyLineNr,
3659 "#define",g_defName,g_defArgsStr,0,
3660 Public,Normal,FALSE,Member,MemberDef::Define,0,0);
3661 if (!g_defArgsStr.isEmpty())
3663 ArgumentList *argList = new ArgumentList;
3664 //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data());
3665 stringToArgumentList(g_defArgsStr,argList);
3666 md->setArgumentList(argList);
3668 //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data());
3669 int l=g_defLitText.find('\n');
3670 if (l>0 && g_defLitText.left(l).stripWhiteSpace()=="\\")
3672 // strip first line if it only contains a slash
3673 g_defLitText = g_defLitText.right(g_defLitText.length()-l-1);
3677 // align the items on the first line with the items on the second line
3679 const char *p=g_defLitText.data()+k;
3681 while ((c=*p++) && (c==' ' || c=='\t')) k++;
3682 g_defLitText=g_defLitText.mid(l+1,k-l-1)+g_defLitText.stripWhiteSpace();
3684 md->setInitializer(g_defLitText.stripWhiteSpace());
3686 //printf("pre.l: md->setFileDef(%p)\n",g_inputFileDef);
3687 md->setFileDef(g_inputFileDef);
3688 md->setDefinition("#define "+g_defName);
3690 MemberName *mn=Doxygen::functionNameSDict->find(g_defName);
3693 mn = new MemberName(g_defName);
3694 Doxygen::functionNameSDict->append(g_defName,mn);
3699 g_yyFileDef->insertMember(md);
3703 //if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine());
3706 static inline void outputChar(char c)
3708 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addChar(c);
3711 static inline void outputArray(const char *a,int len)
3713 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addArray(a,len);
3716 static void readIncludeFile(const QCString &inc)
3718 static bool searchIncludes = Config_getBool("SEARCH_INCLUDES");
3719 if (!searchIncludes) return; // do not read include files
3722 // find the start of the include file name
3723 while (i<inc.length() &&
3724 (inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<')
3728 // was it a local include?
3729 bool localInclude = s>0 && inc.at(s-1)=='"';
3731 // find the end of the include file name
3732 while (i<inc.length() && inc.at(i)!='"' && inc.at(i)!='>') i++;
3734 if (s<inc.length() && i>s) // valid include file name found
3736 // extract include path+name
3737 QCString incFileName=inc.mid(s,i-s).stripWhiteSpace();
3739 QCString dosExt = incFileName.right(4);
3740 if (dosExt==".exe" || dosExt==".dll" || dosExt==".tlb")
3742 // skip imported binary files (e.g. M$ type libraries)
3746 QCString oldFileName = g_yyFileName;
3747 FileDef *oldFileDef = g_yyFileDef;
3748 int oldLineNr = g_yyLineNr;
3749 //printf("Searching for `%s'\n",incFileName.data());
3751 // absIncFileName avoids difficulties for incFileName starting with "../" (bug 641336)
3752 QCString absIncFileName = incFileName;
3754 static bool searchIncludes = Config_getBool("SEARCH_INCLUDES");
3755 QFileInfo fi(g_yyFileName);
3758 QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+incFileName;
3759 QFileInfo fi2(absName);
3762 absIncFileName=fi2.absFilePath().utf8();
3764 else if (searchIncludes) // search in INCLUDE_PATH as well
3766 QStrList &includePath = Config_getList("INCLUDE_PATH");
3767 char *s=includePath.first();
3771 if (fi.exists() && fi.isDir())
3773 QCString absName = QCString(fi.absFilePath().utf8())+"/"+incFileName;
3774 //printf("trying absName=%s\n",absName.data());
3775 QFileInfo fi2(absName);
3778 absIncFileName=fi2.absFilePath().utf8();
3781 //printf( "absIncFileName = %s\n", absIncFileName.data() );
3783 s=includePath.next();
3786 //printf( "absIncFileName = %s\n", absIncFileName.data() );
3789 DefineManager::instance().addInclude(g_yyFileName,absIncFileName);
3790 DefineManager::instance().addFileToContext(absIncFileName);
3792 // findFile will overwrite g_yyFileDef if found
3794 bool alreadyIncluded = FALSE;
3795 //printf("calling findFile(%s)\n",incFileName.data());
3796 if ((fs=findFile(incFileName,localInclude,alreadyIncluded))) // see if the include file can be found
3798 //printf("Found include file!\n");
3799 if (Debug::isFlagSet(Debug::Preprocessor))
3801 for (i=0;i<g_includeStack.count();i++)
3803 Debug::print(Debug::Preprocessor,0," ");
3805 //msg("#include %s: parsing...\n",incFileName.data());
3809 // add include dependency to the file in which the #include was found
3811 // change to absolute name for bug 641336
3812 FileDef *incFd = findFileDef(Doxygen::inputNameDict,absIncFileName,ambig);
3813 oldFileDef->addIncludeDependency(ambig ? 0 : incFd,incFileName,localInclude,g_isImported,FALSE);
3814 // add included by dependency
3817 //printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
3818 g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3821 else if (g_inputFileDef)
3823 g_inputFileDef->addIncludeDependency(0,absIncFileName,localInclude,g_isImported,TRUE);
3825 fs->bufState = YY_CURRENT_BUFFER;
3826 fs->lineNr = oldLineNr;
3827 fs->fileName = oldFileName;
3828 // push the state on the stack
3829 g_includeStack.push(fs);
3830 // set the scanner to the include file
3832 // Deal with file changes due to
3833 // #include's within { .. } blocks
3834 QCString lineStr(g_yyFileName.length()+20);
3835 lineStr.sprintf("# 1 \"%s\" 1\n",g_yyFileName.data());
3836 outputArray(lineStr.data(),lineStr.length());
3838 //fprintf(stderr,"Switching to include file %s\n",incFileName.data());
3840 g_inputBuf = &fs->fileBuf;
3842 preYY_switch_to_buffer(preYY_create_buffer(0,YY_BUF_SIZE));
3846 //printf(" calling findFile(%s) alreadyInc=%d\n",incFileName.data(),alreadyIncluded);
3850 //QCString absPath = incFileName;
3851 //if (QDir::isRelativePath(incFileName))
3853 // absPath = QDir::cleanDirPath(oldFileDef->getPath()+"/"+incFileName);
3854 // //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data());
3857 // change to absolute name for bug 641336
3858 FileDef *fd = findFileDef(Doxygen::inputNameDict,absIncFileName,ambig);
3859 //printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd);
3860 // add include dependency to the file in which the #include was found
3861 oldFileDef->addIncludeDependency(ambig ? 0 : fd,incFileName,localInclude,g_isImported,FALSE);
3862 // add included by dependency
3865 //printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig);
3866 fd->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3869 else if (g_inputFileDef)
3871 g_inputFileDef->addIncludeDependency(0,absIncFileName,localInclude,g_isImported,TRUE);
3873 if (Debug::isFlagSet(Debug::Preprocessor))
3875 if (alreadyIncluded)
3877 Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",incFileName.data());
3881 Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",incFileName.data());
3883 //printf("error: include file %s not found\n",preYYtext);
3885 if (g_curlyCount>0 && !alreadyIncluded) // failed to find #include inside { ... }
3887 warn(g_yyFileName,g_yyLineNr,"Warning: include file %s not found, perhaps you forgot to add its directory to INCLUDE_PATH?",incFileName.data());
3893 /* ----------------------------------------------------------------- */
3895 static void startCondSection(const char *sectId)
3897 g_condStack.push(new bool(g_skip));
3898 if (Config_getList("ENABLED_SECTIONS").find(sectId)==-1)
3904 static void endCondSection()
3906 if (g_condStack.isEmpty())
3912 bool *ctx = g_condStack.pop();
3917 static void forceEndCondSection()
3919 while (!g_condStack.isEmpty())
3926 static QCString escapeAt(const char *text)
3935 if (c=='@') result+="@@"; else result+=c;
3941 static char resolveTrigraph(char c)
3945 case '=': return '#';
3946 case '/': return '\\';
3947 case '\'': return '^';
3948 case '(': return '[';
3949 case ')': return ']';
3950 case '!': return '|';
3951 case '<': return '{';
3952 case '>': return '}';
3953 case '-': return '~';
3958 /* ----------------------------------------------------------------- */
3961 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
3963 static int yyread(char *buf,int max_size)
3965 int bytesInBuf = g_inputBuf->curPos()-g_inputBufPos;
3966 int bytesToCopy = QMIN(max_size,bytesInBuf);
3967 memcpy(buf,g_inputBuf->data()+g_inputBufPos,bytesToCopy);
3968 g_inputBufPos+=bytesToCopy;
3972 /* ----------------------------------------------------------------- */
4006 #line 4007 "<stdout>"
4011 #define SkipCommand 3
4013 #define SkipString 5
4015 #define CopyString 7
4018 #define EndImport 10
4020 #define DefineArg 12
4021 #define DefineText 13
4022 #define SkipCPPBlock 14
4025 #define SkipCComment 17
4026 #define CopyCComment 18
4027 #define SkipVerbatim 19
4028 #define SkipCPPComment 20
4029 #define RemoveCComment 21
4030 #define RemoveCPPComment 22
4032 #define DefinedExpr1 24
4033 #define DefinedExpr2 25
4034 #define SkipDoubleQuote 26
4035 #define SkipSingleQuote 27
4036 #define UndefName 28
4037 #define IgnoreLine 29
4038 #define FindDefineArgs 30
4039 #define ReadString 31
4042 #ifndef YY_NO_UNISTD_H
4043 /* Special case for "unistd.h", since it is non-ANSI. We include it way
4044 * down here because we want the user's section 1 to have been scanned first.
4045 * The user has a chance to override it with an option.
4050 #ifndef YY_EXTRA_TYPE
4051 #define YY_EXTRA_TYPE void *
4054 static int yy_init_globals (void );
4056 /* Accessor methods to globals.
4057 These are made visible to non-reentrant scanners for convenience. */
4059 int preYYlex_destroy (void );
4061 int preYYget_debug (void );
4063 void preYYset_debug (int debug_flag );
4065 YY_EXTRA_TYPE preYYget_extra (void );
4067 void preYYset_extra (YY_EXTRA_TYPE user_defined );
4069 FILE *preYYget_in (void );
4071 void preYYset_in (FILE * in_str );
4073 FILE *preYYget_out (void );
4075 void preYYset_out (FILE * out_str );
4077 yy_size_t preYYget_leng (void );
4079 char *preYYget_text (void );
4081 int preYYget_lineno (void );
4083 void preYYset_lineno (int line_number );
4085 /* Macros after this point can all be overridden by user definitions in
4089 #ifndef YY_SKIP_YYWRAP
4091 extern "C" int preYYwrap (void );
4093 extern int preYYwrap (void );
4097 static void yyunput (int c,char *buf_ptr );
4100 static void yy_flex_strncpy (char *,yyconst char *,int );
4103 #ifdef YY_NEED_STRLEN
4104 static int yy_flex_strlen (yyconst char * );
4110 static int yyinput (void );
4112 static int input (void );
4117 /* Amount of stuff to slurp up with each read. */
4118 #ifndef YY_READ_BUF_SIZE
4119 #define YY_READ_BUF_SIZE 262144
4122 /* Copy whatever the last rule matched to the standard output. */
4124 /* This used to be an fputs(), but since the string might contain NUL's,
4125 * we now use fwrite().
4127 #define ECHO fwrite( preYYtext, preYYleng, 1, preYYout )
4130 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
4131 * is returned in "result".
4134 #define YY_INPUT(buf,result,max_size) \
4135 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
4139 for ( n = 0; n < max_size && \
4140 (c = getc( preYYin )) != EOF && c != '\n'; ++n ) \
4141 buf[n] = (char) c; \
4143 buf[n++] = (char) c; \
4144 if ( c == EOF && ferror( preYYin ) ) \
4145 YY_FATAL_ERROR( "input in flex scanner failed" ); \
4151 while ( (result = fread(buf, 1, max_size, preYYin))==0 && ferror(preYYin)) \
4153 if( errno != EINTR) \
4155 YY_FATAL_ERROR( "input in flex scanner failed" ); \
4159 clearerr(preYYin); \
4166 /* No semi-colon after return; correct usage is to write "yyterminate();" -
4167 * we don't want an extra ';' after the "return" because that will cause
4168 * some compilers to complain about unreachable statements.
4171 #define yyterminate() return YY_NULL
4174 /* Number of entries by which start-condition stack grows. */
4175 #ifndef YY_START_STACK_INCR
4176 #define YY_START_STACK_INCR 25
4179 /* Report a fatal error. */
4180 #ifndef YY_FATAL_ERROR
4181 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
4184 /* end tables serialization structures and prototypes */
4186 /* Default declaration of generated scanner - a define so the user can
4187 * easily add parameters.
4190 #define YY_DECL_IS_OURS 1
4192 extern int preYYlex (void);
4194 #define YY_DECL int preYYlex (void)
4195 #endif /* !YY_DECL */
4197 /* Code executed at the beginning of each rule, after preYYtext and preYYleng
4200 #ifndef YY_USER_ACTION
4201 #define YY_USER_ACTION
4204 /* Code executed at the end of each rule. */
4206 #define YY_BREAK break;
4209 #define YY_RULE_SETUP \
4210 if ( preYYleng > 0 ) \
4211 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
4212 (preYYtext[preYYleng - 1] == '\n'); \
4215 /** The main scanner function which does all the work.
4219 register yy_state_type yy_current_state;
4220 register char *yy_cp, *yy_bp;
4221 register int yy_act;
4226 #line 4227 "<stdout>"
4236 /* Create the reject buffer large enough to save one state per allowed character. */
4237 if ( ! (yy_state_buf) )
4238 (yy_state_buf) = (yy_state_type *)preYYalloc(YY_STATE_BUF_SIZE );
4239 if ( ! (yy_state_buf) )
4240 YY_FATAL_ERROR( "out of dynamic memory in preYYlex()" );
4243 (yy_start) = 1; /* first start state */
4251 if ( ! YY_CURRENT_BUFFER ) {
4252 preYYensure_buffer_stack ();
4253 YY_CURRENT_BUFFER_LVALUE =
4254 preYY_create_buffer(preYYin,YY_BUF_SIZE );
4257 preYY_load_buffer_state( );
4260 while ( 1 ) /* loops until end-of-file is reached */
4262 yy_cp = (yy_c_buf_p);
4264 /* Support of preYYtext. */
4265 *yy_cp = (yy_hold_char);
4267 /* yy_bp points to the position in yy_ch_buf of the start of
4272 yy_current_state = (yy_start);
4273 yy_current_state += YY_AT_BOL();
4275 (yy_state_ptr) = (yy_state_buf);
4276 *(yy_state_ptr)++ = yy_current_state;
4281 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4282 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4284 yy_current_state = (int) yy_def[yy_current_state];
4285 if ( yy_current_state >= 1172 )
4286 yy_c = yy_meta[(unsigned int) yy_c];
4288 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4289 *(yy_state_ptr)++ = yy_current_state;
4292 while ( yy_base[yy_current_state] != 5439 );
4295 yy_current_state = *--(yy_state_ptr);
4296 (yy_lp) = yy_accept[yy_current_state];
4297 goto find_rule; /* Shut up GCC warning -Wall */
4298 find_rule: /* we branch to this label when backing up */
4299 for ( ; ; ) /* until we find what rule we matched */
4301 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
4303 yy_act = yy_acclist[(yy_lp)];
4304 if ( yy_act & YY_TRAILING_HEAD_MASK ||
4305 (yy_looking_for_trail_begin) )
4307 if ( yy_act == (yy_looking_for_trail_begin) )
4309 (yy_looking_for_trail_begin) = 0;
4310 yy_act &= ~YY_TRAILING_HEAD_MASK;
4314 else if ( yy_act & YY_TRAILING_MASK )
4316 (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
4317 (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
4318 (yy_full_match) = yy_cp;
4319 (yy_full_state) = (yy_state_ptr);
4320 (yy_full_lp) = (yy_lp);
4324 (yy_full_match) = yy_cp;
4325 (yy_full_state) = (yy_state_ptr);
4326 (yy_full_lp) = (yy_lp);
4333 yy_current_state = *--(yy_state_ptr);
4334 (yy_lp) = yy_accept[yy_current_state];
4337 YY_DO_BEFORE_ACTION;
4339 do_action: /* This label is used only to access EOF actions. */
4342 { /* beginning of action switch */
4362 unput(resolveTrigraph(preYYtext[2]));
4371 /* rule 6 can match eol */
4372 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4373 (yy_c_buf_p) = yy_cp -= 1;
4374 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4378 outputArray(preYYtext,preYYleng);
4383 /* rule 7 can match eol */
4388 for (i=preYYleng-1;i>=0;i--)
4390 unput(preYYtext[i]);
4396 /* rule 8 can match eol */
4399 /* rule 9 can match eol */
4402 { // function like macro
4403 static bool skipFuncMacros = Config_getBool("SKIP_FUNCTION_MACROS");
4404 QCString name(preYYtext);
4405 name=name.left(name.find('(')).stripWhiteSpace();
4408 if (skipFuncMacros &&
4409 name!="Q_PROPERTY" &&
4411 (g_includeStack.isEmpty() || g_curlyCount>0) &&
4413 (def=DefineManager::instance().isDefined(name)) &&
4414 /*macroIsAccessible(def) &&*/
4415 (!g_expandOnlyPredef || def->isPredefined)
4425 for (i=preYYleng-1;i>=0;i--)
4427 unput(preYYtext[i]);
4434 /* rule 10 can match eol */
4438 QCString text=preYYtext;
4439 g_yyLineNr+=text.contains('\n');
4440 outputArray(preYYtext,preYYleng);
4446 { // count brackets inside the main file
4447 if (g_includeStack.isEmpty())
4451 outputChar(*preYYtext);
4457 { // count brackets inside the main file
4458 if (g_includeStack.isEmpty() && g_curlyCount>0)
4462 outputChar(*preYYtext);
4469 outputArray(preYYtext,preYYleng);
4476 outputArray(preYYtext,preYYleng);
4483 outputArray(preYYtext,preYYleng);
4490 outputChar(*preYYtext);
4491 BEGIN( CopyString );
4498 outputArray(preYYtext,preYYleng);
4505 outputArray(preYYtext,preYYleng);
4512 outputChar(*preYYtext);
4517 /* rule 20 can match eol */
4521 g_expectGuard = FALSE;
4523 //def=g_globalDefineDict->find(preYYtext);
4524 //def=DefineManager::instance().isDefined(preYYtext);
4525 //printf("Search for define %s found=%d g_includeStack.isEmpty()=%d "
4526 // "g_curlyCount=%d g_macroExpansion=%d g_expandOnlyPredef=%d "
4527 // "isPreDefined=%d\n",preYYtext,def ? 1 : 0,
4528 // g_includeStack.isEmpty(),g_curlyCount,g_macroExpansion,g_expandOnlyPredef,
4529 // def ? def->isPredefined : -1
4531 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4533 (def=DefineManager::instance().isDefined(preYYtext)) &&
4534 /*(def->isPredefined || macroIsAccessible(def)) && */
4535 (!g_expandOnlyPredef || def->isPredefined)
4538 //printf("Found it! #args=%d\n",def->nargs);
4540 g_defArgsStr=preYYtext;
4541 if (def->nargs==-1) // no function macro
4543 QCString result = def->isPredefined ? def->definition : expandMacro(g_defArgsStr);
4544 outputArray(result,result.length());
4546 else // zero or more arguments
4548 g_findDefArgContext = CopyLine;
4549 BEGIN(FindDefineArgs);
4554 outputArray(preYYtext,preYYleng);
4563 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4565 (def=DefineManager::instance().isDefined(preYYtext)) &&
4567 /*(def->isPredefined || macroIsAccessible(def)) &&*/
4568 (!g_expandOnlyPredef || def->isPredefined)
4571 QCString result=def->isPredefined ? def->definition : expandMacro(preYYtext);
4572 outputArray(result,result.length());
4576 outputArray(preYYtext,preYYleng);
4581 /* rule 22 can match eol */
4582 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4583 (yy_c_buf_p) = yy_cp -= 1;
4584 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4587 { // strip line continuation characters
4594 outputChar(*preYYtext);
4598 /* rule 24 can match eol */
4621 if (g_roundCount==0)
4623 QCString result=expandMacro(g_defArgsStr);
4624 //printf("g_defArgsStr=`%s'->`%s'\n",g_defArgsStr.data(),result.data());
4625 if (g_findDefArgContext==CopyLine)
4627 outputArray(result,result.length());
4628 BEGIN(g_findDefArgContext);
4630 else // g_findDefArgContext==IncludeID
4632 readIncludeFile(result);
4640 <FindDefineArgs>")"{B}*"(" {
4641 g_defArgsStr+=preYYtext;
4648 g_defArgsStr+=preYYtext;
4655 g_defArgsStr+=*preYYtext;
4660 /* rule 29 can match eol */
4679 g_defArgsStr+=*preYYtext;
4686 g_defArgsStr+=*preYYtext;
4687 BEGIN(FindDefineArgs);
4694 g_defArgsStr+=preYYtext;
4701 g_defArgsStr+=preYYtext;
4708 g_defArgsStr+=*preYYtext;
4715 g_isImported = preYYtext[1]=='m';
4716 if (g_macroExpansion)
4724 g_isImported = preYYtext[1]=='m';
4726 c[0]=preYYtext[preYYleng-1];c[1]='\0';
4735 //printf("!!!DefName\n");
4740 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4741 (yy_c_buf_p) = yy_cp = yy_bp + 5;
4742 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4747 g_guardExpr.resize(0);
4748 BEGIN(DefinedExpr2);
4752 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4753 (yy_c_buf_p) = yy_cp = yy_bp + 5;
4754 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4758 //printf("Pre.l: ifdef\n");
4760 g_guardExpr.resize(0);
4761 BEGIN(DefinedExpr1);
4765 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4766 (yy_c_buf_p) = yy_cp = yy_bp + 6;
4767 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4773 BEGIN(DefinedExpr2);
4777 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4778 (yy_c_buf_p) = yy_cp = yy_bp + 6;
4779 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4785 BEGIN(DefinedExpr1);
4789 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4790 (yy_c_buf_p) = yy_cp = yy_bp + 2;
4791 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4796 g_guardExpr.resize(0);
4801 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4802 (yy_c_buf_p) = yy_cp -= 1;
4803 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4807 if (!otherCaseDone())
4809 g_guardExpr.resize(0);
4815 BEGIN(SkipCPPBlock);
4820 /* rule 45 can match eol */
4821 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4822 (yy_c_buf_p) = yy_cp = yy_bp + 4;
4823 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4827 //printf("else g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]);
4828 if (otherCaseDone())
4831 BEGIN(SkipCPPBlock);
4836 //g_levelGuard[g_level-1]=TRUE;
4848 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4849 (yy_c_buf_p) = yy_cp -= 1;
4850 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4854 if (!otherCaseDone())
4856 g_guardExpr.resize(0);
4862 /* rule 48 can match eol */
4863 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4864 (yy_c_buf_p) = yy_cp = yy_bp + 5;
4865 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4869 //printf("Pre.l: #endif\n");
4874 /* rule 49 can match eol */
4887 g_expectGuard = FALSE;
4893 { // unknown directive
4898 /* rule 52 can match eol */
4921 if ((def=DefineManager::instance().isDefined(preYYtext))
4922 /*&& !def->isPredefined*/
4923 && !def->nonRecursive
4926 //printf("undefining %s\n",preYYtext);
4933 /* rule 56 can match eol */
4943 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4944 (yy_c_buf_p) = yy_cp = yy_bp + 7;
4945 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4949 BEGIN(DefinedExpr2);
4953 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4954 (yy_c_buf_p) = yy_cp = yy_bp + 7;
4955 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4959 BEGIN(DefinedExpr1);
4965 { g_guardExpr+=preYYtext; }
4970 { g_guardExpr+=*preYYtext; }
4973 /* rule 61 can match eol */
4978 //printf("Guard: `%s'\n",
4979 // g_guardExpr.data());
4980 bool guard=computeExpression(g_guardExpr);
4982 //printf("if g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]);
4990 BEGIN(SkipCPPBlock);
4995 /* rule 62 can match eol */
4998 { g_yyLineNr++; outputChar('\n'); }
5004 if (DefineManager::instance().isDefined(preYYtext) || g_guardName==preYYtext)
5005 g_guardExpr+=" 1L ";
5007 g_guardExpr+=" 0L ";
5008 g_lastGuardName=preYYtext;
5016 if (DefineManager::instance().isDefined(preYYtext) || g_guardName==preYYtext)
5017 g_guardExpr+=" 1L ";
5019 g_guardExpr+=" 0L ";
5020 g_lastGuardName=preYYtext;
5024 /* rule 65 can match eol */
5027 { // should not happen, handle anyway
5030 BEGIN(SkipCPPBlock);
5048 { BEGIN(SkipCommand); }
5051 /* rule 69 can match eol */
5052 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5053 (yy_c_buf_p) = yy_cp -= 1;
5054 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5057 { BEGIN(SkipLine); }
5060 /* rule 70 can match eol */
5063 { g_yyLineNr++; outputChar('\n'); }
5071 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5072 (yy_c_buf_p) = yy_cp -= 1;
5073 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5079 //printf("#if... depth=%d\n",g_ifcount);
5086 //printf("Else! g_ifcount=%d otherCaseDone=%d\n",g_ifcount,otherCaseDone());
5087 if (g_ifcount==0 && !otherCaseDone())
5096 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5097 (yy_c_buf_p) = yy_cp -= 1;
5098 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5104 if (!otherCaseDone())
5106 g_guardExpr.resize(0);
5107 g_lastGuardName.resize(0);
5112 BEGIN(SkipCPPBlock);
5121 g_expectGuard = FALSE;
5131 /* rule 76 can match eol */
5137 BEGIN(SkipCPPBlock);
5143 { // unknown directive
5175 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5176 (yy_c_buf_p) = yy_cp = yy_bp + 2;
5177 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5187 g_lastCPPContext=YY_START;
5188 BEGIN(RemoveCPPComment);
5192 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5193 (yy_c_buf_p) = yy_cp = yy_bp + 2;
5194 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5201 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5202 (yy_c_buf_p) = yy_cp = yy_bp + 2;
5203 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5207 g_lastCContext=YY_START;
5208 BEGIN(RemoveCComment);
5212 /* rule 87 can match eol */
5218 BEGIN(SkipCPPBlock);
5244 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5245 (yy_c_buf_p) = yy_cp -= 1;
5246 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5252 g_defArgsStr=preYYtext;
5253 g_findDefArgContext = IncludeID;
5254 BEGIN(FindDefineArgs);
5262 readIncludeFile(expandMacro(preYYtext));
5270 g_incName+=preYYtext;
5271 readIncludeFile(g_incName);
5283 /* rule 95 can match eol */
5284 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5285 (yy_c_buf_p) = yy_cp -= 1;
5286 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5294 /* rule 96 can match eol */
5309 /* rule 98 can match eol */
5312 { // define with argument
5313 //printf("Define() `%s'\n",preYYtext);
5314 g_argDict = new QDict<int>(31);
5315 g_argDict->setAutoDelete(TRUE);
5317 g_defArgsStr.resize(0);
5318 g_defText.resize(0);
5319 g_defLitText.resize(0);
5320 g_defName = preYYtext;
5321 g_defVarArgs = FALSE;
5322 g_defExtraSpacing.resize(0);
5327 /* rule 99 can match eol */
5328 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5329 (yy_c_buf_p) = yy_cp -= 1;
5330 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5333 { // special case: define with 1 -> can be "guard"
5334 //printf("Define `%s'\n",preYYtext);
5337 g_defArgsStr.resize(0);
5338 g_defName = preYYtext;
5339 g_defName = g_defName.left(g_defName.length()-1).stripWhiteSpace();
5340 g_defVarArgs = FALSE;
5341 //printf("Guard check: %s!=%s || %d\n",
5342 // g_defName.data(),g_lastGuardName.data(),g_expectGuard);
5343 if ( g_defName!=g_lastGuardName || !g_expectGuard)
5344 { // define may appear in the output
5345 QCString tmp=(QCString)"#define "+g_defName;
5346 outputArray(tmp.data(),tmp.length());
5348 g_insideComment=FALSE;
5349 g_lastGuardName.resize(0);
5354 else // define is a guard => hide
5356 //printf("Found a guard %s\n",preYYtext);
5357 g_defText.resize(0);
5358 g_defLitText.resize(0);
5361 g_expectGuard=FALSE;
5365 /* rule 100 can match eol */
5371 g_defName = preYYtext;
5372 g_defArgsStr.resize(0);
5373 g_defText.resize(0);
5374 g_defLitText.resize(0);
5375 g_defVarArgs = FALSE;
5376 //printf("Guard check: %s!=%s || %d\n",
5377 // g_defName.data(),g_lastGuardName.data(),g_expectGuard);
5378 if ( g_defName!=g_lastGuardName || !g_expectGuard)
5379 { // define may appear in the output
5380 QCString tmp=(QCString)"#define "+g_defName;
5381 outputArray(tmp.data(),tmp.length());
5383 g_insideComment=FALSE;
5384 if (g_insideCS) g_defText="1"; // for C#, use "1" as define text
5387 else // define is a guard => hide
5389 //printf("Found a guard %s\n",preYYtext);
5390 g_guardName = preYYtext;
5391 g_lastGuardName.resize(0);
5394 g_expectGuard=FALSE;
5400 { // define with content
5401 //printf("Define `%s'\n",preYYtext);
5404 g_defArgsStr.resize(0);
5405 g_defText.resize(0);
5406 g_defLitText.resize(0);
5407 g_defName = preYYtext;
5408 g_defVarArgs = FALSE;
5409 QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
5410 outputArray(tmp.data(),tmp.length());
5412 g_insideComment=FALSE;
5417 /* rule 102 can match eol */
5421 g_defExtraSpacing+="\n";
5428 { g_defArgsStr+=preYYtext; }
5433 { g_defArgsStr+=preYYtext; }
5439 g_defArgsStr+=preYYtext;
5440 QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr+g_defExtraSpacing;
5441 outputArray(tmp.data(),tmp.length());
5443 g_insideComment=FALSE;
5451 g_defVarArgs = TRUE;
5452 g_defArgsStr+=preYYtext;
5453 g_argDict->insert("__VA_ARGS__",new int(g_defArgs));
5461 //printf("Define addArg(%s)\n",preYYtext);
5462 QCString argName=preYYtext;
5463 g_defVarArgs = preYYtext[preYYleng-1]=='.';
5464 if (g_defVarArgs) // strip ellipsis
5466 argName=argName.left(argName.length()-3);
5468 argName = argName.stripWhiteSpace();
5469 g_defArgsStr+=preYYtext;
5470 g_argDict->insert(argName,new int(g_defArgs));
5475 <DefineText>"/ **"|"/ *!" {
5476 g_defText+=preYYtext;
5477 g_defLitText+=preYYtext;
5478 g_insideComment=TRUE;
5481 g_defText+=preYYtext;
5482 g_defLitText+=preYYtext;
5483 g_insideComment=FALSE;
5490 g_defText+=preYYtext;
5491 g_defLitText+=preYYtext;
5492 g_lastCContext=YY_START;
5494 BEGIN(CopyCComment);
5501 outputArray(preYYtext,preYYleng);
5502 g_lastCPPContext=YY_START;
5504 BEGIN(SkipCPPComment);
5511 if (preYYtext[0]=='/') outputChar('/');
5512 outputChar('*');outputChar('/');
5513 if (--g_commentCount<=0)
5515 if (g_lastCContext==Start)
5516 // small hack to make sure that ^... rule will
5517 // match when going to Start... Example: "/*...*/ some stuff..."
5519 YY_CURRENT_BUFFER->yy_at_bol=1;
5521 BEGIN(g_lastCContext);
5529 outputArray(preYYtext,preYYleng);
5536 outputChar('/');outputChar('*');
5544 outputArray(preYYtext,preYYleng);
5548 /* rule 114 can match eol */
5552 outputArray(preYYtext,preYYleng);
5553 g_yyLineNr+=QCString(preYYtext).contains('\n');
5557 /* rule 115 can match eol */
5561 outputArray(preYYtext,preYYleng);
5562 g_yyLineNr+=QCString(preYYtext).contains('\n');
5563 if (preYYtext[1]=='f')
5569 g_blockName=QCString(&preYYtext[1]).stripWhiteSpace();
5571 BEGIN(SkipVerbatim);
5577 { // conditional section
5578 g_condCtx = YY_START;
5579 outputArray(preYYtext,preYYleng);
5587 startCondSection(preYYtext);
5588 outputArray(preYYtext,preYYleng);
5593 /* rule 118 can match eol */
5594 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5595 (yy_c_buf_p) = yy_cp -= 1;
5596 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5600 g_condCtx = YY_START;
5601 outputArray(preYYtext,preYYleng);
5609 startCondSection(" ");
5614 /* rule 120 can match eol */
5615 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5616 (yy_c_buf_p) = yy_cp = yy_bp + 8;
5617 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5621 outputArray(preYYtext,preYYleng);
5628 { /* end of verbatim block */
5629 outputArray(preYYtext,preYYleng);
5630 if (preYYtext[1]=='f' && g_blockName=="f")
5632 BEGIN(SkipCComment);
5634 else if (&preYYtext[4]==g_blockName)
5636 BEGIN(SkipCComment);
5644 outputArray(preYYtext,preYYleng);
5651 outputArray(preYYtext,preYYleng);
5655 /* rule 124 can match eol */
5667 outputChar(*preYYtext);
5674 g_defLitText+=preYYtext;
5675 g_defText+=escapeAt(preYYtext);
5682 g_defLitText+=preYYtext;
5683 g_defText+=preYYtext;
5684 BEGIN(g_lastCContext);
5688 /* rule 128 can match eol */
5693 g_defLitText+=preYYtext;
5700 { // see bug 594021 for a usecase for this rule
5701 if (g_lastCContext==SkipCPPBlock)
5714 { BEGIN(g_lastCContext); }
5732 /* rule 134 can match eol */
5735 { g_yyLineNr++; outputChar('\n'); }
5746 outputArray(preYYtext,preYYleng);
5750 /* rule 137 can match eol */
5755 BEGIN(g_lastCPPContext);
5762 outputChar('/');outputChar('*');
5769 outputChar('/');outputChar('/');
5776 outputArray(preYYtext,preYYleng);
5783 outputChar(*preYYtext);
5811 g_defLitText+=preYYtext;
5818 g_defLitText+=preYYtext;
5826 if ((n=(*g_argDict)[preYYtext]))
5828 //if (!g_quoteArg) g_defText+=' ';
5831 numStr.sprintf("%d",*n);
5833 //if (!g_quoteArg) g_defText+=' ';
5837 g_defText+=preYYtext;
5842 g_defText+=preYYtext;
5855 g_defLitText+=preYYtext;
5856 g_defText+=preYYtext;
5860 /* rule 149 can match eol */
5864 g_defLitText+=preYYtext;
5866 g_defText += ' '; g_yyLineNr++;
5870 /* rule 150 can match eol */
5874 QCString comment=extractTrailingComment(g_defLitText);
5875 g_defLitText+=preYYtext;
5876 if (!comment.isEmpty())
5878 outputArray(comment,comment.length());
5879 g_defLitText=g_defLitText.left(g_defLitText.length()-comment.length()-1);
5883 //printf("Define name=`%s' text=`%s' litTexti=`%s'\n",g_defName.data(),g_defText.data(),g_defLitText.data());
5884 if (g_includeStack.isEmpty() || g_curlyCount>0)
5888 def=DefineManager::instance().isDefined(g_defName);
5889 if (def==0) // new define
5891 //printf("new define '%s'!\n",g_defName.data());
5892 Define *nd = newDefine();
5893 DefineManager::instance().addDefine(g_yyFileName,nd);
5895 // also add it to the local file list if it is a source file
5896 //if (g_isSource && g_includeStack.isEmpty())
5898 // g_fileDefineDict->insert(g_defName,nd);
5901 else if (def /*&& macroIsAccessible(def)*/)
5902 // name already exists
5904 //printf("existing define!\n");
5905 //printf("define found\n");
5906 if (def->undef) // undefined name
5909 def->name = g_defName;
5910 def->definition = g_defText.stripWhiteSpace();
5911 def->nargs = g_defArgs;
5912 def->fileName = g_yyFileName.copy();
5913 def->lineNr = g_yyLineNr;
5917 //printf("error: define %s is defined more than once!\n",g_defName.data());
5920 delete g_argDict; g_argDict=0;
5922 g_lastGuardName.resize(0);
5929 { g_defText += ' '; g_defLitText+=preYYtext; }
5934 { g_defText += "##"; g_defLitText+=preYYtext; }
5939 { g_defText += "@@"; g_defLitText+=preYYtext; }
5945 g_defText += *preYYtext;
5946 g_defLitText+=preYYtext;
5947 if (!g_insideComment)
5949 BEGIN(SkipDoubleQuote);
5956 { g_defText += *preYYtext;
5957 g_defLitText+=preYYtext;
5958 if (!g_insideComment)
5960 BEGIN(SkipSingleQuote);
5967 { g_defText += preYYtext; g_defLitText+=preYYtext; }
5972 { g_defText += preYYtext; g_defLitText+=preYYtext; }
5978 g_defText += *preYYtext; g_defLitText+=preYYtext;
5986 g_defText += preYYtext; g_defLitText+=preYYtext;
5993 g_defText += *preYYtext; g_defLitText+=preYYtext;
6000 { g_defText += *preYYtext; g_defLitText+=preYYtext; }
6005 { g_defText += *preYYtext; g_defLitText+=preYYtext; }
6010 { g_defText += *preYYtext; g_defLitText+=preYYtext; }
6012 case YY_STATE_EOF(INITIAL):
6013 case YY_STATE_EOF(Start):
6014 case YY_STATE_EOF(Command):
6015 case YY_STATE_EOF(SkipCommand):
6016 case YY_STATE_EOF(SkipLine):
6017 case YY_STATE_EOF(SkipString):
6018 case YY_STATE_EOF(CopyLine):
6019 case YY_STATE_EOF(CopyString):
6020 case YY_STATE_EOF(Include):
6021 case YY_STATE_EOF(IncludeID):
6022 case YY_STATE_EOF(EndImport):
6023 case YY_STATE_EOF(DefName):
6024 case YY_STATE_EOF(DefineArg):
6025 case YY_STATE_EOF(DefineText):
6026 case YY_STATE_EOF(SkipCPPBlock):
6027 case YY_STATE_EOF(Ifdef):
6028 case YY_STATE_EOF(Ifndef):
6029 case YY_STATE_EOF(SkipCComment):
6030 case YY_STATE_EOF(CopyCComment):
6031 case YY_STATE_EOF(SkipVerbatim):
6032 case YY_STATE_EOF(SkipCPPComment):
6033 case YY_STATE_EOF(RemoveCComment):
6034 case YY_STATE_EOF(RemoveCPPComment):
6035 case YY_STATE_EOF(Guard):
6036 case YY_STATE_EOF(DefinedExpr1):
6037 case YY_STATE_EOF(DefinedExpr2):
6038 case YY_STATE_EOF(SkipDoubleQuote):
6039 case YY_STATE_EOF(SkipSingleQuote):
6040 case YY_STATE_EOF(UndefName):
6041 case YY_STATE_EOF(IgnoreLine):
6042 case YY_STATE_EOF(FindDefineArgs):
6043 case YY_STATE_EOF(ReadString):
6044 case YY_STATE_EOF(CondLine):
6047 //fprintf(stderr,"End of include file\n");
6048 //printf("Include stack depth=%d\n",g_includeStack.count());
6049 if (g_includeStack.isEmpty())
6051 //fprintf(stderr,"Terminating scanner!\n");
6056 FileState *fs=g_includeStack.pop();
6057 //fileDefineCache->merge(g_yyFileName,fs->fileName);
6058 YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER;
6059 preYY_switch_to_buffer(fs->bufState );
6060 preYY_delete_buffer(oldBuf );
6061 g_yyLineNr = fs->lineNr;
6062 //preYYin = fs->oldYYin;
6063 g_inputBuf = fs->oldFileBuf;
6064 g_inputBufPos = fs->oldFileBufPos;
6065 setFileName(fs->fileName);
6066 //fprintf(stderr,"######## FileName %s\n",g_yyFileName.data());
6068 // Deal with file changes due to
6069 // #include's within { .. } blocks
6070 QCString lineStr(15+g_yyFileName.length());
6071 lineStr.sprintf("# %d \"%s\" 2",g_yyLineNr,g_yyFileName.data());
6072 outputArray(lineStr.data(),lineStr.length());
6079 *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
6080 (yy_c_buf_p) = yy_cp = yy_bp + 2;
6081 YY_DO_BEFORE_ACTION; /* set up preYYtext again */
6087 outputArray(preYYtext,preYYleng);
6088 g_lastCContext=YY_START;
6090 if (preYYleng==3) g_lastGuardName.resize(0); // reset guard in case the #define is documented!
6091 BEGIN(SkipCComment);
6098 outputArray(preYYtext,preYYleng);
6099 g_lastCPPContext=YY_START;
6100 if (preYYleng==3) g_lastGuardName.resize(0); // reset guard in case the #define is documented!
6101 BEGIN(SkipCPPComment);
6105 /* rule 167 can match eol */
6117 g_expectGuard = FALSE;
6118 outputChar(*preYYtext);
6126 #line 6127 "<stdout>"
6128 case YY_END_OF_BUFFER:
6130 /* Amount of text matched not including the EOB char. */
6131 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6133 /* Undo the effects of YY_DO_BEFORE_ACTION. */
6134 *yy_cp = (yy_hold_char);
6135 YY_RESTORE_YY_MORE_OFFSET
6137 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6139 /* We're scanning a new file or input source. It's
6140 * possible that this happened because the user
6141 * just pointed preYYin at a new source and called
6142 * preYYlex(). If so, then we have to assure
6143 * consistency between YY_CURRENT_BUFFER and our
6144 * globals. Here is the right place to do so, because
6145 * this is the first action (other than possibly a
6146 * back-up) that will match for the new input source.
6148 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6149 YY_CURRENT_BUFFER_LVALUE->yy_input_file = preYYin;
6150 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6153 /* Note that here we test for yy_c_buf_p "<=" to the position
6154 * of the first EOB in the buffer, since yy_c_buf_p will
6155 * already have been incremented past the NUL character
6156 * (since all states make transitions on EOB to the
6157 * end-of-buffer state). Contrast this with the test
6160 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6161 { /* This was really a NUL. */
6162 yy_state_type yy_next_state;
6164 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6166 yy_current_state = yy_get_previous_state( );
6168 /* Okay, we're now positioned to make the NUL
6169 * transition. We couldn't have
6170 * yy_get_previous_state() go ahead and do it
6171 * for us because it doesn't know how to deal
6172 * with the possibility of jamming (and we don't
6173 * want to build jamming into it because then it
6174 * will run more slowly).
6177 yy_next_state = yy_try_NUL_trans( yy_current_state );
6179 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6181 if ( yy_next_state )
6183 /* Consume the NUL. */
6184 yy_cp = ++(yy_c_buf_p);
6185 yy_current_state = yy_next_state;
6191 yy_cp = (yy_c_buf_p);
6192 goto yy_find_action;
6196 else switch ( yy_get_next_buffer( ) )
6198 case EOB_ACT_END_OF_FILE:
6200 (yy_did_buffer_switch_on_eof) = 0;
6204 /* Note: because we've taken care in
6205 * yy_get_next_buffer() to have set up
6206 * preYYtext, we can now set up
6207 * yy_c_buf_p so that if some total
6208 * hoser (like flex itself) wants to
6209 * call the scanner after we return the
6210 * YY_NULL, it'll still work - another
6211 * YY_NULL will get returned.
6213 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
6215 yy_act = YY_STATE_EOF(YY_START);
6221 if ( ! (yy_did_buffer_switch_on_eof) )
6227 case EOB_ACT_CONTINUE_SCAN:
6229 (yytext_ptr) + yy_amount_of_matched_text;
6231 yy_current_state = yy_get_previous_state( );
6233 yy_cp = (yy_c_buf_p);
6234 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6237 case EOB_ACT_LAST_MATCH:
6239 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6241 yy_current_state = yy_get_previous_state( );
6243 yy_cp = (yy_c_buf_p);
6244 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6245 goto yy_find_action;
6252 "fatal flex scanner internal error--no action found" );
6253 } /* end of action switch */
6254 } /* end of scanning one token */
6255 } /* end of preYYlex */
6257 /* yy_get_next_buffer - try to read in a new buffer
6259 * Returns a code representing an action:
6260 * EOB_ACT_LAST_MATCH -
6261 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6262 * EOB_ACT_END_OF_FILE - end of file
6264 static int yy_get_next_buffer (void)
6266 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6267 register char *source = (yytext_ptr);
6268 register int number_to_move, i;
6271 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
6273 "fatal flex scanner internal error--end of buffer missed" );
6275 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6276 { /* Don't try to fill the buffer, so this is an EOF. */
6277 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6279 /* We matched a single character, the EOB, so
6280 * treat this as a final EOF.
6282 return EOB_ACT_END_OF_FILE;
6287 /* We matched some text prior to the EOB, first
6290 return EOB_ACT_LAST_MATCH;
6294 /* Try to read more data. */
6296 /* First move last chars to start of buffer. */
6297 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6299 for ( i = 0; i < number_to_move; ++i )
6300 *(dest++) = *(source++);
6302 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6303 /* don't do the read, it's not guaranteed to return an EOF,
6306 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6310 yy_size_t num_to_read =
6311 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6313 while ( num_to_read <= 0 )
6314 { /* Not enough room in the buffer - grow it. */
6317 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
6321 if ( num_to_read > YY_READ_BUF_SIZE )
6322 num_to_read = YY_READ_BUF_SIZE;
6324 /* Read in more data. */
6325 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6326 (yy_n_chars), num_to_read );
6328 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6331 if ( (yy_n_chars) == 0 )
6333 if ( number_to_move == YY_MORE_ADJ )
6335 ret_val = EOB_ACT_END_OF_FILE;
6336 preYYrestart(preYYin );
6341 ret_val = EOB_ACT_LAST_MATCH;
6342 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6343 YY_BUFFER_EOF_PENDING;
6348 ret_val = EOB_ACT_CONTINUE_SCAN;
6350 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6351 /* Extend the array by 50%, plus the number we really need. */
6352 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6353 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) preYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
6354 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6355 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6358 (yy_n_chars) += number_to_move;
6359 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
6360 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
6362 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6367 /* yy_get_previous_state - get the state just before the EOB char was reached */
6369 static yy_state_type yy_get_previous_state (void)
6371 register yy_state_type yy_current_state;
6372 register char *yy_cp;
6374 yy_current_state = (yy_start);
6375 yy_current_state += YY_AT_BOL();
6377 (yy_state_ptr) = (yy_state_buf);
6378 *(yy_state_ptr)++ = yy_current_state;
6380 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6382 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 57);
6383 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6385 yy_current_state = (int) yy_def[yy_current_state];
6386 if ( yy_current_state >= 1172 )
6387 yy_c = yy_meta[(unsigned int) yy_c];
6389 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6390 *(yy_state_ptr)++ = yy_current_state;
6393 return yy_current_state;
6396 /* yy_try_NUL_trans - try to make a transition on the NUL character
6399 * next_state = yy_try_NUL_trans( current_state );
6401 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
6403 register int yy_is_jam;
6405 register YY_CHAR yy_c = 57;
6406 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6408 yy_current_state = (int) yy_def[yy_current_state];
6409 if ( yy_current_state >= 1172 )
6410 yy_c = yy_meta[(unsigned int) yy_c];
6412 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6413 yy_is_jam = (yy_current_state == 1171);
6415 *(yy_state_ptr)++ = yy_current_state;
6417 return yy_is_jam ? 0 : yy_current_state;
6420 static void yyunput (int c, register char * yy_bp )
6422 register char *yy_cp;
6424 yy_cp = (yy_c_buf_p);
6426 /* undo effects of setting up preYYtext */
6427 *yy_cp = (yy_hold_char);
6429 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6430 { /* need to shift things up to make room */
6431 /* +2 for EOB chars. */
6432 register yy_size_t number_to_move = (yy_n_chars) + 2;
6433 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
6434 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
6435 register char *source =
6436 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
6438 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6439 *--dest = *--source;
6441 yy_cp += (int) (dest - source);
6442 yy_bp += (int) (dest - source);
6443 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6444 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6446 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6447 YY_FATAL_ERROR( "flex scanner push-back overflow" );
6450 *--yy_cp = (char) c;
6452 (yytext_ptr) = yy_bp;
6453 (yy_hold_char) = *yy_cp;
6454 (yy_c_buf_p) = yy_cp;
6459 static int yyinput (void)
6461 static int input (void)
6467 *(yy_c_buf_p) = (yy_hold_char);
6469 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6471 /* yy_c_buf_p now points to the character we want to return.
6472 * If this occurs *before* the EOB characters, then it's a
6473 * valid NUL; if not, then we've hit the end of the buffer.
6475 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6476 /* This was really a NUL. */
6477 *(yy_c_buf_p) = '\0';
6480 { /* need more input */
6481 yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
6484 switch ( yy_get_next_buffer( ) )
6486 case EOB_ACT_LAST_MATCH:
6487 /* This happens because yy_g_n_b()
6488 * sees that we've accumulated a
6489 * token and flags that we need to
6490 * try matching the token before
6491 * proceeding. But for input(),
6492 * there's no matching to consider.
6493 * So convert the EOB_ACT_LAST_MATCH
6494 * to EOB_ACT_END_OF_FILE.
6497 /* Reset buffer status. */
6498 preYYrestart(preYYin );
6502 case EOB_ACT_END_OF_FILE:
6507 if ( ! (yy_did_buffer_switch_on_eof) )
6516 case EOB_ACT_CONTINUE_SCAN:
6517 (yy_c_buf_p) = (yytext_ptr) + offset;
6523 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
6524 *(yy_c_buf_p) = '\0'; /* preserve preYYtext */
6525 (yy_hold_char) = *++(yy_c_buf_p);
6527 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
6531 #endif /* ifndef YY_NO_INPUT */
6533 /** Immediately switch to a different input stream.
6534 * @param input_file A readable stream.
6536 * @note This function does not reset the start condition to @c INITIAL .
6538 void preYYrestart (FILE * input_file )
6541 if ( ! YY_CURRENT_BUFFER ){
6542 preYYensure_buffer_stack ();
6543 YY_CURRENT_BUFFER_LVALUE =
6544 preYY_create_buffer(preYYin,YY_BUF_SIZE );
6547 preYY_init_buffer(YY_CURRENT_BUFFER,input_file );
6548 preYY_load_buffer_state( );
6551 /** Switch to a different input buffer.
6552 * @param new_buffer The new input buffer.
6555 void preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
6558 /* TODO. We should be able to replace this entire function body
6560 * preYYpop_buffer_state();
6561 * preYYpush_buffer_state(new_buffer);
6563 preYYensure_buffer_stack ();
6564 if ( YY_CURRENT_BUFFER == new_buffer )
6567 if ( YY_CURRENT_BUFFER )
6569 /* Flush out information for old buffer. */
6570 *(yy_c_buf_p) = (yy_hold_char);
6571 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6572 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6575 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6576 preYY_load_buffer_state( );
6578 /* We don't actually know whether we did this switch during
6579 * EOF (preYYwrap()) processing, but the only time this flag
6580 * is looked at is after preYYwrap() is called, so it's safe
6581 * to go ahead and always set it.
6583 (yy_did_buffer_switch_on_eof) = 1;
6586 static void preYY_load_buffer_state (void)
6588 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6589 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6590 preYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6591 (yy_hold_char) = *(yy_c_buf_p);
6594 /** Allocate and initialize an input buffer state.
6595 * @param file A readable stream.
6596 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6598 * @return the allocated buffer state.
6600 YY_BUFFER_STATE preYY_create_buffer (FILE * file, int size )
6604 b = (YY_BUFFER_STATE) preYYalloc(sizeof( struct yy_buffer_state ) );
6606 YY_FATAL_ERROR( "out of dynamic memory in preYY_create_buffer()" );
6608 b->yy_buf_size = size;
6610 /* yy_ch_buf has to be 2 characters longer than the size given because
6611 * we need to put in 2 end-of-buffer characters.
6613 b->yy_ch_buf = (char *) preYYalloc(b->yy_buf_size + 2 );
6614 if ( ! b->yy_ch_buf )
6615 YY_FATAL_ERROR( "out of dynamic memory in preYY_create_buffer()" );
6617 b->yy_is_our_buffer = 1;
6619 preYY_init_buffer(b,file );
6624 /** Destroy the buffer.
6625 * @param b a buffer created with preYY_create_buffer()
6628 void preYY_delete_buffer (YY_BUFFER_STATE b )
6634 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6635 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6637 if ( b->yy_is_our_buffer )
6638 preYYfree((void *) b->yy_ch_buf );
6640 preYYfree((void *) b );
6644 extern int isatty (int );
6645 #endif /* __cplusplus */
6647 /* Initializes or reinitializes a buffer.
6648 * This function is sometimes called more than once on the same buffer,
6649 * such as during a preYYrestart() or at EOF.
6651 static void preYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
6656 preYY_flush_buffer(b );
6658 b->yy_input_file = file;
6659 b->yy_fill_buffer = 1;
6661 /* If b is the current buffer, then preYY_init_buffer was _probably_
6662 * called from preYYrestart() or through yy_get_next_buffer.
6663 * In that case, we don't want to reset the lineno or column.
6665 if (b != YY_CURRENT_BUFFER){
6666 b->yy_bs_lineno = 1;
6667 b->yy_bs_column = 0;
6670 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6675 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6676 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6679 void preYY_flush_buffer (YY_BUFFER_STATE b )
6686 /* We always need two end-of-buffer characters. The first causes
6687 * a transition to the end-of-buffer state. The second causes
6688 * a jam in that state.
6690 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6691 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6693 b->yy_buf_pos = &b->yy_ch_buf[0];
6696 b->yy_buffer_status = YY_BUFFER_NEW;
6698 if ( b == YY_CURRENT_BUFFER )
6699 preYY_load_buffer_state( );
6702 /** Pushes the new state onto the stack. The new state becomes
6703 * the current state. This function will allocate the stack
6705 * @param new_buffer The new state.
6708 void preYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
6710 if (new_buffer == NULL)
6713 preYYensure_buffer_stack();
6715 /* This block is copied from preYY_switch_to_buffer. */
6716 if ( YY_CURRENT_BUFFER )
6718 /* Flush out information for old buffer. */
6719 *(yy_c_buf_p) = (yy_hold_char);
6720 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6721 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6724 /* Only push if top exists. Otherwise, replace top. */
6725 if (YY_CURRENT_BUFFER)
6726 (yy_buffer_stack_top)++;
6727 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6729 /* copied from preYY_switch_to_buffer. */
6730 preYY_load_buffer_state( );
6731 (yy_did_buffer_switch_on_eof) = 1;
6734 /** Removes and deletes the top of the stack, if present.
6735 * The next element becomes the new top.
6738 void preYYpop_buffer_state (void)
6740 if (!YY_CURRENT_BUFFER)
6743 preYY_delete_buffer(YY_CURRENT_BUFFER );
6744 YY_CURRENT_BUFFER_LVALUE = NULL;
6745 if ((yy_buffer_stack_top) > 0)
6746 --(yy_buffer_stack_top);
6748 if (YY_CURRENT_BUFFER) {
6749 preYY_load_buffer_state( );
6750 (yy_did_buffer_switch_on_eof) = 1;
6754 /* Allocates the stack if it does not exist.
6755 * Guarantees space for at least one push.
6757 static void preYYensure_buffer_stack (void)
6759 yy_size_t num_to_alloc;
6761 if (!(yy_buffer_stack)) {
6763 /* First allocation is just for 2 elements, since we don't know if this
6764 * scanner will even need a stack. We use 2 instead of 1 to avoid an
6765 * immediate realloc on the next call.
6768 (yy_buffer_stack) = (struct yy_buffer_state**)preYYalloc
6769 (num_to_alloc * sizeof(struct yy_buffer_state*)
6771 if ( ! (yy_buffer_stack) )
6772 YY_FATAL_ERROR( "out of dynamic memory in preYYensure_buffer_stack()" );
6774 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6776 (yy_buffer_stack_max) = num_to_alloc;
6777 (yy_buffer_stack_top) = 0;
6781 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6783 /* Increase the buffer to prepare for a possible push. */
6784 int grow_size = 8 /* arbitrary grow size */;
6786 num_to_alloc = (yy_buffer_stack_max) + grow_size;
6787 (yy_buffer_stack) = (struct yy_buffer_state**)preYYrealloc
6789 num_to_alloc * sizeof(struct yy_buffer_state*)
6791 if ( ! (yy_buffer_stack) )
6792 YY_FATAL_ERROR( "out of dynamic memory in preYYensure_buffer_stack()" );
6794 /* zero only the new slots.*/
6795 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6796 (yy_buffer_stack_max) = num_to_alloc;
6800 /** Setup the input buffer state to scan directly from a user-specified character buffer.
6801 * @param base the character buffer
6802 * @param size the size in bytes of the character buffer
6804 * @return the newly allocated buffer state object.
6806 YY_BUFFER_STATE preYY_scan_buffer (char * base, yy_size_t size )
6811 base[size-2] != YY_END_OF_BUFFER_CHAR ||
6812 base[size-1] != YY_END_OF_BUFFER_CHAR )
6813 /* They forgot to leave room for the EOB's. */
6816 b = (YY_BUFFER_STATE) preYYalloc(sizeof( struct yy_buffer_state ) );
6818 YY_FATAL_ERROR( "out of dynamic memory in preYY_scan_buffer()" );
6820 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
6821 b->yy_buf_pos = b->yy_ch_buf = base;
6822 b->yy_is_our_buffer = 0;
6823 b->yy_input_file = 0;
6824 b->yy_n_chars = b->yy_buf_size;
6825 b->yy_is_interactive = 0;
6827 b->yy_fill_buffer = 0;
6828 b->yy_buffer_status = YY_BUFFER_NEW;
6830 preYY_switch_to_buffer(b );
6835 /** Setup the input buffer state to scan a string. The next call to preYYlex() will
6836 * scan from a @e copy of @a str.
6837 * @param yystr a NUL-terminated string to scan
6839 * @return the newly allocated buffer state object.
6840 * @note If you want to scan bytes that may contain NUL values, then use
6841 * preYY_scan_bytes() instead.
6843 YY_BUFFER_STATE preYY_scan_string (yyconst char * yystr )
6846 return preYY_scan_bytes(yystr,strlen(yystr) );
6849 /** Setup the input buffer state to scan the given bytes. The next call to preYYlex() will
6850 * scan from a @e copy of @a bytes.
6851 * @param bytes the byte buffer to scan
6852 * @param len the number of bytes in the buffer pointed to by @a bytes.
6854 * @return the newly allocated buffer state object.
6856 YY_BUFFER_STATE preYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
6862 /* Get memory for full buffer, including space for trailing EOB's. */
6863 n = _yybytes_len + 2;
6864 buf = (char *) preYYalloc(n );
6866 YY_FATAL_ERROR( "out of dynamic memory in preYY_scan_bytes()" );
6868 for ( i = 0; i < _yybytes_len; ++i )
6869 buf[i] = yybytes[i];
6871 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6873 b = preYY_scan_buffer(buf,n );
6875 YY_FATAL_ERROR( "bad buffer in preYY_scan_bytes()" );
6877 /* It's okay to grow etc. this buffer, and we should throw it
6878 * away when we're done.
6880 b->yy_is_our_buffer = 1;
6885 #ifndef YY_EXIT_FAILURE
6886 #define YY_EXIT_FAILURE 2
6889 static void yy_fatal_error (yyconst char* msg )
6891 (void) fprintf( stderr, "%s\n", msg );
6892 exit( YY_EXIT_FAILURE );
6895 /* Redefine yyless() so it works in section 3 code. */
6901 /* Undo effects of setting up preYYtext. */ \
6902 int yyless_macro_arg = (n); \
6903 YY_LESS_LINENO(yyless_macro_arg);\
6904 preYYtext[preYYleng] = (yy_hold_char); \
6905 (yy_c_buf_p) = preYYtext + yyless_macro_arg; \
6906 (yy_hold_char) = *(yy_c_buf_p); \
6907 *(yy_c_buf_p) = '\0'; \
6908 preYYleng = yyless_macro_arg; \
6912 /* Accessor methods (get/set functions) to struct members. */
6914 /** Get the current line number.
6917 int preYYget_lineno (void)
6923 /** Get the input stream.
6926 FILE *preYYget_in (void)
6931 /** Get the output stream.
6934 FILE *preYYget_out (void)
6939 /** Get the length of the current token.
6942 yy_size_t preYYget_leng (void)
6947 /** Get the current token.
6951 char *preYYget_text (void)
6956 /** Set the current line number.
6957 * @param line_number
6960 void preYYset_lineno (int line_number )
6963 preYYlineno = line_number;
6966 /** Set the input stream. This does not discard the current
6968 * @param in_str A readable stream.
6970 * @see preYY_switch_to_buffer
6972 void preYYset_in (FILE * in_str )
6977 void preYYset_out (FILE * out_str )
6979 preYYout = out_str ;
6982 int preYYget_debug (void)
6984 return preYY_flex_debug;
6987 void preYYset_debug (int bdebug )
6989 preYY_flex_debug = bdebug ;
6992 static int yy_init_globals (void)
6994 /* Initialization is the same as for the non-reentrant scanner.
6995 * This function is called from preYYlex_destroy(), so don't allocate here.
6998 (yy_buffer_stack) = 0;
6999 (yy_buffer_stack_top) = 0;
7000 (yy_buffer_stack_max) = 0;
7001 (yy_c_buf_p) = (char *) 0;
7007 (yy_full_match) = 0;
7010 /* Defined in main.c */
7015 preYYin = (FILE *) 0;
7016 preYYout = (FILE *) 0;
7019 /* For future reference: Set errno on error, since we are called by
7025 /* preYYlex_destroy is for both reentrant and non-reentrant scanners. */
7026 int preYYlex_destroy (void)
7029 /* Pop the buffer stack, destroying each element. */
7030 while(YY_CURRENT_BUFFER){
7031 preYY_delete_buffer(YY_CURRENT_BUFFER );
7032 YY_CURRENT_BUFFER_LVALUE = NULL;
7033 preYYpop_buffer_state();
7036 /* Destroy the stack itself. */
7037 preYYfree((yy_buffer_stack) );
7038 (yy_buffer_stack) = NULL;
7040 preYYfree ( (yy_state_buf) );
7041 (yy_state_buf) = NULL;
7043 /* Reset the globals. This is important in a non-reentrant scanner so the next time
7044 * preYYlex() is called, initialization will occur. */
7051 * Internal utility routines.
7055 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
7058 for ( i = 0; i < n; ++i )
7063 #ifdef YY_NEED_STRLEN
7064 static int yy_flex_strlen (yyconst char * s )
7067 for ( n = 0; s[n]; ++n )
7074 void *preYYalloc (yy_size_t size )
7076 return (void *) malloc( size );
7079 void *preYYrealloc (void * ptr, yy_size_t size )
7081 /* The cast to (char *) in the following accommodates both
7082 * implementations that use char* generic pointers, and those
7083 * that use void* generic pointers. It works with the latter
7084 * because both ANSI C and C++ allow castless assignment from
7085 * any pointer type to void*, and deal with argument conversions
7086 * as though doing an assignment.
7088 return (void *) realloc( (char *) ptr, size );
7091 void preYYfree (void * ptr )
7093 free( (char *) ptr ); /* see preYYrealloc() for (char *) cast */
7096 #define YYTABLES_NAME "yytables"
7102 /*@ ----------------------------------------------------------------------------
7105 static int getNextChar(const QCString &expr,QCString *rest,uint &pos)
7107 //printf("getNextChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
7108 if (pos<expr.length())
7110 //printf("%c=expr()\n",expr.at(pos));
7111 return expr.at(pos++);
7113 else if (rest && !rest->isEmpty())
7116 *rest=rest->right(rest->length()-1);
7117 //printf("%c=rest\n",cc);
7123 //printf("%c=yyinput()\n",cc);
7128 static int getCurrentChar(const QCString &expr,QCString *rest,uint pos)
7130 //printf("getCurrentChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
7131 if (pos<expr.length())
7133 //printf("%c=expr()\n",expr.at(pos));
7134 return expr.at(pos);
7136 else if (rest && !rest->isEmpty())
7139 //printf("%c=rest\n",cc);
7145 returnCharToStream(cc);
7147 //printf("%c=yyinput()\n",cc);
7152 static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c)
7154 //printf("unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
7155 if (pos<expr.length())
7161 //printf("Prepending to rest!\n");
7162 char cs[2];cs[0]=c;cs[1]='\0';
7168 returnCharToStream(c);
7170 //printf("result: unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
7173 void addSearchDir(const char *dir)
7176 if (fi.isDir()) g_pathList->append(fi.absFilePath().utf8());
7179 void initPreprocessor()
7181 g_pathList = new QStrList;
7183 g_expandedDict = new DefineDict(17);
7186 void cleanUpPreprocessor()
7188 delete g_expandedDict; g_expandedDict=0;
7189 delete g_pathList; g_pathList=0;
7190 DefineManager::deleteInstance();
7194 void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
7196 uint orgOffset=output.curPos();
7197 //printf("##########################\n%s\n####################\n",
7200 g_macroExpansion = Config_getBool("MACRO_EXPANSION");
7201 g_expandOnlyPredef = Config_getBool("EXPAND_ONLY_PREDEF");
7206 g_outputBuf=&output;
7207 g_includeStack.setAutoDelete(TRUE);
7208 g_includeStack.clear();
7209 g_expandedDict->setAutoDelete(FALSE);
7210 g_expandedDict->clear();
7211 g_condStack.clear();
7212 g_condStack.setAutoDelete(TRUE);
7213 //g_fileDefineDict->clear();
7215 setFileName(fileName);
7216 g_inputFileDef = g_yyFileDef;
7217 DefineManager::instance().startContext(g_yyFileName);
7219 static bool firstTime=TRUE;
7222 // add predefined macros
7224 QStrList &predefList = Config_getList("PREDEFINED");
7225 QStrListIterator sli(predefList);
7226 for (sli.toFirst();(defStr=sli.current());++sli)
7228 QCString ds = defStr;
7229 int i_equals=ds.find('=');
7230 int i_obrace=ds.find('(');
7231 int i_cbrace=ds.find(')');
7232 bool nonRecursive = i_equals>0 && ds.at(i_equals-1)==':';
7234 if (i_obrace==0) continue; // no define name
7236 if (i_obrace<i_equals && i_cbrace<i_equals &&
7237 i_obrace!=-1 && i_cbrace!=-1 &&
7239 ) // predefined function macro definition
7241 //printf("predefined function macro '%s'\n",defStr);
7242 QRegExp reId("[a-z_A-Z][a-z_A-Z0-9]*"); // regexp matching an id
7243 QDict<int> argDict(17);
7244 argDict.setAutoDelete(TRUE);
7245 int i=i_obrace+1,p,l,count=0;
7246 // gather the formal arguments in a dictionary
7247 while (i<i_cbrace && (p=reId.match(ds,i,&l)))
7249 argDict.insert(ds.mid(p,l),new int(count++));
7252 // strip definition part
7253 QCString tmp=ds.right(ds.length()-i_equals-1);
7254 QCString definition;
7256 // substitute all occurrences of formal arguments by their
7257 // corresponding markers
7258 while ((p=reId.match(tmp,i,&l))!=-1)
7260 if (p>i) definition+=tmp.mid(i,p-i);
7262 if ((argIndex=argDict[tmp.mid(p,l)])!=0)
7265 marker.sprintf(" @%d ",*argIndex);
7270 definition+=tmp.mid(p,l);
7274 if (i<(int)tmp.length()) definition+=tmp.mid(i,tmp.length()-i);
7276 // add define definition to the dictionary of defines for this file
7277 QCString dname = ds.left(i_obrace);
7278 if (!dname.isEmpty())
7280 Define *def = new Define;
7282 def->definition = definition;
7284 def->isPredefined = TRUE;
7285 def->nonRecursive = nonRecursive;
7286 def->fileDef = g_yyFileDef;
7287 def->fileName = fileName;
7288 DefineManager::instance().addDefine(g_yyFileName,def);
7291 //printf("#define `%s' `%s' #nargs=%d\n",
7292 // def->name.data(),def->definition.data(),def->nargs);
7294 else if ((i_obrace==-1 || i_obrace>i_equals) &&
7295 (i_cbrace==-1 || i_cbrace>i_equals) &&
7296 !ds.isEmpty() && (int)ds.length()>i_equals
7297 ) // predefined non-function macro definition
7299 //printf("predefined normal macro '%s'\n",defStr);
7300 Define *def = new Define;
7301 if (i_equals==-1) // simple define without argument
7304 def->definition = "1"; // substitute occurrences by 1 (true)
7306 else // simple define with argument
7308 int ine=i_equals - (nonRecursive ? 1 : 0);
7309 def->name = ds.left(ine);
7310 def->definition = ds.right(ds.length()-i_equals-1);
7312 if (!def->name.isEmpty())
7315 def->isPredefined = TRUE;
7316 def->nonRecursive = nonRecursive;
7317 def->fileDef = g_yyFileDef;
7318 def->fileName = fileName;
7319 DefineManager::instance().addDefine(g_yyFileName,def);
7326 //printf("#define `%s' `%s' #nargs=%d\n",
7327 // def->name.data(),def->definition.data(),def->nargs);
7339 g_expectGuard = guessSection(fileName)==Entry::HEADER_SEC;
7340 g_guardName.resize(0);
7341 g_lastGuardName.resize(0);
7342 g_guardExpr.resize(0);
7347 // make sure we don't extend a \cond with missing \endcond over multiple files (see bug 624829)
7348 forceEndCondSection();
7350 // remove locally defined macros so they can be redefined in another source file
7351 //if (g_fileDefineDict->count()>0)
7353 // QDictIterator<Define> di(*g_fileDefineDict);
7355 // for (di.toFirst();(d=di.current());++di)
7357 // g_globalDefineDict->remove(di.currentKey());
7359 // g_fileDefineDict->clear();
7362 if (Debug::isFlagSet(Debug::Preprocessor))
7364 char *orgPos=output.data()+orgOffset;
7365 char *newPos=output.data()+output.curPos();
7366 Debug::print(Debug::Preprocessor,0,"Preprocessor output (size: %d bytes):\n",newPos-orgPos);
7368 Debug::print(Debug::Preprocessor,0,"---------\n00001 ");
7369 while (orgPos<newPos)
7372 if (*orgPos=='\n') Debug::print(Debug::Preprocessor,0,"%05d ",++line);
7375 Debug::print(Debug::Preprocessor,0,"\n---------\n");
7376 if (DefineManager::instance().defineContext().count()>0)
7378 Debug::print(Debug::Preprocessor,0,"Macros accessible in this file:\n");
7379 Debug::print(Debug::Preprocessor,0,"---------\n");
7380 QDictIterator<Define> di(DefineManager::instance().defineContext());
7382 for (di.toFirst();(def=di.current());++di)
7384 Debug::print(Debug::Preprocessor,0,"%s ",def->name.data());
7386 Debug::print(Debug::Preprocessor,0,"\n---------\n");
7390 Debug::print(Debug::Preprocessor,0,"No macros accessible in this file.\n");
7393 DefineManager::instance().endContext();
7396 void preFreeScanner()
7398 #if defined(YY_FLEX_SUBMINOR_VERSION)
7406 #if !defined(YY_FLEX_SUBMINOR_VERSION)
7407 extern "C" { // some bogus code to keep the compiler happy
7408 // int preYYwrap() { return 1 ; }
7409 void preYYdummy() { yy_flex_realloc(0,0); }