~j-rivero/+junk/doxygen

« back to all changes in this revision

Viewing changes to src/pre.cpp

  • Committer: Package Import Robot
  • Author(s): Helmut Grohne
  • Date: 2014-05-16 20:58:26 UTC
  • mfrom: (1.1.33)
  • Revision ID: package-import@ubuntu.com-20140516205826-bmlvn4pltxejeyzk
Tags: 1.8.7-1
* doxygen 1.8.7 release.
  + Standard build regenerates *_js.h now. Update README.jquery.
  + Add doxygen.NEWS for GENERATE_HTML default change.
  + Refresh patches. dot-config.diff completely rewritten against
    config.xml.
* Uglify javascript during build. Therefore B-D: yui-compressor.
* Also remove winbuild to avoid accidentally using it.
* Add half a stage1 build-profile to drop libqt4-dev. Not annotating the
  dependency because #744246. Thanks to Daniel Schepler and Wookey.
  (Addresses: #738263)

Show diffs side-by-side

added added

removed removed

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