Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/pre.cpp

Source at commit 1322 created 12 years 8 months ago.
By meklort, Add doxygen to utils folder
1
2#line 3 "<stdout>"
3
4#define YY_INT_ALIGNED short int
5
6/* A lexical scanner generated by flex */
7
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
15#define yyin preYYin
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
26
27#define FLEX_SCANNER
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
32#define FLEX_BETA
33#endif
34
35/* First, we deal with platform-specific or compiler-specific issues. */
36
37/* begin standard C headers. */
38#include <stdio.h>
39#include <string.h>
40#include <errno.h>
41#include <stdlib.h>
42
43/* end standard C headers. */
44
45/* flex integer type definitions */
46
47#ifndef FLEXINT_H
48#define FLEXINT_H
49
50/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
56 */
57#ifndef __STDC_LIMIT_MACROS
58#define __STDC_LIMIT_MACROS 1
59#endif
60
61#include <inttypes.h>
62typedef int8_t flex_int8_t;
63typedef uint8_t flex_uint8_t;
64typedef int16_t flex_int16_t;
65typedef uint16_t flex_uint16_t;
66typedef int32_t flex_int32_t;
67typedef uint32_t flex_uint32_t;
68#else
69typedef signed char flex_int8_t;
70typedef short int flex_int16_t;
71typedef int flex_int32_t;
72typedef unsigned char flex_uint8_t;
73typedef unsigned short int flex_uint16_t;
74typedef unsigned int flex_uint32_t;
75#endif /* ! C99 */
76
77/* Limits of integral types. */
78#ifndef INT8_MIN
79#define INT8_MIN (-128)
80#endif
81#ifndef INT16_MIN
82#define INT16_MIN (-32767-1)
83#endif
84#ifndef INT32_MIN
85#define INT32_MIN (-2147483647-1)
86#endif
87#ifndef INT8_MAX
88#define INT8_MAX (127)
89#endif
90#ifndef INT16_MAX
91#define INT16_MAX (32767)
92#endif
93#ifndef INT32_MAX
94#define INT32_MAX (2147483647)
95#endif
96#ifndef UINT8_MAX
97#define UINT8_MAX (255U)
98#endif
99#ifndef UINT16_MAX
100#define UINT16_MAX (65535U)
101#endif
102#ifndef UINT32_MAX
103#define UINT32_MAX (4294967295U)
104#endif
105
106#endif /* ! FLEXINT_H */
107
108#ifdef __cplusplus
109
110/* The "const" storage-class-modifier is valid. */
111#define YY_USE_CONST
112
113#else/* ! __cplusplus */
114
115/* C99 requires __STDC__ to be defined as 1. */
116#if defined (__STDC__)
117
118#define YY_USE_CONST
119
120#endif/* defined (__STDC__) */
121#endif/* ! __cplusplus */
122
123#ifdef YY_USE_CONST
124#define yyconst const
125#else
126#define yyconst
127#endif
128
129/* Returned upon end-of-file. */
130#define YY_NULL 0
131
132/* Promotes a possibly negative, possibly signed char to an unsigned
133 * integer for use as an array index. If the signed char is negative,
134 * we want to instead treat it as an 8-bit unsigned char, hence the
135 * double cast.
136 */
137#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
138
139/* Enter a start condition. This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143#define BEGIN (yy_start) = 1 + 2 *
144
145/* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state. The YYSTATE alias is for lex
147 * compatibility.
148 */
149#define YY_START (((yy_start) - 1) / 2)
150#define YYSTATE YY_START
151
152/* Action number for EOF rule of a given start state. */
153#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155/* Special action meaning "start processing a new file". */
156#define YY_NEW_FILE preYYrestart(preYYin )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#define YY_BUF_SIZE 262144
163#endif
164
165/* The state buf must be large enough to hold one state per character in the main buffer.
166 */
167#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168
169#ifndef YY_TYPEDEF_YY_BUFFER_STATE
170#define YY_TYPEDEF_YY_BUFFER_STATE
171typedef struct yy_buffer_state *YY_BUFFER_STATE;
172#endif
173
174#ifndef YY_TYPEDEF_YY_SIZE_T
175#define YY_TYPEDEF_YY_SIZE_T
176typedef size_t yy_size_t;
177#endif
178
179extern yy_size_t preYYleng;
180
181extern FILE *preYYin, *preYYout;
182
183#define EOB_ACT_CONTINUE_SCAN 0
184#define EOB_ACT_END_OF_FILE 1
185#define EOB_ACT_LAST_MATCH 2
186
187 #define YY_LESS_LINENO(n)
188
189/* Return all but the first "n" matched characters back to the input stream. */
190#define yyless(n) \
191do \
192{ \
193/* Undo effects of setting up preYYtext. */ \
194 int yyless_macro_arg = (n); \
195 YY_LESS_LINENO(yyless_macro_arg);\
196*yy_cp = (yy_hold_char); \
197YY_RESTORE_YY_MORE_OFFSET \
198(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
199YY_DO_BEFORE_ACTION; /* set up preYYtext again */ \
200} \
201while ( 0 )
202
203#define unput(c) yyunput( c, (yytext_ptr) )
204
205#ifndef YY_STRUCT_YY_BUFFER_STATE
206#define YY_STRUCT_YY_BUFFER_STATE
207struct yy_buffer_state
208{
209FILE *yy_input_file;
210
211char *yy_ch_buf;/* input buffer */
212char *yy_buf_pos;/* current position in input buffer */
213
214/* Size of input buffer in bytes, not including room for EOB
215 * characters.
216 */
217yy_size_t yy_buf_size;
218
219/* Number of characters read into yy_ch_buf, not including EOB
220 * characters.
221 */
222yy_size_t yy_n_chars;
223
224/* Whether we "own" the buffer - i.e., we know we created it,
225 * and can realloc() it to grow it, and should free() it to
226 * delete it.
227 */
228int yy_is_our_buffer;
229
230/* Whether this is an "interactive" input source; if so, and
231 * if we're using stdio for input, then we want to use getc()
232 * instead of fread(), to make sure we stop fetching input after
233 * each newline.
234 */
235int yy_is_interactive;
236
237/* Whether we're considered to be at the beginning of a line.
238 * If so, '^' rules will be active on the next match, otherwise
239 * not.
240 */
241int yy_at_bol;
242
243 int yy_bs_lineno; /**< The line count. */
244 int yy_bs_column; /**< The column count. */
245
246/* Whether to try to fill the input buffer when we reach the
247 * end of it.
248 */
249int yy_fill_buffer;
250
251int yy_buffer_status;
252
253#define YY_BUFFER_NEW 0
254#define YY_BUFFER_NORMAL 1
255/* When an EOF's been seen but there's still some text to process
256 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
257 * shouldn't try reading from the input source any more. We might
258 * still have a bunch of tokens to match, though, because of
259 * possible backing-up.
260 *
261 * When we actually see the EOF, we change the status to "new"
262 * (via preYYrestart()), so that the user can continue scanning by
263 * just pointing preYYin at a new input file.
264 */
265#define YY_BUFFER_EOF_PENDING 2
266
267};
268#endif /* !YY_STRUCT_YY_BUFFER_STATE */
269
270/* Stack of input buffers. */
271static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
272static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
273static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
274
275/* We provide macros for accessing buffer states in case in the
276 * future we want to put the buffer states in a more general
277 * "scanner state".
278 *
279 * Returns the top of the stack, or NULL.
280 */
281#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
282 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
283 : NULL)
284
285/* Same as previous macro, but useful when we know that the buffer stack is not
286 * NULL or when we need an lvalue. For internal use only.
287 */
288#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
289
290/* yy_hold_char holds the character lost when preYYtext is formed. */
291static char yy_hold_char;
292static yy_size_t yy_n_chars;/* number of characters read into yy_ch_buf */
293yy_size_t preYYleng;
294
295/* Points to current character in buffer. */
296static char *yy_c_buf_p = (char *) 0;
297static int yy_init = 0;/* whether we need to initialize */
298static int yy_start = 0;/* start state number */
299
300/* Flag which is used to allow preYYwrap()'s to do buffer switches
301 * instead of setting up a fresh preYYin. A bit of a hack ...
302 */
303static int yy_did_buffer_switch_on_eof;
304
305void preYYrestart (FILE *input_file );
306void preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
307YY_BUFFER_STATE preYY_create_buffer (FILE *file,int size );
308void preYY_delete_buffer (YY_BUFFER_STATE b );
309void preYY_flush_buffer (YY_BUFFER_STATE b );
310void preYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
311void preYYpop_buffer_state (void );
312
313static void preYYensure_buffer_stack (void );
314static void preYY_load_buffer_state (void );
315static void preYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
316
317#define YY_FLUSH_BUFFER preYY_flush_buffer(YY_CURRENT_BUFFER )
318
319YY_BUFFER_STATE preYY_scan_buffer (char *base,yy_size_t size );
320YY_BUFFER_STATE preYY_scan_string (yyconst char *yy_str );
321YY_BUFFER_STATE preYY_scan_bytes (yyconst char *bytes,yy_size_t len );
322
323void *preYYalloc (yy_size_t );
324void *preYYrealloc (void *,yy_size_t );
325void preYYfree (void * );
326
327#define yy_new_buffer preYY_create_buffer
328
329#define yy_set_interactive(is_interactive) \
330{ \
331if ( ! YY_CURRENT_BUFFER ){ \
332 preYYensure_buffer_stack (); \
333YY_CURRENT_BUFFER_LVALUE = \
334 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
335} \
336YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
337}
338
339#define yy_set_bol(at_bol) \
340{ \
341if ( ! YY_CURRENT_BUFFER ){\
342 preYYensure_buffer_stack (); \
343YY_CURRENT_BUFFER_LVALUE = \
344 preYY_create_buffer(preYYin,YY_BUF_SIZE ); \
345} \
346YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
347}
348
349#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
350
351/* Begin user sect3 */
352
353#define preYYwrap(n) 1
354#define YY_SKIP_YYWRAP
355
356typedef unsigned char YY_CHAR;
357
358FILE *preYYin = (FILE *) 0, *preYYout = (FILE *) 0;
359
360typedef int yy_state_type;
361
362extern int preYYlineno;
363
364int preYYlineno = 1;
365
366extern char *preYYtext;
367#define yytext_ptr preYYtext
368
369static yy_state_type yy_get_previous_state (void );
370static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
371static int yy_get_next_buffer (void );
372static void yy_fatal_error (yyconst char msg[] );
373
374/* Done after the current pattern has been matched and before the
375 * corresponding action - sets up preYYtext.
376 */
377#define YY_DO_BEFORE_ACTION \
378(yytext_ptr) = yy_bp; \
379preYYleng = (size_t) (yy_cp - yy_bp); \
380(yy_hold_char) = *yy_cp; \
381*yy_cp = '\0'; \
382(yy_c_buf_p) = yy_cp;
383
384#define YY_NUM_RULES 166
385#define YY_END_OF_BUFFER 167
386/* This struct is not used in this scanner,
387 but its presence is necessary. */
388struct yy_trans_info
389{
390flex_int32_t yy_verify;
391flex_int32_t yy_nxt;
392};
393static yyconst flex_int16_t yy_acclist[1240] =
394 { 0,
395 148, 148, 167, 165, 166, 1, 165, 166, 164, 166,
396 3, 165, 166, 165, 166, 165, 166, 2, 165, 166,
397 6, 165, 166, 1, 6, 165, 166, 6, 165, 166,
398 6, 164, 166, 3, 6, 165, 166, 5, 165, 166,
399 6, 165, 166, 6, 165, 166, 6, 165, 166, 2,
400 6, 165, 166, 53, 165, 166, 1, 53, 165, 166,
401 49, 164, 166, 3, 53, 165, 166, 53, 165, 166,
402 53, 165, 166, 50, 53, 165, 166, 50, 53, 165,
403 166, 50, 53, 165, 166, 50, 53, 165, 166, 50,
404 53, 165, 166, 50, 53, 165, 166, 2, 53, 165,
405
406 166, 77, 165, 166, 1, 77, 165, 166, 75, 164,
407 166, 3, 77, 165, 166, 77, 165, 166, 77, 165,
408 166, 76, 77, 165, 166, 76, 77, 165, 166, 76,
409 77, 165, 166, 2, 77, 165, 166, 78, 81, 165,
410 166, 1, 78, 81, 165, 166, 84, 164, 166, 3,
411 78, 81, 165, 166, 80, 81, 165, 166, 81, 165,
412 166, 81, 165, 166, 78, 81, 165, 166, 2, 78,
413 81, 165, 166, 85, 88, 165, 166, 1, 85, 88,
414 165, 166, 3, 85, 88, 165, 166, 87, 88, 165,
415 166, 85, 88, 165, 166, 85, 88, 165, 166, 88,
416
417 165, 166, 2, 85, 88, 165, 166, 23, 165, 166,
418 1, 23, 165, 166, 24, 164, 166, 3, 23, 165,
419 166, 16, 23, 165, 166, 23, 165, 166, 23, 165,
420 166, 23, 165, 166, 21, 23, 165, 166,16404, 23,
421 165, 166, 21, 23, 165, 166,16404, 11, 23, 165,
422 166, 12, 23, 165, 166, 2, 23, 165, 166, 17,
423 165, 166, 1, 17, 165, 166, 19, 165, 166, 17,
424 165, 166, 17, 165, 166, 165, 166, 2, 17, 165,
425 166, 165, 166, 1, 165, 166, 3, 165, 166, 165,
426 166, 165, 166, 2, 165, 166, 90, 165, 166, 94,
427
428 165, 166, 1, 94, 165, 166, 92, 164, 166, 3,
429 94, 165, 166, 94, 165, 166, 94, 165, 166, 94,
430 165, 166, 2, 94, 165, 166, 8289, 165, 166,16479,
431 16481,16482, 165, 166, 101, 165, 166, 102, 165, 166,
432 100, 165, 166, 165, 166, 104, 165, 166, 165, 166,
433 160, 165, 166, 1, 160, 165, 166, 148, 160, 165,
434 166, 147, 164, 166, 3, 160, 165, 166, 151, 160,
435 165, 166, 143, 160, 165, 166, 152, 160, 165, 166,
436 160, 165, 166, 160, 165, 166, 150, 160, 165, 166,
437 144, 160, 165, 166, 160, 165, 166, 2, 160, 165,
438
439 166, 70, 165, 166, 1, 70, 165, 166, 69, 164,
440 166, 3, 70, 165, 166, 70, 165, 166, 70, 165,
441 166, 2, 70, 165, 166, 68, 70, 165, 166, 1,
442 68, 70, 165, 166, 68, 70, 165, 166, 68, 69,
443 164, 166, 3, 68, 70, 165, 166, 67, 70, 165,
444 166, 68, 70, 165, 166, 68, 70, 165, 166, 2,
445 68, 70, 165, 166, 120, 122, 165, 166, 1, 122,
446 165, 166, 121, 164, 166, 3, 120, 122, 165, 166,
447 122, 165, 166, 122, 165, 166, 120, 122, 165, 166,
448 122, 165, 166, 2, 120, 122, 165, 166, 123, 145,
449
450 165, 166, 1, 123, 145, 165, 166, 125, 164, 166,
451 3, 123, 145, 165, 166, 145, 165, 166, 123, 145,
452 165, 166, 123, 145, 165, 166, 144, 145, 165, 166,
453 2, 123, 145, 165, 166, 122, 165, 166, 122, 165,
454 166, 122, 165, 166, 133, 137, 138, 165, 166, 1,
455 133, 138, 165, 166, 134, 164, 166, 3, 133, 137,
456 138, 165, 166, 137, 138, 165, 166, 133, 137, 138,
457 165, 166, 138, 165, 166, 2, 133, 137, 138, 165,
458 166, 130, 132, 165, 166, 1, 132, 165, 166, 131,
459 164, 166, 3, 130, 132, 165, 166, 132, 165, 166,
460
461 130, 132, 165, 166, 130, 132, 165, 166, 2, 130,
462 132, 165, 166, 141, 142, 165, 166, 1, 142, 165,
463 166, 3, 141, 142, 165, 166, 141, 142, 165, 166,
464 141, 142, 165, 166, 2, 141, 142, 165, 166, 59,
465 165, 166, 1, 59, 165, 166, 60, 164, 166, 3,
466 59, 165, 166, 59, 165, 166, 59, 165, 166, 58,
467 59, 165, 166, 59, 165, 166, 58, 59, 165, 166,
468 2, 59, 165, 166, 66, 165, 166, 1, 66, 165,
469 166, 64, 164, 166, 3, 66, 165, 166, 66, 165,
470 166, 66, 165, 166, 62, 66, 165, 166, 66, 165,
471
472 166, 2, 66, 165, 166, 65, 66, 165, 166, 63,
473 66, 165, 166, 158, 165, 166, 1, 158, 165, 166,
474 3, 158, 165, 166, 155, 158, 165, 166, 158, 165,
475 166, 158, 165, 166, 158, 165, 166, 2, 158, 165,
476 166, 159, 165, 166, 1, 159, 165, 166, 3, 159,
477 165, 166, 157, 159, 165, 166, 159, 165, 166, 159,
478 165, 166, 159, 165, 166, 2, 159, 165, 166, 54,
479 165, 166, 52, 165, 166, 1, 52, 165, 166, 3,
480 52, 165, 166, 52, 165, 166, 52, 165, 166, 52,
481 165, 166, 2, 52, 165, 166, 31, 165, 166, 1,
482
483 31, 165, 166, 29, 164, 166, 3, 31, 165, 166,
484 28, 31, 165, 166, 31, 165, 166, 25, 31, 165,
485 166, 26, 31, 165, 166, 31, 165, 166, 31, 165,
486 166, 30, 31, 165, 166, 2, 31, 165, 166, 35,
487 165, 166, 1, 35, 165, 166, 3, 35, 165, 166,
488 32, 35, 165, 166, 35, 165, 166, 35, 165, 166,
489 35, 165, 166, 2, 35, 165, 166, 116, 165, 166,
490 1, 116, 165, 166, 3, 116, 165, 166, 116, 165,
491 166, 116, 165, 166, 114, 116, 165, 166, 2, 116,
492 165, 166, 162, 163, 6, 6, 5, 6, 50, 50,
493
494 50, 50, 50, 50, 50, 50, 50, 83, 162, 82,
495 163, 76, 76, 76, 76, 78, 78, 85, 83, 85,
496 162, 82, 85, 163, 85, 86, 8212, 21,16404, 22,
497 21,16404, 17, 17, 162, 17, 163, 17, 18, 91,
498 162, 163, 89, 90, 92, 162, 163, 93, 8289, 8290,
499 8287, 8289,16479,16481,16482, 102, 101, 102, 100, 104,
500 104, 99, 148, 149, 105, 162, 106, 163, 144, 146,
501 68, 68, 67, 120, 107, 109, 162, 108, 163, 120,
502 123, 124, 123, 163, 123, 119, 119, 162, 133, 137,
503 133, 137, 135, 137, 162, 136, 137, 163, 133, 137,
504
505 130, 127, 129, 162, 128, 130, 163, 130, 141, 139,
506 141, 162, 140, 141, 163, 141, 58, 55, 58, 62,
507 61, 63, 154, 162, 153, 163, 156, 54, 51, 33,
508 162, 33, 163, 34, 114, 162, 163, 4,16391, 50,
509 50, 50, 50, 50, 43, 50, 50, 50, 50, 50,
510 83, 83, 162, 82, 82, 163, 76, 76, 76, 71,
511 76, 76, 79, 4, 78, 83, 85, 83, 85, 162,
512 82, 85, 82, 85, 163, 4, 85, 15, 15, 21,
513 16404, 17, 162, 17, 163, 4, 17, 162, 163, 4,
514 4, 91, 162, 163, 4, 96, 103, 149, 105, 105,
515
516 162, 106, 106, 163, 108, 163, 4, 120, 123, 163,
517 4, 123, 118, 137, 162, 137, 163, 4, 133, 137,
518 4, 137, 126, 130, 163, 4, 130, 141, 162, 141,
519 163, 4, 141, 58, 27, 161,16391, 9, 8199, 50,
520 50, 50, 50, 50, 50, 50, 50, 50, 50, 83,
521 161, 76, 72, 76, 76, 76, 79, 83, 85, 161,
522 14, 13, 14, 21,16404, 17, 161, 161, 161, 104,
523 108, 110, 137, 161, 141, 161, 58, 27, 8199, 9,
524 50, 50, 44, 47, 45, 45, 50, 50, 50, 50,
525 50, 50, 50, 73, 76, 74, 76, 76, 13, 21,
526
527 16404, 112, 58, 8, 9, 50, 50, 48, 40, 39,
528 50, 50, 50, 46, 21,16404, 111, 113, 115, 58,
529 9, 38, 42, 41,16420, 37, 10, 58, 9, 8228,
530 57, 56, 9, 8228, 117, 9, 9, 9, 9
531 } ;
532
533static yyconst flex_int16_t yy_accept[1158] =
534 { 0,
535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 2, 3, 3,
538 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
539 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
540 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
541 3, 3, 3, 3, 3, 3, 3, 4, 6, 9,
542 11, 14, 16, 18, 21, 24, 28, 31, 34, 38,
543 41, 44, 47, 50, 54, 57, 61, 64, 68, 71,
544 74, 78, 82, 86, 90, 94, 98, 102, 105, 109,
545
546 112, 116, 119, 122, 126, 130, 134, 138, 142, 147,
547 150, 155, 159, 162, 165, 169, 174, 178, 183, 188,
548 192, 196, 200, 203, 208, 211, 215, 218, 222, 226,
549 229, 232, 235, 240, 243, 248, 252, 256, 260, 263,
550 267, 270, 273, 276, 278, 282, 284, 287, 290, 292,
551 294, 297, 300, 303, 307, 310, 314, 317, 320, 323,
552 327, 333, 335, 338, 341, 344, 346, 349, 351, 354,
553 358, 362, 365, 369, 373, 377, 381, 384, 387, 391,
554 395, 398, 402, 405, 409, 412, 416, 419, 422, 426,
555 430, 435, 439, 443, 448, 452, 456, 460, 465, 469,
556
557 473, 476, 481, 484, 487, 491, 494, 499, 503, 508,
558 511, 516, 519, 523, 527, 531, 536, 539, 542, 545,
559 550, 555, 558, 564, 568, 573, 576, 582, 586, 590,
560 593, 598, 601, 605, 609, 614, 618, 622, 627, 631,
561 635, 640, 643, 647, 650, 654, 657, 660, 664, 667,
562 671, 675, 678, 682, 685, 689, 692, 695, 699, 702,
563 706, 710, 714, 717, 721, 725, 729, 732, 735, 738,
564 742, 745, 749, 753, 757, 760, 763, 766, 770, 773,
565 776, 780, 784, 787, 790, 793, 797, 800, 804, 807,
566 811, 815, 818, 822, 826, 829, 832, 836, 840, 843,
567
568 847, 851, 855, 858, 861, 864, 868, 871, 875, 879,
569 882, 885, 889, 893, 894, 895, 895, 896, 897, 898,
570 899, 899, 899, 899, 900, 901, 902, 903, 904, 905,
571 906, 907, 908, 910, 912, 913, 914, 915, 916, 917,
572 917, 917, 918, 919, 922, 925, 926, 927, 927, 927,
573 927, 928, 930, 931, 931, 933, 934, 936, 938, 939,
574 940, 940, 941, 942, 943, 943, 943, 944, 945, 945,
575 946, 947, 948, 948, 949, 949, 950, 951, 952, 956,
576 956, 956, 957, 958, 959, 960, 960, 961, 961, 962,
577 963, 964, 964, 965, 967, 969, 970, 971, 971, 972,
578
579 973, 974, 975, 976, 978, 980, 981, 981, 981, 981,
580 981, 981, 981, 981, 981, 981, 981, 982, 983, 985,
581 986, 987, 989, 989, 989, 991, 992, 993, 996, 999,
582 1001, 1001, 1002, 1003, 1005, 1008, 1009, 1010, 1013, 1016,
583 1017, 1018, 1019, 1019, 1020, 1021, 1022, 1023, 1025, 1027,
584 1028, 1029, 1030, 1030, 1030, 1030, 1032, 1034, 1035, 1036,
585 1037, 1038, 1039, 1039, 1039, 1040, 1041, 1042, 1043, 1044,
586 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1054, 1055,
587 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1063, 1064, 1064,
588 1064, 1066, 1068, 1071, 1073, 1076, 1078, 1079, 1079, 1080,
589
590 1080, 1080, 1082, 1084, 1086, 1088, 1089, 1090, 1091, 1093,
591 1094, 1095, 1096, 1097, 1097, 1098, 1098, 1099, 1100, 1102,
592 1103, 1105, 1107, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
593 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
594 1109, 1109, 1111, 1113, 1113, 1114, 1116, 1118, 1121, 1123,
595 1123, 1123, 1124, 1126, 1128, 1130, 1132, 1134, 1135, 1135,
596 1136, 1136, 1136, 1137, 1137, 1138, 1138, 1139, 1139, 1140,
597 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
598 1152, 1153, 1155, 1156, 1157, 1157, 1158, 1158, 1161, 1162,
599 1164, 1164, 1164, 1166, 1168, 1169, 1170, 1171, 1172, 1172,
600
601 1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
602 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1175,
603 1177, 1178, 1178, 1179, 1179, 1179, 1179, 1179, 1179, 1180,
604 1180, 1181, 1181, 1182, 1183, 1185, 1186, 1187, 1188, 1189,
605 1190, 1191, 1192, 1193, 1194, 1195, 1195, 1196, 1198, 1199,
606 1199, 1199, 1200, 1200, 1200, 1202, 1202, 1202, 1202, 1202,
607 1202, 1202, 1202, 1202, 1202, 1203, 1203, 1203, 1203, 1203,
608 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
609 1203, 1204, 1204, 1204, 1204, 1204, 1204, 1205, 1205, 1206,
610 1206, 1207, 1208, 1208, 1208, 1209, 1210, 1211, 1212, 1213,
611
612 1214, 1215, 1215, 1215, 1217, 1218, 1218, 1218, 1218, 1218,
613 1218, 1218, 1219, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
614 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
615 1221, 1221, 1221, 1221, 1222, 1222, 1223, 1223, 1224, 1225,
616 1226, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228,
617 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
618 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229,
619 1229, 1230, 1230, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
620 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
621 1231, 1231, 1231, 1232, 1233, 1233, 1233, 1233, 1234, 1234,
622
623 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1236, 1236,
624 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237,
625 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
626 1237, 1237, 1237, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
627 1238, 1238, 1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239,
628 1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
629 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
630 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
631 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
632 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
633
634 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
635 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
636 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
637 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
638 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
639 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
640 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
641 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
642 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
643 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
644
645 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
646 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
647 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
648 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
649 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
650 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
651 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
652 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
653 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
654 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
655
656 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
657 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
658 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
659 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
660 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
661 1240, 1240, 1240, 1240, 1240, 1240, 1240
662 } ;
663
664static yyconst flex_int32_t yy_ec[256] =
665 { 0,
666 1, 1, 1, 1, 1, 2, 1, 1, 3, 4,
667 1, 1, 5, 1, 1, 1, 1, 1, 1, 1,
668 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
669 1, 3, 6, 7, 8, 9, 1, 1, 10, 11,
670 12, 13, 1, 14, 15, 16, 17, 18, 19, 18,
671 18, 18, 18, 18, 18, 20, 20, 21, 1, 22,
672 23, 24, 25, 26, 27, 27, 28, 27, 27, 27,
673 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
674 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
675 29, 30, 31, 1, 27, 1, 32, 33, 34, 35,
676
677 36, 37, 38, 39, 40, 38, 41, 42, 43, 44,
678 45, 46, 38, 47, 48, 49, 50, 51, 38, 52,
679 53, 38, 54, 1, 55, 1, 1, 1, 1, 1,
680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
683 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
684 1, 1, 1, 1, 1, 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
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,
692 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
693 1, 1, 1, 1, 1
694 } ;
695
696static yyconst flex_int32_t yy_meta[57] =
697 { 0,
698 1, 2, 3, 4, 5, 6, 7, 1, 1, 8,
699 9, 6, 10, 1, 11, 12, 13, 14, 14, 14,
700 1, 15, 6, 6, 1, 16, 17, 17, 1, 18,
701 1, 17, 17, 17, 17, 17, 17, 17, 17, 17,
702 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
703 17, 17, 17, 1, 1, 1
704 } ;
705
706static yyconst flex_int16_t yy_base[1265] =
707 { 0,
708 0, 4, 9, 64, 120, 0, 176, 0, 26, 37,
709 231, 235, 291, 0, 346, 350, 357, 383, 439, 0,
710 53, 494, 524, 0, 577, 0, 633, 0, 59, 498,
711 688, 692, 697, 702, 757, 812, 868, 0, 923, 978,
712 716, 730, 763, 787, 793, 803, 1034, 0, 1090, 0,
713 1135, 0, 930, 937, 941, 959, 1162, 0, 1214, 1218,
714 1273, 1328, 1225, 1262, 1384, 0, 2823, 5434, 5434, 5434,
715 5434, 2, 2793, 5434, 5434, 5434, 71, 5434, 5434, 5434,
716 3, 2791, 77, 5434, 5434, 5434, 5434, 5434, 5, 2785,
717 0, 2766, 2768, 4, 57, 2755, 5434, 5434, 5434, 5434,
718
719 5434, 10, 2773, 0, 8, 2750, 5434, 0, 0, 5434,
720 0, 5434, 2756, 32, 2756, 0, 0, 0, 0, 5434,
721 58, 2755, 0, 0, 5434, 5434, 5434, 5434, 5434, 2742,
722 60, 2739, 103, 33, 725, 5434, 5434, 5434, 0, 0,
723 5434, 73, 2738, 0, 0, 0, 78, 227, 240, 234,
724 238, 29, 2757, 2755, 5434, 2749, 99, 242, 106, 2739,
725 362, 0, 2737, 2728, 2722, 2702, 247, 2708, 5434, 5434,
726 110, 5434, 5434, 5434, 2699, 5434, 253, 2681, 5434, 0,
727 239, 5434, 5434, 5434, 5434, 5434, 255, 2679, 5434, 5434,
728 5434, 246, 5434, 5434, 5434, 256, 2678, 5434, 0, 5434,
729
730 5434, 0, 2672, 258, 2659, 1415, 0, 0, 0, 5434,
731 0, 2665, 261, 2656, 0, 0, 2661, 263, 245, 366,
732 0, 5434, 367, 266, 376, 83, 377, 0, 5434, 5434,
733 0, 2656, 271, 2647, 0, 0, 5434, 0, 272, 2645,
734 0, 5434, 5434, 5434, 5434, 273, 2644, 0, 391, 2628,
735 5434, 5434, 5434, 5434, 5434, 343, 2638, 0, 2656, 5434,
736 5434, 0, 5434, 5434, 5434, 5434, 386, 2634, 0, 5434,
737 5434, 5434, 5434, 5434, 392, 2632, 0, 5434, 0, 5434,
738 5434, 5434, 397, 2628, 393, 5434, 5434, 5434, 5434, 5434,
739 5434, 2620, 5434, 5434, 398, 2624, 5434, 5434, 5434, 5434,
740
741 5434, 5434, 399, 2623, 0, 5434, 5434, 5434, 5434, 404,
742 2621, 0, 5434, 2606, 2600, 0, 5434, 501, 5434, 494,
743 415, 408, 507, 0, 2576, 2519, 382, 2520, 705, 2507,
744 2509, 2506, 2523, 2492, 0, 383, 2471, 800, 0, 2480,
745 406, 1462, 0, 523, 525, 1481, 5434, 2478, 417, 534,
746 5434, 720, 5434, 2482, 970, 0, 2472, 2462, 1500, 5434,
747 365, 5434, 730, 524, 1519, 426, 5434, 505, 2457, 5434,
748 345, 387, 1540, 5434, 2455, 747, 5434, 5434, 760, 2445,
749 374, 2445, 2443, 2439, 2436, 2416, 504, 2414, 530, 5434,
750 425, 2421, 2424, 534, 709, 0, 5434, 2422, 5434, 541,
751
752 5434, 0, 5434, 421, 2404, 1559, 1550, 2375, 2368, 2363,
753 2338, 2343, 2342, 2322, 2330, 2322, 0, 5434, 2346, 1597,
754 5434, 2349, 2313, 784, 693, 0, 0, 2343, 2319, 1620,
755 2280, 0, 695, 2307, 2302, 1639, 0, 2304, 2288, 1658,
756 0, 5434, 2300, 2265, 0, 5434, 0, 2285, 2269, 5434,
757 0, 5434, 2281, 2269, 720, 2256, 2246, 5434, 0, 2231,
758 5434, 5434, 767, 2234, 1242, 2204, 2199, 2197, 2196, 2191,
759 5434, 2184, 2172, 2160, 2157, 2156, 0, 2172, 0, 0,
760 2148, 2144, 2136, 5434, 2132, 2131, 2155, 5434, 2142, 812,
761 0, 745, 816, 766, 794, 0, 5434, 2133, 2123, 822,
762
763 847, 995, 2115, 0, 0, 838, 778, 802, 5434, 777,
764 2126, 2125, 5434, 823, 5434, 2108, 2120, 5434, 2102, 5434,
765 5434, 2094, 0, 2065, 2063, 948, 2058, 2069, 2068, 2045,
766 2057, 2048, 656, 2033, 2046, 2035, 2028, 2031, 2035, 2019,
767 2023, 0, 0, 2018, 5434, 2034, 0, 767, 0, 1999,
768 853, 5434, 0, 0, 2025, 0, 0, 1999, 2028, 5434,
769 2027, 847, 5434, 2024, 1290, 1255, 1268, 1302, 5434, 1991,
770 1982, 927, 1682, 1985, 1977, 1977, 1964, 1960, 1971, 0,
771 1006, 796, 1969, 1959, 1984, 5434, 995, 922, 5434, 5434,
772 1006, 1017, 1145, 0, 840, 1984, 5434, 1966, 1945, 1926,
773
774 5434, 1931, 1914, 1917, 1919, 1908, 1911, 1910, 1909, 1148,
775 1906, 1895, 1891, 1880, 1871, 1881, 1865, 1308, 0, 0,
776 1859, 1892, 5434, 1008, 966, 1316, 1443, 984, 1153, 1310,
777 1478, 1556, 1845, 1838, 5434, 5434, 928, 1833, 1738, 1155,
778 1831, 1814, 1827, 1852, 5434, 956, 1817, 0, 1222, 1840,
779 1824, 5434, 1818, 1358, 1534, 1791, 1156, 1775, 1779, 1764,
780 1763, 1644, 1627, 1233, 1248, 1622, 1615, 1601, 1604, 1603,
781 1609, 1592, 1589, 1580, 1574, 1586, 1581, 1562, 1569, 1561,
782 1560, 1585, 1584, 1612, 1792, 1007, 5434, 1795, 1798, 1802,
783 1554, 1583, 989, 1543, 5434, 1223, 5434, 1238, 1279, 1543,
784
785 1570, 1531, 1362, 1807, 1321, 1522, 1514, 1514, 1510, 1517,
786 1504, 1371, 5434, 1374, 1503, 1496, 1490, 1491, 1486, 1469,
787 1472, 1474, 1458, 1452, 1445, 1446, 1452, 1441, 1438, 1441,
788 1817, 1821, 1827, 1832, 1836, 1467, 1251, 1297, 5434, 1449,
789 5434, 1346, 1497, 1840, 1441, 5434, 1421, 1416, 1417, 1411,
790 1395, 1401, 1407, 1341, 1338, 1328, 1305, 1308, 1293, 1305,
791 1294, 1298, 1282, 1272, 1283, 1265, 1301, 1855, 1861, 1874,
792 1880, 1884, 0, 1516, 1893, 1296, 1255, 1217, 1203, 1187,
793 1177, 1140, 0, 1138, 1122, 1112, 1109, 980, 979, 963,
794 969, 950, 1369, 5434, 1908, 1914, 1903, 1918, 1927, 0,
795
796 1595, 1938, 1947, 937, 943, 929, 5434, 912, 912, 905,
797 884, 825, 805, 806, 1955, 1961, 1966, 1974, 1981, 1635,
798 1986, 1624, 774, 779, 713, 692, 659, 503, 464, 1995,
799 2000, 2020, 2026, 2029, 1654, 2041, 2014, 379, 328, 234,
800 2052, 2055, 2058, 2066, 2081, 1888, 2085, 2094, 202, 2110,
801 2113, 2100, 2123, 2137, 2142, 2152, 2133, 2157, 2167, 2170,
802 2179, 2146, 2190, 2205, 2193, 2214, 2219, 2199, 2224, 2233,
803 2210, 2238, 2247, 2252, 2257, 2267, 2262, 2272, 2277, 2286,
804 2289, 2292, 2304, 2307, 2319, 2310, 2324, 2334, 2329, 2339,
805 2344, 2349, 2356, 2365, 2374, 2381, 2386, 2377, 2391, 2401,
806
807 2396, 2406, 2411, 2420, 2430, 2440, 2433, 2449, 2459, 2453,
808 2464, 2473, 2468, 2478, 2488, 2493, 2497, 2507, 2500, 2512,
809 2521, 2516, 2526, 2541, 2530, 2546, 2555, 2535, 2560, 2569,
810 2564, 2574, 2583, 2578, 2588, 2593, 2598, 2602, 2617, 2607,
811 2622, 2631, 2611, 2640, 2651, 2626, 2663, 2672, 2636, 2683,
812 2688, 2693, 2697, 2706, 2711, 2716, 2725, 2719, 2730, 2741,
813 2734, 2746, 2751, 2763, 2766, 2771, 2780, 2786, 2789, 2798,
814 2803, 2808, 2817, 2824, 2833, 2827, 2842, 2852, 2845, 2861,
815 2871, 2864, 2880, 2885, 2890, 2897, 2900, 2909, 2912, 2917,
816 2926, 2929, 2938, 2932, 2947, 2957, 2943, 2962, 2971, 2952,
817
818 2980, 2991, 2984, 2996, 3005, 3000, 3010, 3015, 3024, 3028,
819 3037, 3031, 3046, 3057, 3062, 3068, 3077, 3071, 3089, 3092,
820 3101, 3104, 3115, 3109, 3124, 3129, 3134, 3138, 3147, 3156,
821 3161, 3170, 3175, 3181, 3186, 3191, 3195, 3200, 3209, 3212,
822 3215, 3227, 3230, 3239, 3233, 3244, 3253, 3248, 3262, 3267,
823 3272, 3279, 3292, 3301, 3305, 3308, 3319, 3324, 3327, 3336,
824 76, 3340, 3345, 3349, 3354, 3360, 3365, 3371, 3380, 3384,
825 3393, 3402, 3397, 3407, 3412, 3417, 3423, 3426, 5, 3432,
826 3436, 3439, 3445, 3449, 3454, 3459, 3464, 3469, 3478, 3484,
827 3491, 3497, 3501, 3506, 3511, 3516, 3521, 3524, 3530, 3536,
828
829 3539, 3543, 3549, 3553, 3558, 3563, 3568, 3576, 3582, 3591,
830 3595, 3601, 3605, 3610, 3615, 3620, 3623, 3628, 3634, 3637,
831 3643, 3647, 3653, 3657, 3662, 3667, 3675, 3680, 3689, 3695,
832 3699, 3705, 3709, 3714, 3719, 3722, 3727, 3732, 3735, 3741,
833 3747, 3751, 3757, 3761, 3766, 3774, 3779, 3787, 3793, 3799,
834 3803, 3809, 3813, 3818, 3821, 5434, 3875, 3893, 3911, 3929,
835 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109,
836 4127, 4145, 4163, 4181, 4199, 846, 1016, 4217, 4235, 4253,
837 4270, 4288, 4304, 4321, 4338, 4356, 4372, 4389, 4404, 4420,
838 1207, 4437, 4455, 4472, 4490, 4507, 4524, 4541, 4559, 1251,
839
840 1274, 1354, 4577, 1446, 4595, 4613, 4621, 4633, 4648, 1461,
841 4666, 4684, 1499, 4702, 4720, 4737, 4755, 4772, 4790, 4808,
842 4824, 4841, 4858, 4874, 4891, 4906, 4922, 1539, 4939, 4957,
843 4974, 4992, 5009, 5026, 5043, 5061, 1558, 1574, 1638, 1657,
844 5079, 5096, 5104, 5121, 5139, 1662, 5157, 5175, 1855, 5193,
845 5210, 5228, 5246, 5264, 5279, 5296, 5313, 5331, 5348, 5366,
846 5383, 5398, 1919, 5415
847 } ;
848
849static yyconst flex_int16_t yy_def[1265] =
850 { 0,
851 1157, 1157, 1157, 1158, 1156, 5, 1156, 7, 1159, 1159,
852 1160, 1160, 1156, 13, 1161, 1161, 1162, 1162, 1156, 19,
853 1163, 1163, 19, 23, 1156, 25, 1156, 27, 1164, 1165,
854 1157, 1157, 1157, 1157, 1166, 1166, 1156, 37, 1166, 1166,
855 1167, 1167, 1168, 1168, 1169, 1169, 1156, 47, 1156, 49,
856 49, 51, 1170, 1170, 1171, 1171, 23, 57, 1172, 1172,
857 1173, 1173, 1174, 1174, 1156, 65, 1156, 1156, 1156, 1156,
858 1156, 1156, 1156, 1156, 1156, 1156, 1175, 1156, 1156, 1156,
859 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
860 1176, 1176, 1176, 1176, 1176, 1176, 1156, 1156, 1156, 1156,
861
862 1156, 1156, 1156, 1177, 1177, 1177, 1156, 1178, 1178, 1156,
863 1178, 1156, 1179, 1156, 1178, 1178, 1180, 1180, 1180, 1156,
864 1180, 1180, 1181, 1180, 1156, 1156, 1156, 1156, 1156, 1182,
865 1156, 1156, 1183, 1156, 1183, 1156, 1156, 1156, 1184, 1184,
866 1156, 1184, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1186,
867 1186, 1187, 1188, 1188, 1156, 1188, 1188, 1188, 1156, 1188,
868 1189, 1156, 1156, 1156, 1156, 1156, 1190, 1156, 1156, 1156,
869 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1191,
870 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
871 1156, 1192, 1156, 1156, 1156, 1156, 1156, 1156, 1193, 1156,
872
873 1156, 1193, 1156, 1156, 1193, 1156, 1193, 1194, 1194, 1156,
874 1194, 1156, 1194, 1194, 1191, 1194, 1156, 1156, 1156, 1195,
875 1196, 1156, 1195, 1197, 1195, 1156, 1195, 1198, 1156, 1156,
876 1198, 1156, 1198, 1198, 1198, 1199, 1156, 1199, 1199, 1199,
877 1199, 1156, 1156, 1156, 1156, 1156, 1156, 1200, 1156, 1200,
878 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1201, 1156, 1156,
879 1156, 1202, 1156, 1156, 1156, 1156, 1156, 1156, 1203, 1156,
880 1156, 1156, 1156, 1156, 1156, 1156, 1203, 1156, 1204, 1156,
881 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
882 1156, 1205, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
883
884 1156, 1156, 1156, 1156, 1206, 1156, 1156, 1156, 1156, 1156,
885 1156, 1207, 1156, 1156, 1156, 1208, 1156, 1175, 1156, 1156,
886 1156, 1209, 1156, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
887 1210, 1210, 1211, 1212, 1213, 1213, 1213, 1213, 1214, 1215,
888 1216, 1214, 1217, 1218, 1219, 1217, 1156, 1156, 1220, 1156,
889 1156, 1221, 1156, 1156, 1221, 1222, 1222, 1222, 1222, 1156,
890 1223, 1156, 1223, 1223, 1223, 1156, 1156, 1224, 1225, 1156,
891 1225, 1225, 1225, 1156, 1156, 1156, 1156, 1156, 1226, 1156,
892 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1227, 1156,
893 1156, 1156, 1156, 1156, 1156, 1228, 1156, 1156, 1156, 1229,
894
895 1156, 1230, 1156, 1156, 1156, 1230, 1156, 1156, 1156, 1156,
896 1156, 1156, 1156, 1156, 1156, 1156, 1231, 1156, 1231, 1231,
897 1156, 1156, 1156, 1156, 1232, 1233, 1234, 1234, 1234, 1232,
898 1156, 1235, 1156, 1156, 1235, 1235, 1236, 1236, 1236, 1236,
899 1237, 1156, 1156, 1237, 1238, 1156, 1239, 1156, 1156, 1156,
900 1240, 1156, 1156, 1241, 1242, 1156, 1156, 1156, 1243, 1156,
901 1156, 1156, 1244, 1245, 1156, 1246, 1246, 1246, 1246, 1246,
902 1156, 1246, 1246, 1246, 1246, 1246, 1247, 1247, 1248, 1248,
903 1249, 1249, 1249, 1156, 1249, 1249, 1250, 1156, 1156, 1156,
904 1251, 1252, 1252, 1253, 1253, 1254, 1156, 1156, 1156, 1156,
905
906 1156, 1255, 1256, 1256, 1256, 1257, 1257, 1257, 1156, 1225,
907 1225, 1225, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
908 1156, 1156, 1230, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
909 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
910 1156, 1231, 1231, 1156, 1156, 1234, 1234, 1232, 1234, 1156,
911 1156, 1156, 1235, 1235, 1236, 1236, 1236, 1237, 1258, 1156,
912 1156, 1156, 1156, 1245, 1259, 1156, 1156, 1156, 1156, 1246,
913 1246, 1246, 1156, 1246, 1246, 1246, 1246, 1246, 1246, 1247,
914 1249, 1249, 1249, 1249, 1260, 1156, 1156, 1252, 1156, 1156,
915 1156, 1156, 1255, 1256, 1257, 1225, 1156, 1156, 1156, 1156,
916
917 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
918 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1234, 1236,
919 1237, 1261, 1156, 1156, 1259, 1259, 1259, 1156, 1259, 1156,
920 1156, 1156, 1246, 1246, 1156, 1156, 1156, 1246, 1156, 1246,
921 1246, 1246, 1246, 1246, 1156, 1156, 1249, 1249, 1249, 1156,
922 1156, 1156, 1156, 1156, 1255, 1156, 1156, 1156, 1156, 1156,
923 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
924 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
925 1237, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1156, 1156,
926 1246, 1246, 1156, 1156, 1156, 1156, 1156, 1246, 1246, 1246,
927
928 1156, 1156, 1156, 1255, 1156, 1156, 1156, 1156, 1156, 1156,
929 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
930 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1237,
931 1259, 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1262,
932 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
933 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
934 1156, 1156, 1156, 1156, 1156, 1156, 1237, 1259, 1259, 1156,
935 1156, 1156, 1263, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
936 1156, 1156, 1264, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
937 1156, 1156, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1263,
938
939 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
940 1156, 1156, 1156, 1156, 1259, 1259, 1156, 1156, 1156, 1156,
941 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1259,
942 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
943 1259, 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1259,
944 1259, 1156, 1156, 1156, 1156, 1156, 1156, 1259, 1259, 1156,
945 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
946 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
947 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
948 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
949
950 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
951 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
952 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
953 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
954 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
955 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
956 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
957 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
958 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
959 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
960
961 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
962 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
963 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
964 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
965 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
966 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
967 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
968 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
969 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
970 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
971
972 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
973 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
974 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
975 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
976 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
977 1156, 1156, 1156, 1156, 1156, 0, 1156, 1156, 1156, 1156,
978 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
979 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
980 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
981 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
982
983 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
984 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
985 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
986 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
987 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
988 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
989 1156, 1156, 1156, 1156
990 } ;
991
992static yyconst flex_int16_t yy_nxt[5491] =
993 { 0,
994 1156, 69, 381, 70, 71, 69, 362, 70, 71, 1156,
995 69, 382, 70, 71, 314, 314, 72, 314, 315, 315,
996 72, 315, 333, 362, 73, 72, 334, 109, 73, 110,
997 111, 366, 112, 73, 1156, 113, 353, 354, 109, 367,
998 110, 111, 114, 112, 333, 327, 113, 328, 334, 336,
999 115, 337, 1156, 114, 154, 74, 155, 156, 746, 74,
1000 184, 115, 185, 186, 74, 76, 77, 78, 79, 157,
1001 344, 80, 314, 318, 345, 187, 315, 158, 319, 321,
1002 81, 116, 159, 188, 362, 357, 351, 322, 82, 358,
1003 83, 83, 116, 329, 323, 323, 323, 320, 320, 330,
1004
1005 331, 362, 370, 323, 323, 350, 350, 350, 160, 374,
1006 375, 371, 391, 351, 189, 372, 431, 392, 410, 84,
1007 85, 86, 85, 87, 88, 85, 85, 85, 85, 85,
1008 85, 85, 85, 85, 85, 85, 89, 85, 85, 85,
1009 85, 85, 85, 85, 90, 85, 91, 91, 85, 85,
1010 85, 91, 91, 92, 93, 94, 91, 91, 91, 95,
1011 91, 91, 91, 91, 91, 91, 91, 91, 91, 96,
1012 91, 91, 91, 85, 85, 97, 98, 99, 98, 100,
1013 101, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1014 98, 98, 102, 98, 98, 98, 98, 98, 98, 98,
1015
1016 103, 98, 104, 104, 98, 98, 98, 104, 104, 104,
1017 104, 105, 104, 104, 104, 106, 104, 104, 104, 104,
1018 104, 104, 104, 104, 104, 104, 104, 104, 104, 98,
1019 98, 107, 118, 362, 70, 119, 118, 120, 70, 119,
1020 362, 120, 397, 398, 362, 370, 362, 121, 400, 387,
1021 362, 121, 363, 401, 545, 122, 364, 362, 365, 122,
1022 123, 362, 388, 362, 123, 394, 373, 333, 333, 395,
1023 404, 334, 334, 314, 405, 422, 545, 419, 428, 315,
1024 423, 424, 429, 434, 438, 314, 124, 435, 439, 315,
1025 124, 125, 126, 125, 127, 128, 125, 129, 125, 125,
1026
1027 130, 125, 125, 125, 125, 125, 125, 131, 125, 125,
1028 125, 125, 125, 125, 125, 132, 125, 133, 133, 125,
1029 134, 125, 133, 133, 133, 133, 135, 133, 133, 133,
1030 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1031 133, 133, 133, 133, 136, 137, 138, 140, 370, 70,
1032 71, 140, 141, 70, 71, 314, 141, 510, 147, 315,
1033 70, 148, 142, 68, 376, 377, 142, 426, 426, 849,
1034 143, 362, 378, 149, 143, 144, 381, 426, 426, 144,
1035 68, 150, 427, 427, 147, 382, 70, 148, 362, 68,
1036 370, 380, 427, 427, 442, 443, 452, 453, 448, 149,
1037
1038 430, 145, 449, 511, 314, 145, 68, 150, 315, 314,
1039 314, 456, 151, 315, 315, 457, 314, 321, 464, 465,
1040 315, 468, 481, 490, 490, 322, 499, 391, 366, 469,
1041 482, 545, 392, 460, 500, 500, 367, 403, 151, 68,
1042 69, 68, 70, 71, 68, 68, 68, 68, 68, 68,
1043 68, 68, 68, 68, 68, 72, 68, 68, 68, 68,
1044 68, 68, 68, 73, 68, 152, 152, 68, 68, 68,
1045 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1046 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1047 152, 152, 68, 68, 74, 154, 321, 155, 156, 191,
1048
1049 192, 193, 194, 318, 322, 195, 387, 366, 319, 321,
1050 157, 323, 323, 323, 196, 367, 545, 322, 158, 388,
1051 323, 323, 197, 159, 323, 323, 323, 320, 320, 477,
1052 362, 479, 387, 323, 323, 493, 501, 501, 501, 518,
1053 507, 495, 840, 400, 351, 388, 519, 362, 401, 160,
1054 161, 161, 477, 198, 479, 161, 161, 161, 161, 161,
1055 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1056 161, 161, 161, 161, 161, 161, 161, 68, 69, 162,
1057 70, 71, 68, 68, 68, 68, 68, 163, 164, 68,
1058 165, 68, 166, 72, 68, 68, 68, 68, 68, 68,
1059
1060 68, 73, 68, 167, 167, 68, 168, 68, 167, 167,
1061 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1062 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1063 68, 68, 74, 169, 170, 171, 172, 173, 169, 174,
1064 175, 169, 176, 169, 169, 169, 169, 169, 169, 177,
1065 169, 169, 169, 169, 169, 169, 169, 178, 179, 180,
1066 180, 169, 181, 169, 180, 180, 180, 180, 180, 180,
1067 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
1068 180, 180, 180, 180, 180, 180, 169, 169, 182, 69,
1069 608, 70, 71, 69, 426, 70, 71, 551, 69, 609,
1070
1071 70, 71, 552, 69, 72, 70, 71, 471, 72, 427,
1072 471, 545, 73, 72, 520, 471, 73, 221, 72, 222,
1073 223, 73, 350, 350, 350, 521, 73, 350, 350, 350,
1074 351, 221, 224, 222, 223, 351, 362, 562, 562, 472,
1075 225, 226, 506, 74, 545, 226, 224, 74, 473, 376,
1076 377, 477, 74, 362, 225, 226, 839, 74, 200, 226,
1077 201, 202, 376, 377, 229, 513, 230, 231, 426, 203,
1078 378, 227, 479, 204, 477, 232, 355, 464, 465, 233,
1079 370, 205, 206, 427, 362, 227, 206, 234, 229, 380,
1080 230, 231, 545, 596, 237, 479, 222, 238, 646, 232,
1081
1082 479, 362, 484, 233, 237, 484, 222, 238, 362, 239,
1083 484, 234, 207, 200, 545, 201, 202, 240, 235, 239,
1084 838, 586, 477, 479, 203, 362, 657, 240, 204, 587,
1085 587, 590, 588, 378, 485, 647, 205, 206, 545, 591,
1086 591, 206, 235, 486, 362, 477, 362, 829, 241, 592,
1087 592, 592, 380, 828, 595, 551, 623, 351, 241, 324,
1088 552, 362, 324, 362, 624, 624, 827, 207, 208, 209,
1089 208, 210, 211, 208, 208, 208, 208, 208, 208, 208,
1090 212, 208, 208, 208, 213, 208, 208, 208, 208, 208,
1091 208, 208, 214, 208, 215, 215, 208, 208, 208, 215,
1092
1093 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1094 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1095 215, 208, 208, 216, 200, 826, 201, 202, 477, 635,
1096 693, 264, 635, 70, 265, 217, 266, 635, 264, 218,
1097 70, 265, 272, 266, 70, 273, 267, 205, 219, 825,
1098 274, 477, 219, 267, 268, 824, 601, 275, 646, 269,
1099 272, 268, 70, 273, 610, 276, 269, 694, 274, 1156,
1100 277, 657, 350, 350, 350, 275, 601, 628, 207, 200,
1101 351, 201, 202, 276, 823, 270, 686, 687, 277, 657,
1102 217, 693, 270, 814, 218, 702, 278, 350, 350, 350,
1103
1104 813, 601, 205, 219, 488, 351, 812, 219, 645, 686,
1105 687, 645, 651, 651, 278, 652, 645, 560, 502, 654,
1106 654, 654, 811, 653, 653, 683, 683, 351, 694, 335,
1107 593, 810, 335, 207, 242, 243, 242, 244, 245, 242,
1108 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
1109 246, 242, 242, 242, 242, 242, 242, 242, 247, 242,
1110 248, 248, 242, 249, 242, 248, 248, 248, 250, 248,
1111 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1112 248, 248, 248, 248, 248, 248, 248, 242, 242, 251,
1113 252, 253, 252, 254, 255, 252, 252, 252, 252, 252,
1114
1115 252, 252, 252, 252, 252, 252, 256, 252, 252, 252,
1116 252, 252, 252, 252, 257, 252, 258, 258, 252, 259,
1117 252, 258, 258, 258, 258, 258, 258, 258, 258, 258,
1118 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
1119 258, 258, 258, 252, 252, 260, 261, 350, 350, 350,
1120 665, 665, 665, 809, 610, 351, 1156, 696, 705, 705,
1121 705, 262, 262, 808, 628, 697, 262, 262, 262, 262,
1122 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
1123 262, 262, 262, 262, 262, 262, 262, 262, 279, 279,
1124 610, 655, 657, 279, 279, 279, 279, 279, 279, 279,
1125
1126 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1127 279, 279, 279, 279, 279, 281, 806, 87, 282, 281,
1128 396, 87, 282, 396, 484, 696, 300, 484, 70, 301,
1129 283, 302, 484, 697, 283, 712, 713, 714, 284, 657,
1130 738, 303, 284, 285, 566, 567, 568, 285, 739, 304,
1131 665, 665, 665, 635, 305, 657, 635, 630, 631, 632,
1132 805, 635, 569, 300, 441, 70, 301, 441, 302, 286,
1133 632, 632, 632, 286, 288, 569, 289, 290, 303, 291,
1134 306, 740, 292, 293, 294, 741, 304, 445, 569, 295,
1135 445, 305, 626, 567, 627, 569, 804, 296, 297, 738,
1136
1137 741, 628, 803, 793, 632, 632, 632, 739, 569, 792,
1138 629, 794, 688, 689, 690, 791, 790, 306, 684, 631,
1139 685, 569, 569, 705, 705, 705, 789, 628, 298, 288,
1140 569, 289, 290, 788, 291, 787, 629, 292, 293, 294,
1141 545, 673, 674, 629, 295, 610, 675, 786, 645, 676,
1142 677, 645, 296, 297, 678, 569, 645, 610, 679, 680,
1143 703, 703, 703, 569, 743, 743, 743, 447, 351, 629,
1144 447, 793, 351, 712, 713, 714, 714, 713, 714, 794,
1145 610, 785, 784, 298, 307, 308, 307, 70, 309, 307,
1146 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
1147
1148 310, 307, 307, 307, 307, 307, 307, 307, 311, 307,
1149 312, 312, 307, 307, 307, 312, 312, 312, 312, 312,
1150 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
1151 312, 312, 312, 312, 312, 312, 312, 307, 307, 313,
1152 407, 783, 782, 781, 407, 685, 632, 685, 408, 409,
1153 410, 740, 780, 411, 628, 741, 412, 413, 779, 451,
1154 778, 414, 451, 629, 777, 415, 416, 491, 776, 736,
1155 741, 462, 491, 491, 324, 767, 491, 324, 462, 766,
1156 690, 690, 690, 491, 491, 491, 496, 765, 764, 763,
1157 496, 496, 496, 762, 761, 496, 629, 496, 569, 774,
1158
1159 774, 774, 496, 496, 496, 505, 545, 351, 760, 505,
1160 505, 505, 335, 759, 505, 335, 505, 758, 801, 801,
1161 801, 505, 505, 505, 508, 362, 351, 757, 508, 508,
1162 508, 569, 756, 508, 755, 508, 350, 350, 350, 754,
1163 508, 508, 509, 370, 351, 512, 753, 752, 751, 512,
1164 512, 512, 396, 750, 512, 396, 512, 749, 690, 690,
1165 690, 512, 512, 512, 523, 748, 747, 742, 523, 523,
1166 523, 441, 701, 523, 441, 462, 569, 704, 699, 737,
1167 523, 523, 523, 524, 525, 736, 526, 445, 527, 326,
1168 445, 528, 529, 560, 560, 730, 530, 820, 820, 820,
1169
1170 531, 532, 543, 729, 728, 351, 543, 543, 543, 569,
1171 727, 543, 726, 543, 731, 689, 732, 725, 543, 543,
1172 543, 426, 724, 628, 723, 548, 837, 837, 837, 548,
1173 548, 548, 629, 722, 548, 721, 549, 835, 835, 835,
1174 720, 548, 548, 548, 554, 351, 719, 718, 554, 554,
1175 554, 447, 717, 554, 447, 554, 846, 846, 846, 716,
1176 554, 554, 554, 557, 351, 629, 715, 557, 557, 557,
1177 451, 711, 557, 451, 557, 324, 710, 746, 324, 557,
1178 557, 557, 636, 636, 637, 636, 636, 636, 636, 636,
1179 636, 636, 636, 636, 636, 636, 636, 636, 636, 324,
1180
1181 324, 324, 636, 636, 636, 636, 636, 636, 324, 324,
1182 636, 636, 636, 324, 324, 324, 324, 324, 324, 324,
1183 324, 638, 324, 324, 324, 324, 324, 324, 324, 324,
1184 324, 324, 324, 324, 324, 636, 636, 636, 695, 695,
1185 695, 695, 695, 695, 695, 695, 695, 695, 695, 695,
1186 695, 695, 695, 695, 695, 324, 324, 324, 695, 695,
1187 695, 695, 695, 695, 324, 324, 695, 695, 695, 324,
1188 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
1189 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
1190 324, 695, 695, 695, 732, 690, 732, 733, 734, 735,
1191
1192 735, 735, 735, 628, 735, 735, 735, 709, 708, 744,
1193 744, 744, 629, 745, 707, 569, 706, 351, 569, 768,
1194 734, 769, 569, 769, 735, 769, 657, 652, 628, 770,
1195 771, 772, 628, 488, 772, 772, 772, 629, 772, 772,
1196 772, 629, 775, 775, 775, 629, 745, 569, 569, 488,
1197 351, 569, 569, 581, 701, 569, 569, 795, 771, 796,
1198 746, 700, 699, 796, 772, 796, 628, 698, 335, 572,
1199 629, 335, 628, 692, 629, 629, 797, 798, 799, 691,
1200 569, 629, 799, 799, 799, 569, 799, 799, 799, 569,
1201 855, 855, 855, 746, 569, 802, 802, 802, 351, 745,
1202
1203 569, 560, 681, 351, 569, 817, 818, 819, 629, 672,
1204 815, 798, 816, 671, 629, 670, 816, 799, 816, 628,
1205 819, 819, 819, 569, 669, 628, 668, 569, 629, 819,
1206 819, 819, 800, 569, 629, 800, 667, 569, 569, 666,
1207 821, 821, 821, 664, 745, 610, 746, 569, 351, 822,
1208 822, 822, 663, 745, 662, 661, 569, 830, 818, 831,
1209 660, 629, 659, 831, 819, 831, 628, 629, 832, 833,
1210 834, 569, 628, 658, 657, 629, 834, 834, 834, 656,
1211 569, 629, 598, 834, 834, 834, 569, 370, 836, 836,
1212 836, 746, 745, 488, 569, 649, 351, 841, 833, 842,
1213
1214 746, 569, 842, 834, 842, 648, 628, 644, 629, 643,
1215 642, 628, 641, 640, 629, 629, 848, 848, 848, 569,
1216 629, 639, 843, 844, 845, 634, 633, 569, 845, 845,
1217 845, 845, 845, 845, 569, 565, 560, 560, 621, 746,
1218 569, 620, 609, 847, 847, 847, 569, 745, 629, 569,
1219 619, 351, 618, 629, 850, 844, 851, 851, 845, 851,
1220 852, 853, 854, 628, 617, 616, 628, 746, 854, 854,
1221 854, 615, 629, 569, 614, 629, 613, 612, 569, 569,
1222 611, 610, 569, 854, 854, 854, 569, 856, 856, 856,
1223 607, 745, 606, 605, 746, 351, 857, 857, 857, 604,
1224
1225 603, 569, 852, 853, 854, 629, 602, 600, 629, 599,
1226 598, 569, 858, 853, 859, 859, 854, 859, 563, 569,
1227 569, 628, 517, 597, 628, 854, 854, 854, 370, 370,
1228 629, 594, 589, 629, 569, 862, 862, 862, 746, 854,
1229 854, 854, 589, 569, 860, 860, 860, 746, 865, 865,
1230 865, 488, 351, 569, 861, 861, 861, 569, 745, 858,
1231 853, 859, 351, 629, 488, 485, 629, 584, 628, 859,
1232 854, 859, 863, 863, 863, 583, 569, 629, 628, 582,
1233 351, 864, 864, 864, 581, 745, 746, 629, 580, 351,
1234 569, 579, 866, 866, 866, 868, 868, 868, 578, 746,
1235
1236 351, 871, 871, 871, 577, 746, 576, 867, 867, 867,
1237 629, 745, 874, 874, 874, 351, 869, 869, 869, 575,
1238 629, 870, 870, 870, 351, 745, 872, 872, 872, 351,
1239 574, 573, 746, 572, 351, 873, 873, 873, 571, 745,
1240 875, 875, 875, 351, 570, 565, 746, 563, 351, 876,
1241 876, 876, 746, 745, 877, 877, 877, 351, 746, 878,
1242 878, 878, 461, 746, 880, 880, 880, 351, 460, 879,
1243 879, 879, 746, 745, 881, 881, 881, 351, 560, 882,
1244 882, 882, 351, 745, 452, 461, 746, 351, 883, 883,
1245 883, 884, 884, 884, 885, 885, 885, 460, 745, 351,
1246
1247 746, 558, 351, 442, 556, 746, 886, 886, 886, 887,
1248 887, 887, 889, 889, 889, 746, 555, 351, 553, 460,
1249 746, 888, 888, 888, 550, 745, 890, 890, 890, 351,
1250 746, 892, 892, 892, 351, 547, 891, 891, 891, 746,
1251 745, 893, 893, 893, 351, 746, 894, 894, 894, 351,
1252 745, 895, 895, 895, 351, 546, 544, 746, 896, 896,
1253 896, 460, 542, 746, 541, 540, 351, 897, 897, 897,
1254 539, 745, 746, 538, 537, 351, 898, 898, 898, 901,
1255 901, 901, 746, 899, 899, 899, 536, 746, 900, 900,
1256 900, 351, 745, 902, 902, 902, 351, 746, 904, 904,
1257
1258 904, 351, 746, 903, 903, 903, 535, 745, 905, 905,
1259 905, 351, 534, 906, 906, 906, 351, 745, 746, 533,
1260 522, 351, 907, 907, 907, 397, 517, 746, 393, 516,
1261 746, 515, 908, 908, 908, 910, 910, 910, 385, 746,
1262 351, 384, 909, 909, 909, 383, 745, 384, 514, 746,
1263 351, 911, 911, 911, 746, 913, 913, 913, 374, 351,
1264 370, 912, 912, 912, 746, 745, 914, 914, 914, 351,
1265 916, 916, 916, 746, 351, 915, 915, 915, 504, 745,
1266 917, 917, 917, 351, 503, 353, 746, 497, 351, 488,
1267 918, 918, 918, 746, 745, 919, 919, 919, 351, 920,
1268
1269 920, 920, 922, 922, 922, 483, 746, 351, 480, 921,
1270 921, 921, 746, 745, 923, 923, 923, 351, 925, 925,
1271 925, 746, 351, 924, 924, 924, 746, 745, 926, 926,
1272 926, 351, 928, 928, 928, 478, 351, 931, 931, 931,
1273 476, 746, 475, 927, 927, 927, 746, 745, 929, 929,
1274 929, 351, 474, 746, 470, 467, 351, 930, 930, 930,
1275 746, 745, 932, 932, 932, 351, 934, 934, 934, 746,
1276 351, 933, 933, 933, 746, 745, 935, 935, 935, 351,
1277 937, 937, 937, 746, 351, 936, 936, 936, 746, 745,
1278 938, 938, 938, 351, 746, 939, 939, 939, 351, 745,
1279
1280 940, 940, 940, 351, 941, 941, 941, 466, 746, 943,
1281 943, 943, 351, 946, 946, 946, 461, 746, 460, 942,
1282 942, 942, 746, 745, 944, 944, 944, 351, 949, 949,
1283 949, 746, 351, 945, 945, 945, 746, 745, 952, 952,
1284 952, 351, 947, 947, 947, 316, 746, 316, 316, 455,
1285 351, 746, 316, 948, 948, 948, 316, 745, 316, 446,
1286 746, 351, 316, 444, 746, 950, 950, 950, 316, 440,
1287 746, 436, 433, 351, 951, 951, 951, 421, 745, 746,
1288 420, 418, 351, 406, 746, 953, 953, 953, 403, 746,
1289 954, 954, 954, 351, 745, 955, 955, 955, 351, 956,
1290
1291 956, 956, 316, 316, 746, 316, 393, 351, 957, 957,
1292 957, 390, 745, 958, 958, 958, 351, 386, 959, 959,
1293 959, 961, 961, 961, 385, 746, 351, 960, 960, 960,
1294 384, 745, 962, 962, 962, 351, 964, 964, 964, 383,
1295 351, 746, 370, 963, 963, 963, 746, 745, 965, 965,
1296 965, 351, 370, 966, 966, 966, 351, 745, 370, 746,
1297 370, 351, 359, 316, 746, 967, 967, 967, 968, 968,
1298 968, 349, 746, 969, 969, 969, 351, 745, 746, 346,
1299 342, 351, 970, 970, 970, 341, 338, 746, 971, 971,
1300 971, 972, 972, 972, 746, 745, 351, 316, 332, 351,
1301
1302 973, 973, 973, 326, 746, 974, 974, 974, 325, 316,
1303 975, 975, 975, 351, 745, 316, 746, 316, 351, 976,
1304 976, 976, 1156, 1156, 746, 1156, 977, 977, 977, 979,
1305 979, 979, 1156, 746, 351, 978, 978, 978, 1156, 745,
1306 1156, 1156, 746, 351, 980, 980, 980, 982, 982, 982,
1307 1156, 746, 351, 1156, 981, 981, 981, 1156, 745, 1156,
1308 1156, 746, 351, 983, 983, 983, 985, 985, 985, 1156,
1309 746, 351, 1156, 984, 984, 984, 1156, 745, 1156, 1156,
1310 746, 351, 986, 986, 986, 1156, 746, 987, 987, 987,
1311 351, 745, 988, 988, 988, 351, 1156, 1156, 746, 989,
1312
1313 989, 989, 990, 990, 990, 746, 745, 351, 1156, 1156,
1314 351, 991, 991, 991, 992, 992, 992, 746, 1156, 993,
1315 993, 993, 351, 745, 746, 1156, 1156, 351, 994, 994,
1316 994, 995, 995, 995, 997, 997, 997, 1156, 746, 351,
1317 996, 996, 996, 746, 745, 1000, 1000, 1000, 351, 998,
1318 998, 998, 1156, 746, 1003, 1003, 1003, 351, 1156, 999,
1319 999, 999, 746, 745, 1001, 1001, 1001, 351, 1156, 1156,
1320 746, 1156, 351, 1002, 1002, 1002, 1156, 745, 1156, 746,
1321 1156, 351, 1004, 1004, 1004, 746, 1006, 1006, 1006, 1156,
1322 351, 746, 1156, 1005, 1005, 1005, 746, 745, 1007, 1007,
1323
1324 1007, 351, 1009, 1009, 1009, 746, 351, 1008, 1008, 1008,
1325 746, 745, 1010, 1010, 1010, 351, 1156, 1011, 1011, 1011,
1326 351, 745, 1156, 1156, 746, 351, 1012, 1012, 1012, 1156,
1327 1013, 1013, 1013, 1015, 1015, 1015, 1156, 746, 351, 1014,
1328 1014, 1014, 1156, 745, 746, 1156, 1156, 351, 1016, 1016,
1329 1016, 1156, 1156, 746, 1156, 1156, 351, 1156, 746, 1017,
1330 1017, 1017, 1156, 745, 1018, 1018, 1018, 351, 746, 1156,
1331 1019, 1019, 1019, 1021, 1021, 1021, 1156, 746, 351, 1020,
1332 1020, 1020, 1156, 745, 746, 1156, 1156, 351, 1156, 1156,
1333 746, 1022, 1022, 1022, 1023, 1023, 1023, 1156, 745, 351,
1334
1335 1156, 1156, 351, 1024, 1024, 1024, 1025, 1025, 1025, 1156,
1336 746, 1027, 1027, 1027, 351, 746, 1156, 1026, 1026, 1026,
1337 1156, 745, 1156, 1156, 746, 351, 1028, 1028, 1028, 1156,
1338 746, 1029, 1029, 1029, 351, 745, 1030, 1030, 1030, 351,
1339 1031, 1031, 1031, 1156, 1156, 746, 1156, 1156, 351, 1032,
1340 1032, 1032, 1156, 745, 746, 1156, 1156, 351, 1033, 1033,
1341 1033, 1156, 746, 1034, 1034, 1034, 1156, 1156, 746, 1156,
1342 1156, 351, 1035, 1035, 1035, 1156, 745, 1036, 1036, 1036,
1343 351, 1156, 746, 1037, 1037, 1037, 1156, 746, 1038, 1038,
1344 1038, 351, 745, 1039, 1039, 1039, 351, 1040, 1040, 1040,
1345
1346 746, 1156, 1041, 1041, 1041, 351, 745, 1156, 1156, 746,
1347 351, 1042, 1042, 1042, 1043, 1043, 1043, 1044, 1044, 1044,
1348 1156, 745, 351, 746, 1156, 351, 1156, 1156, 746, 1045,
1349 1045, 1045, 1046, 1046, 1046, 1048, 1048, 1048, 1156, 746,
1350 351, 1047, 1047, 1047, 746, 745, 1049, 1049, 1049, 351,
1351 1051, 1051, 1051, 746, 351, 1050, 1050, 1050, 1156, 745,
1352 1156, 1156, 746, 351, 1052, 1052, 1052, 1156, 746, 1053,
1353 1053, 1053, 351, 745, 1054, 1054, 1054, 351, 1156, 1156,
1354 746, 1055, 1055, 1055, 1156, 1156, 746, 1156, 1156, 351,
1355 1156, 1156, 746, 1156, 1056, 1056, 1056, 1156, 745, 1156,
1356
1357 1156, 746, 351, 1057, 1057, 1057, 746, 1058, 1058, 1058,
1358 1059, 1059, 1059, 1156, 745, 351, 1156, 1156, 351, 1156,
1359 746, 1060, 1060, 1060, 1156, 746, 1061, 1061, 1061, 1062,
1360 1062, 1062, 1156, 745, 351, 1156, 1156, 351, 1063, 1063,
1361 1063, 1156, 1064, 1064, 1064, 746, 745, 1065, 1065, 1065,
1362 351, 1066, 1066, 1066, 746, 745, 1067, 1067, 1067, 351,
1363 1156, 746, 1068, 1068, 1068, 1156, 745, 1069, 1069, 1069,
1364 351, 1156, 746, 1070, 1070, 1070, 1156, 745, 1156, 1156,
1365 746, 351, 1071, 1071, 1071, 1156, 1072, 1072, 1072, 746,
1366 745, 1156, 1156, 746, 351, 1073, 1073, 1073, 746, 1075,
1367
1368 1075, 1075, 746, 1156, 1074, 1074, 1074, 746, 745, 1076,
1369 1076, 1076, 351, 746, 1077, 1077, 1077, 1156, 746, 1078,
1370 1078, 1078, 1156, 1156, 746, 1079, 1079, 1079, 1080, 1080,
1371 1080, 1156, 1156, 746, 1081, 1081, 1081, 746, 1082, 1082,
1372 1082, 1083, 1083, 1083, 1156, 1156, 746, 1084, 1084, 1084,
1373 746, 1085, 1085, 1085, 1156, 746, 1086, 1086, 1086, 1156,
1374 746, 1087, 1087, 1087, 1156, 746, 1088, 1088, 1088, 1156,
1375 746, 1089, 1089, 1089, 1156, 1156, 746, 1156, 1156, 746,
1376 1090, 1090, 1090, 1156, 1156, 746, 1091, 1091, 1091, 746,
1377 1156, 1156, 746, 1092, 1092, 1092, 1156, 1156, 746, 1093,
1378
1379 1093, 1093, 746, 1094, 1094, 1094, 1156, 746, 1095, 1095,
1380 1095, 1156, 746, 1096, 1096, 1096, 1156, 746, 1097, 1097,
1381 1097, 1156, 746, 1098, 1098, 1098, 1099, 1099, 1099, 1156,
1382 1156, 746, 1100, 1100, 1100, 1156, 1156, 746, 1101, 1101,
1383 1101, 1102, 1102, 1102, 746, 1103, 1103, 1103, 1156, 1156,
1384 746, 1104, 1104, 1104, 746, 1105, 1105, 1105, 1156, 746,
1385 1106, 1106, 1106, 1156, 746, 1107, 1107, 1107, 1156, 746,
1386 1108, 1108, 1108, 1156, 746, 1156, 1156, 746, 1109, 1109,
1387 1109, 1156, 1156, 746, 1110, 1110, 1110, 1156, 1156, 746,
1388 1156, 1156, 746, 1111, 1111, 1111, 746, 1112, 1112, 1112,
1389
1390 1156, 1156, 746, 1113, 1113, 1113, 746, 1114, 1114, 1114,
1391 1156, 746, 1115, 1115, 1115, 1156, 746, 1116, 1116, 1116,
1392 1156, 746, 1117, 1117, 1117, 1118, 1118, 1118, 1156, 746,
1393 1119, 1119, 1119, 1156, 1156, 746, 1120, 1120, 1120, 1121,
1394 1121, 1121, 1156, 1156, 746, 1122, 1122, 1122, 746, 1123,
1395 1123, 1123, 1156, 1156, 746, 1124, 1124, 1124, 746, 1125,
1396 1125, 1125, 1156, 746, 1126, 1126, 1126, 1156, 746, 1127,
1397 1127, 1127, 1156, 746, 1156, 1156, 746, 1128, 1128, 1128,
1398 1156, 746, 1129, 1129, 1129, 1156, 1156, 746, 1156, 1156,
1399 746, 1130, 1130, 1130, 1156, 1156, 746, 1131, 1131, 1131,
1400
1401 746, 1132, 1132, 1132, 1156, 1156, 746, 1133, 1133, 1133,
1402 746, 1134, 1134, 1134, 1156, 746, 1135, 1135, 1135, 1156,
1403 746, 1136, 1136, 1136, 1137, 1137, 1137, 1156, 746, 1138,
1404 1138, 1138, 1156, 746, 1139, 1139, 1139, 1140, 1140, 1140,
1405 1156, 1156, 746, 1141, 1141, 1141, 1156, 1156, 746, 1142,
1406 1142, 1142, 746, 1143, 1143, 1143, 1156, 1156, 746, 1144,
1407 1144, 1144, 746, 1145, 1145, 1145, 1156, 746, 1146, 1146,
1408 1146, 1156, 746, 1156, 1156, 746, 1147, 1147, 1147, 1156,
1409 746, 1148, 1148, 1148, 1156, 746, 1156, 1156, 746, 1149,
1410 1149, 1149, 1156, 1156, 746, 1150, 1150, 1150, 1156, 1156,
1411
1412 746, 1151, 1151, 1151, 746, 1152, 1152, 1152, 1156, 1156,
1413 746, 1153, 1153, 1153, 746, 1154, 1154, 1154, 1156, 746,
1414 1155, 1155, 1155, 1079, 1079, 1079, 1156, 746, 1156, 1156,
1415 1156, 1156, 746, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1416 746, 1156, 1156, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1417 1156, 1156, 746, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1418 1156, 1156, 746, 1156, 1156, 1156, 746, 1156, 1156, 1156,
1419 1156, 746, 1156, 1156, 746, 68, 68, 68, 68, 68,
1420 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1421 68, 68, 68, 75, 75, 75, 75, 75, 75, 75,
1422
1423 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
1424 75, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1425 108, 108, 108, 108, 108, 108, 108, 108, 108, 117,
1426 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1427 117, 117, 117, 117, 117, 117, 117, 139, 139, 139,
1428 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1429 139, 139, 139, 139, 139, 146, 146, 146, 146, 146,
1430 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1431 146, 146, 146, 153, 153, 153, 153, 153, 153, 153,
1432 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1433
1434 153, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1435 183, 183, 183, 183, 183, 183, 183, 183, 183, 190,
1436 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
1437 190, 190, 190, 190, 190, 190, 190, 199, 199, 199,
1438 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1439 199, 199, 199, 199, 199, 220, 220, 220, 220, 220,
1440 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
1441 220, 220, 220, 228, 228, 228, 228, 228, 228, 228,
1442 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1443 228, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1444
1445 236, 236, 236, 236, 236, 236, 236, 236, 236, 263,
1446 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1447 263, 263, 263, 263, 263, 263, 263, 271, 271, 271,
1448 271, 271, 271, 271, 271, 271, 271, 271, 271, 271,
1449 271, 271, 271, 271, 271, 280, 280, 280, 280, 280,
1450 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1451 280, 280, 280, 287, 287, 287, 287, 287, 287, 287,
1452 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1453 287, 299, 299, 299, 299, 299, 299, 299, 299, 299,
1454 299, 299, 299, 299, 299, 299, 299, 299, 299, 317,
1455
1456 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1457 317, 317, 317, 317, 317, 317, 317, 339, 339, 339,
1458 1156, 339, 339, 1156, 1156, 339, 339, 339, 339, 1156,
1459 339, 339, 339, 339, 339, 340, 340, 340, 1156, 340,
1460 340, 340, 1156, 340, 340, 340, 340, 340, 340, 340,
1461 340, 340, 340, 343, 343, 343, 1156, 343, 343, 1156,
1462 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1463 347, 347, 347, 1156, 347, 347, 347, 347, 347, 347,
1464 347, 347, 347, 347, 347, 347, 347, 347, 348, 348,
1465 348, 1156, 348, 348, 348, 348, 348, 348, 348, 348,
1466
1467 348, 348, 348, 348, 348, 348, 352, 352, 352, 1156,
1468 1156, 1156, 352, 1156, 1156, 1156, 1156, 352, 1156, 1156,
1469 352, 356, 356, 356, 1156, 1156, 356, 1156, 356, 356,
1470 356, 356, 356, 356, 356, 356, 356, 356, 360, 360,
1471 360, 1156, 360, 360, 360, 360, 360, 360, 360, 360,
1472 360, 360, 360, 360, 360, 360, 361, 361, 361, 1156,
1473 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1474 361, 361, 361, 361, 368, 1156, 1156, 1156, 1156, 1156,
1475 368, 1156, 1156, 1156, 1156, 368, 1156, 1156, 368, 369,
1476 369, 369, 369, 369, 369, 369, 369, 369, 369, 369,
1477
1478 369, 369, 369, 369, 369, 369, 379, 379, 1156, 1156,
1479 1156, 1156, 379, 1156, 1156, 1156, 1156, 379, 1156, 1156,
1480 379, 379, 389, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1481 1156, 389, 1156, 389, 1156, 1156, 389, 399, 399, 399,
1482 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
1483 399, 399, 399, 399, 399, 402, 1156, 402, 1156, 402,
1484 402, 402, 402, 402, 1156, 402, 402, 1156, 402, 402,
1485 1156, 402, 417, 417, 417, 1156, 417, 417, 417, 417,
1486 417, 1156, 417, 417, 417, 417, 417, 417, 1156, 417,
1487 425, 425, 425, 1156, 425, 425, 425, 425, 425, 425,
1488
1489 425, 425, 425, 425, 425, 1156, 425, 426, 426, 426,
1490 1156, 426, 426, 426, 426, 426, 426, 426, 426, 1156,
1491 426, 426, 1156, 426, 427, 1156, 427, 1156, 427, 427,
1492 427, 427, 427, 427, 427, 427, 427, 427, 427, 1156,
1493 427, 432, 1156, 432, 1156, 432, 432, 432, 432, 432,
1494 1156, 432, 432, 432, 432, 432, 432, 432, 432, 437,
1495 1156, 437, 1156, 437, 437, 437, 437, 437, 437, 437,
1496 437, 437, 437, 437, 437, 437, 437, 450, 450, 450,
1497 1156, 450, 450, 450, 450, 450, 450, 450, 450, 450,
1498 450, 450, 450, 450, 450, 454, 454, 454, 1156, 454,
1499
1500 454, 454, 1156, 454, 454, 454, 454, 454, 454, 454,
1501 454, 454, 454, 458, 458, 458, 1156, 458, 458, 458,
1502 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
1503 458, 459, 459, 1156, 459, 1156, 1156, 459, 462, 1156,
1504 462, 462, 1156, 462, 1156, 462, 1156, 462, 463, 463,
1505 463, 1156, 463, 463, 463, 463, 463, 463, 463, 463,
1506 463, 463, 463, 463, 463, 463, 477, 477, 477, 1156,
1507 477, 477, 477, 477, 477, 477, 477, 477, 477, 477,
1508 477, 477, 477, 477, 479, 479, 479, 1156, 479, 479,
1509 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
1510
1511 479, 479, 339, 339, 339, 1156, 339, 339, 1156, 1156,
1512 339, 339, 339, 339, 1156, 339, 339, 339, 339, 339,
1513 487, 487, 487, 1156, 487, 487, 487, 487, 487, 487,
1514 487, 487, 487, 487, 487, 487, 487, 489, 489, 489,
1515 1156, 489, 489, 489, 489, 489, 489, 489, 489, 489,
1516 489, 489, 489, 489, 489, 343, 343, 343, 1156, 343,
1517 343, 1156, 343, 343, 343, 343, 343, 343, 343, 343,
1518 343, 343, 492, 492, 492, 1156, 492, 492, 492, 492,
1519 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
1520 494, 494, 494, 1156, 494, 494, 494, 494, 494, 494,
1521
1522 494, 494, 494, 494, 494, 494, 494, 494, 498, 498,
1523 498, 1156, 498, 498, 498, 498, 498, 498, 498, 498,
1524 498, 498, 498, 498, 498, 498, 352, 352, 352, 1156,
1525 1156, 1156, 352, 1156, 1156, 1156, 1156, 352, 1156, 1156,
1526 352, 356, 356, 356, 1156, 1156, 356, 1156, 356, 356,
1527 356, 356, 356, 356, 356, 356, 356, 356, 361, 361,
1528 361, 1156, 361, 361, 361, 361, 361, 361, 361, 361,
1529 361, 361, 361, 361, 361, 361, 368, 1156, 1156, 1156,
1530 1156, 1156, 368, 1156, 1156, 1156, 1156, 368, 1156, 1156,
1531 368, 369, 369, 369, 369, 369, 369, 369, 369, 369,
1532
1533 369, 369, 369, 369, 369, 369, 369, 369, 379, 379,
1534 1156, 1156, 1156, 1156, 379, 1156, 1156, 1156, 1156, 379,
1535 1156, 1156, 379, 379, 389, 1156, 1156, 1156, 1156, 1156,
1536 1156, 1156, 1156, 389, 1156, 389, 1156, 1156, 389, 399,
1537 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
1538 399, 399, 399, 399, 399, 399, 399, 402, 1156, 402,
1539 1156, 402, 402, 402, 402, 402, 1156, 402, 402, 1156,
1540 402, 402, 1156, 402, 417, 417, 417, 1156, 417, 417,
1541 417, 417, 417, 1156, 417, 417, 417, 417, 417, 417,
1542 1156, 417, 425, 425, 425, 1156, 425, 425, 425, 425,
1543
1544 425, 425, 425, 425, 425, 425, 425, 1156, 425, 426,
1545 426, 426, 1156, 426, 426, 426, 426, 426, 426, 426,
1546 426, 1156, 426, 426, 1156, 426, 427, 1156, 427, 1156,
1547 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1548 427, 1156, 427, 432, 1156, 432, 1156, 432, 432, 432,
1549 432, 432, 1156, 432, 432, 432, 432, 432, 432, 432,
1550 432, 437, 1156, 437, 1156, 437, 437, 437, 437, 437,
1551 437, 437, 437, 437, 437, 437, 437, 437, 437, 559,
1552 559, 559, 1156, 559, 559, 559, 559, 559, 559, 559,
1553 559, 559, 559, 559, 559, 559, 561, 561, 561, 1156,
1554
1555 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
1556 561, 561, 561, 561, 459, 459, 1156, 459, 1156, 1156,
1557 459, 463, 463, 463, 1156, 463, 463, 463, 463, 463,
1558 463, 463, 463, 463, 463, 463, 463, 463, 463, 564,
1559 564, 564, 1156, 564, 564, 564, 564, 564, 564, 564,
1560 564, 564, 564, 564, 564, 564, 564, 477, 477, 477,
1561 1156, 477, 477, 477, 477, 477, 477, 477, 477, 477,
1562 477, 477, 477, 477, 477, 479, 479, 479, 1156, 479,
1563 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
1564 479, 479, 479, 585, 585, 585, 1156, 585, 585, 585,
1565
1566 585, 585, 585, 585, 585, 585, 585, 585, 585, 585,
1567 339, 339, 339, 1156, 339, 339, 1156, 1156, 339, 339,
1568 339, 339, 1156, 339, 339, 339, 339, 339, 492, 492,
1569 492, 1156, 492, 492, 492, 492, 492, 492, 492, 492,
1570 492, 492, 492, 492, 492, 492, 494, 494, 494, 1156,
1571 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
1572 494, 494, 494, 494, 343, 343, 343, 1156, 343, 343,
1573 1156, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1574 343, 352, 352, 352, 1156, 1156, 1156, 352, 1156, 1156,
1575 1156, 1156, 352, 1156, 1156, 352, 356, 356, 356, 1156,
1576
1577 1156, 356, 1156, 356, 356, 356, 356, 356, 356, 356,
1578 356, 356, 356, 361, 361, 361, 1156, 361, 361, 361,
1579 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1580 361, 622, 622, 622, 1156, 622, 622, 622, 622, 622,
1581 622, 622, 622, 622, 622, 622, 622, 622, 625, 625,
1582 625, 625, 625, 625, 625, 625, 625, 625, 625, 625,
1583 625, 625, 625, 625, 625, 625, 650, 650, 650, 1156,
1584 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
1585 650, 650, 650, 682, 682, 682, 1156, 682, 682, 682,
1586 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
1587
1588 773, 1156, 1156, 1156, 773, 1156, 1156, 1156, 1156, 1156,
1589 1156, 1156, 773, 1156, 773, 807, 807, 807, 807, 807,
1590 807, 807, 807, 807, 807, 807, 807, 807, 1156, 807,
1591 807, 1156, 807, 67, 1156, 1156, 1156, 1156, 1156, 1156,
1592 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1593 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1594 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1595 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
1596 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156
1597 } ;
1598
1599static yyconst flex_int16_t yy_chk[5491] =
1600 { 0,
1601 0, 1, 162, 1, 1, 2, 146, 2, 2, 0,
1602 3, 162, 3, 3, 72, 81, 1, 89, 72, 81,
1603 2, 89, 102, 146, 1, 3, 102, 9, 2, 9,
1604 9, 152, 9, 3, 0, 9, 134, 134, 10, 152,
1605 10, 10, 9, 10, 114, 94, 10, 94, 114, 105,
1606 9, 105, 0, 10, 21, 1, 21, 21, 1079, 2,
1607 29, 10, 29, 29, 3, 4, 4, 4, 4, 21,
1608 121, 4, 131, 77, 121, 29, 131, 21, 77, 83,
1609 4, 9, 21, 29, 147, 142, 1061, 83, 4, 142,
1610 4, 4, 10, 95, 83, 83, 83, 77, 77, 95,
1611
1612 95, 147, 157, 83, 83, 133, 133, 133, 21, 159,
1613 159, 157, 171, 133, 29, 157, 226, 171, 226, 4,
1614 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1615 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1616 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1617 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1618 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1619 5, 5, 5, 5, 5, 5, 7, 7, 7, 7,
1620 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1621 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1622
1623 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1624 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1625 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1626 7, 7, 11, 148, 11, 11, 12, 11, 12, 12,
1627 150, 12, 181, 181, 151, 158, 149, 11, 192, 167,
1628 148, 12, 149, 192, 849, 11, 149, 150, 150, 12,
1629 11, 151, 167, 149, 12, 177, 158, 187, 196, 177,
1630 204, 187, 196, 213, 204, 218, 840, 213, 224, 218,
1631 219, 219, 224, 233, 239, 246, 11, 233, 239, 246,
1632 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1633
1634 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1635 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1636 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1637 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1638 13, 13, 13, 13, 13, 13, 13, 15, 371, 15,
1639 15, 16, 15, 16, 16, 256, 16, 371, 17, 256,
1640 17, 17, 15, 17, 161, 161, 16, 220, 223, 839,
1641 15, 361, 161, 17, 16, 15, 381, 225, 227, 16,
1642 17, 17, 220, 223, 18, 381, 18, 18, 361, 18,
1643 372, 161, 225, 227, 249, 249, 285, 285, 267, 18,
1644
1645 225, 15, 267, 372, 275, 16, 18, 18, 275, 283,
1646 295, 303, 17, 283, 295, 303, 310, 321, 322, 322,
1647 310, 327, 336, 341, 341, 321, 349, 391, 366, 327,
1648 336, 838, 391, 404, 349, 349, 366, 404, 18, 19,
1649 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1650 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1651 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1652 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1653 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1654 19, 19, 19, 19, 19, 22, 320, 22, 22, 30,
1655
1656 30, 30, 30, 318, 320, 30, 387, 368, 318, 323,
1657 22, 320, 320, 320, 30, 368, 829, 323, 22, 387,
1658 320, 320, 30, 22, 323, 323, 323, 318, 318, 344,
1659 364, 345, 389, 323, 323, 344, 350, 350, 350, 394,
1660 364, 345, 828, 400, 350, 389, 394, 364, 400, 22,
1661 23, 23, 344, 30, 345, 23, 23, 23, 23, 23,
1662 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1663 23, 23, 23, 23, 23, 23, 23, 25, 25, 25,
1664 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1665 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1666
1667 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1668 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1669 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1670 25, 25, 25, 27, 27, 27, 27, 27, 27, 27,
1671 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1672 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1673 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1674 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
1675 27, 27, 27, 27, 27, 27, 27, 27, 27, 31,
1676 533, 31, 31, 32, 425, 32, 32, 433, 33, 533,
1677
1678 33, 33, 433, 34, 31, 34, 34, 329, 32, 425,
1679 329, 827, 31, 33, 395, 329, 32, 41, 34, 41,
1680 41, 33, 352, 352, 352, 395, 34, 135, 135, 135,
1681 352, 42, 41, 42, 42, 135, 363, 455, 455, 329,
1682 41, 41, 363, 31, 826, 41, 42, 32, 329, 376,
1683 376, 492, 33, 363, 42, 42, 825, 34, 35, 42,
1684 35, 35, 379, 379, 43, 376, 43, 43, 548, 35,
1685 379, 41, 494, 35, 492, 43, 135, 463, 463, 43,
1686 510, 35, 35, 548, 507, 42, 35, 43, 44, 379,
1687 44, 44, 424, 510, 45, 494, 45, 45, 582, 44,
1688
1689 495, 507, 338, 44, 46, 338, 46, 46, 508, 45,
1690 338, 44, 35, 36, 424, 36, 36, 45, 43, 46,
1691 824, 490, 493, 495, 36, 508, 823, 46, 36, 490,
1692 490, 500, 493, 514, 338, 582, 36, 36, 424, 500,
1693 500, 36, 44, 338, 506, 493, 595, 814, 45, 501,
1694 501, 501, 514, 813, 506, 551, 562, 501, 46, 1176,
1695 551, 506, 1176, 595, 562, 562, 812, 36, 37, 37,
1696 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1697 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1698 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1699
1700 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1701 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1702 37, 37, 37, 37, 39, 811, 39, 39, 588, 572,
1703 637, 53, 572, 53, 53, 39, 53, 572, 54, 39,
1704 54, 54, 55, 54, 55, 55, 53, 39, 39, 810,
1705 55, 588, 39, 54, 53, 809, 526, 55, 646, 53,
1706 56, 54, 56, 56, 808, 55, 54, 637, 56, 625,
1707 55, 806, 355, 355, 355, 56, 526, 625, 39, 40,
1708 355, 40, 40, 56, 805, 53, 628, 628, 56, 804,
1709 40, 693, 54, 792, 40, 646, 55, 502, 502, 502,
1710
1711 791, 526, 40, 40, 587, 502, 790, 40, 581, 686,
1712 686, 581, 587, 587, 56, 591, 581, 624, 355, 592,
1713 592, 592, 789, 591, 591, 624, 624, 592, 693, 1177,
1714 502, 788, 1177, 40, 47, 47, 47, 47, 47, 47,
1715 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1716 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1717 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1718 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1719 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1720 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1721
1722 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1723 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1724 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1725 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1726 49, 49, 49, 49, 49, 49, 51, 593, 593, 593,
1727 610, 610, 610, 787, 786, 593, 629, 640, 657, 657,
1728 657, 51, 51, 785, 629, 640, 51, 51, 51, 51,
1729 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
1730 51, 51, 51, 51, 51, 51, 51, 51, 57, 57,
1731 784, 593, 782, 57, 57, 57, 57, 57, 57, 57,
1732
1733 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
1734 57, 57, 57, 57, 57, 59, 781, 59, 59, 60,
1735 1191, 60, 60, 1191, 649, 696, 63, 649, 63, 63,
1736 59, 63, 649, 696, 60, 664, 664, 664, 59, 780,
1737 698, 63, 60, 59, 465, 465, 465, 60, 698, 63,
1738 665, 665, 665, 737, 63, 779, 737, 566, 566, 566,
1739 778, 737, 465, 64, 1200, 64, 64, 1200, 64, 59,
1740 567, 567, 567, 60, 61, 566, 61, 61, 64, 61,
1741 63, 699, 61, 61, 61, 699, 64, 1201, 567, 61,
1742 1201, 64, 565, 565, 565, 465, 777, 61, 61, 738,
1743
1744 699, 565, 776, 767, 568, 568, 568, 738, 566, 766,
1745 565, 767, 630, 630, 630, 765, 764, 64, 626, 626,
1746 626, 567, 568, 705, 705, 705, 763, 626, 61, 62,
1747 630, 62, 62, 762, 62, 761, 626, 62, 62, 62,
1748 760, 618, 618, 565, 62, 759, 618, 758, 742, 618,
1749 618, 742, 62, 62, 618, 568, 742, 757, 618, 618,
1750 654, 654, 654, 630, 703, 703, 703, 1202, 654, 626,
1751 1202, 793, 703, 712, 712, 712, 714, 714, 714, 793,
1752 756, 755, 754, 62, 65, 65, 65, 65, 65, 65,
1753 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1754
1755 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1756 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1757 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1758 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1759 206, 753, 752, 751, 206, 627, 627, 627, 206, 206,
1760 206, 740, 750, 206, 627, 740, 206, 206, 749, 1204,
1761 748, 206, 1204, 627, 747, 206, 206, 342, 745, 736,
1762 740, 342, 342, 342, 1210, 730, 342, 1210, 342, 729,
1763 631, 631, 631, 342, 342, 342, 346, 728, 727, 726,
1764 346, 346, 346, 725, 724, 346, 627, 346, 631, 743,
1765
1766 743, 743, 346, 346, 346, 359, 723, 743, 722, 359,
1767 359, 359, 1213, 721, 359, 1213, 359, 720, 774, 774,
1768 774, 359, 359, 359, 365, 365, 774, 719, 365, 365,
1769 365, 631, 718, 365, 717, 365, 655, 655, 655, 716,
1770 365, 365, 365, 373, 655, 373, 715, 711, 710, 373,
1771 373, 373, 1228, 709, 373, 1228, 373, 708, 632, 632,
1772 632, 373, 373, 373, 406, 707, 706, 702, 406, 406,
1773 406, 1237, 701, 406, 1237, 406, 632, 655, 700, 694,
1774 406, 406, 406, 407, 407, 692, 407, 1238, 407, 691,
1775 1238, 407, 407, 683, 682, 681, 407, 801, 801, 801,
1776
1777 407, 407, 420, 680, 679, 801, 420, 420, 420, 632,
1778 678, 420, 677, 420, 684, 684, 684, 676, 420, 420,
1779 420, 430, 675, 684, 674, 430, 822, 822, 822, 430,
1780 430, 430, 684, 673, 430, 672, 430, 820, 820, 820,
1781 671, 430, 430, 430, 436, 820, 670, 669, 436, 436,
1782 436, 1239, 668, 436, 1239, 436, 835, 835, 835, 667,
1783 436, 436, 436, 440, 835, 684, 666, 440, 440, 440,
1784 1240, 663, 440, 1240, 440, 1246, 662, 822, 1246, 440,
1785 440, 440, 573, 573, 573, 573, 573, 573, 573, 573,
1786 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1787
1788 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1789 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1790 573, 573, 573, 573, 573, 573, 573, 573, 573, 573,
1791 573, 573, 573, 573, 573, 573, 573, 573, 639, 639,
1792 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1793 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1794 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1795 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1796 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
1797 639, 639, 639, 639, 685, 685, 685, 688, 688, 688,
1798
1799 689, 689, 689, 685, 690, 690, 690, 661, 660, 704,
1800 704, 704, 685, 704, 659, 688, 658, 704, 689, 731,
1801 731, 731, 690, 732, 732, 732, 656, 653, 731, 733,
1802 733, 733, 732, 651, 734, 734, 734, 731, 735, 735,
1803 735, 732, 744, 744, 744, 685, 744, 733, 688, 650,
1804 744, 689, 734, 647, 644, 690, 735, 768, 768, 768,
1805 704, 643, 642, 769, 769, 769, 768, 641, 1249, 638,
1806 731, 1249, 769, 634, 732, 768, 770, 770, 770, 633,
1807 733, 769, 771, 771, 771, 734, 772, 772, 772, 735,
1808 846, 846, 846, 744, 770, 775, 775, 775, 846, 775,
1809
1810 771, 622, 621, 775, 772, 797, 797, 797, 768, 617,
1811 795, 795, 795, 616, 769, 615, 796, 796, 796, 795,
1812 798, 798, 798, 797, 614, 796, 613, 770, 795, 799,
1813 799, 799, 1263, 771, 796, 1263, 612, 772, 798, 611,
1814 802, 802, 802, 609, 802, 608, 775, 799, 802, 803,
1815 803, 803, 607, 803, 606, 605, 797, 815, 815, 815,
1816 604, 795, 603, 816, 816, 816, 815, 796, 817, 817,
1817 817, 798, 816, 602, 600, 815, 818, 818, 818, 599,
1818 799, 816, 598, 819, 819, 819, 817, 596, 821, 821,
1819 821, 802, 821, 585, 818, 584, 821, 830, 830, 830,
1820
1821 803, 819, 831, 831, 831, 583, 830, 579, 815, 578,
1822 577, 831, 576, 575, 816, 830, 837, 837, 837, 817,
1823 831, 574, 832, 832, 832, 571, 570, 818, 833, 833,
1824 833, 834, 834, 834, 819, 564, 561, 559, 558, 821,
1825 832, 555, 550, 836, 836, 836, 833, 836, 830, 834,
1826 546, 836, 544, 831, 841, 841, 841, 842, 842, 842,
1827 843, 843, 843, 841, 541, 540, 842, 837, 844, 844,
1828 844, 539, 841, 832, 538, 842, 537, 536, 843, 833,
1829 535, 534, 834, 845, 845, 845, 844, 847, 847, 847,
1830 532, 847, 531, 530, 836, 847, 848, 848, 848, 529,
1831
1832 528, 845, 852, 852, 852, 841, 527, 525, 842, 524,
1833 522, 843, 850, 850, 850, 851, 851, 851, 519, 844,
1834 852, 850, 517, 516, 851, 853, 853, 853, 512, 511,
1835 850, 503, 499, 851, 845, 857, 857, 857, 847, 854,
1836 854, 854, 498, 853, 855, 855, 855, 848, 862, 862,
1837 862, 489, 855, 852, 856, 856, 856, 854, 856, 858,
1838 858, 858, 856, 850, 487, 486, 851, 485, 858, 859,
1839 859, 859, 860, 860, 860, 483, 853, 858, 859, 482,
1840 860, 861, 861, 861, 481, 861, 857, 859, 478, 861,
1841 854, 476, 863, 863, 863, 865, 865, 865, 475, 862,
1842
1843 863, 868, 868, 868, 474, 856, 473, 864, 864, 864,
1844 858, 864, 871, 871, 871, 864, 866, 866, 866, 472,
1845 859, 867, 867, 867, 866, 867, 869, 869, 869, 867,
1846 470, 469, 861, 468, 869, 870, 870, 870, 467, 870,
1847 872, 872, 872, 870, 466, 464, 865, 460, 872, 873,
1848 873, 873, 868, 873, 874, 874, 874, 873, 864, 875,
1849 875, 875, 457, 871, 877, 877, 877, 875, 456, 876,
1850 876, 876, 867, 876, 878, 878, 878, 876, 454, 879,
1851 879, 879, 878, 879, 453, 449, 870, 879, 880, 880,
1852 880, 881, 881, 881, 882, 882, 882, 448, 882, 881,
1853
1854 873, 444, 882, 443, 439, 874, 883, 883, 883, 884,
1855 884, 884, 886, 886, 886, 877, 438, 884, 435, 434,
1856 876, 885, 885, 885, 431, 885, 887, 887, 887, 885,
1857 879, 889, 889, 889, 887, 429, 888, 888, 888, 880,
1858 888, 890, 890, 890, 888, 882, 891, 891, 891, 890,
1859 891, 892, 892, 892, 891, 428, 423, 883, 893, 893,
1860 893, 422, 419, 886, 416, 415, 893, 894, 894, 894,
1861 414, 894, 885, 413, 412, 894, 895, 895, 895, 898,
1862 898, 898, 889, 896, 896, 896, 411, 888, 897, 897,
1863 897, 896, 897, 899, 899, 899, 897, 891, 901, 901,
1864
1865 901, 899, 892, 900, 900, 900, 410, 900, 902, 902,
1866 902, 900, 409, 903, 903, 903, 902, 903, 894, 408,
1867 405, 903, 904, 904, 904, 398, 393, 895, 392, 388,
1868 898, 386, 905, 905, 905, 907, 907, 907, 385, 897,
1869 905, 384, 906, 906, 906, 383, 906, 382, 380, 901,
1870 906, 908, 908, 908, 900, 910, 910, 910, 375, 908,
1871 369, 909, 909, 909, 903, 909, 911, 911, 911, 909,
1872 913, 913, 913, 904, 911, 912, 912, 912, 358, 912,
1873 914, 914, 914, 912, 357, 354, 907, 348, 914, 340,
1874 915, 915, 915, 906, 915, 916, 916, 916, 915, 917,
1875
1876 917, 917, 919, 919, 919, 337, 910, 917, 334, 918,
1877 918, 918, 909, 918, 920, 920, 920, 918, 922, 922,
1878 922, 913, 920, 921, 921, 921, 912, 921, 923, 923,
1879 923, 921, 925, 925, 925, 333, 923, 928, 928, 928,
1880 332, 915, 331, 924, 924, 924, 916, 924, 926, 926,
1881 926, 924, 330, 919, 328, 326, 926, 927, 927, 927,
1882 918, 927, 929, 929, 929, 927, 931, 931, 931, 922,
1883 929, 930, 930, 930, 921, 930, 932, 932, 932, 930,
1884 934, 934, 934, 925, 932, 933, 933, 933, 928, 933,
1885 935, 935, 935, 933, 924, 936, 936, 936, 935, 936,
1886
1887 937, 937, 937, 936, 938, 938, 938, 325, 927, 940,
1888 940, 940, 938, 943, 943, 943, 315, 931, 314, 939,
1889 939, 939, 930, 939, 941, 941, 941, 939, 946, 946,
1890 946, 934, 941, 942, 942, 942, 933, 942, 949, 949,
1891 949, 942, 944, 944, 944, 311, 936, 304, 296, 292,
1892 944, 937, 284, 945, 945, 945, 276, 945, 268, 259,
1893 940, 945, 257, 250, 943, 947, 947, 947, 247, 240,
1894 939, 234, 232, 947, 948, 948, 948, 217, 948, 946,
1895 214, 212, 948, 205, 942, 950, 950, 950, 203, 949,
1896 951, 951, 951, 950, 951, 952, 952, 952, 951, 953,
1897
1898 953, 953, 197, 188, 945, 178, 175, 953, 954, 954,
1899 954, 168, 954, 955, 955, 955, 954, 166, 956, 956,
1900 956, 958, 958, 958, 165, 948, 956, 957, 957, 957,
1901 164, 957, 959, 959, 959, 957, 961, 961, 961, 163,
1902 959, 951, 160, 960, 960, 960, 952, 960, 962, 962,
1903 962, 960, 156, 963, 963, 963, 962, 963, 154, 954,
1904 153, 963, 143, 132, 955, 964, 964, 964, 965, 965,
1905 965, 130, 958, 966, 966, 966, 965, 966, 957, 122,
1906 115, 966, 967, 967, 967, 113, 106, 961, 968, 968,
1907 968, 969, 969, 969, 960, 969, 968, 103, 96, 969,
1908
1909 970, 970, 970, 93, 963, 971, 971, 971, 92, 90,
1910 972, 972, 972, 971, 972, 82, 964, 73, 972, 973,
1911 973, 973, 67, 0, 966, 0, 974, 974, 974, 976,
1912 976, 976, 0, 967, 974, 975, 975, 975, 0, 975,
1913 0, 0, 969, 975, 977, 977, 977, 979, 979, 979,
1914 0, 970, 977, 0, 978, 978, 978, 0, 978, 0,
1915 0, 972, 978, 980, 980, 980, 982, 982, 982, 0,
1916 973, 980, 0, 981, 981, 981, 0, 981, 0, 0,
1917 976, 981, 983, 983, 983, 0, 975, 984, 984, 984,
1918 983, 984, 985, 985, 985, 984, 0, 0, 979, 986,
1919
1920 986, 986, 987, 987, 987, 978, 987, 986, 0, 0,
1921 987, 988, 988, 988, 989, 989, 989, 982, 0, 990,
1922 990, 990, 989, 990, 981, 0, 0, 990, 991, 991,
1923 991, 992, 992, 992, 994, 994, 994, 0, 984, 992,
1924 993, 993, 993, 985, 993, 997, 997, 997, 993, 995,
1925 995, 995, 0, 987, 1000, 1000, 1000, 995, 0, 996,
1926 996, 996, 988, 996, 998, 998, 998, 996, 0, 0,
1927 990, 0, 998, 999, 999, 999, 0, 999, 0, 991,
1928 0, 999, 1001, 1001, 1001, 994, 1003, 1003, 1003, 0,
1929 1001, 993, 0, 1002, 1002, 1002, 997, 1002, 1004, 1004,
1930
1931 1004, 1002, 1006, 1006, 1006, 1000, 1004, 1005, 1005, 1005,
1932 996, 1005, 1007, 1007, 1007, 1005, 0, 1008, 1008, 1008,
1933 1007, 1008, 0, 0, 999, 1008, 1009, 1009, 1009, 0,
1934 1010, 1010, 1010, 1012, 1012, 1012, 0, 1003, 1010, 1011,
1935 1011, 1011, 0, 1011, 1002, 0, 0, 1011, 1013, 1013,
1936 1013, 0, 0, 1006, 0, 0, 1013, 0, 1005, 1014,
1937 1014, 1014, 0, 1014, 1015, 1015, 1015, 1014, 1008, 0,
1938 1016, 1016, 1016, 1018, 1018, 1018, 0, 1009, 1016, 1017,
1939 1017, 1017, 0, 1017, 1012, 0, 0, 1017, 0, 0,
1940 1011, 1019, 1019, 1019, 1020, 1020, 1020, 0, 1020, 1019,
1941
1942 0, 0, 1020, 1021, 1021, 1021, 1022, 1022, 1022, 0,
1943 1014, 1024, 1024, 1024, 1022, 1015, 0, 1023, 1023, 1023,
1944 0, 1023, 0, 0, 1018, 1023, 1025, 1025, 1025, 0,
1945 1017, 1026, 1026, 1026, 1025, 1026, 1027, 1027, 1027, 1026,
1946 1028, 1028, 1028, 0, 0, 1020, 0, 0, 1028, 1029,
1947 1029, 1029, 0, 1029, 1021, 0, 0, 1029, 1030, 1030,
1948 1030, 0, 1024, 1031, 1031, 1031, 0, 0, 1023, 0,
1949 0, 1031, 1032, 1032, 1032, 0, 1032, 1033, 1033, 1033,
1950 1032, 0, 1026, 1034, 1034, 1034, 0, 1027, 1035, 1035,
1951 1035, 1034, 1035, 1036, 1036, 1036, 1035, 1037, 1037, 1037,
1952
1953 1029, 0, 1038, 1038, 1038, 1037, 1038, 0, 0, 1030,
1954 1038, 1039, 1039, 1039, 1040, 1040, 1040, 1041, 1041, 1041,
1955 0, 1041, 1040, 1032, 0, 1041, 0, 0, 1033, 1042,
1956 1042, 1042, 1043, 1043, 1043, 1045, 1045, 1045, 0, 1035,
1957 1043, 1044, 1044, 1044, 1036, 1044, 1046, 1046, 1046, 1044,
1958 1048, 1048, 1048, 1038, 1046, 1047, 1047, 1047, 0, 1047,
1959 0, 0, 1039, 1047, 1049, 1049, 1049, 0, 1041, 1050,
1960 1050, 1050, 1049, 1050, 1051, 1051, 1051, 1050, 0, 0,
1961 1042, 1052, 1052, 1052, 0, 0, 1045, 0, 0, 1052,
1962 0, 0, 1044, 0, 1053, 1053, 1053, 0, 1053, 0,
1963
1964 0, 1048, 1053, 1054, 1054, 1054, 1047, 1055, 1055, 1055,
1965 1056, 1056, 1056, 0, 1056, 1055, 0, 0, 1056, 0,
1966 1050, 1057, 1057, 1057, 0, 1051, 1058, 1058, 1058, 1059,
1967 1059, 1059, 0, 1059, 1058, 0, 0, 1059, 1060, 1060,
1968 1060, 0, 1062, 1062, 1062, 1053, 1062, 1063, 1063, 1063,
1969 1062, 1064, 1064, 1064, 1054, 1064, 1065, 1065, 1065, 1064,
1970 0, 1056, 1066, 1066, 1066, 0, 1066, 1067, 1067, 1067,
1971 1066, 0, 1057, 1068, 1068, 1068, 0, 1068, 0, 0,
1972 1059, 1068, 1069, 1069, 1069, 0, 1070, 1070, 1070, 1060,
1973 1070, 0, 0, 1062, 1070, 1071, 1071, 1071, 1063, 1073,
1974
1975 1073, 1073, 1064, 0, 1072, 1072, 1072, 1065, 1072, 1074,
1976 1074, 1074, 1072, 1066, 1075, 1075, 1075, 0, 1067, 1076,
1977 1076, 1076, 0, 0, 1068, 1077, 1077, 1077, 1078, 1078,
1978 1078, 0, 0, 1069, 1080, 1080, 1080, 1070, 1081, 1081,
1979 1081, 1082, 1082, 1082, 0, 0, 1071, 1083, 1083, 1083,
1980 1073, 1084, 1084, 1084, 0, 1072, 1085, 1085, 1085, 0,
1981 1074, 1086, 1086, 1086, 0, 1075, 1087, 1087, 1087, 0,
1982 1076, 1088, 1088, 1088, 0, 0, 1077, 0, 0, 1078,
1983 1089, 1089, 1089, 0, 0, 1080, 1090, 1090, 1090, 1081,
1984 0, 0, 1082, 1091, 1091, 1091, 0, 0, 1083, 1092,
1985
1986 1092, 1092, 1084, 1093, 1093, 1093, 0, 1085, 1094, 1094,
1987 1094, 0, 1086, 1095, 1095, 1095, 0, 1087, 1096, 1096,
1988 1096, 0, 1088, 1097, 1097, 1097, 1098, 1098, 1098, 0,
1989 0, 1089, 1099, 1099, 1099, 0, 0, 1090, 1100, 1100,
1990 1100, 1101, 1101, 1101, 1091, 1102, 1102, 1102, 0, 0,
1991 1092, 1103, 1103, 1103, 1093, 1104, 1104, 1104, 0, 1094,
1992 1105, 1105, 1105, 0, 1095, 1106, 1106, 1106, 0, 1096,
1993 1107, 1107, 1107, 0, 1097, 0, 0, 1098, 1108, 1108,
1994 1108, 0, 0, 1099, 1109, 1109, 1109, 0, 0, 1100,
1995 0, 0, 1101, 1110, 1110, 1110, 1102, 1111, 1111, 1111,
1996
1997 0, 0, 1103, 1112, 1112, 1112, 1104, 1113, 1113, 1113,
1998 0, 1105, 1114, 1114, 1114, 0, 1106, 1115, 1115, 1115,
1999 0, 1107, 1116, 1116, 1116, 1117, 1117, 1117, 0, 1108,
2000 1118, 1118, 1118, 0, 0, 1109, 1119, 1119, 1119, 1120,
2001 1120, 1120, 0, 0, 1110, 1121, 1121, 1121, 1111, 1122,
2002 1122, 1122, 0, 0, 1112, 1123, 1123, 1123, 1113, 1124,
2003 1124, 1124, 0, 1114, 1125, 1125, 1125, 0, 1115, 1126,
2004 1126, 1126, 0, 1116, 0, 0, 1117, 1127, 1127, 1127,
2005 0, 1118, 1128, 1128, 1128, 0, 0, 1119, 0, 0,
2006 1120, 1129, 1129, 1129, 0, 0, 1121, 1130, 1130, 1130,
2007
2008 1122, 1131, 1131, 1131, 0, 0, 1123, 1132, 1132, 1132,
2009 1124, 1133, 1133, 1133, 0, 1125, 1134, 1134, 1134, 0,
2010 1126, 1135, 1135, 1135, 1136, 1136, 1136, 0, 1127, 1137,
2011 1137, 1137, 0, 1128, 1138, 1138, 1138, 1139, 1139, 1139,
2012 0, 0, 1129, 1140, 1140, 1140, 0, 0, 1130, 1141,
2013 1141, 1141, 1131, 1142, 1142, 1142, 0, 0, 1132, 1143,
2014 1143, 1143, 1133, 1144, 1144, 1144, 0, 1134, 1145, 1145,
2015 1145, 0, 1135, 0, 0, 1136, 1146, 1146, 1146, 0,
2016 1137, 1147, 1147, 1147, 0, 1138, 0, 0, 1139, 1148,
2017 1148, 1148, 0, 0, 1140, 1149, 1149, 1149, 0, 0,
2018
2019 1141, 1150, 1150, 1150, 1142, 1151, 1151, 1151, 0, 0,
2020 1143, 1152, 1152, 1152, 1144, 1153, 1153, 1153, 0, 1145,
2021 1154, 1154, 1154, 1155, 1155, 1155, 0, 1146, 0, 0,
2022 0, 0, 1147, 0, 0, 0, 0, 0, 0, 0,
2023 1148, 0, 0, 0, 0, 0, 1149, 0, 0, 0,
2024 0, 0, 1150, 0, 0, 0, 1151, 0, 0, 0,
2025 0, 0, 1152, 0, 0, 0, 1153, 0, 0, 0,
2026 0, 1154, 0, 0, 1155, 1157, 1157, 1157, 1157, 1157,
2027 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
2028 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2029
2030 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2031 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
2032 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160,
2033 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
2034 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1161, 1161,
2035 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
2036 1161, 1161, 1161, 1161, 1161, 1162, 1162, 1162, 1162, 1162,
2037 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
2038 1162, 1162, 1162, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
2039 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
2040
2041 1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
2042 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165,
2043 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
2044 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166, 1166,
2045 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
2046 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167,
2047 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
2048 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
2049 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
2050 1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
2051
2052 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170,
2053 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
2054 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171,
2055 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2056 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172,
2057 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
2058 1172, 1172, 1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2059 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2060 1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2061 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175,
2062
2063 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
2064 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1178, 1178, 1178,
2065 0, 1178, 1178, 0, 0, 1178, 1178, 1178, 1178, 0,
2066 1178, 1178, 1178, 1178, 1178, 1179, 1179, 1179, 0, 1179,
2067 1179, 1179, 0, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
2068 1179, 1179, 1179, 1180, 1180, 1180, 0, 1180, 1180, 0,
2069 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
2070 1181, 1181, 1181, 0, 1181, 1181, 1181, 1181, 1181, 1181,
2071 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,
2072 1182, 0, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2073
2074 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 0,
2075 0, 0, 1183, 0, 0, 0, 0, 1183, 0, 0,
2076 1183, 1184, 1184, 1184, 0, 0, 1184, 0, 1184, 1184,
2077 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185,
2078 1185, 0, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2079 1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186, 1186, 0,
2080 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
2081 1186, 1186, 1186, 1186, 1187, 0, 0, 0, 0, 0,
2082 1187, 0, 0, 0, 0, 1187, 0, 0, 1187, 1188,
2083 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
2084
2085 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 0, 0,
2086 0, 0, 1189, 0, 0, 0, 0, 1189, 0, 0,
2087 1189, 1189, 1190, 0, 0, 0, 0, 0, 0, 0,
2088 0, 1190, 0, 1190, 0, 0, 1190, 1192, 1192, 1192,
2089 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
2090 1192, 1192, 1192, 1192, 1192, 1193, 0, 1193, 0, 1193,
2091 1193, 1193, 1193, 1193, 0, 1193, 1193, 0, 1193, 1193,
2092 0, 1193, 1194, 1194, 1194, 0, 1194, 1194, 1194, 1194,
2093 1194, 0, 1194, 1194, 1194, 1194, 1194, 1194, 0, 1194,
2094 1195, 1195, 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195,
2095
2096 1195, 1195, 1195, 1195, 1195, 0, 1195, 1196, 1196, 1196,
2097 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 0,
2098 1196, 1196, 0, 1196, 1197, 0, 1197, 0, 1197, 1197,
2099 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 0,
2100 1197, 1198, 0, 1198, 0, 1198, 1198, 1198, 1198, 1198,
2101 0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1199,
2102 0, 1199, 0, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
2103 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1203, 1203, 1203,
2104 0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
2105 1203, 1203, 1203, 1203, 1203, 1205, 1205, 1205, 0, 1205,
2106
2107 1205, 1205, 0, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2108 1205, 1205, 1205, 1206, 1206, 1206, 0, 1206, 1206, 1206,
2109 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2110 1206, 1207, 1207, 0, 1207, 0, 0, 1207, 1208, 0,
2111 1208, 1208, 0, 1208, 0, 1208, 0, 1208, 1209, 1209,
2112 1209, 0, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
2113 1209, 1209, 1209, 1209, 1209, 1209, 1211, 1211, 1211, 0,
2114 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2115 1211, 1211, 1211, 1211, 1212, 1212, 1212, 0, 1212, 1212,
2116 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
2117
2118 1212, 1212, 1214, 1214, 1214, 0, 1214, 1214, 0, 0,
2119 1214, 1214, 1214, 1214, 0, 1214, 1214, 1214, 1214, 1214,
2120 1215, 1215, 1215, 0, 1215, 1215, 1215, 1215, 1215, 1215,
2121 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216, 1216, 1216,
2122 0, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
2123 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217, 0, 1217,
2124 1217, 0, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
2125 1217, 1217, 1218, 1218, 1218, 0, 1218, 1218, 1218, 1218,
2126 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
2127 1219, 1219, 1219, 0, 1219, 1219, 1219, 1219, 1219, 1219,
2128
2129 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220,
2130 1220, 0, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
2131 1220, 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221, 0,
2132 0, 0, 1221, 0, 0, 0, 0, 1221, 0, 0,
2133 1221, 1222, 1222, 1222, 0, 0, 1222, 0, 1222, 1222,
2134 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223, 1223,
2135 1223, 0, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
2136 1223, 1223, 1223, 1223, 1223, 1223, 1224, 0, 0, 0,
2137 0, 0, 1224, 0, 0, 0, 0, 1224, 0, 0,
2138 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
2139
2140 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226,
2141 0, 0, 0, 0, 1226, 0, 0, 0, 0, 1226,
2142 0, 0, 1226, 1226, 1227, 0, 0, 0, 0, 0,
2143 0, 0, 0, 1227, 0, 1227, 0, 0, 1227, 1229,
2144 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
2145 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1230, 0, 1230,
2146 0, 1230, 1230, 1230, 1230, 1230, 0, 1230, 1230, 0,
2147 1230, 1230, 0, 1230, 1231, 1231, 1231, 0, 1231, 1231,
2148 1231, 1231, 1231, 0, 1231, 1231, 1231, 1231, 1231, 1231,
2149 0, 1231, 1232, 1232, 1232, 0, 1232, 1232, 1232, 1232,
2150
2151 1232, 1232, 1232, 1232, 1232, 1232, 1232, 0, 1232, 1233,
2152 1233, 1233, 0, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
2153 1233, 0, 1233, 1233, 0, 1233, 1234, 0, 1234, 0,
2154 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
2155 1234, 0, 1234, 1235, 0, 1235, 0, 1235, 1235, 1235,
2156 1235, 1235, 0, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
2157 1235, 1236, 0, 1236, 0, 1236, 1236, 1236, 1236, 1236,
2158 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1241,
2159 1241, 1241, 0, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2160 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1242, 1242, 0,
2161
2162 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
2163 1242, 1242, 1242, 1242, 1243, 1243, 0, 1243, 0, 0,
2164 1243, 1244, 1244, 1244, 0, 1244, 1244, 1244, 1244, 1244,
2165 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1245,
2166 1245, 1245, 0, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
2167 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1247, 1247, 1247,
2168 0, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
2169 1247, 1247, 1247, 1247, 1247, 1248, 1248, 1248, 0, 1248,
2170 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
2171 1248, 1248, 1248, 1250, 1250, 1250, 0, 1250, 1250, 1250,
2172
2173 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
2174 1251, 1251, 1251, 0, 1251, 1251, 0, 0, 1251, 1251,
2175 1251, 1251, 0, 1251, 1251, 1251, 1251, 1251, 1252, 1252,
2176 1252, 0, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2177 1252, 1252, 1252, 1252, 1252, 1252, 1253, 1253, 1253, 0,
2178 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
2179 1253, 1253, 1253, 1253, 1254, 1254, 1254, 0, 1254, 1254,
2180 0, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
2181 1254, 1255, 1255, 1255, 0, 0, 0, 1255, 0, 0,
2182 0, 0, 1255, 0, 0, 1255, 1256, 1256, 1256, 0,
2183
2184 0, 1256, 0, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
2185 1256, 1256, 1256, 1257, 1257, 1257, 0, 1257, 1257, 1257,
2186 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
2187 1257, 1258, 1258, 1258, 0, 1258, 1258, 1258, 1258, 1258,
2188 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1259,
2189 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
2190 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1260, 1260, 0,
2191 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
2192 1260, 1260, 1260, 1261, 1261, 1261, 0, 1261, 1261, 1261,
2193 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261,
2194
2195 1262, 0, 0, 0, 1262, 0, 0, 0, 0, 0,
2196 0, 0, 1262, 0, 1262, 1264, 1264, 1264, 1264, 1264,
2197 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 0, 1264,
2198 1264, 0, 1264, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2199 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2200 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2201 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2202 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2203 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156
2204 } ;
2205
2206extern int preYY_flex_debug;
2207int preYY_flex_debug = 0;
2208
2209static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
2210static char *yy_full_match;
2211static int yy_lp;
2212static int yy_looking_for_trail_begin = 0;
2213static int yy_full_lp;
2214static int *yy_full_state;
2215#define YY_TRAILING_MASK 0x2000
2216#define YY_TRAILING_HEAD_MASK 0x4000
2217#define REJECT \
2218{ \
2219*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */ \
2220yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2221(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
2222(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
2223yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
2224++(yy_lp); \
2225goto find_rule; \
2226}
2227
2228#define yymore() yymore_used_but_not_detected
2229#define YY_MORE_ADJ 0
2230#define YY_RESTORE_YY_MORE_OFFSET
2231char *preYYtext;
2232#line 1 "pre.l"
2233/******************************************************************************
2234 *
2235 *
2236 *
2237 * Copyright (C) 1997-2011 by Dimitri van Heesch.
2238 *
2239 * Permission to use, copy, modify, and distribute this software and its
2240 * documentation under the terms of the GNU General Public License is hereby
2241 * granted. No representations are made about the suitability of this software
2242 * for any purpose. It is provided "as is" without express or implied warranty.
2243 * See the GNU General Public License for more details.
2244 *
2245 * Documents produced by Doxygen are derivative works derived from the
2246 * input used in their production; they are not affected by this license.
2247 *
2248 */
2249#line 19 "pre.l"
2250
2251/*
2252 *includes
2253 */
2254
2255#include <stdio.h>
2256#include <assert.h>
2257#include <ctype.h>
2258#include <errno.h>
2259
2260#include "qtbc.h"
2261#include <qarray.h>
2262#include <qstack.h>
2263#include <qfile.h>
2264#include <qstrlist.h>
2265#include <qdict.h>
2266#include <qregexp.h>
2267#include <qfileinfo.h>
2268#include <qdir.h>
2269
2270#include "pre.h"
2271#include "constexp.h"
2272#include "define.h"
2273#include "doxygen.h"
2274#include "message.h"
2275#include "util.h"
2276#include "defargs.h"
2277#include "debug.h"
2278#include "bufstr.h"
2279#include "portable.h"
2280#include "bufstr.h"
2281
2282#define YY_NEVER_INTERACTIVE 1
2283
2284
2285struct FileState
2286{
2287 FileState(int size) : fileBuf(size),
2288 oldFileBuf(0), oldFileBufPos(0) {}
2289 int lineNr;
2290 BufStr fileBuf;
2291 BufStr *oldFileBuf;
2292 int oldFileBufPos;
2293 YY_BUFFER_STATE bufState;
2294 QCString fileName;
2295};
2296
2297/* -----------------------------------------------------------------
2298 *
2299 *scanner's state
2300 */
2301
2302static int g_yyLineNr = 1;
2303static QCString g_yyFileName;
2304static FileDef *g_yyFileDef;
2305static FileDef *g_inputFileDef;
2306static int g_ifcount = 0;
2307static QStrList *g_pathList = 0;
2308static QStack<FileState> g_includeStack;
2309static QDict<int> *g_argDict;
2310static int g_defArgs = -1;
2311static QCString g_defName;
2312static QCString g_defText;
2313static QCString g_defLitText;
2314static QCString g_defArgsStr;
2315static QCString g_defExtraSpacing;
2316static bool g_defVarArgs;
2317static int g_level;
2318static int g_lastCContext;
2319static int g_lastCPPContext;
2320static QArray<int> g_levelGuard;
2321static BufStr *g_inputBuf;
2322static int g_inputBufPos;
2323static BufStr *g_outputBuf;
2324static int g_roundCount;
2325static bool g_quoteArg;
2326static DefineDict *g_globalDefineDict = new DefineDict(10009);
2327static DefineDict *g_fileDefineDict = new DefineDict(1009);
2328static DefineDict *g_expandedDict;
2329static int g_findDefArgContext;
2330static bool g_expectGuard;
2331static QCString g_lastGuardName;
2332static QCString g_incName;
2333static QCString g_guardExpr;
2334static int g_curlyCount;
2335static bool g_nospaces; // add extra spaces during macro expansion
2336
2337static bool g_macroExpansion; // from the configuration
2338static bool g_expandOnlyPredef; // from the configuration
2339static int g_commentCount;
2340static bool g_insideComment;
2341static bool g_isImported;
2342static QCString g_blockName;
2343static int g_condCtx;
2344static bool g_skip;
2345static QStack<bool> g_condStack;
2346static bool g_insideCS; // C# has simpler preprocessor
2347static bool g_isSource;
2348
2349static bool g_lexInit = FALSE;
2350
2351DefineDict* getGlobalDefineDict()
2352{
2353 return g_globalDefineDict;
2354}
2355
2356static void setFileName(const char *name)
2357{
2358 bool ambig;
2359 QFileInfo fi(name);
2360 g_yyFileName=convertToQCString(fi.absFilePath());
2361 g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig);
2362 if (g_yyFileDef==0) // if this is not an input file check if it is an
2363 // include file
2364 {
2365 g_yyFileDef=findFileDef(Doxygen::includeNameDict,g_yyFileName,ambig);
2366 }
2367 //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n",
2368 // name,g_yyFileName.data(),g_yyFileDef);
2369 if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0;
2370 g_insideCS = getLanguageFromFileName(g_yyFileName)==SrcLangExt_CSharp;
2371 g_isSource = guessSection(g_yyFileName);
2372}
2373
2374static void incrLevel()
2375{
2376 g_level++;
2377 g_levelGuard.resize(g_level);
2378 g_levelGuard[g_level-1]=FALSE;
2379 //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2380}
2381
2382static void decrLevel()
2383{
2384 //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level);
2385 if (g_level > 0)
2386 {
2387 g_level--;
2388 g_levelGuard.resize(g_level);
2389 }
2390 else
2391 {
2392 warn(g_yyFileName,g_yyLineNr,"warning: More #endif's than #if's found.\n");
2393 }
2394}
2395
2396static bool otherCaseDone()
2397{
2398 if (g_level==0)
2399 {
2400 warn(g_yyFileName,g_yyLineNr,"warning: Found an #else without a preceding #if.\n");
2401 return TRUE;
2402 }
2403 else
2404 {
2405 return g_levelGuard[g_level-1];
2406 }
2407}
2408
2409static void setCaseDone(bool value)
2410{
2411 g_levelGuard[g_level-1]=value;
2412}
2413
2414static bool macroIsAccessible(Define *def)
2415{
2416 //printf("macroIsAccessible(%s) input=%s def=%s\n",
2417 // def->name.data(),g_inputFileDef?g_inputFileDef->name().data():"<none>",
2418 // def->fileDef ? def->fileDef->name().data() : "<none>");
2419 if (def && def->isPredefined) // predefined macro -> globally accessible
2420 {
2421 //printf("%s: predefined macro %s\n",g_inputFileDef->name().data(),def->name.data());
2422 return TRUE;
2423 }
2424 if (def && def->fileDef==g_inputFileDef)
2425 {
2426 //printf("%s: macro %s defined in this file at line %d now at %d\n",
2427 //g_inputFileDef->name().data(),def->name.data(),def->lineNr,g_yyLineNr);
2428 return def->lineNr<=g_yyLineNr;
2429 }
2430 if (g_inputFileDef && def && def->fileDef) // check if g_inputFileDef actually includes def->fileDef
2431 {
2432 QDict<FileDef> includedFiles(257);
2433 bool b = g_inputFileDef->includes(def->fileDef,&includedFiles);
2434 //printf("%s: Checking for accessibility of define '%s' (defined in %s): result=%d\n",
2435 // g_inputFileDef->name().data(),def->name.data(),def->fileDef->name().data(),b);
2436 return b;
2437 }
2438 //printf("not accessible!\n");
2439 return FALSE;
2440}
2441
2442static Define *isDefined(const char *name)
2443{
2444 Define *def=0;
2445 if (name)
2446 {
2447 def=g_globalDefineDict->find(name);
2448 //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef)
2449 //return def;
2450 if (def && def->undef) def=0;
2451 if (def && !macroIsAccessible(def)) def=0;
2452 }
2453 return def;
2454}
2455
2456
2457static QDict<void> g_allIncludes(10009);
2458
2459static FileState *checkAndOpenFile(const QCString &fileName,bool &alreadyIncluded)
2460{
2461 alreadyIncluded = FALSE;
2462 FileState *fs = 0;
2463 //printf("checkAndOpenFile(%s)\n",fileName.data());
2464 QFileInfo fi(fileName);
2465 if (fi.exists() && fi.isFile())
2466 {
2467 static QStrList &exclPatterns = Config_getList("EXCLUDE_PATTERNS");
2468 if (patternMatch(fi,&exclPatterns)) return 0;
2469
2470 QCString absName = convertToQCString(fi.absFilePath());
2471
2472 // global guard
2473 if (g_curlyCount==0) // not #include inside { ... }
2474 {
2475 if (g_allIncludes.find(absName)!=0)
2476 {
2477 alreadyIncluded = TRUE;
2478 //printf(" already included 1\n");
2479 return 0; // already done
2480 }
2481 g_allIncludes.insert(absName,(void *)0x8);
2482 }
2483 // check include stack for absName
2484
2485 QStack<FileState> tmpStack;
2486 g_includeStack.setAutoDelete(FALSE);
2487 while ((fs=g_includeStack.pop()))
2488 {
2489 if (fs->fileName==absName) alreadyIncluded=TRUE;
2490 tmpStack.push(fs);
2491 }
2492 while ((fs=tmpStack.pop()))
2493 {
2494 g_includeStack.push(fs);
2495 }
2496 g_includeStack.setAutoDelete(TRUE);
2497
2498 if (alreadyIncluded)
2499 {
2500 //printf(" already included 2\n");
2501 return 0;
2502 }
2503 //printf("#include %s\n",absName.data());
2504
2505 fs = new FileState(fi.size()+4096);
2506 alreadyIncluded = FALSE;
2507 if (!readInputFile(absName,fs->fileBuf))
2508 { // error
2509 //printf(" error reading\n");
2510 delete fs;
2511 fs=0;
2512 }
2513 else
2514 {
2515 fs->oldFileBuf = g_inputBuf;
2516 fs->oldFileBufPos = g_inputBufPos;
2517 }
2518 }
2519 return fs;
2520}
2521
2522static FileState *findFile(const char *fileName,bool localInclude,bool &alreadyIncluded)
2523{
2524 //printf("** findFile(%s,%d) g_yyFileName=%s\n",fileName,localInclude,g_yyFileName.data());
2525 if (localInclude && !g_yyFileName.isEmpty())
2526 {
2527 QFileInfo fi(g_yyFileName);
2528 if (fi.exists())
2529 {
2530 QCString absName = QCString(fi.dirPath(TRUE).data())+"/"+fileName;
2531 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2532 if (fs)
2533 {
2534setFileName(absName);
2535g_yyLineNr=1;
2536return fs;
2537 }
2538 else if (alreadyIncluded)
2539 {
2540return 0;
2541 }
2542 }
2543 }
2544 if (g_pathList==0)
2545 {
2546 return 0;
2547 }
2548 char *s=g_pathList->first();
2549 while (s)
2550 {
2551 QCString absName = (QCString)s+"/"+fileName;
2552 //printf(" Looking for %s in %s\n",fileName,s);
2553 FileState *fs = checkAndOpenFile(absName,alreadyIncluded);
2554 if (fs)
2555 {
2556 setFileName(absName);
2557 g_yyLineNr=1;
2558 //printf(" -> found it\n");
2559 return fs;
2560 }
2561 else if (alreadyIncluded)
2562 {
2563 return 0;
2564 }
2565
2566 s=g_pathList->next();
2567 }
2568 return 0;
2569}
2570
2571static QCString extractTrailingComment(const char *s)
2572{
2573 if (s==0) return "";
2574 int i=strlen(s)-1;
2575 while (i>=0)
2576 {
2577 char c=s[i];
2578 switch (c)
2579 {
2580 case '/':
2581{
2582 i--;
2583 if (i>=0 && s[i]=='*') // end of a comment block
2584 {
2585 i--;
2586 while (i>0 && !(s[i-1]=='/' && s[i]=='*')) i--;
2587 if (i==0) return s; else return &s[i-1];
2588 }
2589 else
2590 {
2591 return "";
2592 }
2593}
2594break;
2595// whitespace or line-continuation
2596 case ' ':
2597 case '\t':
2598 case '\r':
2599 case '\n':
2600 case '\\':
2601break;
2602 default:
2603return "";
2604 }
2605 i--;
2606 }
2607 return "";
2608}
2609
2610static int getNextChar(const QCString &expr,QCString *rest,uint &pos);
2611static int getCurrentChar(const QCString &expr,QCString *rest,uint pos);
2612static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c);
2613static void expandExpression(QCString &expr,QCString *rest,int pos);
2614
2615static QCString stringize(const QCString &s)
2616{
2617 QCString result;
2618 uint i=0;
2619 bool inString=FALSE;
2620 bool inChar=FALSE;
2621 char c,pc;
2622 while (i<s.length())
2623 {
2624 if (!inString && !inChar)
2625 {
2626 while (i<s.length() && !inString && !inChar)
2627 {
2628c=s.at(i++);
2629if (c=='"')
2630{
2631 result+="\\\"";
2632 inString=TRUE;
2633}
2634else if (c=='\'')
2635{
2636 result+=c;
2637 inChar=TRUE;
2638}
2639else
2640{
2641 result+=c;
2642}
2643 }
2644 }
2645 else if (inChar)
2646 {
2647 while (i<s.length() && inChar)
2648 {
2649c=s.at(i++);
2650if (c=='\'')
2651{
2652 result+='\'';
2653 inChar=FALSE;
2654}
2655else if (c=='\\')
2656{
2657 result+="\\\\";
2658}
2659else
2660{
2661 result+=c;
2662}
2663 }
2664 }
2665 else
2666 {
2667 pc=0;
2668 while (i<s.length() && inString)
2669 {
2670char c=s.at(i++);
2671if (c=='"')
2672{
2673 result+="\\\"";
2674 inString= pc=='\\';
2675}
2676else if (c=='\\')
2677 result+="\\\\";
2678else
2679 result+=c;
2680pc=c;
2681 }
2682 }
2683 }
2684 //printf("stringize `%s'->`%s'\n",s.data(),result.data());
2685 return result;
2686}
2687
2688/*! Execute all ## operators in expr.
2689 * If the macro name before or after the operator contains a no-rescan
2690 * marker (@-) then this is removed (before the concatenated macro name
2691 * may be expanded again.
2692 */
2693static void processConcatOperators(QCString &expr)
2694{
2695 //printf("processConcatOperators: in=`%s'\n",expr.data());
2696 QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
2697 int l,n,i=0;
2698 if (expr.isEmpty()) return;
2699 while ((n=r.match(expr,i,&l))!=-1)
2700 {
2701 //printf("Match: `%s'\n",expr.data()+i);
2702 if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-')
2703 {
2704 // remove no-rescan marker after ID
2705 l+=2;
2706 }
2707 //printf("found `%s'\n",expr.mid(n,l).data());
2708 // remove the ## operator and the surrounding whitespace
2709 expr=expr.left(n)+expr.right(expr.length()-n-l);
2710 int k=n-1;
2711 while (k>=0 && isId(expr.at(k))) k--;
2712 if (k>0 && expr.at(k)=='-' && expr.at(k-1)=='@')
2713 {
2714 // remove no-rescan marker before ID
2715 expr=expr.left(k-1)+expr.right(expr.length()-k-1);
2716 n-=2;
2717 }
2718 i=n;
2719 }
2720 //printf("processConcatOperators: out=`%s'\n",expr.data());
2721}
2722
2723static void yyunput (int c,char *buf_ptr );
2724static void returnCharToStream(char c)
2725{
2726 unput(c);
2727}
2728
2729static inline void addTillEndOfString(const QCString &expr,QCString *rest,
2730 uint &pos,char term,QCString &arg)
2731{
2732 int cc;
2733 while ((cc=getNextChar(expr,rest,pos))!=EOF)
2734 {
2735 if (cc=='\\') arg+=(char)cc,cc=getNextChar(expr,rest,pos);
2736 else if (cc==term) return;
2737 arg+=(char)cc;
2738 }
2739}
2740
2741/*! replaces the function macro \a def whose argument list starts at
2742 * \a pos in expression \a expr.
2743 * Notice that this routine may scan beyond the \a expr string if needed.
2744 * In that case the characters will be read from the input file.
2745 * The replacement string will be returned in \a result and the
2746 * length of the (unexpanded) argument list is stored in \a len.
2747 */
2748static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result)
2749{
2750 //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);
2751 uint j=pos;
2752 len=0;
2753 result.resize(0);
2754 int cc;
2755 while ((cc=getCurrentChar(expr,rest,j))!=EOF && isspace(cc))
2756 {
2757 len++;
2758 getNextChar(expr,rest,j);
2759 }
2760 if (cc!='(')
2761 {
2762 unputChar(expr,rest,j,' ');
2763 return FALSE;
2764 }
2765 getNextChar(expr,rest,j); // eat the `(' character
2766
2767 QDict<QCString> argTable; // list of arguments
2768 argTable.setAutoDelete(TRUE);
2769 QCString arg;
2770 int argCount=0;
2771 bool done=FALSE;
2772
2773 // PHASE 1: read the macro arguments
2774 if (def->nargs==0)
2775 {
2776 while ((cc=getNextChar(expr,rest,j))!=EOF)
2777 {
2778 char c = (char)cc;
2779 if (c==')') break;
2780 }
2781 }
2782 else
2783 {
2784 while (!done && (argCount<def->nargs || def->varArgs) &&
2785((cc=getNextChar(expr,rest,j))!=EOF)
2786 )
2787 {
2788 char c=(char)cc;
2789 if (c=='(') // argument is a function => search for matching )
2790 {
2791int level=1;
2792arg+=c;
2793//char term='\0';
2794while ((cc=getNextChar(expr,rest,j))!=EOF)
2795{
2796 char c=(char)cc;
2797 //printf("processing %c: term=%c (%d)\n",c,term,term);
2798 if (c=='\'' || c=='\"') // skip ('s and )'s inside strings
2799 {
2800 arg+=c;
2801 addTillEndOfString(expr,rest,j,c,arg);
2802 }
2803 if (c==')')
2804 {
2805 level--;
2806 arg+=c;
2807 if (level==0) break;
2808 }
2809 else if (c=='(')
2810 {
2811 level++;
2812 arg+=c;
2813 }
2814 else
2815 arg+=c;
2816}
2817 }
2818 else if (c==')' || c==',') // last or next argument found
2819 {
2820if (c==',' && argCount==def->nargs-1 && def->varArgs)
2821{
2822 arg=arg.stripWhiteSpace();
2823 arg+=',';
2824}
2825else
2826{
2827 QCString argKey;
2828 argKey.sprintf("@%d",argCount++); // key name
2829 arg=arg.stripWhiteSpace();
2830 // add argument to the lookup table
2831 argTable.insert(argKey, new QCString(arg));
2832 arg.resize(0);
2833 if (c==')') // end of the argument list
2834 {
2835 done=TRUE;
2836 }
2837}
2838 }
2839 else if (c=='\"') // append literal strings
2840 {
2841arg+=c;
2842bool found=FALSE;
2843while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
2844{
2845 found = cc=='"';
2846 if (cc=='\\')
2847 {
2848 c=(char)cc;
2849 arg+=c;
2850 if ((cc=getNextChar(expr,rest,j))==EOF) break;
2851 }
2852 c=(char)cc;
2853 arg+=c;
2854}
2855 }
2856 else if (c=='\'') // append literal characters
2857 {
2858arg+=c;
2859bool found=FALSE;
2860while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
2861{
2862 found = cc=='\'';
2863 if (cc=='\\')
2864 {
2865 c=(char)cc;
2866 arg+=c;
2867 if ((cc=getNextChar(expr,rest,j))==EOF) break;
2868 }
2869 c=(char)cc;
2870 arg+=c;
2871}
2872 }
2873 else // append other characters
2874 {
2875arg+=c;
2876 }
2877 }
2878 }
2879
2880 // PHASE 2: apply the macro function
2881 if (argCount==def->nargs ||
2882 (argCount>def->nargs && def->varArgs)) // matching parameters lists
2883 {
2884 uint k=0;
2885 // substitution of all formal arguments
2886 QCString resExpr;
2887 const QCString d=def->definition.stripWhiteSpace();
2888 //printf("Macro definition: %s\n",d.data());
2889 bool inString=FALSE;
2890 while (k<d.length())
2891 {
2892 if (d.at(k)=='@') // maybe a marker, otherwise an escaped @
2893 {
2894if (d.at(k+1)=='@') // escaped @ => copy it (is unescaped later)
2895{
2896 k+=2;
2897 resExpr+="@@"; // we unescape these later
2898}
2899else if (d.at(k+1)=='-') // no-rescan marker
2900{
2901 k+=2;
2902 resExpr+="@-";
2903}
2904else // argument marker => read the argument number
2905{
2906 QCString key="@";
2907 QCString *subst=0;
2908 bool hash=FALSE;
2909 int l=k-1;
2910 // search for ## backward
2911 if (l>=0 && d.at(l)=='"') l--;
2912 while (l>=0 && d.at(l)==' ') l--;
2913 if (l>0 && d.at(l)=='#' && d.at(l-1)=='#') hash=TRUE;
2914 k++;
2915 // scan the number
2916 while (k<d.length() && d.at(k)>='0' && d.at(k)<='9') key+=d.at(k++);
2917 if (!hash)
2918 {
2919 // search for ## forward
2920 l=k;
2921 if (l<(int)d.length() && d.at(l)=='"') l++;
2922 while (l<(int)d.length() && d.at(l)==' ') l++;
2923 if (l<(int)d.length()-1 && d.at(l)=='#' && d.at(l+1)=='#') hash=TRUE;
2924 }
2925 //printf("request key %s result %s\n",key.data(),argTable[key]->data());
2926 if (key.length()>1 && (subst=argTable[key]))
2927 {
2928 QCString substArg=*subst;
2929 //printf("substArg=`%s'\n",substArg.data());
2930 // only if no ## operator is before or after the argument
2931 // marker we do macro expansion.
2932 if (!hash) expandExpression(substArg,0,0);
2933 if (inString)
2934 {
2935 //printf("`%s'=stringize(`%s')\n",stringize(*subst).data(),subst->data());
2936
2937 // if the marker is inside a string (because a # was put
2938 // before the macro name) we must escape " and \ characters
2939 resExpr+=stringize(substArg);
2940 }
2941 else
2942 {
2943 if (hash && substArg.isEmpty())
2944 {
2945resExpr+="@E"; // empty argument will be remove later on
2946 }
2947 else if (g_nospaces)
2948 {
2949 resExpr+=substArg;
2950 }
2951 else
2952 {
2953 resExpr+=" "+substArg+" ";
2954 }
2955 }
2956 }
2957}
2958 }
2959 else // no marker, just copy
2960 {
2961if (!inString && d.at(k)=='\"')
2962{
2963 inString=TRUE; // entering a literal string
2964}
2965else if (inString && d.at(k)=='\"' && (d.at(k-1)!='\\' || d.at(k-2)=='\\'))
2966{
2967 inString=FALSE; // leaving a literal string
2968}
2969resExpr+=d.at(k++);
2970 }
2971 }
2972 len=j-pos;
2973 result=resExpr;
2974 //printf("result after substitution `%s' expr=`%s'\n",
2975 // result.data(),expr.mid(pos,len).data());
2976 return TRUE;
2977 }
2978 return FALSE;
2979}
2980
2981
2982/*! returns the next identifier in string \a expr by starting at position \a p.
2983 * The position of the identifier is returned (or -1 if nothing is found)
2984 * and \a l is its length. Any quoted strings are skipping during the search.
2985 */
2986static int getNextId(const QCString &expr,int p,int *l)
2987{
2988 int n;
2989 while (p<(int)expr.length())
2990 {
2991 char c=expr.at(p++);
2992 if (isdigit(c)) // skip number
2993 {
2994 while (p<(int)expr.length() && isId(expr.at(p))) p++;
2995 }
2996 else if (isalpha(c) || c=='_') // read id
2997 {
2998 n=p-1;
2999 while (p<(int)expr.length() && isId(expr.at(p))) p++;
3000 *l=p-n;
3001 return n;
3002 }
3003 else if (c=='"') // skip string
3004 {
3005 char ppc=0,pc=c;
3006 if (p<(int)expr.length()) c=expr.at(p);
3007 while (p<(int)expr.length() && (c!='"' || (pc=='\\' && ppc!='\\')))
3008// continue as long as no " is found, but ignoring \", but not \\"
3009 {
3010ppc=pc;
3011pc=c;
3012c=expr.at(p);
3013p++;
3014 }
3015 if (p<(int)expr.length()) ++p; // skip closing quote
3016 }
3017 else if (c=='/') // skip C Comment
3018 {
3019 char pc=c;
3020 if (p<(int)expr.length())
3021 {
3022c=expr.at(++p);
3023 if (c=='*') // Start of C comment
3024 {
3025 while (p<(int)expr.length() && !(pc=='*' && c=='/'))
3026 {
3027 pc=c;
3028 c=expr.at(++p);
3029 }
3030 p++;
3031 }
3032 }
3033 }
3034 }
3035 return -1;
3036}
3037
3038/*! preforms recursive macro expansion on the string \a expr
3039 * starting at position \a pos.
3040 * May read additional characters from the input while re-scanning!
3041 * If \a expandAll is \c TRUE then all macros in the expression are
3042 * expanded, otherwise only the first is expanded.
3043 */
3044static void expandExpression(QCString &expr,QCString *rest,int pos)
3045{
3046 //printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0);
3047 QCString macroName;
3048 QCString expMacro;
3049 bool definedTest=FALSE;
3050 int i=pos,l,p,len;
3051 while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name
3052 {
3053 bool replaced=FALSE;
3054 macroName=expr.mid(p,l);
3055 if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker?
3056 {
3057 if (g_expandedDict->find(macroName)==0) // expand macro
3058 {
3059Define *def=isDefined(macroName);
3060if (definedTest) // macro name was found after defined
3061{
3062 if (def) expMacro = " 1 "; else expMacro = " 0 ";
3063 replaced=TRUE;
3064 len=l;
3065 definedTest=FALSE;
3066}
3067else if (def && def->nargs==-1) // simple macro
3068{
3069 // substitute the definition of the macro
3070 //printf("macro `%s'->`%s'\n",macroName.data(),def->definition.data());
3071 if (g_nospaces)
3072 {
3073 expMacro=def->definition.stripWhiteSpace();
3074 }
3075 else
3076 {
3077 expMacro=" "+def->definition.stripWhiteSpace()+" ";
3078 }
3079 //expMacro=def->definition.stripWhiteSpace();
3080 replaced=TRUE;
3081 len=l;
3082 //printf("simple macro expansion=`%s'->`%s'\n",macroName.data(),expMacro.data());
3083}
3084else if (def && def->nargs>=0) // function macro
3085{
3086 replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro);
3087 len+=l;
3088}
3089 else if (macroName=="defined")
3090 {
3091 //printf("found defined inside macro definition '%s'\n",expr.right(expr.length()-p).data());
3092 definedTest=TRUE;
3093 }
3094
3095if (replaced) // expand the macro and rescan the expression
3096{
3097
3098 //printf("replacing `%s'->`%s'\n",expr.mid(p,len).data(),expMacro.data());
3099 QCString resultExpr=expMacro;
3100 QCString restExpr=expr.right(expr.length()-len-p);
3101 processConcatOperators(resultExpr);
3102 if (def && !def->nonRecursive)
3103 {
3104 g_expandedDict->insert(macroName,def);
3105 expandExpression(resultExpr,&restExpr,0);
3106 g_expandedDict->remove(macroName);
3107 }
3108 expr=expr.left(p)+resultExpr+restExpr;
3109 i=p;
3110 //printf("new expression: %s\n",expr.data());
3111}
3112else // move to the next macro name
3113{
3114 //printf("moving to the next macro old=%d new=%d\n",i,p+l);
3115 i=p+l;
3116}
3117 }
3118 else // move to the next macro name
3119 {
3120expr=expr.left(p)+"@-"+expr.right(expr.length()-p);
3121//printf("macro already expanded, moving to the next macro expr=%s\n",expr.data());
3122i=p+l+2;
3123//i=p+l;
3124 }
3125 }
3126 else // no re-scan marker found, skip the macro name
3127 {
3128 //printf("skipping marked macro\n");
3129 i=p+l;
3130 }
3131 }
3132}
3133
3134/*! replaces all occurrences of @@@@ in \a s by @@
3135 * and removes all occurrences of @@E.
3136 * All identifiers found are replaced by 0L
3137 */
3138QCString removeIdsAndMarkers(const char *s)
3139{
3140 //printf("removeIdsAndMarkers(%s)\n",s);
3141 const char *p=s;
3142 char c;
3143 bool inNum=FALSE;
3144 QCString result;
3145 if (p)
3146 {
3147 while ((c=*p))
3148 {
3149 if (c=='@') // replace @@ with @ and remove @E
3150 {
3151if (*(p+1)=='@')
3152{
3153 result+=c;
3154}
3155else if (*(p+1)=='E')
3156{
3157 // skip
3158}
3159p+=2;
3160 }
3161 else if (isdigit(c)) // number
3162 {
3163result+=c;
3164p++;
3165 inNum=TRUE;
3166 }
3167 else if (c=='d' && !inNum) // identifier starting with a `d'
3168 {
3169if (strncmp(p,"defined ",8)==0 || strncmp(p,"defined(",8)==0)
3170 // defined keyword
3171{
3172 p+=7; // skip defined
3173}
3174else
3175{
3176 result+="0L";
3177 p++;
3178 while ((c=*p) && isId(c)) p++;
3179}
3180 }
3181 else if ((isalpha(c) || c=='_') && !inNum) // replace identifier with 0L
3182 {
3183result+="0L";
3184p++;
3185while ((c=*p) && isId(c)) p++;
3186if (*p=='(') // undefined function macro
3187{
3188 p++;
3189 int count=1;
3190 while ((c=*p++))
3191 {
3192 if (c=='(') count++;
3193 else if (c==')')
3194 {
3195 count--;
3196 if (count==0) break;
3197 }
3198 else if (c=='/')
3199 {
3200 char pc=c;
3201 c=*++p;
3202 if (c=='*') // start of C comment
3203 {
3204while (*p && !(pc=='*' && c=='/')) // search end of comment
3205{
3206 pc=c;
3207 c=*++p;
3208}
3209p++;
3210 }
3211 }
3212 }
3213}
3214 }
3215 else if (c=='/') // skip C comments
3216 {
3217char pc=c;
3218c=*++p;
3219if (c=='*') // start of C comment
3220{
3221 while (*p && !(pc=='*' && c=='/')) // search end of comment
3222 {
3223 pc=c;
3224 c=*++p;
3225 }
3226 p++;
3227}
3228else // oops, not comment but division
3229{
3230 result+=pc;
3231 goto nextChar;
3232}
3233 }
3234 else
3235 {
3236nextChar:
3237result+=c;
3238char lc=tolower(c);
3239if (!isId(lc) && lc!='.' /*&& lc!='-' && lc!='+'*/) inNum=FALSE;
3240p++;
3241 }
3242 }
3243 }
3244 //printf("removeIdsAndMarkers(%s)=%s\n",s,result.data());
3245 return result;
3246}
3247
3248/*! replaces all occurrences of @@ in \a s by @
3249 * \par assumption:
3250 * \a s only contains pairs of @@'s
3251 */
3252QCString removeMarkers(const char *s)
3253{
3254 const char *p=s;
3255 char c;
3256 QCString result;
3257 if (p)
3258 {
3259 while ((c=*p))
3260 {
3261 switch(c)
3262 {
3263case '@': // replace @@ with @
3264 {
3265 if (*(p+1)=='@')
3266 {
3267 result+=c;
3268 }
3269 p+=2;
3270 }
3271 break;
3272case '/': // skip C comments
3273 {
3274 result+=c;
3275 char pc=c;
3276 c=*++p;
3277 if (c=='*') // start of C comment
3278 {
3279 while (*p && !(pc=='*' && c=='/')) // search end of comment
3280 {
3281if (*p=='@' && *(p+1)=='@')
3282 result+=c,p++;
3283else
3284 result+=c;
3285pc=c;
3286c=*++p;
3287 }
3288 if (*p)
3289 {
3290 result+=c;
3291 p++;
3292 }
3293 }
3294 }
3295 break;
3296case '"': // skip string literals
3297 {
3298 result+=c;
3299 char pc=c;
3300 c=*++p;
3301 while (*p && (c!='"' || pc=='\\')) // no end quote
3302 {
3303 result+=c;
3304 c=*++p;
3305 }
3306 }
3307 break;
3308case '\'': // skip char literals
3309 {
3310 result+=c;
3311 char pc=c;
3312 c=*++p;
3313 while (*p && (c!='\'' || pc=='\\')) // no end quote
3314 {
3315 result+=c;
3316 c=*++p;
3317 }
3318 }
3319 break;
3320default:
3321 {
3322 result+=c;
3323 p++;
3324 }
3325 break;
3326 }
3327 }
3328 }
3329 //printf("RemoveMarkers(%s)=%s\n",s,result.data());
3330 return result;
3331}
3332
3333/*! compute the value of the expression in string \a expr.
3334 * If needed the function may read additional characters from the input.
3335 */
3336
3337bool computeExpression(const QCString &expr)
3338{
3339 QCString e=expr;
3340 expandExpression(e,0,0);
3341 //printf("after expansion `%s'\n",e.data());
3342 e = removeIdsAndMarkers(e);
3343 if (e.isEmpty()) return FALSE;
3344 //printf("parsing `%s'\n",e.data());
3345 return parseCppExpression(g_yyFileName,g_yyLineNr,e);
3346}
3347
3348/*! expands the macro definition in \a name
3349 * If needed the function may read additional characters from the input
3350 */
3351
3352QCString expandMacro(const QCString &name)
3353{
3354 QCString n=name;
3355 expandExpression(n,0,0);
3356 n=removeMarkers(n);
3357 //printf("expandMacro `%s'->`%s'\n",name.data(),n.data());
3358 return n;
3359}
3360
3361Define *newDefine()
3362{
3363 Define *def=new Define;
3364 def->name = g_defName;
3365 def->definition = g_defText.stripWhiteSpace();
3366 def->nargs = g_defArgs;
3367 def->fileName = g_yyFileName;
3368 def->fileDef = g_yyFileDef;
3369 def->lineNr = g_yyLineNr;
3370 def->varArgs = g_defVarArgs;
3371 //printf("newDefine: %s->%s\n",def->name.data(),
3372 // def->fileDef ? def->fileDef->name().data() : "<none>");
3373 //printf("newDefine: `%s'->`%s'\n",def->name.data(),def->definition.data());
3374 if (!def->name.isEmpty() && Doxygen::expandAsDefinedDict[def->name])
3375 {
3376 def->isPredefined=TRUE;
3377 }
3378 return def;
3379}
3380
3381void addDefine()
3382{
3383 if (g_skip) return; // do not add this define as it is inside a
3384 // conditional section (cond command) that is disabled.
3385 if (!Doxygen::gatherDefines) return;
3386
3387 //printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data());
3388 //ArgumentList *al = new ArgumentList;
3389 //stringToArgumentList(g_defArgsStr,al);
3390 MemberDef *md=new MemberDef(
3391 g_yyFileName,g_yyLineNr,
3392 "#define",g_defName,g_defArgsStr,0,
3393 Public,Normal,FALSE,Member,MemberDef::Define,0,0);
3394 if (!g_defArgsStr.isEmpty())
3395 {
3396 ArgumentList *argList = new ArgumentList;
3397 //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data());
3398 stringToArgumentList(g_defArgsStr,argList);
3399 md->setArgumentList(argList);
3400 }
3401 //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data());
3402 int l=g_defLitText.find('\n');
3403 if (l>0 && g_defLitText.left(l).stripWhiteSpace()=="\\")
3404 {
3405 // strip first line if it only contains a slash
3406 g_defLitText = g_defLitText.right(g_defLitText.length()-l-1);
3407 }
3408 else if (l>0)
3409 {
3410 // align the items on the first line with the items on the second line
3411 int k=l+1;
3412 const char *p=g_defLitText.data()+k;
3413 char c;
3414 while ((c=*p++) && (c==' ' || c=='\t')) k++;
3415 g_defLitText=g_defLitText.mid(l+1,k-l-1)+g_defLitText.stripWhiteSpace();
3416 }
3417 md->setInitializer(g_defLitText.stripWhiteSpace());
3418
3419 //printf("pre.l: md->setFileDef(%p)\n",g_inputFileDef);
3420 md->setFileDef(g_inputFileDef);
3421 md->setDefinition("#define "+g_defName);
3422
3423 MemberName *mn=Doxygen::functionNameSDict->find(g_defName);
3424 if (mn==0)
3425 {
3426 mn = new MemberName(g_defName);
3427 Doxygen::functionNameSDict->append(g_defName,mn);
3428 }
3429 mn->append(md);
3430 if (g_yyFileDef)
3431 {
3432 g_yyFileDef->insertMember(md);
3433 }
3434
3435 //Define *d;
3436 //if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine());
3437}
3438
3439static inline void outputChar(char c)
3440{
3441 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addChar(c);
3442}
3443
3444static inline void outputArray(const char *a,int len)
3445{
3446 if (g_includeStack.isEmpty() || g_curlyCount>0) g_outputBuf->addArray(a,len);
3447}
3448
3449static void readIncludeFile(const QCString &inc)
3450{
3451 if (!Config_getBool("SEARCH_INCLUDES")) return; // do not read include files
3452 uint i=0;
3453
3454 // find the start of the include file name
3455 while (i<inc.length() &&
3456 (inc.at(i)==' ' || inc.at(i)=='"' || inc.at(i)=='<')
3457 ) i++;
3458 uint s=i;
3459
3460 // was it a local include?
3461 bool localInclude = s>0 && inc.at(s-1)=='"';
3462
3463 // find the end of the include file name
3464 while (i<inc.length() && inc.at(i)!='"' && inc.at(i)!='>') i++;
3465
3466 if (s<inc.length() && i>s) // valid include file name found
3467 {
3468 // extract include path+name
3469 QCString incFileName=inc.mid(s,i-s).stripWhiteSpace();
3470
3471 QCString dosExt = incFileName.right(4);
3472 if (dosExt==".exe" || dosExt==".dll" || dosExt==".tbl")
3473 {
3474 // skip imported binary files (e.g. M$ type libraries)
3475 return;
3476 }
3477
3478 QCString oldFileName = g_yyFileName;
3479 FileDef *oldFileDef = g_yyFileDef;
3480 int oldLineNr = g_yyLineNr;
3481 //printf("Searching for `%s'\n",incFileName.data());
3482
3483 // findFile will overwrite g_yyFileDef if found
3484 FileState *fs;
3485 bool alreadyIncluded = FALSE;
3486 //printf("calling findFile(%s)\n",incFileName.data());
3487 if ((fs=findFile(incFileName,localInclude,alreadyIncluded))) // see if the include file can be found
3488 {
3489 //printf("Found include file!\n");
3490 if (Debug::isFlagSet(Debug::Preprocessor))
3491 {
3492 for (i=0;i<g_includeStack.count();i++) msg(" ");
3493 //msg("#include %s: parsing...\n",incFileName.data());
3494 }
3495 if (oldFileDef)
3496 {
3497 // add include dependency to the file in which the #include was found
3498bool ambig;
3499// change to local name for bug 641336
3500 FileDef *incFd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
3501 oldFileDef->addIncludeDependency(ambig ? 0 : incFd,incFileName,localInclude,g_isImported);
3502 // add included by dependency
3503 if (g_yyFileDef)
3504 {
3505 //printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
3506 g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3507 }
3508 }
3509 fs->bufState = YY_CURRENT_BUFFER;
3510 fs->lineNr = oldLineNr;
3511 fs->fileName = oldFileName;
3512 // push the state on the stack
3513 g_includeStack.push(fs);
3514 // set the scanner to the include file
3515
3516 // Deal with file changes due to
3517 // #include's within { .. } blocks
3518 QCString lineStr(g_yyFileName.length()+20);
3519 lineStr.sprintf("# 1 \"%s\" 1\n",g_yyFileName.data());
3520 outputArray(lineStr.data(),lineStr.length());
3521
3522 //fprintf(stderr,"Switching to include file %s\n",incFileName.data());
3523 g_expectGuard=TRUE;
3524 g_inputBuf = &fs->fileBuf;
3525 g_inputBufPos=0;
3526 preYY_switch_to_buffer(preYY_create_buffer(0,YY_BUF_SIZE));
3527 }
3528 else
3529 {
3530 //printf(" calling findFile(%s) alreadyInc=%d\n",incFileName.data(),alreadyIncluded);
3531 if (oldFileDef)
3532 {
3533bool ambig;
3534//QCString absPath = incFileName;
3535//if (QDir::isRelativePath(incFileName))
3536//{
3537// absPath = QDir::cleanDirPath(oldFileDef->getPath()+"/"+incFileName);
3538// //printf("%s + %s -> resolved path %s\n",oldFileDef->getPath().data(),incFileName.data(),absPath.data());
3539//}
3540
3541// change to local name for bug 641336
3542FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig);
3543//printf("%s::findFileDef(%s)=%p\n",oldFileDef->name().data(),incFileName.data(),fd);
3544// add include dependency to the file in which the #include was found
3545oldFileDef->addIncludeDependency(ambig ? 0 : fd,incFileName,localInclude,g_isImported);
3546// add included by dependency
3547 if (fd)
3548 {
3549 //printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig);
3550 fd->addIncludedByDependency(oldFileDef,oldFileDef->docName(),localInclude,g_isImported);
3551 }
3552 }
3553 if (Debug::isFlagSet(Debug::Preprocessor))
3554 {
3555 msg("#include %s: not found or already included! skipping...\n",incFileName.data());
3556 //printf("error: include file %s not found\n",preYYtext);
3557 }
3558 if (g_curlyCount>0 && !alreadyIncluded) // failed to find #include inside { ... }
3559 {
3560warn(g_yyFileName,g_yyLineNr,"Warning: include file %s not found, perhaps you forgot to add its directory to INCLUDE_PATH?",incFileName.data());
3561 }
3562 }
3563 }
3564}
3565
3566/* ----------------------------------------------------------------- */
3567
3568static void startCondSection(const char *sectId)
3569{
3570 g_condStack.push(new bool(g_skip));
3571 if (Config_getList("ENABLED_SECTIONS").find(sectId)==-1)
3572 {
3573 g_skip=TRUE;
3574 }
3575}
3576
3577static void endCondSection()
3578{
3579 if (g_condStack.isEmpty())
3580 {
3581 g_skip=FALSE;
3582 }
3583 else
3584 {
3585 bool *ctx = g_condStack.pop();
3586 g_skip=*ctx;
3587 }
3588}
3589
3590static void forceEndCondSection()
3591{
3592 while (!g_condStack.isEmpty())
3593 {
3594 g_condStack.pop();
3595 }
3596 g_skip=FALSE;
3597}
3598
3599static QCString escapeAt(const char *text)
3600{
3601 QCString result;
3602 if (text)
3603 {
3604 char c;
3605 const char *p=text;
3606 while ((c=*p++))
3607 {
3608 if (c=='@') result+="@@"; else result+=c;
3609 }
3610 }
3611 return result;
3612}
3613
3614static char resolveTrigraph(char c)
3615{
3616 switch (c)
3617 {
3618 case '=': return '#';
3619 case '/': return '\\';
3620 case '\'': return '^';
3621 case '(': return '[';
3622 case ')': return ']';
3623 case '!': return '|';
3624 case '<': return '{';
3625 case '>': return '}';
3626 case '-': return '~';
3627 }
3628 return '?';
3629}
3630
3631/* ----------------------------------------------------------------- */
3632
3633#undef YY_INPUT
3634#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
3635
3636static int yyread(char *buf,int max_size)
3637{
3638 int bytesInBuf = g_inputBuf->curPos()-g_inputBufPos;
3639 int bytesToCopy = QMIN(max_size,bytesInBuf);
3640 memcpy(buf,g_inputBuf->data()+g_inputBufPos,bytesToCopy);
3641 g_inputBufPos+=bytesToCopy;
3642 return bytesToCopy;
3643}
3644
3645/* ----------------------------------------------------------------- */
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679#line 3680 "<stdout>"
3680
3681#define INITIAL 0
3682#define Start 1
3683#define Command 2
3684#define SkipCommand 3
3685#define SkipLine 4
3686#define SkipString 5
3687#define CopyLine 6
3688#define CopyString 7
3689#define Include 8
3690#define IncludeID 9
3691#define EndImport 10
3692#define DefName 11
3693#define DefineArg 12
3694#define DefineText 13
3695#define SkipCPPBlock 14
3696#define Ifdef 15
3697#define Ifndef 16
3698#define SkipCComment 17
3699#define CopyCComment 18
3700#define SkipVerbatim 19
3701#define SkipCPPComment 20
3702#define RemoveCComment 21
3703#define RemoveCPPComment 22
3704#define Guard 23
3705#define DefinedExpr1 24
3706#define DefinedExpr2 25
3707#define SkipDoubleQuote 26
3708#define SkipSingleQuote 27
3709#define UndefName 28
3710#define IgnoreLine 29
3711#define FindDefineArgs 30
3712#define ReadString 31
3713#define CondLine 32
3714
3715#ifndef YY_NO_UNISTD_H
3716/* Special case for "unistd.h", since it is non-ANSI. We include it way
3717 * down here because we want the user's section 1 to have been scanned first.
3718 * The user has a chance to override it with an option.
3719 */
3720#include <unistd.h>
3721#endif
3722
3723#ifndef YY_EXTRA_TYPE
3724#define YY_EXTRA_TYPE void *
3725#endif
3726
3727static int yy_init_globals (void );
3728
3729/* Accessor methods to globals.
3730 These are made visible to non-reentrant scanners for convenience. */
3731
3732int preYYlex_destroy (void );
3733
3734int preYYget_debug (void );
3735
3736void preYYset_debug (int debug_flag );
3737
3738YY_EXTRA_TYPE preYYget_extra (void );
3739
3740void preYYset_extra (YY_EXTRA_TYPE user_defined );
3741
3742FILE *preYYget_in (void );
3743
3744void preYYset_in (FILE * in_str );
3745
3746FILE *preYYget_out (void );
3747
3748void preYYset_out (FILE * out_str );
3749
3750yy_size_t preYYget_leng (void );
3751
3752char *preYYget_text (void );
3753
3754int preYYget_lineno (void );
3755
3756void preYYset_lineno (int line_number );
3757
3758/* Macros after this point can all be overridden by user definitions in
3759 * section 1.
3760 */
3761
3762#ifndef YY_SKIP_YYWRAP
3763#ifdef __cplusplus
3764extern "C" int preYYwrap (void );
3765#else
3766extern int preYYwrap (void );
3767#endif
3768#endif
3769
3770 static void yyunput (int c,char *buf_ptr );
3771
3772#ifndef yytext_ptr
3773static void yy_flex_strncpy (char *,yyconst char *,int );
3774#endif
3775
3776#ifdef YY_NEED_STRLEN
3777static int yy_flex_strlen (yyconst char * );
3778#endif
3779
3780#ifndef YY_NO_INPUT
3781
3782#ifdef __cplusplus
3783static int yyinput (void );
3784#else
3785static int input (void );
3786#endif
3787
3788#endif
3789
3790/* Amount of stuff to slurp up with each read. */
3791#ifndef YY_READ_BUF_SIZE
3792#define YY_READ_BUF_SIZE 262144
3793#endif
3794
3795/* Copy whatever the last rule matched to the standard output. */
3796#ifndef ECHO
3797/* This used to be an fputs(), but since the string might contain NUL's,
3798 * we now use fwrite().
3799 */
3800#define ECHO fwrite( preYYtext, preYYleng, 1, preYYout )
3801#endif
3802
3803/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3804 * is returned in "result".
3805 */
3806#ifndef YY_INPUT
3807#define YY_INPUT(buf,result,max_size) \
3808if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3809{ \
3810int c = '*'; \
3811yy_size_t n; \
3812for ( n = 0; n < max_size && \
3813 (c = getc( preYYin )) != EOF && c != '\n'; ++n ) \
3814buf[n] = (char) c; \
3815if ( c == '\n' ) \
3816buf[n++] = (char) c; \
3817if ( c == EOF && ferror( preYYin ) ) \
3818YY_FATAL_ERROR( "input in flex scanner failed" ); \
3819result = n; \
3820} \
3821else \
3822{ \
3823errno=0; \
3824while ( (result = fread(buf, 1, max_size, preYYin))==0 && ferror(preYYin)) \
3825{ \
3826if( errno != EINTR) \
3827{ \
3828YY_FATAL_ERROR( "input in flex scanner failed" ); \
3829break; \
3830} \
3831errno=0; \
3832clearerr(preYYin); \
3833} \
3834}\
3835\
3836
3837#endif
3838
3839/* No semi-colon after return; correct usage is to write "yyterminate();" -
3840 * we don't want an extra ';' after the "return" because that will cause
3841 * some compilers to complain about unreachable statements.
3842 */
3843#ifndef yyterminate
3844#define yyterminate() return YY_NULL
3845#endif
3846
3847/* Number of entries by which start-condition stack grows. */
3848#ifndef YY_START_STACK_INCR
3849#define YY_START_STACK_INCR 25
3850#endif
3851
3852/* Report a fatal error. */
3853#ifndef YY_FATAL_ERROR
3854#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3855#endif
3856
3857/* end tables serialization structures and prototypes */
3858
3859/* Default declaration of generated scanner - a define so the user can
3860 * easily add parameters.
3861 */
3862#ifndef YY_DECL
3863#define YY_DECL_IS_OURS 1
3864
3865extern int preYYlex (void);
3866
3867#define YY_DECL int preYYlex (void)
3868#endif /* !YY_DECL */
3869
3870/* Code executed at the beginning of each rule, after preYYtext and preYYleng
3871 * have been set up.
3872 */
3873#ifndef YY_USER_ACTION
3874#define YY_USER_ACTION
3875#endif
3876
3877/* Code executed at the end of each rule. */
3878#ifndef YY_BREAK
3879#define YY_BREAK break;
3880#endif
3881
3882#define YY_RULE_SETUP \
3883if ( preYYleng > 0 ) \
3884YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3885(preYYtext[preYYleng - 1] == '\n'); \
3886YY_USER_ACTION
3887
3888/** The main scanner function which does all the work.
3889 */
3890YY_DECL
3891{
3892register yy_state_type yy_current_state;
3893register char *yy_cp, *yy_bp;
3894register int yy_act;
3895
3896#line 1458 "pre.l"
3897
3898
3899#line 3900 "<stdout>"
3900
3901if ( !(yy_init) )
3902{
3903(yy_init) = 1;
3904
3905#ifdef YY_USER_INIT
3906YY_USER_INIT;
3907#endif
3908
3909 /* Create the reject buffer large enough to save one state per allowed character. */
3910 if ( ! (yy_state_buf) )
3911 (yy_state_buf) = (yy_state_type *)preYYalloc(YY_STATE_BUF_SIZE );
3912 if ( ! (yy_state_buf) )
3913 YY_FATAL_ERROR( "out of dynamic memory in preYYlex()" );
3914
3915if ( ! (yy_start) )
3916(yy_start) = 1;/* first start state */
3917
3918if ( ! preYYin )
3919preYYin = stdin;
3920
3921if ( ! preYYout )
3922preYYout = stdout;
3923
3924if ( ! YY_CURRENT_BUFFER ) {
3925preYYensure_buffer_stack ();
3926YY_CURRENT_BUFFER_LVALUE =
3927preYY_create_buffer(preYYin,YY_BUF_SIZE );
3928}
3929
3930preYY_load_buffer_state( );
3931}
3932
3933while ( 1 )/* loops until end-of-file is reached */
3934{
3935yy_cp = (yy_c_buf_p);
3936
3937/* Support of preYYtext. */
3938*yy_cp = (yy_hold_char);
3939
3940/* yy_bp points to the position in yy_ch_buf of the start of
3941 * the current run.
3942 */
3943yy_bp = yy_cp;
3944
3945yy_current_state = (yy_start);
3946yy_current_state += YY_AT_BOL();
3947
3948(yy_state_ptr) = (yy_state_buf);
3949*(yy_state_ptr)++ = yy_current_state;
3950
3951yy_match:
3952do
3953{
3954register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3955while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3956{
3957yy_current_state = (int) yy_def[yy_current_state];
3958if ( yy_current_state >= 1157 )
3959yy_c = yy_meta[(unsigned int) yy_c];
3960}
3961yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3962*(yy_state_ptr)++ = yy_current_state;
3963++yy_cp;
3964}
3965while ( yy_base[yy_current_state] != 5434 );
3966
3967yy_find_action:
3968yy_current_state = *--(yy_state_ptr);
3969(yy_lp) = yy_accept[yy_current_state];
3970goto find_rule; /* Shut up GCC warning -Wall */
3971find_rule: /* we branch to this label when backing up */
3972for ( ; ; ) /* until we find what rule we matched */
3973{
3974if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
3975{
3976yy_act = yy_acclist[(yy_lp)];
3977if ( yy_act & YY_TRAILING_HEAD_MASK ||
3978 (yy_looking_for_trail_begin) )
3979{
3980if ( yy_act == (yy_looking_for_trail_begin) )
3981{
3982(yy_looking_for_trail_begin) = 0;
3983yy_act &= ~YY_TRAILING_HEAD_MASK;
3984break;
3985}
3986}
3987else if ( yy_act & YY_TRAILING_MASK )
3988{
3989(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
3990(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
3991(yy_full_match) = yy_cp;
3992(yy_full_state) = (yy_state_ptr);
3993(yy_full_lp) = (yy_lp);
3994}
3995else
3996{
3997(yy_full_match) = yy_cp;
3998(yy_full_state) = (yy_state_ptr);
3999(yy_full_lp) = (yy_lp);
4000break;
4001}
4002++(yy_lp);
4003goto find_rule;
4004}
4005--yy_cp;
4006yy_current_state = *--(yy_state_ptr);
4007(yy_lp) = yy_accept[yy_current_state];
4008}
4009
4010YY_DO_BEFORE_ACTION;
4011
4012do_action:/* This label is used only to access EOF actions. */
4013
4014switch ( yy_act )
4015{ /* beginning of action switch */
4016case 1:
4017YY_RULE_SETUP
4018#line 1460 "pre.l"
4019
4020YY_BREAK
4021case 2:
4022YY_RULE_SETUP
4023#line 1461 "pre.l"
4024
4025YY_BREAK
4026case 3:
4027YY_RULE_SETUP
4028#line 1462 "pre.l"
4029
4030YY_BREAK
4031case 4:
4032YY_RULE_SETUP
4033#line 1463 "pre.l"
4034{ // Trigraph
4035 unput(resolveTrigraph(preYYtext[2]));
4036 }
4037YY_BREAK
4038case 5:
4039YY_RULE_SETUP
4040#line 1466 "pre.l"
4041{ BEGIN(Command); }
4042YY_BREAK
4043case 6:
4044/* rule 6 can match eol */
4045*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4046(yy_c_buf_p) = yy_cp -= 1;
4047YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4048YY_RULE_SETUP
4049#line 1467 "pre.l"
4050{
4051 outputArray(preYYtext,preYYleng);
4052 BEGIN(CopyLine);
4053}
4054YY_BREAK
4055case 7:
4056/* rule 7 can match eol */
4057YY_RULE_SETUP
4058#line 1471 "pre.l"
4059{ // constructors?
4060 int i;
4061 for (i=preYYleng-1;i>=0;i--)
4062 {
4063 unput(preYYtext[i]);
4064 }
4065 BEGIN(CopyLine);
4066 }
4067YY_BREAK
4068case 8:
4069/* rule 8 can match eol */
4070#line 1480 "pre.l"
4071case 9:
4072/* rule 9 can match eol */
4073YY_RULE_SETUP
4074#line 1480 "pre.l"
4075{ // function like macro
4076 static bool skipFuncMacros = Config_getBool("SKIP_FUNCTION_MACROS");
4077 QCString name(preYYtext);
4078 name=name.left(name.find('(')).stripWhiteSpace();
4079
4080 Define *def=0;
4081 if (skipFuncMacros &&
4082 name!="Q_PROPERTY" &&
4083 !(
4084 (g_includeStack.isEmpty() || g_curlyCount>0) &&
4085 g_macroExpansion &&
4086 (def=g_globalDefineDict->find(name)) &&
4087 macroIsAccessible(def) &&
4088 (!g_expandOnlyPredef || def->isPredefined)
4089 )
4090 )
4091 {
4092 outputChar('\n');
4093 g_yyLineNr++;
4094 }
4095 else // don't skip
4096 {
4097 int i;
4098 for (i=preYYleng-1;i>=0;i--)
4099 {
4100 unput(preYYtext[i]);
4101 }
4102 BEGIN(CopyLine);
4103 }
4104 }
4105YY_BREAK
4106case 10:
4107/* rule 10 can match eol */
4108YY_RULE_SETUP
4109#line 1510 "pre.l"
4110{
4111 QCString text=preYYtext;
4112 g_yyLineNr+=text.contains('\n');
4113 outputArray(preYYtext,preYYleng);
4114 }
4115YY_BREAK
4116case 11:
4117YY_RULE_SETUP
4118#line 1515 "pre.l"
4119{ // count brackets inside the main file
4120 if (g_includeStack.isEmpty())
4121 {
4122 g_curlyCount++;
4123 }
4124 outputChar(*preYYtext);
4125 }
4126YY_BREAK
4127case 12:
4128YY_RULE_SETUP
4129#line 1522 "pre.l"
4130{ // count brackets inside the main file
4131 if (g_includeStack.isEmpty() && g_curlyCount>0)
4132 {
4133 g_curlyCount--;
4134 }
4135 outputChar(*preYYtext);
4136 }
4137YY_BREAK
4138case 13:
4139YY_RULE_SETUP
4140#line 1529 "pre.l"
4141{
4142 outputArray(preYYtext,preYYleng);
4143}
4144YY_BREAK
4145case 14:
4146YY_RULE_SETUP
4147#line 1532 "pre.l"
4148{
4149 outputArray(preYYtext,preYYleng);
4150}
4151YY_BREAK
4152case 15:
4153YY_RULE_SETUP
4154#line 1535 "pre.l"
4155{
4156 outputArray(preYYtext,preYYleng);
4157}
4158YY_BREAK
4159case 16:
4160YY_RULE_SETUP
4161#line 1538 "pre.l"
4162{
4163 outputChar(*preYYtext);
4164 BEGIN( CopyString );
4165}
4166YY_BREAK
4167case 17:
4168YY_RULE_SETUP
4169#line 1542 "pre.l"
4170{
4171 outputArray(preYYtext,preYYleng);
4172}
4173YY_BREAK
4174case 18:
4175YY_RULE_SETUP
4176#line 1545 "pre.l"
4177{
4178 outputArray(preYYtext,preYYleng);
4179}
4180YY_BREAK
4181case 19:
4182YY_RULE_SETUP
4183#line 1548 "pre.l"
4184{
4185 outputChar(*preYYtext);
4186 BEGIN( CopyLine );
4187}
4188YY_BREAK
4189case 20:
4190/* rule 20 can match eol */
4191YY_RULE_SETUP
4192#line 1552 "pre.l"
4193{
4194 g_expectGuard = FALSE;
4195 Define *def=0;
4196 //def=g_globalDefineDict->find(preYYtext);
4197 //printf("Search for define %s found=%d g_includeStack.isEmpty()=%d "
4198 // "g_curlyCount=%d g_macroExpansion=%d g_expandOnlyPredef=%d "
4199 // "isPreDefined=%d\n",preYYtext,def ? 1 : 0,
4200 // g_includeStack.isEmpty(),g_curlyCount,g_macroExpansion,g_expandOnlyPredef,
4201 // def ? def->isPredefined : -1
4202 //);
4203 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4204 g_macroExpansion &&
4205 (def=g_globalDefineDict->find(preYYtext)) &&
4206 (def->isPredefined || macroIsAccessible(def)) &&
4207 (!g_expandOnlyPredef || def->isPredefined)
4208 )
4209 {
4210 //printf("Found it! #args=%d\n",def->nargs);
4211 g_roundCount=0;
4212 g_defArgsStr=preYYtext;
4213 if (def->nargs==-1) // no function macro
4214 {
4215 QCString result = def->isPredefined ? def->definition : expandMacro(g_defArgsStr);
4216 outputArray(result,result.length());
4217 }
4218 else // zero or more arguments
4219 {
4220 g_findDefArgContext = CopyLine;
4221 BEGIN(FindDefineArgs);
4222 }
4223 }
4224 else
4225 {
4226 outputArray(preYYtext,preYYleng);
4227 }
4228 }
4229YY_BREAK
4230case 21:
4231YY_RULE_SETUP
4232#line 1588 "pre.l"
4233{
4234 Define *def=0;
4235 if ((g_includeStack.isEmpty() || g_curlyCount>0) &&
4236 g_macroExpansion &&
4237 (def=g_globalDefineDict->find(preYYtext)) &&
4238 def->nargs==-1 &&
4239 (def->isPredefined || macroIsAccessible(def)) &&
4240 (!g_expandOnlyPredef || def->isPredefined)
4241 )
4242 {
4243 QCString result=def->isPredefined ? def->definition : expandMacro(preYYtext);
4244 outputArray(result,result.length());
4245 }
4246 else
4247 {
4248 outputArray(preYYtext,preYYleng);
4249 }
4250 }
4251YY_BREAK
4252case 22:
4253/* rule 22 can match eol */
4254*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4255(yy_c_buf_p) = yy_cp -= 1;
4256YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4257YY_RULE_SETUP
4258#line 1606 "pre.l"
4259{ // strip line continuation characters
4260 }
4261YY_BREAK
4262case 23:
4263YY_RULE_SETUP
4264#line 1608 "pre.l"
4265{
4266 outputChar(*preYYtext);
4267 }
4268YY_BREAK
4269case 24:
4270/* rule 24 can match eol */
4271YY_RULE_SETUP
4272#line 1611 "pre.l"
4273{
4274 outputChar('\n');
4275 BEGIN(Start);
4276 g_yyLineNr++;
4277 }
4278YY_BREAK
4279case 25:
4280YY_RULE_SETUP
4281#line 1616 "pre.l"
4282{
4283 g_defArgsStr+='(';
4284 g_roundCount++;
4285 }
4286YY_BREAK
4287case 26:
4288YY_RULE_SETUP
4289#line 1620 "pre.l"
4290{
4291 g_defArgsStr+=')';
4292 g_roundCount--;
4293 if (g_roundCount==0)
4294 {
4295 QCString result=expandMacro(g_defArgsStr);
4296 //printf("g_defArgsStr=`%s'->`%s'\n",g_defArgsStr.data(),result.data());
4297 if (g_findDefArgContext==CopyLine)
4298 {
4299 outputArray(result,result.length());
4300 BEGIN(g_findDefArgContext);
4301 }
4302 else // g_findDefArgContext==IncludeID
4303 {
4304 readIncludeFile(result);
4305 g_nospaces=FALSE;
4306 BEGIN(Start);
4307 }
4308 }
4309 }
4310YY_BREAK
4311/*
4312<FindDefineArgs>")"{B}*"("{
4313 g_defArgsStr+=preYYtext;
4314 }
4315 */
4316case 27:
4317YY_RULE_SETUP
4318#line 1645 "pre.l"
4319{
4320 g_defArgsStr+=preYYtext;
4321 }
4322YY_BREAK
4323case 28:
4324YY_RULE_SETUP
4325#line 1648 "pre.l"
4326{
4327 g_defArgsStr+=*preYYtext;
4328 BEGIN(ReadString);
4329 }
4330YY_BREAK
4331case 29:
4332/* rule 29 can match eol */
4333YY_RULE_SETUP
4334#line 1652 "pre.l"
4335{
4336 g_yyLineNr++;
4337 outputChar('\n');
4338 }
4339YY_BREAK
4340case 30:
4341YY_RULE_SETUP
4342#line 1656 "pre.l"
4343{
4344 g_defArgsStr+="@@";
4345 }
4346YY_BREAK
4347case 31:
4348YY_RULE_SETUP
4349#line 1659 "pre.l"
4350{
4351 g_defArgsStr+=*preYYtext;
4352 }
4353YY_BREAK
4354case 32:
4355YY_RULE_SETUP
4356#line 1662 "pre.l"
4357{
4358 g_defArgsStr+=*preYYtext;
4359 BEGIN(FindDefineArgs);
4360 }
4361YY_BREAK
4362case 33:
4363YY_RULE_SETUP
4364#line 1666 "pre.l"
4365{
4366 g_defArgsStr+=preYYtext;
4367 }
4368YY_BREAK
4369case 34:
4370YY_RULE_SETUP
4371#line 1669 "pre.l"
4372{
4373 g_defArgsStr+=preYYtext;
4374 }
4375YY_BREAK
4376case 35:
4377YY_RULE_SETUP
4378#line 1672 "pre.l"
4379{
4380 g_defArgsStr+=*preYYtext;
4381 }
4382YY_BREAK
4383case 36:
4384YY_RULE_SETUP
4385#line 1675 "pre.l"
4386{
4387 g_isImported = preYYtext[1]=='m';
4388 if (g_macroExpansion)
4389 BEGIN(IncludeID);
4390 }
4391YY_BREAK
4392case 37:
4393YY_RULE_SETUP
4394#line 1680 "pre.l"
4395{
4396 g_isImported = preYYtext[1]=='m';
4397 char c[2];
4398 c[0]=preYYtext[preYYleng-1];c[1]='\0';
4399 g_incName=c;
4400 BEGIN(Include);
4401}
4402YY_BREAK
4403case 38:
4404YY_RULE_SETUP
4405#line 1687 "pre.l"
4406{
4407 //printf("!!!DefName\n");
4408 BEGIN(DefName);
4409}
4410YY_BREAK
4411case 39:
4412*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4413(yy_c_buf_p) = yy_cp = yy_bp + 5;
4414YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4415YY_RULE_SETUP
4416#line 1691 "pre.l"
4417{
4418 incrLevel();
4419 g_guardExpr.resize(0);
4420 BEGIN(DefinedExpr2);
4421 }
4422YY_BREAK
4423case 40:
4424*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4425(yy_c_buf_p) = yy_cp = yy_bp + 5;
4426YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4427YY_RULE_SETUP
4428#line 1696 "pre.l"
4429{
4430 //printf("Pre.l: ifdef\n");
4431 incrLevel();
4432 g_guardExpr.resize(0);
4433 BEGIN(DefinedExpr1);
4434 }
4435YY_BREAK
4436case 41:
4437*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4438(yy_c_buf_p) = yy_cp = yy_bp + 6;
4439YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4440YY_RULE_SETUP
4441#line 1702 "pre.l"
4442{
4443 incrLevel();
4444 g_guardExpr="! ";
4445 BEGIN(DefinedExpr2);
4446}
4447YY_BREAK
4448case 42:
4449*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4450(yy_c_buf_p) = yy_cp = yy_bp + 6;
4451YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4452YY_RULE_SETUP
4453#line 1707 "pre.l"
4454{
4455 incrLevel();
4456 g_guardExpr="! ";
4457 BEGIN(DefinedExpr1);
4458 }
4459YY_BREAK
4460case 43:
4461*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4462(yy_c_buf_p) = yy_cp = yy_bp + 2;
4463YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4464YY_RULE_SETUP
4465#line 1712 "pre.l"
4466{
4467 incrLevel();
4468 g_guardExpr.resize(0);
4469 BEGIN(Guard);
4470}
4471YY_BREAK
4472case 44:
4473*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4474(yy_c_buf_p) = yy_cp -= 1;
4475YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4476YY_RULE_SETUP
4477#line 1717 "pre.l"
4478{
4479 if (!otherCaseDone())
4480 {
4481 g_guardExpr.resize(0);
4482 BEGIN(Guard);
4483 }
4484 else
4485 {
4486 g_ifcount=0;
4487 BEGIN(SkipCPPBlock);
4488 }
4489 }
4490YY_BREAK
4491case 45:
4492/* rule 45 can match eol */
4493*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4494(yy_c_buf_p) = yy_cp = yy_bp + 4;
4495YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4496YY_RULE_SETUP
4497#line 1729 "pre.l"
4498{
4499 //printf("else g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]);
4500 if (otherCaseDone())
4501 {
4502 g_ifcount=0;
4503 BEGIN(SkipCPPBlock);
4504 }
4505 else
4506 {
4507 setCaseDone(TRUE);
4508 //g_levelGuard[g_level-1]=TRUE;
4509 }
4510 }
4511YY_BREAK
4512case 46:
4513YY_RULE_SETUP
4514#line 1742 "pre.l"
4515{
4516 BEGIN(UndefName);
4517 }
4518YY_BREAK
4519case 47:
4520*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4521(yy_c_buf_p) = yy_cp -= 1;
4522YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4523YY_RULE_SETUP
4524#line 1745 "pre.l"
4525{
4526 if (!otherCaseDone())
4527 {
4528 g_guardExpr.resize(0);
4529 BEGIN(Guard);
4530 }
4531 }
4532YY_BREAK
4533case 48:
4534/* rule 48 can match eol */
4535*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4536(yy_c_buf_p) = yy_cp = yy_bp + 5;
4537YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4538YY_RULE_SETUP
4539#line 1752 "pre.l"
4540{
4541 //printf("Pre.l: #endif\n");
4542 decrLevel();
4543 }
4544YY_BREAK
4545case 49:
4546/* rule 49 can match eol */
4547YY_RULE_SETUP
4548#line 1756 "pre.l"
4549{
4550 outputChar('\n');
4551 BEGIN(Start);
4552 g_yyLineNr++;
4553 }
4554YY_BREAK
4555case 50:
4556YY_RULE_SETUP
4557#line 1761 "pre.l"
4558{ // unknown directive
4559 BEGIN(IgnoreLine);
4560}
4561YY_BREAK
4562case 51:
4563/* rule 51 can match eol */
4564YY_RULE_SETUP
4565#line 1764 "pre.l"
4566{
4567 outputChar('\n');
4568 g_yyLineNr++;
4569}
4570YY_BREAK
4571case 52:
4572YY_RULE_SETUP
4573#line 1768 "pre.l"
4574
4575YY_BREAK
4576case 53:
4577YY_RULE_SETUP
4578#line 1769 "pre.l"
4579
4580YY_BREAK
4581case 54:
4582YY_RULE_SETUP
4583#line 1770 "pre.l"
4584{
4585 Define *def;
4586 if ((def=isDefined(preYYtext))
4587 /*&& !def->isPredefined*/
4588 && !def->nonRecursive
4589 )
4590 {
4591 //printf("undefining %s\n",preYYtext);
4592 def->undef=TRUE;
4593 }
4594 BEGIN(Start);
4595 }
4596YY_BREAK
4597case 55:
4598/* rule 55 can match eol */
4599YY_RULE_SETUP
4600#line 1782 "pre.l"
4601{
4602 outputChar('\n');
4603 g_guardExpr+=' ';
4604 g_yyLineNr++;
4605 }
4606YY_BREAK
4607case 56:
4608*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4609(yy_c_buf_p) = yy_cp = yy_bp + 7;
4610YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4611YY_RULE_SETUP
4612#line 1787 "pre.l"
4613{
4614 BEGIN(DefinedExpr2);
4615 }
4616YY_BREAK
4617case 57:
4618*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4619(yy_c_buf_p) = yy_cp = yy_bp + 7;
4620YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4621YY_RULE_SETUP
4622#line 1790 "pre.l"
4623{
4624 BEGIN(DefinedExpr1);
4625 }
4626YY_BREAK
4627case 58:
4628YY_RULE_SETUP
4629#line 1793 "pre.l"
4630{ g_guardExpr+=preYYtext; }
4631YY_BREAK
4632case 59:
4633YY_RULE_SETUP
4634#line 1794 "pre.l"
4635{ g_guardExpr+=*preYYtext; }
4636YY_BREAK
4637case 60:
4638/* rule 60 can match eol */
4639YY_RULE_SETUP
4640#line 1795 "pre.l"
4641{
4642 unput(*preYYtext);
4643 //printf("Guard: `%s'\n",
4644 // g_guardExpr.data());
4645 bool guard=computeExpression(g_guardExpr);
4646 setCaseDone(guard);
4647 //printf("if g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]);
4648 if (guard)
4649 {
4650 BEGIN(Start);
4651 }
4652 else
4653 {
4654 g_ifcount=0;
4655 BEGIN(SkipCPPBlock);
4656 }
4657 }
4658YY_BREAK
4659case 61:
4660/* rule 61 can match eol */
4661YY_RULE_SETUP
4662#line 1812 "pre.l"
4663{ g_yyLineNr++; outputChar('\n'); }
4664YY_BREAK
4665case 62:
4666YY_RULE_SETUP
4667#line 1813 "pre.l"
4668{
4669 if (isDefined(preYYtext))
4670 g_guardExpr+=" 1L ";
4671 else
4672 g_guardExpr+=" 0L ";
4673 g_lastGuardName=preYYtext;
4674 BEGIN(Guard);
4675 }
4676YY_BREAK
4677case 63:
4678YY_RULE_SETUP
4679#line 1821 "pre.l"
4680{
4681 if (isDefined(preYYtext))
4682 g_guardExpr+=" 1L ";
4683 else
4684 g_guardExpr+=" 0L ";
4685 g_lastGuardName=preYYtext;
4686 }
4687YY_BREAK
4688case 64:
4689/* rule 64 can match eol */
4690YY_RULE_SETUP
4691#line 1828 "pre.l"
4692{ // should not happen, handle anyway
4693 g_yyLineNr++;
4694 g_ifcount=0;
4695 BEGIN(SkipCPPBlock);
4696}
4697YY_BREAK
4698case 65:
4699YY_RULE_SETUP
4700#line 1833 "pre.l"
4701{
4702 BEGIN(Guard);
4703 }
4704YY_BREAK
4705case 66:
4706YY_RULE_SETUP
4707#line 1836 "pre.l"
4708
4709YY_BREAK
4710case 67:
4711YY_RULE_SETUP
4712#line 1837 "pre.l"
4713{ BEGIN(SkipCommand); }
4714YY_BREAK
4715case 68:
4716/* rule 68 can match eol */
4717*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4718(yy_c_buf_p) = yy_cp -= 1;
4719YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4720YY_RULE_SETUP
4721#line 1838 "pre.l"
4722{ BEGIN(SkipLine); }
4723YY_BREAK
4724case 69:
4725/* rule 69 can match eol */
4726YY_RULE_SETUP
4727#line 1839 "pre.l"
4728{ g_yyLineNr++; outputChar('\n'); }
4729YY_BREAK
4730case 70:
4731YY_RULE_SETUP
4732#line 1840 "pre.l"
4733
4734YY_BREAK
4735case 71:
4736*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4737(yy_c_buf_p) = yy_cp -= 1;
4738YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4739YY_RULE_SETUP
4740#line 1841 "pre.l"
4741{
4742 incrLevel();
4743 g_ifcount++;
4744 //printf("#if... depth=%d\n",g_ifcount);
4745}
4746YY_BREAK
4747case 72:
4748YY_RULE_SETUP
4749#line 1846 "pre.l"
4750{
4751 //printf("Else! g_ifcount=%d otherCaseDone=%d\n",g_ifcount,otherCaseDone());
4752 if (g_ifcount==0 && !otherCaseDone())
4753 {
4754 setCaseDone(TRUE);
4755 //outputChar('\n');
4756 BEGIN(Start);
4757 }
4758 }
4759YY_BREAK
4760case 73:
4761*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4762(yy_c_buf_p) = yy_cp -= 1;
4763YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4764YY_RULE_SETUP
4765#line 1855 "pre.l"
4766{
4767 if (g_ifcount==0)
4768 {
4769 if (!otherCaseDone())
4770 {
4771 g_guardExpr.resize(0);
4772 g_lastGuardName.resize(0);
4773 BEGIN(Guard);
4774 }
4775 else
4776 {
4777 BEGIN(SkipCPPBlock);
4778 }
4779 }
4780}
4781YY_BREAK
4782case 74:
4783YY_RULE_SETUP
4784#line 1870 "pre.l"
4785{
4786 g_expectGuard = FALSE;
4787 decrLevel();
4788 if (--g_ifcount<0)
4789 {
4790 //outputChar('\n');
4791 BEGIN(Start);
4792 }
4793}
4794YY_BREAK
4795case 75:
4796/* rule 75 can match eol */
4797YY_RULE_SETUP
4798#line 1879 "pre.l"
4799{
4800 outputChar('\n');
4801 g_yyLineNr++;
4802 BEGIN(SkipCPPBlock);
4803}
4804YY_BREAK
4805case 76:
4806YY_RULE_SETUP
4807#line 1884 "pre.l"
4808{ // unknown directive
4809 BEGIN(SkipLine);
4810}
4811YY_BREAK
4812case 77:
4813YY_RULE_SETUP
4814#line 1887 "pre.l"
4815
4816YY_BREAK
4817case 78:
4818YY_RULE_SETUP
4819#line 1888 "pre.l"
4820
4821YY_BREAK
4822case 79:
4823YY_RULE_SETUP
4824#line 1889 "pre.l"
4825{ }
4826YY_BREAK
4827case 80:
4828YY_RULE_SETUP
4829#line 1890 "pre.l"
4830{
4831 BEGIN(SkipString);
4832}
4833YY_BREAK
4834case 81:
4835YY_RULE_SETUP
4836#line 1893 "pre.l"
4837
4838YY_BREAK
4839case 82:
4840YY_RULE_SETUP
4841#line 1894 "pre.l"
4842{
4843 g_lastCPPContext=YY_START;
4844 BEGIN(RemoveCPPComment);
4845}
4846YY_BREAK
4847case 83:
4848*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4849(yy_c_buf_p) = yy_cp = yy_bp + 2;
4850YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4851YY_RULE_SETUP
4852#line 1898 "pre.l"
4853{
4854 g_lastCContext=YY_START;
4855 BEGIN(RemoveCComment);
4856 }
4857YY_BREAK
4858case 84:
4859/* rule 84 can match eol */
4860YY_RULE_SETUP
4861#line 1902 "pre.l"
4862{
4863 outputChar('\n');
4864 g_yyLineNr++;
4865 BEGIN(SkipCPPBlock);
4866}
4867YY_BREAK
4868case 85:
4869YY_RULE_SETUP
4870#line 1907 "pre.l"
4871{ }
4872YY_BREAK
4873case 86:
4874YY_RULE_SETUP
4875#line 1908 "pre.l"
4876{ }
4877YY_BREAK
4878case 87:
4879YY_RULE_SETUP
4880#line 1909 "pre.l"
4881{
4882 BEGIN(SkipLine);
4883 }
4884YY_BREAK
4885case 88:
4886YY_RULE_SETUP
4887#line 1912 "pre.l"
4888{ }
4889YY_BREAK
4890case 89:
4891*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4892(yy_c_buf_p) = yy_cp -= 1;
4893YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4894YY_RULE_SETUP
4895#line 1913 "pre.l"
4896{
4897 g_nospaces=TRUE;
4898 g_roundCount=0;
4899 g_defArgsStr=preYYtext;
4900 g_findDefArgContext = IncludeID;
4901 BEGIN(FindDefineArgs);
4902}
4903YY_BREAK
4904case 90:
4905YY_RULE_SETUP
4906#line 1920 "pre.l"
4907{
4908 g_nospaces=TRUE;
4909 readIncludeFile(expandMacro(preYYtext));
4910 BEGIN(Start);
4911 }
4912YY_BREAK
4913case 91:
4914YY_RULE_SETUP
4915#line 1925 "pre.l"
4916{
4917 g_incName+=preYYtext;
4918 readIncludeFile(g_incName);
4919 if (g_isImported)
4920 {
4921 BEGIN(EndImport);
4922 }
4923 else
4924 {
4925 BEGIN(Start);
4926 }
4927 }
4928YY_BREAK
4929case 92:
4930/* rule 92 can match eol */
4931*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
4932(yy_c_buf_p) = yy_cp -= 1;
4933YY_DO_BEFORE_ACTION; /* set up preYYtext again */
4934YY_RULE_SETUP
4935#line 1937 "pre.l"
4936{
4937 BEGIN(Start);
4938 }
4939YY_BREAK
4940case 93:
4941/* rule 93 can match eol */
4942YY_RULE_SETUP
4943#line 1940 "pre.l"
4944{
4945 outputChar('\n');
4946 g_yyLineNr++;
4947}
4948YY_BREAK
4949case 94:
4950YY_RULE_SETUP
4951#line 1944 "pre.l"
4952{
4953 }
4954YY_BREAK
4955case 95:
4956/* rule 95 can match eol */
4957YY_RULE_SETUP
4958#line 1946 "pre.l"
4959{ // define with argument
4960 //printf("Define() `%s'\n",preYYtext);
4961 g_argDict = new QDict<int>(31);
4962 g_argDict->setAutoDelete(TRUE);
4963 g_defArgs = 0;
4964 g_defArgsStr.resize(0);
4965 g_defText.resize(0);
4966 g_defLitText.resize(0);
4967 g_defName = preYYtext;
4968 g_defVarArgs = FALSE;
4969 g_defExtraSpacing.resize(0);
4970 BEGIN(DefineArg);
4971 }
4972YY_BREAK
4973case 96:
4974YY_RULE_SETUP
4975#line 1959 "pre.l"
4976{ // special case: define with 1 -> can be "guard"
4977 //printf("Define `%s'\n",preYYtext);
4978 g_argDict = 0;
4979 g_defArgs = -1;
4980 g_defArgsStr.resize(0);
4981 g_defName = preYYtext;
4982 g_defName = g_defName.left(g_defName.length()-1).stripWhiteSpace();
4983 g_defVarArgs = FALSE;
4984 if ( g_defName!=g_lastGuardName || !g_expectGuard)
4985 { // define may appear in the output
4986 QCString tmp=(QCString)"#define "+g_defName;
4987 outputArray(tmp.data(),tmp.length());
4988 g_quoteArg=FALSE;
4989 g_insideComment=FALSE;
4990 g_lastGuardName.resize(0);
4991 g_defText="1";
4992 g_defLitText="1";
4993 BEGIN(DefineText);
4994 }
4995 else // define is a guard => hide
4996 {
4997 g_defText.resize(0);
4998 g_defLitText.resize(0);
4999 BEGIN(Start);
5000 }
5001 }
5002YY_BREAK
5003case 97:
5004YY_RULE_SETUP
5005#line 1985 "pre.l"
5006{ // define with content
5007 //printf("Define `%s'\n",preYYtext);
5008 g_argDict = 0;
5009 g_defArgs = -1;
5010 g_defArgsStr.resize(0);
5011 g_defText.resize(0);
5012 g_defLitText.resize(0);
5013 g_defName = preYYtext;
5014 g_defVarArgs = FALSE;
5015 QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
5016 outputArray(tmp.data(),tmp.length());
5017 g_quoteArg=FALSE;
5018 g_insideComment=FALSE;
5019 BEGIN(DefineText);
5020 }
5021YY_BREAK
5022case 98:
5023/* rule 98 can match eol */
5024YY_RULE_SETUP
5025#line 2000 "pre.l"
5026{ // empty define
5027 g_argDict = 0;
5028 g_defArgs = -1;
5029 g_defName = preYYtext;
5030 g_defArgsStr.resize(0);
5031 g_defText.resize(0);
5032 g_defLitText.resize(0);
5033 g_defVarArgs = FALSE;
5034 //printf("Guard check: %s!=%s || %d\n",
5035 // g_defName.data(),g_lastGuardName.data(),g_expectGuard);
5036 if ( g_defName!=g_lastGuardName || !g_expectGuard)
5037 { // define may appear in the output
5038 QCString tmp=(QCString)"#define "+g_defName;
5039 outputArray(tmp.data(),tmp.length());
5040 g_quoteArg=FALSE;
5041 g_insideComment=FALSE;
5042 if (g_insideCS) g_defText="1"; // for C#, use "1" as define text
5043 BEGIN(DefineText);
5044 }
5045 else // define is a guard => hide
5046 {
5047 //printf("Found a guard %s\n",preYYtext);
5048 g_lastGuardName.resize(0);
5049 BEGIN(Start);
5050 }
5051 g_expectGuard=FALSE;
5052 }
5053YY_BREAK
5054case 99:
5055/* rule 99 can match eol */
5056YY_RULE_SETUP
5057#line 2027 "pre.l"
5058{
5059 g_defExtraSpacing+="\n";
5060 g_yyLineNr++;
5061 }
5062YY_BREAK
5063case 100:
5064YY_RULE_SETUP
5065#line 2031 "pre.l"
5066{ g_defArgsStr+=preYYtext; }
5067YY_BREAK
5068case 101:
5069YY_RULE_SETUP
5070#line 2032 "pre.l"
5071{ g_defArgsStr+=preYYtext; }
5072YY_BREAK
5073case 102:
5074YY_RULE_SETUP
5075#line 2033 "pre.l"
5076{
5077 g_defArgsStr+=preYYtext;
5078 QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr+g_defExtraSpacing;
5079 outputArray(tmp.data(),tmp.length());
5080 g_quoteArg=FALSE;
5081 g_insideComment=FALSE;
5082 BEGIN(DefineText);
5083 }
5084YY_BREAK
5085case 103:
5086YY_RULE_SETUP
5087#line 2041 "pre.l"
5088{ // Variadic macro
5089 g_defVarArgs = TRUE;
5090 g_defArgsStr+=preYYtext;
5091 g_argDict->insert("__VA_ARGS__",new int(g_defArgs));
5092 g_defArgs++;
5093 }
5094YY_BREAK
5095case 104:
5096YY_RULE_SETUP
5097#line 2047 "pre.l"
5098{
5099 //printf("Define addArg(%s)\n",preYYtext);
5100 QCString argName=preYYtext;
5101 g_defVarArgs = preYYtext[preYYleng-1]=='.';
5102 if (g_defVarArgs) // strip ellipsis
5103 {
5104 argName=argName.left(argName.length()-3);
5105 }
5106 argName = argName.stripWhiteSpace();
5107 g_defArgsStr+=preYYtext;
5108 g_argDict->insert(argName,new int(g_defArgs));
5109 g_defArgs++;
5110 }
5111YY_BREAK
5112/*
5113<DefineText>"/ **"|"/ *!"{
5114 g_defText+=preYYtext;
5115 g_defLitText+=preYYtext;
5116 g_insideComment=TRUE;
5117 }
5118<DefineText>"* /"{
5119 g_defText+=preYYtext;
5120 g_defLitText+=preYYtext;
5121 g_insideComment=FALSE;
5122 }
5123 */
5124case 105:
5125YY_RULE_SETUP
5126#line 2072 "pre.l"
5127{
5128 g_defText+=preYYtext;
5129 g_defLitText+=preYYtext;
5130 g_lastCContext=YY_START;
5131 g_commentCount=1;
5132 BEGIN(CopyCComment);
5133 }
5134YY_BREAK
5135case 106:
5136YY_RULE_SETUP
5137#line 2079 "pre.l"
5138{
5139 outputArray(preYYtext,preYYleng);
5140 g_lastCPPContext=YY_START;
5141 g_defLitText+=' ';
5142 BEGIN(SkipCPPComment);
5143 }
5144YY_BREAK
5145case 107:
5146YY_RULE_SETUP
5147#line 2085 "pre.l"
5148{
5149 if (preYYtext[0]=='/') outputChar('/');
5150 outputChar('*');outputChar('/');
5151 if (--g_commentCount<=0)
5152 {
5153 if (g_lastCContext==Start)
5154 // small hack to make sure that ^... rule will
5155 // match when going to Start... Example: "/*...*/ some stuff..."
5156 {
5157 YY_CURRENT_BUFFER->yy_at_bol=1;
5158 }
5159 BEGIN(g_lastCContext);
5160 }
5161 }
5162YY_BREAK
5163case 108:
5164YY_RULE_SETUP
5165#line 2099 "pre.l"
5166{
5167 outputArray(preYYtext,preYYleng);
5168 }
5169YY_BREAK
5170case 109:
5171YY_RULE_SETUP
5172#line 2102 "pre.l"
5173{
5174 outputChar('/');outputChar('*');
5175 //g_commentCount++;
5176 }
5177YY_BREAK
5178case 110:
5179YY_RULE_SETUP
5180#line 2106 "pre.l"
5181{
5182 outputArray(preYYtext,preYYleng);
5183 }
5184YY_BREAK
5185case 111:
5186/* rule 111 can match eol */
5187YY_RULE_SETUP
5188#line 2109 "pre.l"
5189{
5190 outputArray(preYYtext,preYYleng);
5191 g_yyLineNr+=QCString(preYYtext).contains('\n');
5192 }
5193YY_BREAK
5194case 112:
5195/* rule 112 can match eol */
5196YY_RULE_SETUP
5197#line 2113 "pre.l"
5198{
5199 outputArray(preYYtext,preYYleng);
5200 g_yyLineNr+=QCString(preYYtext).contains('\n');
5201 if (preYYtext[1]=='f')
5202 {
5203 g_blockName="f";
5204 }
5205 else
5206 {
5207 g_blockName=QCString(&preYYtext[1]).stripWhiteSpace();
5208 }
5209 BEGIN(SkipVerbatim);
5210 }
5211YY_BREAK
5212case 113:
5213YY_RULE_SETUP
5214#line 2126 "pre.l"
5215{ // conditional section
5216 g_condCtx = YY_START;
5217 outputArray(preYYtext,preYYleng);
5218 BEGIN(CondLine);
5219 }
5220YY_BREAK
5221case 114:
5222YY_RULE_SETUP
5223#line 2131 "pre.l"
5224{
5225 startCondSection(preYYtext);
5226 outputArray(preYYtext,preYYleng);
5227 BEGIN(g_condCtx);
5228 }
5229YY_BREAK
5230case 115:
5231/* rule 115 can match eol */
5232*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5233(yy_c_buf_p) = yy_cp -= 1;
5234YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5235YY_RULE_SETUP
5236#line 2136 "pre.l"
5237{
5238 g_condCtx = YY_START;
5239 outputArray(preYYtext,preYYleng);
5240 BEGIN(CondLine);
5241 }
5242YY_BREAK
5243case 116:
5244YY_RULE_SETUP
5245#line 2141 "pre.l"
5246{
5247 unput(*preYYtext);
5248 startCondSection(" ");
5249 BEGIN(g_condCtx);
5250 }
5251YY_BREAK
5252case 117:
5253/* rule 117 can match eol */
5254*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5255(yy_c_buf_p) = yy_cp = yy_bp + 8;
5256YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5257YY_RULE_SETUP
5258#line 2146 "pre.l"
5259{
5260 outputArray(preYYtext,preYYleng);
5261 endCondSection();
5262 }
5263YY_BREAK
5264case 118:
5265YY_RULE_SETUP
5266#line 2150 "pre.l"
5267{ /* end of verbatim block */
5268 outputArray(preYYtext,preYYleng);
5269 if (preYYtext[1]=='f' && g_blockName=="f")
5270 {
5271 BEGIN(SkipCComment);
5272 }
5273 else if (&preYYtext[4]==g_blockName)
5274 {
5275 BEGIN(SkipCComment);
5276 }
5277 }
5278YY_BREAK
5279case 119:
5280YY_RULE_SETUP
5281#line 2161 "pre.l"
5282{
5283 outputArray(preYYtext,preYYleng);
5284 }
5285YY_BREAK
5286case 120:
5287YY_RULE_SETUP
5288#line 2164 "pre.l"
5289{
5290 outputArray(preYYtext,preYYleng);
5291 }
5292YY_BREAK
5293case 121:
5294/* rule 121 can match eol */
5295YY_RULE_SETUP
5296#line 2167 "pre.l"
5297{
5298 g_yyLineNr++;
5299 outputChar('\n');
5300 }
5301YY_BREAK
5302case 122:
5303YY_RULE_SETUP
5304#line 2171 "pre.l"
5305{
5306 outputChar(*preYYtext);
5307 }
5308YY_BREAK
5309case 123:
5310YY_RULE_SETUP
5311#line 2174 "pre.l"
5312{
5313 g_defLitText+=preYYtext;
5314 g_defText+=escapeAt(preYYtext);
5315 }
5316YY_BREAK
5317case 124:
5318YY_RULE_SETUP
5319#line 2178 "pre.l"
5320{
5321 g_defLitText+=preYYtext;
5322 g_defText+=preYYtext;
5323 BEGIN(g_lastCContext);
5324 }
5325YY_BREAK
5326case 125:
5327/* rule 125 can match eol */
5328YY_RULE_SETUP
5329#line 2183 "pre.l"
5330{
5331 g_yyLineNr++;
5332 g_defLitText+=preYYtext;
5333 g_defText+=' ';
5334 }
5335YY_BREAK
5336case 126:
5337YY_RULE_SETUP
5338#line 2188 "pre.l"
5339{ // see bug 594021 for a usecase for this rule
5340 if (g_lastCContext==SkipCPPBlock)
5341 {
5342 BEGIN(SkipCommand);
5343 }
5344 else
5345 {
5346 REJECT;
5347 }
5348}
5349YY_BREAK
5350case 127:
5351YY_RULE_SETUP
5352#line 2198 "pre.l"
5353{ BEGIN(g_lastCContext); }
5354YY_BREAK
5355case 128:
5356YY_RULE_SETUP
5357#line 2199 "pre.l"
5358
5359YY_BREAK
5360case 129:
5361YY_RULE_SETUP
5362#line 2200 "pre.l"
5363
5364YY_BREAK
5365case 130:
5366YY_RULE_SETUP
5367#line 2201 "pre.l"
5368
5369YY_BREAK
5370case 131:
5371/* rule 131 can match eol */
5372YY_RULE_SETUP
5373#line 2202 "pre.l"
5374{ g_yyLineNr++; outputChar('\n'); }
5375YY_BREAK
5376case 132:
5377YY_RULE_SETUP
5378#line 2203 "pre.l"
5379
5380YY_BREAK
5381case 133:
5382YY_RULE_SETUP
5383#line 2204 "pre.l"
5384{
5385 outputArray(preYYtext,preYYleng);
5386 }
5387YY_BREAK
5388case 134:
5389/* rule 134 can match eol */
5390YY_RULE_SETUP
5391#line 2207 "pre.l"
5392{
5393 unput(*preYYtext);
5394 BEGIN(g_lastCPPContext);
5395 }
5396YY_BREAK
5397case 135:
5398YY_RULE_SETUP
5399#line 2211 "pre.l"
5400{
5401 outputChar('/');outputChar('*');
5402 }
5403YY_BREAK
5404case 136:
5405YY_RULE_SETUP
5406#line 2214 "pre.l"
5407{
5408 outputChar('/');outputChar('/');
5409 }
5410YY_BREAK
5411case 137:
5412YY_RULE_SETUP
5413#line 2217 "pre.l"
5414{
5415 outputArray(preYYtext,preYYleng);
5416 }
5417YY_BREAK
5418case 138:
5419YY_RULE_SETUP
5420#line 2220 "pre.l"
5421{
5422 outputChar(*preYYtext);
5423 }
5424YY_BREAK
5425case 139:
5426YY_RULE_SETUP
5427#line 2223 "pre.l"
5428
5429YY_BREAK
5430case 140:
5431YY_RULE_SETUP
5432#line 2224 "pre.l"
5433
5434YY_BREAK
5435case 141:
5436YY_RULE_SETUP
5437#line 2225 "pre.l"
5438
5439YY_BREAK
5440case 142:
5441YY_RULE_SETUP
5442#line 2226 "pre.l"
5443
5444YY_BREAK
5445case 143:
5446YY_RULE_SETUP
5447#line 2227 "pre.l"
5448{
5449 g_quoteArg=TRUE;
5450 g_defLitText+=preYYtext;
5451 }
5452YY_BREAK
5453case 144:
5454YY_RULE_SETUP
5455#line 2231 "pre.l"
5456{
5457 g_defLitText+=preYYtext;
5458 if (g_quoteArg)
5459 {
5460 g_defText+="\"";
5461 }
5462 if (g_defArgs>0)
5463 {
5464 int *n;
5465 if ((n=(*g_argDict)[preYYtext]))
5466 {
5467 //if (!g_quoteArg) g_defText+=' ';
5468 g_defText+='@';
5469 QCString numStr;
5470 numStr.sprintf("%d",*n);
5471 g_defText+=numStr;
5472 //if (!g_quoteArg) g_defText+=' ';
5473 }
5474 else
5475 {
5476 g_defText+=preYYtext;
5477 }
5478 }
5479 else
5480 {
5481 g_defText+=preYYtext;
5482 }
5483 if (g_quoteArg)
5484 {
5485 g_defText+="\"";
5486 }
5487 g_quoteArg=FALSE;
5488 }
5489YY_BREAK
5490case 145:
5491YY_RULE_SETUP
5492#line 2264 "pre.l"
5493{
5494 g_defLitText+=preYYtext;
5495 g_defText+=preYYtext;
5496 }
5497YY_BREAK
5498case 146:
5499/* rule 146 can match eol */
5500YY_RULE_SETUP
5501#line 2268 "pre.l"
5502{
5503 g_defLitText+=preYYtext;
5504 outputChar('\n');
5505 g_defText += ' '; g_yyLineNr++;
5506}
5507YY_BREAK
5508case 147:
5509/* rule 147 can match eol */
5510YY_RULE_SETUP
5511#line 2273 "pre.l"
5512{
5513 QCString comment=extractTrailingComment(g_defLitText);
5514 g_defLitText+=preYYtext;
5515 if (!comment.isEmpty())
5516 {
5517 outputArray(comment,comment.length());
5518 g_defLitText=g_defLitText.left(g_defLitText.length()-comment.length()-1);
5519 }
5520 outputChar('\n');
5521 Define *def=0;
5522 //printf("Define name=`%s' text=`%s' litTexti=`%s'\n",g_defName.data(),g_defText.data(),g_defLitText.data());
5523 if (g_includeStack.isEmpty() || g_curlyCount>0)
5524 {
5525 addDefine();
5526 }
5527 def=g_globalDefineDict->find(g_defName);
5528 if (def==0) // new define
5529 {
5530 //printf("new define!\n");
5531 Define *nd = newDefine();
5532 g_globalDefineDict->insert(g_defName,nd);
5533 // also add it to the local file list if it is a source file
5534 if (g_isSource && g_includeStack.isEmpty())
5535 {
5536 g_fileDefineDict->insert(g_defName,nd);
5537 }
5538 }
5539 else if (def && macroIsAccessible(def))
5540 // name already exists
5541 {
5542 //printf("existing define!\n");
5543 //printf("define found\n");
5544 if (def->undef) // undefined name
5545 {
5546 def->undef = FALSE;
5547 def->name = g_defName;
5548 def->definition = g_defText.stripWhiteSpace();
5549 def->nargs = g_defArgs;
5550 def->fileName = g_yyFileName.copy();
5551 def->lineNr = g_yyLineNr;
5552 }
5553 else
5554 {
5555 //printf("error: define %s is defined more than once!\n",g_defName.data());
5556 }
5557 }
5558 delete g_argDict; g_argDict=0;
5559 g_yyLineNr++;
5560 g_lastGuardName.resize(0);
5561 BEGIN(Start);
5562 }
5563YY_BREAK
5564case 148:
5565YY_RULE_SETUP
5566#line 2324 "pre.l"
5567{ g_defText += ' '; g_defLitText+=preYYtext; }
5568YY_BREAK
5569case 149:
5570YY_RULE_SETUP
5571#line 2325 "pre.l"
5572{ g_defText += "##"; g_defLitText+=preYYtext; }
5573YY_BREAK
5574case 150:
5575YY_RULE_SETUP
5576#line 2326 "pre.l"
5577{ g_defText += "@@"; g_defLitText+=preYYtext; }
5578YY_BREAK
5579case 151:
5580YY_RULE_SETUP
5581#line 2327 "pre.l"
5582{
5583 g_defText += *preYYtext;
5584 g_defLitText+=preYYtext;
5585 if (!g_insideComment)
5586 {
5587 BEGIN(SkipDoubleQuote);
5588 }
5589 }
5590YY_BREAK
5591case 152:
5592YY_RULE_SETUP
5593#line 2335 "pre.l"
5594{ g_defText += *preYYtext;
5595 g_defLitText+=preYYtext;
5596 if (!g_insideComment)
5597 {
5598 BEGIN(SkipSingleQuote);
5599 }
5600}
5601YY_BREAK
5602case 153:
5603YY_RULE_SETUP
5604#line 2342 "pre.l"
5605{ g_defText += preYYtext; g_defLitText+=preYYtext; }
5606YY_BREAK
5607case 154:
5608YY_RULE_SETUP
5609#line 2343 "pre.l"
5610{ g_defText += preYYtext; g_defLitText+=preYYtext; }
5611YY_BREAK
5612case 155:
5613YY_RULE_SETUP
5614#line 2344 "pre.l"
5615{
5616 g_defText += *preYYtext; g_defLitText+=preYYtext;
5617 BEGIN(DefineText);
5618 }
5619YY_BREAK
5620case 156:
5621YY_RULE_SETUP
5622#line 2348 "pre.l"
5623{
5624 g_defText += preYYtext; g_defLitText+=preYYtext;
5625}
5626YY_BREAK
5627case 157:
5628YY_RULE_SETUP
5629#line 2351 "pre.l"
5630{
5631 g_defText += *preYYtext; g_defLitText+=preYYtext;
5632 BEGIN(DefineText);
5633 }
5634YY_BREAK
5635case 158:
5636YY_RULE_SETUP
5637#line 2355 "pre.l"
5638{ g_defText += *preYYtext; g_defLitText+=preYYtext; }
5639YY_BREAK
5640case 159:
5641YY_RULE_SETUP
5642#line 2356 "pre.l"
5643{ g_defText += *preYYtext; g_defLitText+=preYYtext; }
5644YY_BREAK
5645case 160:
5646YY_RULE_SETUP
5647#line 2357 "pre.l"
5648{ g_defText += *preYYtext; g_defLitText+=preYYtext; }
5649YY_BREAK
5650case YY_STATE_EOF(INITIAL):
5651case YY_STATE_EOF(Start):
5652case YY_STATE_EOF(Command):
5653case YY_STATE_EOF(SkipCommand):
5654case YY_STATE_EOF(SkipLine):
5655case YY_STATE_EOF(SkipString):
5656case YY_STATE_EOF(CopyLine):
5657case YY_STATE_EOF(CopyString):
5658case YY_STATE_EOF(Include):
5659case YY_STATE_EOF(IncludeID):
5660case YY_STATE_EOF(EndImport):
5661case YY_STATE_EOF(DefName):
5662case YY_STATE_EOF(DefineArg):
5663case YY_STATE_EOF(DefineText):
5664case YY_STATE_EOF(SkipCPPBlock):
5665case YY_STATE_EOF(Ifdef):
5666case YY_STATE_EOF(Ifndef):
5667case YY_STATE_EOF(SkipCComment):
5668case YY_STATE_EOF(CopyCComment):
5669case YY_STATE_EOF(SkipVerbatim):
5670case YY_STATE_EOF(SkipCPPComment):
5671case YY_STATE_EOF(RemoveCComment):
5672case YY_STATE_EOF(RemoveCPPComment):
5673case YY_STATE_EOF(Guard):
5674case YY_STATE_EOF(DefinedExpr1):
5675case YY_STATE_EOF(DefinedExpr2):
5676case YY_STATE_EOF(SkipDoubleQuote):
5677case YY_STATE_EOF(SkipSingleQuote):
5678case YY_STATE_EOF(UndefName):
5679case YY_STATE_EOF(IgnoreLine):
5680case YY_STATE_EOF(FindDefineArgs):
5681case YY_STATE_EOF(ReadString):
5682case YY_STATE_EOF(CondLine):
5683#line 2358 "pre.l"
5684{
5685 //fprintf(stderr,"End of include file\n");
5686 //printf("Include stack depth=%d\n",g_includeStack.count());
5687 if (g_includeStack.isEmpty())
5688 {
5689 //fprintf(stderr,"Terminating scanner!\n");
5690 yyterminate();
5691 }
5692 else
5693 {
5694 FileState *fs=g_includeStack.pop();
5695 //fileDefineCache->merge(g_yyFileName,fs->fileName);
5696 YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER;
5697 preYY_switch_to_buffer(fs->bufState );
5698 preYY_delete_buffer(oldBuf );
5699 g_yyLineNr = fs->lineNr;
5700 //preYYin = fs->oldYYin;
5701 g_inputBuf = fs->oldFileBuf;
5702 g_inputBufPos = fs->oldFileBufPos;
5703 setFileName(fs->fileName);
5704 //fprintf(stderr,"######## FileName %s\n",g_yyFileName.data());
5705
5706 // Deal with file changes due to
5707 // #include's within { .. } blocks
5708 QCString lineStr(15+g_yyFileName.length());
5709 lineStr.sprintf("# %d \"%s\" 2",g_yyLineNr,g_yyFileName.data());
5710 outputArray(lineStr.data(),lineStr.length());
5711
5712 delete fs; fs=0;
5713 }
5714 }
5715YY_BREAK
5716case 161:
5717*yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */
5718(yy_c_buf_p) = yy_cp = yy_bp + 2;
5719YY_DO_BEFORE_ACTION; /* set up preYYtext again */
5720#line 2390 "pre.l"
5721case 162:
5722YY_RULE_SETUP
5723#line 2390 "pre.l"
5724{
5725 outputArray(preYYtext,preYYleng);
5726 g_lastCContext=YY_START;
5727 g_commentCount=1;
5728 if (preYYleng==3) g_lastGuardName.resize(0); // reset guard in case the #define is documented!
5729 BEGIN(SkipCComment);
5730 }
5731YY_BREAK
5732case 163:
5733YY_RULE_SETUP
5734#line 2397 "pre.l"
5735{
5736 outputArray(preYYtext,preYYleng);
5737 g_lastCPPContext=YY_START;
5738 if (preYYleng==3) g_lastGuardName.resize(0); // reset guard in case the #define is documented!
5739 BEGIN(SkipCPPComment);
5740}
5741YY_BREAK
5742case 164:
5743/* rule 164 can match eol */
5744YY_RULE_SETUP
5745#line 2403 "pre.l"
5746{
5747 outputChar('\n');
5748 g_yyLineNr++;
5749}
5750YY_BREAK
5751case 165:
5752YY_RULE_SETUP
5753#line 2407 "pre.l"
5754{
5755 g_expectGuard = FALSE;
5756 outputChar(*preYYtext);
5757 }
5758YY_BREAK
5759case 166:
5760YY_RULE_SETUP
5761#line 2412 "pre.l"
5762ECHO;
5763YY_BREAK
5764#line 5765 "<stdout>"
5765
5766case YY_END_OF_BUFFER:
5767{
5768/* Amount of text matched not including the EOB char. */
5769int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5770
5771/* Undo the effects of YY_DO_BEFORE_ACTION. */
5772*yy_cp = (yy_hold_char);
5773YY_RESTORE_YY_MORE_OFFSET
5774
5775if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
5776{
5777/* We're scanning a new file or input source. It's
5778 * possible that this happened because the user
5779 * just pointed preYYin at a new source and called
5780 * preYYlex(). If so, then we have to assure
5781 * consistency between YY_CURRENT_BUFFER and our
5782 * globals. Here is the right place to do so, because
5783 * this is the first action (other than possibly a
5784 * back-up) that will match for the new input source.
5785 */
5786(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5787YY_CURRENT_BUFFER_LVALUE->yy_input_file = preYYin;
5788YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5789}
5790
5791/* Note that here we test for yy_c_buf_p "<=" to the position
5792 * of the first EOB in the buffer, since yy_c_buf_p will
5793 * already have been incremented past the NUL character
5794 * (since all states make transitions on EOB to the
5795 * end-of-buffer state). Contrast this with the test
5796 * in input().
5797 */
5798if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5799{ /* This was really a NUL. */
5800yy_state_type yy_next_state;
5801
5802(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5803
5804yy_current_state = yy_get_previous_state( );
5805
5806/* Okay, we're now positioned to make the NUL
5807 * transition. We couldn't have
5808 * yy_get_previous_state() go ahead and do it
5809 * for us because it doesn't know how to deal
5810 * with the possibility of jamming (and we don't
5811 * want to build jamming into it because then it
5812 * will run more slowly).
5813 */
5814
5815yy_next_state = yy_try_NUL_trans( yy_current_state );
5816
5817yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5818
5819if ( yy_next_state )
5820{
5821/* Consume the NUL. */
5822yy_cp = ++(yy_c_buf_p);
5823yy_current_state = yy_next_state;
5824goto yy_match;
5825}
5826
5827else
5828{
5829yy_cp = (yy_c_buf_p);
5830goto yy_find_action;
5831}
5832}
5833
5834else switch ( yy_get_next_buffer( ) )
5835{
5836case EOB_ACT_END_OF_FILE:
5837{
5838(yy_did_buffer_switch_on_eof) = 0;
5839
5840if ( preYYwrap( ) )
5841{
5842/* Note: because we've taken care in
5843 * yy_get_next_buffer() to have set up
5844 * preYYtext, we can now set up
5845 * yy_c_buf_p so that if some total
5846 * hoser (like flex itself) wants to
5847 * call the scanner after we return the
5848 * YY_NULL, it'll still work - another
5849 * YY_NULL will get returned.
5850 */
5851(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5852
5853yy_act = YY_STATE_EOF(YY_START);
5854goto do_action;
5855}
5856
5857else
5858{
5859if ( ! (yy_did_buffer_switch_on_eof) )
5860YY_NEW_FILE;
5861}
5862break;
5863}
5864
5865case EOB_ACT_CONTINUE_SCAN:
5866(yy_c_buf_p) =
5867(yytext_ptr) + yy_amount_of_matched_text;
5868
5869yy_current_state = yy_get_previous_state( );
5870
5871yy_cp = (yy_c_buf_p);
5872yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5873goto yy_match;
5874
5875case EOB_ACT_LAST_MATCH:
5876(yy_c_buf_p) =
5877&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5878
5879yy_current_state = yy_get_previous_state( );
5880
5881yy_cp = (yy_c_buf_p);
5882yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5883goto yy_find_action;
5884}
5885break;
5886}
5887
5888default:
5889YY_FATAL_ERROR(
5890"fatal flex scanner internal error--no action found" );
5891} /* end of action switch */
5892} /* end of scanning one token */
5893} /* end of preYYlex */
5894
5895/* yy_get_next_buffer - try to read in a new buffer
5896 *
5897 * Returns a code representing an action:
5898 *EOB_ACT_LAST_MATCH -
5899 *EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5900 *EOB_ACT_END_OF_FILE - end of file
5901 */
5902static int yy_get_next_buffer (void)
5903{
5904 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5905register char *source = (yytext_ptr);
5906register int number_to_move, i;
5907int ret_val;
5908
5909if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
5910YY_FATAL_ERROR(
5911"fatal flex scanner internal error--end of buffer missed" );
5912
5913if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
5914{ /* Don't try to fill the buffer, so this is an EOF. */
5915if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
5916{
5917/* We matched a single character, the EOB, so
5918 * treat this as a final EOF.
5919 */
5920return EOB_ACT_END_OF_FILE;
5921}
5922
5923else
5924{
5925/* We matched some text prior to the EOB, first
5926 * process it.
5927 */
5928return EOB_ACT_LAST_MATCH;
5929}
5930}
5931
5932/* Try to read more data. */
5933
5934/* First move last chars to start of buffer. */
5935number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
5936
5937for ( i = 0; i < number_to_move; ++i )
5938*(dest++) = *(source++);
5939
5940if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
5941/* don't do the read, it's not guaranteed to return an EOF,
5942 * just force an EOF
5943 */
5944YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
5945
5946else
5947{
5948yy_size_t num_to_read =
5949YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
5950
5951while ( num_to_read <= 0 )
5952{ /* Not enough room in the buffer - grow it. */
5953
5954YY_FATAL_ERROR(
5955"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
5956
5957}
5958
5959if ( num_to_read > YY_READ_BUF_SIZE )
5960num_to_read = YY_READ_BUF_SIZE;
5961
5962/* Read in more data. */
5963YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
5964(yy_n_chars), num_to_read );
5965
5966YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5967}
5968
5969if ( (yy_n_chars) == 0 )
5970{
5971if ( number_to_move == YY_MORE_ADJ )
5972{
5973ret_val = EOB_ACT_END_OF_FILE;
5974preYYrestart(preYYin );
5975}
5976
5977else
5978{
5979ret_val = EOB_ACT_LAST_MATCH;
5980YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
5981YY_BUFFER_EOF_PENDING;
5982}
5983}
5984
5985else
5986ret_val = EOB_ACT_CONTINUE_SCAN;
5987
5988if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
5989/* Extend the array by 50%, plus the number we really need. */
5990yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
5991YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) preYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
5992if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
5993YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
5994}
5995
5996(yy_n_chars) += number_to_move;
5997YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
5998YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
5999
6000(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6001
6002return ret_val;
6003}
6004
6005/* yy_get_previous_state - get the state just before the EOB char was reached */
6006
6007 static yy_state_type yy_get_previous_state (void)
6008{
6009register yy_state_type yy_current_state;
6010register char *yy_cp;
6011
6012yy_current_state = (yy_start);
6013yy_current_state += YY_AT_BOL();
6014
6015(yy_state_ptr) = (yy_state_buf);
6016*(yy_state_ptr)++ = yy_current_state;
6017
6018for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6019{
6020register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 56);
6021while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6022{
6023yy_current_state = (int) yy_def[yy_current_state];
6024if ( yy_current_state >= 1157 )
6025yy_c = yy_meta[(unsigned int) yy_c];
6026}
6027yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6028*(yy_state_ptr)++ = yy_current_state;
6029}
6030
6031return yy_current_state;
6032}
6033
6034/* yy_try_NUL_trans - try to make a transition on the NUL character
6035 *
6036 * synopsis
6037 *next_state = yy_try_NUL_trans( current_state );
6038 */
6039 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
6040{
6041register int yy_is_jam;
6042
6043register YY_CHAR yy_c = 56;
6044while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6045{
6046yy_current_state = (int) yy_def[yy_current_state];
6047if ( yy_current_state >= 1157 )
6048yy_c = yy_meta[(unsigned int) yy_c];
6049}
6050yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6051yy_is_jam = (yy_current_state == 1156);
6052if ( ! yy_is_jam )
6053*(yy_state_ptr)++ = yy_current_state;
6054
6055return yy_is_jam ? 0 : yy_current_state;
6056}
6057
6058 static void yyunput (int c, register char * yy_bp )
6059{
6060register char *yy_cp;
6061
6062 yy_cp = (yy_c_buf_p);
6063
6064/* undo effects of setting up preYYtext */
6065*yy_cp = (yy_hold_char);
6066
6067if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6068{ /* need to shift things up to make room */
6069/* +2 for EOB chars. */
6070register yy_size_t number_to_move = (yy_n_chars) + 2;
6071register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
6072YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
6073register char *source =
6074&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
6075
6076while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6077*--dest = *--source;
6078
6079yy_cp += (int) (dest - source);
6080yy_bp += (int) (dest - source);
6081YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6082(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6083
6084if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6085YY_FATAL_ERROR( "flex scanner push-back overflow" );
6086}
6087
6088*--yy_cp = (char) c;
6089
6090(yytext_ptr) = yy_bp;
6091(yy_hold_char) = *yy_cp;
6092(yy_c_buf_p) = yy_cp;
6093}
6094
6095#ifndef YY_NO_INPUT
6096#ifdef __cplusplus
6097 static int yyinput (void)
6098#else
6099 static int input (void)
6100#endif
6101
6102{
6103int c;
6104
6105*(yy_c_buf_p) = (yy_hold_char);
6106
6107if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6108{
6109/* yy_c_buf_p now points to the character we want to return.
6110 * If this occurs *before* the EOB characters, then it's a
6111 * valid NUL; if not, then we've hit the end of the buffer.
6112 */
6113if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6114/* This was really a NUL. */
6115*(yy_c_buf_p) = '\0';
6116
6117else
6118{ /* need more input */
6119yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
6120++(yy_c_buf_p);
6121
6122switch ( yy_get_next_buffer( ) )
6123{
6124case EOB_ACT_LAST_MATCH:
6125/* This happens because yy_g_n_b()
6126 * sees that we've accumulated a
6127 * token and flags that we need to
6128 * try matching the token before
6129 * proceeding. But for input(),
6130 * there's no matching to consider.
6131 * So convert the EOB_ACT_LAST_MATCH
6132 * to EOB_ACT_END_OF_FILE.
6133 */
6134
6135/* Reset buffer status. */
6136preYYrestart(preYYin );
6137
6138/*FALLTHROUGH*/
6139
6140case EOB_ACT_END_OF_FILE:
6141{
6142if ( preYYwrap( ) )
6143return 0;
6144
6145if ( ! (yy_did_buffer_switch_on_eof) )
6146YY_NEW_FILE;
6147#ifdef __cplusplus
6148return yyinput();
6149#else
6150return input();
6151#endif
6152}
6153
6154case EOB_ACT_CONTINUE_SCAN:
6155(yy_c_buf_p) = (yytext_ptr) + offset;
6156break;
6157}
6158}
6159}
6160
6161c = *(unsigned char *) (yy_c_buf_p);/* cast for 8-bit char's */
6162*(yy_c_buf_p) = '\0';/* preserve preYYtext */
6163(yy_hold_char) = *++(yy_c_buf_p);
6164
6165YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
6166
6167return c;
6168}
6169#endif/* ifndef YY_NO_INPUT */
6170
6171/** Immediately switch to a different input stream.
6172 * @param input_file A readable stream.
6173 *
6174 * @note This function does not reset the start condition to @c INITIAL .
6175 */
6176 void preYYrestart (FILE * input_file )
6177{
6178
6179if ( ! YY_CURRENT_BUFFER ){
6180 preYYensure_buffer_stack ();
6181YY_CURRENT_BUFFER_LVALUE =
6182 preYY_create_buffer(preYYin,YY_BUF_SIZE );
6183}
6184
6185preYY_init_buffer(YY_CURRENT_BUFFER,input_file );
6186preYY_load_buffer_state( );
6187}
6188
6189/** Switch to a different input buffer.
6190 * @param new_buffer The new input buffer.
6191 *
6192 */
6193 void preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
6194{
6195
6196/* TODO. We should be able to replace this entire function body
6197 * with
6198 *preYYpop_buffer_state();
6199 *preYYpush_buffer_state(new_buffer);
6200 */
6201preYYensure_buffer_stack ();
6202if ( YY_CURRENT_BUFFER == new_buffer )
6203return;
6204
6205if ( YY_CURRENT_BUFFER )
6206{
6207/* Flush out information for old buffer. */
6208*(yy_c_buf_p) = (yy_hold_char);
6209YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6210YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6211}
6212
6213YY_CURRENT_BUFFER_LVALUE = new_buffer;
6214preYY_load_buffer_state( );
6215
6216/* We don't actually know whether we did this switch during
6217 * EOF (preYYwrap()) processing, but the only time this flag
6218 * is looked at is after preYYwrap() is called, so it's safe
6219 * to go ahead and always set it.
6220 */
6221(yy_did_buffer_switch_on_eof) = 1;
6222}
6223
6224static void preYY_load_buffer_state (void)
6225{
6226 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6227(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6228preYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6229(yy_hold_char) = *(yy_c_buf_p);
6230}
6231
6232/** Allocate and initialize an input buffer state.
6233 * @param file A readable stream.
6234 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6235 *
6236 * @return the allocated buffer state.
6237 */
6238 YY_BUFFER_STATE preYY_create_buffer (FILE * file, int size )
6239{
6240YY_BUFFER_STATE b;
6241
6242b = (YY_BUFFER_STATE) preYYalloc(sizeof( struct yy_buffer_state ) );
6243if ( ! b )
6244YY_FATAL_ERROR( "out of dynamic memory in preYY_create_buffer()" );
6245
6246b->yy_buf_size = size;
6247
6248/* yy_ch_buf has to be 2 characters longer than the size given because
6249 * we need to put in 2 end-of-buffer characters.
6250 */
6251b->yy_ch_buf = (char *) preYYalloc(b->yy_buf_size + 2 );
6252if ( ! b->yy_ch_buf )
6253YY_FATAL_ERROR( "out of dynamic memory in preYY_create_buffer()" );
6254
6255b->yy_is_our_buffer = 1;
6256
6257preYY_init_buffer(b,file );
6258
6259return b;
6260}
6261
6262/** Destroy the buffer.
6263 * @param b a buffer created with preYY_create_buffer()
6264 *
6265 */
6266 void preYY_delete_buffer (YY_BUFFER_STATE b )
6267{
6268
6269if ( ! b )
6270return;
6271
6272if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6273YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6274
6275if ( b->yy_is_our_buffer )
6276preYYfree((void *) b->yy_ch_buf );
6277
6278preYYfree((void *) b );
6279}
6280
6281#ifndef __cplusplus
6282extern int isatty (int );
6283#endif /* __cplusplus */
6284
6285/* Initializes or reinitializes a buffer.
6286 * This function is sometimes called more than once on the same buffer,
6287 * such as during a preYYrestart() or at EOF.
6288 */
6289 static void preYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
6290
6291{
6292int oerrno = errno;
6293
6294preYY_flush_buffer(b );
6295
6296b->yy_input_file = file;
6297b->yy_fill_buffer = 1;
6298
6299 /* If b is the current buffer, then preYY_init_buffer was _probably_
6300 * called from preYYrestart() or through yy_get_next_buffer.
6301 * In that case, we don't want to reset the lineno or column.
6302 */
6303 if (b != YY_CURRENT_BUFFER){
6304 b->yy_bs_lineno = 1;
6305 b->yy_bs_column = 0;
6306 }
6307
6308 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6309
6310errno = oerrno;
6311}
6312
6313/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6314 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6315 *
6316 */
6317 void preYY_flush_buffer (YY_BUFFER_STATE b )
6318{
6319 if ( ! b )
6320return;
6321
6322b->yy_n_chars = 0;
6323
6324/* We always need two end-of-buffer characters. The first causes
6325 * a transition to the end-of-buffer state. The second causes
6326 * a jam in that state.
6327 */
6328b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6329b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6330
6331b->yy_buf_pos = &b->yy_ch_buf[0];
6332
6333b->yy_at_bol = 1;
6334b->yy_buffer_status = YY_BUFFER_NEW;
6335
6336if ( b == YY_CURRENT_BUFFER )
6337preYY_load_buffer_state( );
6338}
6339
6340/** Pushes the new state onto the stack. The new state becomes
6341 * the current state. This function will allocate the stack
6342 * if necessary.
6343 * @param new_buffer The new state.
6344 *
6345 */
6346void preYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
6347{
6348 if (new_buffer == NULL)
6349return;
6350
6351preYYensure_buffer_stack();
6352
6353/* This block is copied from preYY_switch_to_buffer. */
6354if ( YY_CURRENT_BUFFER )
6355{
6356/* Flush out information for old buffer. */
6357*(yy_c_buf_p) = (yy_hold_char);
6358YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6359YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6360}
6361
6362/* Only push if top exists. Otherwise, replace top. */
6363if (YY_CURRENT_BUFFER)
6364(yy_buffer_stack_top)++;
6365YY_CURRENT_BUFFER_LVALUE = new_buffer;
6366
6367/* copied from preYY_switch_to_buffer. */
6368preYY_load_buffer_state( );
6369(yy_did_buffer_switch_on_eof) = 1;
6370}
6371
6372/** Removes and deletes the top of the stack, if present.
6373 * The next element becomes the new top.
6374 *
6375 */
6376void preYYpop_buffer_state (void)
6377{
6378 if (!YY_CURRENT_BUFFER)
6379return;
6380
6381preYY_delete_buffer(YY_CURRENT_BUFFER );
6382YY_CURRENT_BUFFER_LVALUE = NULL;
6383if ((yy_buffer_stack_top) > 0)
6384--(yy_buffer_stack_top);
6385
6386if (YY_CURRENT_BUFFER) {
6387preYY_load_buffer_state( );
6388(yy_did_buffer_switch_on_eof) = 1;
6389}
6390}
6391
6392/* Allocates the stack if it does not exist.
6393 * Guarantees space for at least one push.
6394 */
6395static void preYYensure_buffer_stack (void)
6396{
6397yy_size_t num_to_alloc;
6398
6399if (!(yy_buffer_stack)) {
6400
6401/* First allocation is just for 2 elements, since we don't know if this
6402 * scanner will even need a stack. We use 2 instead of 1 to avoid an
6403 * immediate realloc on the next call.
6404 */
6405num_to_alloc = 1;
6406(yy_buffer_stack) = (struct yy_buffer_state**)preYYalloc
6407(num_to_alloc * sizeof(struct yy_buffer_state*)
6408);
6409if ( ! (yy_buffer_stack) )
6410YY_FATAL_ERROR( "out of dynamic memory in preYYensure_buffer_stack()" );
6411
6412memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6413
6414(yy_buffer_stack_max) = num_to_alloc;
6415(yy_buffer_stack_top) = 0;
6416return;
6417}
6418
6419if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6420
6421/* Increase the buffer to prepare for a possible push. */
6422int grow_size = 8 /* arbitrary grow size */;
6423
6424num_to_alloc = (yy_buffer_stack_max) + grow_size;
6425(yy_buffer_stack) = (struct yy_buffer_state**)preYYrealloc
6426((yy_buffer_stack),
6427num_to_alloc * sizeof(struct yy_buffer_state*)
6428);
6429if ( ! (yy_buffer_stack) )
6430YY_FATAL_ERROR( "out of dynamic memory in preYYensure_buffer_stack()" );
6431
6432/* zero only the new slots.*/
6433memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6434(yy_buffer_stack_max) = num_to_alloc;
6435}
6436}
6437
6438/** Setup the input buffer state to scan directly from a user-specified character buffer.
6439 * @param base the character buffer
6440 * @param size the size in bytes of the character buffer
6441 *
6442 * @return the newly allocated buffer state object.
6443 */
6444YY_BUFFER_STATE preYY_scan_buffer (char * base, yy_size_t size )
6445{
6446YY_BUFFER_STATE b;
6447
6448if ( size < 2 ||
6449 base[size-2] != YY_END_OF_BUFFER_CHAR ||
6450 base[size-1] != YY_END_OF_BUFFER_CHAR )
6451/* They forgot to leave room for the EOB's. */
6452return 0;
6453
6454b = (YY_BUFFER_STATE) preYYalloc(sizeof( struct yy_buffer_state ) );
6455if ( ! b )
6456YY_FATAL_ERROR( "out of dynamic memory in preYY_scan_buffer()" );
6457
6458b->yy_buf_size = size - 2;/* "- 2" to take care of EOB's */
6459b->yy_buf_pos = b->yy_ch_buf = base;
6460b->yy_is_our_buffer = 0;
6461b->yy_input_file = 0;
6462b->yy_n_chars = b->yy_buf_size;
6463b->yy_is_interactive = 0;
6464b->yy_at_bol = 1;
6465b->yy_fill_buffer = 0;
6466b->yy_buffer_status = YY_BUFFER_NEW;
6467
6468preYY_switch_to_buffer(b );
6469
6470return b;
6471}
6472
6473/** Setup the input buffer state to scan a string. The next call to preYYlex() will
6474 * scan from a @e copy of @a str.
6475 * @param yystr a NUL-terminated string to scan
6476 *
6477 * @return the newly allocated buffer state object.
6478 * @note If you want to scan bytes that may contain NUL values, then use
6479 * preYY_scan_bytes() instead.
6480 */
6481YY_BUFFER_STATE preYY_scan_string (yyconst char * yystr )
6482{
6483
6484return preYY_scan_bytes(yystr,strlen(yystr) );
6485}
6486
6487/** Setup the input buffer state to scan the given bytes. The next call to preYYlex() will
6488 * scan from a @e copy of @a bytes.
6489 * @param bytes the byte buffer to scan
6490 * @param len the number of bytes in the buffer pointed to by @a bytes.
6491 *
6492 * @return the newly allocated buffer state object.
6493 */
6494YY_BUFFER_STATE preYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
6495{
6496YY_BUFFER_STATE b;
6497char *buf;
6498yy_size_t n, i;
6499
6500/* Get memory for full buffer, including space for trailing EOB's. */
6501n = _yybytes_len + 2;
6502buf = (char *) preYYalloc(n );
6503if ( ! buf )
6504YY_FATAL_ERROR( "out of dynamic memory in preYY_scan_bytes()" );
6505
6506for ( i = 0; i < _yybytes_len; ++i )
6507buf[i] = yybytes[i];
6508
6509buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6510
6511b = preYY_scan_buffer(buf,n );
6512if ( ! b )
6513YY_FATAL_ERROR( "bad buffer in preYY_scan_bytes()" );
6514
6515/* It's okay to grow etc. this buffer, and we should throw it
6516 * away when we're done.
6517 */
6518b->yy_is_our_buffer = 1;
6519
6520return b;
6521}
6522
6523#ifndef YY_EXIT_FAILURE
6524#define YY_EXIT_FAILURE 2
6525#endif
6526
6527static void yy_fatal_error (yyconst char* msg )
6528{
6529 (void) fprintf( stderr, "%s\n", msg );
6530exit( YY_EXIT_FAILURE );
6531}
6532
6533/* Redefine yyless() so it works in section 3 code. */
6534
6535#undef yyless
6536#define yyless(n) \
6537do \
6538{ \
6539/* Undo effects of setting up preYYtext. */ \
6540 int yyless_macro_arg = (n); \
6541 YY_LESS_LINENO(yyless_macro_arg);\
6542preYYtext[preYYleng] = (yy_hold_char); \
6543(yy_c_buf_p) = preYYtext + yyless_macro_arg; \
6544(yy_hold_char) = *(yy_c_buf_p); \
6545*(yy_c_buf_p) = '\0'; \
6546preYYleng = yyless_macro_arg; \
6547} \
6548while ( 0 )
6549
6550/* Accessor methods (get/set functions) to struct members. */
6551
6552/** Get the current line number.
6553 *
6554 */
6555int preYYget_lineno (void)
6556{
6557
6558 return preYYlineno;
6559}
6560
6561/** Get the input stream.
6562 *
6563 */
6564FILE *preYYget_in (void)
6565{
6566 return preYYin;
6567}
6568
6569/** Get the output stream.
6570 *
6571 */
6572FILE *preYYget_out (void)
6573{
6574 return preYYout;
6575}
6576
6577/** Get the length of the current token.
6578 *
6579 */
6580yy_size_t preYYget_leng (void)
6581{
6582 return preYYleng;
6583}
6584
6585/** Get the current token.
6586 *
6587 */
6588
6589char *preYYget_text (void)
6590{
6591 return preYYtext;
6592}
6593
6594/** Set the current line number.
6595 * @param line_number
6596 *
6597 */
6598void preYYset_lineno (int line_number )
6599{
6600
6601 preYYlineno = line_number;
6602}
6603
6604/** Set the input stream. This does not discard the current
6605 * input buffer.
6606 * @param in_str A readable stream.
6607 *
6608 * @see preYY_switch_to_buffer
6609 */
6610void preYYset_in (FILE * in_str )
6611{
6612 preYYin = in_str ;
6613}
6614
6615void preYYset_out (FILE * out_str )
6616{
6617 preYYout = out_str ;
6618}
6619
6620int preYYget_debug (void)
6621{
6622 return preYY_flex_debug;
6623}
6624
6625void preYYset_debug (int bdebug )
6626{
6627 preYY_flex_debug = bdebug ;
6628}
6629
6630static int yy_init_globals (void)
6631{
6632 /* Initialization is the same as for the non-reentrant scanner.
6633 * This function is called from preYYlex_destroy(), so don't allocate here.
6634 */
6635
6636 (yy_buffer_stack) = 0;
6637 (yy_buffer_stack_top) = 0;
6638 (yy_buffer_stack_max) = 0;
6639 (yy_c_buf_p) = (char *) 0;
6640 (yy_init) = 0;
6641 (yy_start) = 0;
6642
6643 (yy_state_buf) = 0;
6644 (yy_state_ptr) = 0;
6645 (yy_full_match) = 0;
6646 (yy_lp) = 0;
6647
6648/* Defined in main.c */
6649#ifdef YY_STDINIT
6650 preYYin = stdin;
6651 preYYout = stdout;
6652#else
6653 preYYin = (FILE *) 0;
6654 preYYout = (FILE *) 0;
6655#endif
6656
6657 /* For future reference: Set errno on error, since we are called by
6658 * preYYlex_init()
6659 */
6660 return 0;
6661}
6662
6663/* preYYlex_destroy is for both reentrant and non-reentrant scanners. */
6664int preYYlex_destroy (void)
6665{
6666
6667 /* Pop the buffer stack, destroying each element. */
6668while(YY_CURRENT_BUFFER){
6669preYY_delete_buffer(YY_CURRENT_BUFFER );
6670YY_CURRENT_BUFFER_LVALUE = NULL;
6671preYYpop_buffer_state();
6672}
6673
6674/* Destroy the stack itself. */
6675preYYfree((yy_buffer_stack) );
6676(yy_buffer_stack) = NULL;
6677
6678 preYYfree ( (yy_state_buf) );
6679 (yy_state_buf) = NULL;
6680
6681 /* Reset the globals. This is important in a non-reentrant scanner so the next time
6682 * preYYlex() is called, initialization will occur. */
6683 yy_init_globals( );
6684
6685 return 0;
6686}
6687
6688/*
6689 * Internal utility routines.
6690 */
6691
6692#ifndef yytext_ptr
6693static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
6694{
6695register int i;
6696for ( i = 0; i < n; ++i )
6697s1[i] = s2[i];
6698}
6699#endif
6700
6701#ifdef YY_NEED_STRLEN
6702static int yy_flex_strlen (yyconst char * s )
6703{
6704register int n;
6705for ( n = 0; s[n]; ++n )
6706;
6707
6708return n;
6709}
6710#endif
6711
6712void *preYYalloc (yy_size_t size )
6713{
6714return (void *) malloc( size );
6715}
6716
6717void *preYYrealloc (void * ptr, yy_size_t size )
6718{
6719/* The cast to (char *) in the following accommodates both
6720 * implementations that use char* generic pointers, and those
6721 * that use void* generic pointers. It works with the latter
6722 * because both ANSI C and C++ allow castless assignment from
6723 * any pointer type to void*, and deal with argument conversions
6724 * as though doing an assignment.
6725 */
6726return (void *) realloc( (char *) ptr, size );
6727}
6728
6729void preYYfree (void * ptr )
6730{
6731free( (char *) ptr );/* see preYYrealloc() for (char *) cast */
6732}
6733
6734#define YYTABLES_NAME "yytables"
6735
6736#line 2412 "pre.l"
6737
6738
6739
6740/*@ ----------------------------------------------------------------------------
6741 */
6742
6743static int getNextChar(const QCString &expr,QCString *rest,uint &pos)
6744{
6745 //printf("getNextChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
6746 if (pos<expr.length())
6747 {
6748 //printf("%c=expr()\n",expr.at(pos));
6749 return expr.at(pos++);
6750 }
6751 else if (rest && !rest->isEmpty())
6752 {
6753 int cc=rest->at(0);
6754 *rest=rest->right(rest->length()-1);
6755 //printf("%c=rest\n",cc);
6756 return cc;
6757 }
6758 else
6759 {
6760 int cc=yyinput();
6761 //printf("%c=yyinput()\n",cc);
6762 return cc;
6763 }
6764}
6765
6766static int getCurrentChar(const QCString &expr,QCString *rest,uint pos)
6767{
6768 //printf("getCurrentChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
6769 if (pos<expr.length())
6770 {
6771 //printf("%c=expr()\n",expr.at(pos));
6772 return expr.at(pos);
6773 }
6774 else if (rest && !rest->isEmpty())
6775 {
6776 int cc=rest->at(0);
6777 //printf("%c=rest\n",cc);
6778 return cc;
6779 }
6780 else
6781 {
6782 int cc=yyinput();
6783 returnCharToStream(cc);
6784 //unput((char)cc);
6785 //printf("%c=yyinput()\n",cc);
6786 return cc;
6787 }
6788}
6789
6790static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c)
6791{
6792 //printf("unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
6793 if (pos<expr.length())
6794 {
6795 pos++;
6796 }
6797 else if (rest)
6798 {
6799 //printf("Prepending to rest!\n");
6800 char cs[2];cs[0]=c;cs[1]='\0';
6801 rest->prepend(cs);
6802 }
6803 else
6804 {
6805 //unput(c);
6806 returnCharToStream(c);
6807 }
6808 //printf("result: unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
6809}
6810
6811void addSearchDir(const char *dir)
6812{
6813 QFileInfo fi(dir);
6814 if (fi.isDir()) g_pathList->append(fi.absFilePath());
6815}
6816
6817void initPreprocessor()
6818{
6819 g_pathList = new QStrList;
6820 addSearchDir(".");
6821 g_expandedDict = new DefineDict(17);
6822}
6823
6824void cleanUpPreprocessor()
6825{
6826 delete g_expandedDict; g_expandedDict=0;
6827 delete g_pathList; g_pathList=0;
6828}
6829
6830
6831void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
6832{
6833 uint orgOffset=output.curPos();
6834 //printf("##########################\n%s\n####################\n",
6835 // input.data());
6836
6837 g_macroExpansion = Config_getBool("MACRO_EXPANSION");
6838 g_expandOnlyPredef = Config_getBool("EXPAND_ONLY_PREDEF");
6839 g_curlyCount=0;
6840 g_nospaces=FALSE;
6841 g_inputBuf=&input;
6842 g_inputBufPos=0;
6843 g_outputBuf=&output;
6844 g_includeStack.setAutoDelete(TRUE);
6845 g_includeStack.clear();
6846 g_expandedDict->setAutoDelete(FALSE);
6847 g_expandedDict->clear();
6848 g_condStack.clear();
6849 g_condStack.setAutoDelete(TRUE);
6850 g_fileDefineDict->clear();
6851
6852 static bool firstTime=TRUE;
6853 if (firstTime)
6854 {
6855 // add predefined macros
6856 char *defStr;
6857 QStrList &predefList = Config_getList("PREDEFINED");
6858 QStrListIterator sli(predefList);
6859 for (sli.toFirst();(defStr=sli.current());++sli)
6860 {
6861 QCString ds = defStr;
6862 int i_equals=ds.find('=');
6863 int i_obrace=ds.find('(');
6864 int i_cbrace=ds.find(')');
6865 bool nonRecursive = i_equals>0 && ds.at(i_equals-1)==':';
6866
6867 if (i_obrace==0) continue; // no define name
6868
6869 if (i_obrace<i_equals && i_cbrace<i_equals &&
6870 i_obrace!=-1 && i_cbrace!=-1 &&
6871 i_obrace<i_cbrace
6872 ) // predefined function macro definition
6873 {
6874//printf("predefined function macro '%s'\n",defStr);
6875QRegExp reId("[a-z_A-Z][a-z_A-Z0-9]*"); // regexp matching an id
6876QDict<int> argDict(17);
6877argDict.setAutoDelete(TRUE);
6878int i=i_obrace+1,p,l,count=0;
6879// gather the formal arguments in a dictionary
6880while (i<i_cbrace && (p=reId.match(ds,i,&l)))
6881{
6882 argDict.insert(ds.mid(p,l),new int(count++));
6883 i=p+l;
6884}
6885// strip definition part
6886QCString tmp=ds.right(ds.length()-i_equals-1);
6887QCString definition;
6888i=0;
6889// substitute all occurrences of formal arguments by their
6890// corresponding markers
6891while ((p=reId.match(tmp,i,&l))!=-1)
6892{
6893 if (p>i) definition+=tmp.mid(i,p-i);
6894 int *argIndex;
6895 if ((argIndex=argDict[tmp.mid(p,l)])!=0)
6896 {
6897 QCString marker;
6898 marker.sprintf(" @%d ",*argIndex);
6899 definition+=marker;
6900 }
6901 else
6902 {
6903 definition+=tmp.mid(p,l);
6904 }
6905 i=p+l;
6906}
6907if (i<(int)tmp.length()) definition+=tmp.mid(i,tmp.length()-i);
6908
6909// add define definition to the dictionary of defines for this file
6910QCString dname = ds.left(i_obrace);
6911if (!dname.isEmpty())
6912{
6913 Define *def = new Define;
6914 def->name = dname;
6915 def->definition = definition;
6916 def->nargs = count;
6917 def->isPredefined = TRUE;
6918 def->nonRecursive = nonRecursive;
6919 def->fileDef = g_yyFileDef;
6920 def->fileName = fileName;
6921 g_globalDefineDict->insert(def->name,def);
6922}
6923
6924//printf("#define `%s' `%s' #nargs=%d\n",
6925// def->name.data(),def->definition.data(),def->nargs);
6926 }
6927 else if ((i_obrace==-1 || i_obrace>i_equals) &&
6928 (i_cbrace==-1 || i_cbrace>i_equals) &&
6929 !ds.isEmpty() && (int)ds.length()>i_equals
6930 ) // predefined non-function macro definition
6931 {
6932//printf("predefined normal macro '%s'\n",defStr);
6933Define *def = new Define;
6934if (i_equals==-1) // simple define without argument
6935{
6936 def->name = ds;
6937 def->definition = "1"; // substitute occurrences by 1 (true)
6938}
6939else // simple define with argument
6940{
6941 int ine=i_equals - (nonRecursive ? 1 : 0);
6942 def->name = ds.left(ine);
6943 def->definition = ds.right(ds.length()-i_equals-1);
6944}
6945if (!def->name.isEmpty())
6946{
6947 def->nargs = -1;
6948 def->isPredefined = TRUE;
6949 def->nonRecursive = nonRecursive;
6950 def->fileDef = g_yyFileDef;
6951 def->fileName = fileName;
6952 g_globalDefineDict->insert(def->name,def);
6953}
6954else
6955{
6956 delete def;
6957}
6958
6959//printf("#define `%s' `%s' #nargs=%d\n",
6960// def->name.data(),def->definition.data(),def->nargs);
6961 }
6962 }
6963 //firstTime=FALSE;
6964 }
6965
6966 g_yyLineNr = 1;
6967 g_level = 0;
6968 g_ifcount = 0;
6969 setFileName(fileName);
6970 g_inputFileDef = g_yyFileDef;
6971
6972 BEGIN( Start );
6973
6974 g_expectGuard = guessSection(fileName)==Entry::HEADER_SEC;
6975 g_lastGuardName.resize(0);
6976 g_guardExpr.resize(0);
6977
6978 preYYlex();
6979 g_lexInit=TRUE;
6980
6981 // make sure we don't extend a \cond with missing \endcond over multiple files (see bug 624829)
6982 forceEndCondSection();
6983
6984 // remove locally defined macros so they can be redefined in another source file
6985 if (g_fileDefineDict->count()>0)
6986 {
6987 QDictIterator<Define> di(*g_fileDefineDict);
6988 Define *d;
6989 for (di.toFirst();(d=di.current());++di)
6990 {
6991 g_globalDefineDict->remove(di.currentKey());
6992 }
6993 g_fileDefineDict->clear();
6994 }
6995
6996 if (Debug::isFlagSet(Debug::Preprocessor))
6997 {
6998 char *orgPos=output.data()+orgOffset;
6999 char *newPos=output.data()+output.curPos();
7000 msg("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
7001 int line=1;
7002 msg("---------\n00001 ");
7003 while (orgPos<newPos)
7004 {
7005 putchar(*orgPos);
7006 if (*orgPos=='\n') printf("%05d ",++line);
7007 orgPos++;
7008 }
7009 msg("\n---------\n");
7010 }
7011}
7012
7013void preFreeScanner()
7014{
7015#if defined(YY_FLEX_SUBMINOR_VERSION)
7016 if (g_lexInit)
7017 {
7018 preYYlex_destroy();
7019 }
7020#endif
7021}
7022
7023#if !defined(YY_FLEX_SUBMINOR_VERSION)
7024extern "C" { // some bogus code to keep the compiler happy
7025// int preYYwrap() { return 1 ; }
7026 void preYYdummy() { yy_flex_realloc(0,0); }
7027}
7028#endif
7029
7030
7031

Archive Download this file

Revision: 1322