source: src/Parser/lex.cc @ 5f2f2d7

aaron-thesisarm-ehcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decaygc_noraiijacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newstringwith_gc
Last change on this file since 5f2f2d7 was 5f2f2d7, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

fix constant types, remove unnecessary string copying, work on regression testing, fix several memory leaks

  • Property mode set to 100644
File size: 115.4 KB
Line 
1
2#line 3 "Parser/lex.cc"
3
4#define  YY_INT_ALIGNED short int
5
6/* A lexical scanner generated by flex */
7
8#define FLEX_SCANNER
9#define YY_FLEX_MAJOR_VERSION 2
10#define YY_FLEX_MINOR_VERSION 5
11#define YY_FLEX_SUBMINOR_VERSION 35
12#if YY_FLEX_SUBMINOR_VERSION > 0
13#define FLEX_BETA
14#endif
15
16/* First, we deal with  platform-specific or compiler-specific issues. */
17
18/* begin standard C headers. */
19#include <stdio.h>
20#include <string.h>
21#include <errno.h>
22#include <stdlib.h>
23
24/* end standard C headers. */
25
26/* flex integer type definitions */
27
28#ifndef FLEXINT_H
29#define FLEXINT_H
30
31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
34
35/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
37 */
38#ifndef __STDC_LIMIT_MACROS
39#define __STDC_LIMIT_MACROS 1
40#endif
41
42#include <inttypes.h>
43typedef int8_t flex_int8_t;
44typedef uint8_t flex_uint8_t;
45typedef int16_t flex_int16_t;
46typedef uint16_t flex_uint16_t;
47typedef int32_t flex_int32_t;
48typedef uint32_t flex_uint32_t;
49#else
50typedef signed char flex_int8_t;
51typedef short int flex_int16_t;
52typedef int flex_int32_t;
53typedef unsigned char flex_uint8_t; 
54typedef unsigned short int flex_uint16_t;
55typedef unsigned int flex_uint32_t;
56
57/* Limits of integral types. */
58#ifndef INT8_MIN
59#define INT8_MIN               (-128)
60#endif
61#ifndef INT16_MIN
62#define INT16_MIN              (-32767-1)
63#endif
64#ifndef INT32_MIN
65#define INT32_MIN              (-2147483647-1)
66#endif
67#ifndef INT8_MAX
68#define INT8_MAX               (127)
69#endif
70#ifndef INT16_MAX
71#define INT16_MAX              (32767)
72#endif
73#ifndef INT32_MAX
74#define INT32_MAX              (2147483647)
75#endif
76#ifndef UINT8_MAX
77#define UINT8_MAX              (255U)
78#endif
79#ifndef UINT16_MAX
80#define UINT16_MAX             (65535U)
81#endif
82#ifndef UINT32_MAX
83#define UINT32_MAX             (4294967295U)
84#endif
85
86#endif /* ! C99 */
87
88#endif /* ! FLEXINT_H */
89
90#ifdef __cplusplus
91
92/* The "const" storage-class-modifier is valid. */
93#define YY_USE_CONST
94
95#else   /* ! __cplusplus */
96
97/* C99 requires __STDC__ to be defined as 1. */
98#if defined (__STDC__)
99
100#define YY_USE_CONST
101
102#endif  /* defined (__STDC__) */
103#endif  /* ! __cplusplus */
104
105#ifdef YY_USE_CONST
106#define yyconst const
107#else
108#define yyconst
109#endif
110
111/* Returned upon end-of-file. */
112#define YY_NULL 0
113
114/* Promotes a possibly negative, possibly signed char to an unsigned
115 * integer for use as an array index.  If the signed char is negative,
116 * we want to instead treat it as an 8-bit unsigned char, hence the
117 * double cast.
118 */
119#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
120
121/* Enter a start condition.  This macro really ought to take a parameter,
122 * but we do it the disgusting crufty way forced on us by the ()-less
123 * definition of BEGIN.
124 */
125#define BEGIN (yy_start) = 1 + 2 *
126
127/* Translate the current start state into a value that can be later handed
128 * to BEGIN to return to the state.  The YYSTATE alias is for lex
129 * compatibility.
130 */
131#define YY_START (((yy_start) - 1) / 2)
132#define YYSTATE YY_START
133
134/* Action number for EOF rule of a given start state. */
135#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
136
137/* Special action meaning "start processing a new file". */
138#define YY_NEW_FILE yyrestart(yyin  )
139
140#define YY_END_OF_BUFFER_CHAR 0
141
142/* Size of default input buffer. */
143#ifndef YY_BUF_SIZE
144#ifdef __ia64__
145/* On IA-64, the buffer size is 16k, not 8k.
146 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
147 * Ditto for the __ia64__ case accordingly.
148 */
149#define YY_BUF_SIZE 32768
150#else
151#define YY_BUF_SIZE 16384
152#endif /* __ia64__ */
153#endif
154
155/* The state buf must be large enough to hold one state per character in the main buffer.
156 */
157#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
158
159#ifndef YY_TYPEDEF_YY_BUFFER_STATE
160#define YY_TYPEDEF_YY_BUFFER_STATE
161typedef struct yy_buffer_state *YY_BUFFER_STATE;
162#endif
163
164extern int yyleng;
165
166extern FILE *yyin, *yyout;
167
168#define EOB_ACT_CONTINUE_SCAN 0
169#define EOB_ACT_END_OF_FILE 1
170#define EOB_ACT_LAST_MATCH 2
171
172    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
173     *       access to the local variable yy_act. Since yyless() is a macro, it would break
174     *       existing scanners that call yyless() from OUTSIDE yylex.
175     *       One obvious solution it to make yy_act a global. I tried that, and saw
176     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
177     *       normally declared as a register variable-- so it is not worth it.
178     */
179    #define  YY_LESS_LINENO(n) \
180            do { \
181                int yyl;\
182                for ( yyl = n; yyl < yyleng; ++yyl )\
183                    if ( yytext[yyl] == '\n' )\
184                        --yylineno;\
185            }while(0)
186   
187/* Return all but the first "n" matched characters back to the input stream. */
188#define yyless(n) \
189        do \
190                { \
191                /* Undo effects of setting up yytext. */ \
192        int yyless_macro_arg = (n); \
193        YY_LESS_LINENO(yyless_macro_arg);\
194                *yy_cp = (yy_hold_char); \
195                YY_RESTORE_YY_MORE_OFFSET \
196                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
197                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
198                } \
199        while ( 0 )
200
201#define unput(c) yyunput( c, (yytext_ptr)  )
202
203#ifndef YY_TYPEDEF_YY_SIZE_T
204#define YY_TYPEDEF_YY_SIZE_T
205typedef size_t yy_size_t;
206#endif
207
208#ifndef YY_STRUCT_YY_BUFFER_STATE
209#define YY_STRUCT_YY_BUFFER_STATE
210struct yy_buffer_state
211        {
212        FILE *yy_input_file;
213
214        char *yy_ch_buf;                /* input buffer */
215        char *yy_buf_pos;               /* current position in input buffer */
216
217        /* Size of input buffer in bytes, not including room for EOB
218         * characters.
219         */
220        yy_size_t yy_buf_size;
221
222        /* Number of characters read into yy_ch_buf, not including EOB
223         * characters.
224         */
225        int yy_n_chars;
226
227        /* Whether we "own" the buffer - i.e., we know we created it,
228         * and can realloc() it to grow it, and should free() it to
229         * delete it.
230         */
231        int yy_is_our_buffer;
232
233        /* Whether this is an "interactive" input source; if so, and
234         * if we're using stdio for input, then we want to use getc()
235         * instead of fread(), to make sure we stop fetching input after
236         * each newline.
237         */
238        int yy_is_interactive;
239
240        /* Whether we're considered to be at the beginning of a line.
241         * If so, '^' rules will be active on the next match, otherwise
242         * not.
243         */
244        int yy_at_bol;
245
246    int yy_bs_lineno; /**< The line count. */
247    int yy_bs_column; /**< The column count. */
248   
249        /* Whether to try to fill the input buffer when we reach the
250         * end of it.
251         */
252        int yy_fill_buffer;
253
254        int yy_buffer_status;
255
256#define YY_BUFFER_NEW 0
257#define YY_BUFFER_NORMAL 1
258        /* When an EOF's been seen but there's still some text to process
259         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
260         * shouldn't try reading from the input source any more.  We might
261         * still have a bunch of tokens to match, though, because of
262         * possible backing-up.
263         *
264         * When we actually see the EOF, we change the status to "new"
265         * (via yyrestart()), so that the user can continue scanning by
266         * just pointing yyin at a new input file.
267         */
268#define YY_BUFFER_EOF_PENDING 2
269
270        };
271#endif /* !YY_STRUCT_YY_BUFFER_STATE */
272
273/* Stack of input buffers. */
274static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
275static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
276static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
277
278/* We provide macros for accessing buffer states in case in the
279 * future we want to put the buffer states in a more general
280 * "scanner state".
281 *
282 * Returns the top of the stack, or NULL.
283 */
284#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
285                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
286                          : NULL)
287
288/* Same as previous macro, but useful when we know that the buffer stack is not
289 * NULL or when we need an lvalue. For internal use only.
290 */
291#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
292
293/* yy_hold_char holds the character lost when yytext is formed. */
294static char yy_hold_char;
295static int yy_n_chars;          /* number of characters read into yy_ch_buf */
296int yyleng;
297
298/* Points to current character in buffer. */
299static char *yy_c_buf_p = (char *) 0;
300static int yy_init = 0;         /* whether we need to initialize */
301static int yy_start = 0;        /* start state number */
302
303/* Flag which is used to allow yywrap()'s to do buffer switches
304 * instead of setting up a fresh yyin.  A bit of a hack ...
305 */
306static int yy_did_buffer_switch_on_eof;
307
308void yyrestart (FILE *input_file  );
309void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
310YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
311void yy_delete_buffer (YY_BUFFER_STATE b  );
312void yy_flush_buffer (YY_BUFFER_STATE b  );
313void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
314void yypop_buffer_state (void );
315
316static void yyensure_buffer_stack (void );
317static void yy_load_buffer_state (void );
318static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
319
320#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
321
322YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
323YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
324YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
325
326void *yyalloc (yy_size_t  );
327void *yyrealloc (void *,yy_size_t  );
328void yyfree (void *  );
329
330#define yy_new_buffer yy_create_buffer
331
332#define yy_set_interactive(is_interactive) \
333        { \
334        if ( ! YY_CURRENT_BUFFER ){ \
335        yyensure_buffer_stack (); \
336                YY_CURRENT_BUFFER_LVALUE =    \
337            yy_create_buffer(yyin,YY_BUF_SIZE ); \
338        } \
339        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
340        }
341
342#define yy_set_bol(at_bol) \
343        { \
344        if ( ! YY_CURRENT_BUFFER ){\
345        yyensure_buffer_stack (); \
346                YY_CURRENT_BUFFER_LVALUE =    \
347            yy_create_buffer(yyin,YY_BUF_SIZE ); \
348        } \
349        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
350        }
351
352#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
353
354/* Begin user sect3 */
355
356typedef unsigned char YY_CHAR;
357
358FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
359
360typedef int yy_state_type;
361
362extern int yylineno;
363
364int yylineno = 1;
365
366extern char *yytext;
367#define yytext_ptr yytext
368
369static yy_state_type yy_get_previous_state (void );
370static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
371static int yy_get_next_buffer (void );
372static void yy_fatal_error (yyconst char msg[]  );
373
374/* Done after the current pattern has been matched and before the
375 * corresponding action - sets up yytext.
376 */
377#define YY_DO_BEFORE_ACTION \
378        (yytext_ptr) = yy_bp; \
379        yyleng = (size_t) (yy_cp - yy_bp); \
380        (yy_hold_char) = *yy_cp; \
381        *yy_cp = '\0'; \
382        (yy_c_buf_p) = yy_cp;
383
384#define YY_NUM_RULES 171
385#define YY_END_OF_BUFFER 172
386/* This struct is not used in this scanner,
387   but its presence is necessary. */
388struct yy_trans_info
389        {
390        flex_int32_t yy_verify;
391        flex_int32_t yy_nxt;
392        };
393static yyconst flex_int16_t yy_accept[826] =
394    {   0,
395        0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
396      172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
397      107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
398      101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
399      116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
400       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
401       95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
402       98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
403        0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
404      158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
405
406      159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
407      102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
408      147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
409        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
410      110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
411       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
412       95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
413       95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
414       95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
415      154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
416
417        0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
418      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
419        0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
420        0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
421      103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
422      102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
423        0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
424       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
425       95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
426       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
427
428       95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
429       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
430       95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
431        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
432        0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
433        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
434      105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
435        0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
436        0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
437       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
438
439       95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
440       25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
441       95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
442       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
443       83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
444        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
445      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
446        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
447        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
448        0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
449
450       95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
451       95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
452       30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
453       95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
454       95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
455       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
456        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
457      106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
458        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
459       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
460
461       95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
462       95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
463       95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
464       76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
465        0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
466        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
467        0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
468       95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
469       95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
470       95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
471
472        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
473        0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
474       95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
475       95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
476       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
477        0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
478       32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
479        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
480        0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
481       59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
482
483        0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
484       95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
485       80,   19,   41,   77,    0
486    } ;
487
488static yyconst flex_int32_t yy_ec[256] =
489    {   0,
490        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
491        4,    5,    6,    1,    1,    1,    1,    1,    1,    1,
492        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
493        1,    7,    8,    9,   10,   11,   12,   13,   14,   15,
494       16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
495       26,   26,   26,   26,   26,   27,   28,   29,   30,   31,
496       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
497       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
498       11,   11,   47,   48,   49,   11,   11,   50,   11,   11,
499       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
500
501       61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
502       70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
503       79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
504        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
505        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
506        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
507        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
508        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
509        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
510        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
511
512        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
513        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
514        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
515        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
516        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
517        1,    1,    1,    1,    1
518    } ;
519
520static yyconst flex_int32_t yy_meta[85] =
521    {   0,
522        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
523        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
524        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
525        1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
526        8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
527        1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
528        8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
529       10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
530        1,    1,    1,    1
531    } ;
532
533static yyconst flex_int16_t yy_base[999] =
534    {   0,
535        0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
536     2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
537     2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
538      272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
539     2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
540      204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
541      227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
542     2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
543      381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
544     2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
545
546     2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
547        0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
548     2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
549      327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
550     2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
551      445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
552      396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
553      386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
554      540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
555     2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
556
557     2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
558        0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
559      689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
560     2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
561      593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
562     2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
563     2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
564      548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
565      720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
566      791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
567
568      816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
569      841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
570      855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
571      933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
572     2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
573     2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
574      986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
575     1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
576     2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
577      984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
578
579     1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
580     2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
581     1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
582     1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
583     1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
584        0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
585     1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
586     1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
587     1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
588        0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
589
590     1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
591     1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
592     1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
593     1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
594      709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
595     1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
596     1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
597     1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
598     1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
599     1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
600
601     1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
602     1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
603     1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
604     1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
605        0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
606        0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
607        0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
608     1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
609     1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
610     1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
611
612        0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
613     1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
614     1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
615     1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
616     1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
617     1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
618     1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
619     1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
620     1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
621     1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
622
623      752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
624     1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
625      274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
626     1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
627     1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
628     1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
629     1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
630     1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
631     2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
632     2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
633
634     2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
635     2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
636     2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
637     2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
638     2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
639     2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
640     2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
641     2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
642     2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
643     2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
644
645    } ;
646
647static yyconst flex_int16_t yy_def[999] =
648    {   0,
649      825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
650      825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
651      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
652      825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
653      825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
654      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
655      829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
656      832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
657      825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
658      825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
659
660      825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
661       31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
662      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
663      825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
664      825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
665      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
666      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
667      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
668      829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
669      825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
670
671      840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
672      834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
673      825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
674      228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
675      825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
676      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
677      825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
678      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
679      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
680      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
681
682      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
683      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
684      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
685      858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
686      866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
687      825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
688      825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
689      878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
690      885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
691      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
692
693      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
694      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
695      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
696      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
697      889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
698      894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
699      903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
700      825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
701      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
702      919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
703
704      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
705      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
706      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
707      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
708      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
709      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
710      932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
711      825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
712      943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
713      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
714
715      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
716      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
717      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
718      951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
719      955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
720      964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
721      971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
722      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
723      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
724      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
725
726      977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
727      983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
728      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
729      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
730      976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
731      983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
732      976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
733      985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
734      990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
735      976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
736
737      970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
738      976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
739      976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
740      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
741      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
742      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
743      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
744      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
745      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
746      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
747
748      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
749      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
750      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
751      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
752      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
753      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
754      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
755      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
756      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
757      825,  825,  825,  825,  825,  825,  825,  825
758
759    } ;
760
761static yyconst flex_int16_t yy_nxt[2653] =
762    {   0,
763       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
764       18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
765       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
766       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
767       18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
768       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
769       51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
770       18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
771       62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
772       87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
773
774       70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
775       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
776       70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
777       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
778       71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
779       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
780       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
781       71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
782       78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
783       79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
784
785       82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
786       98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
787       95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
788      141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
789      104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
790      176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
791      178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
792      165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
793      110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
794      189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
795
796      245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
797      257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
798      113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
799      180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
800      171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
801      142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
802      257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
803      132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
804       86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
805      135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
806
807      258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
808      235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
809      137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
810      256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
811      206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
812      207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
813      206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
814      104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
815      242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
816       86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
817
818      206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
819      214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
820       86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
821      221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
822       86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
823      294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
824       86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
825       86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
826      228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
827      311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
828
829       86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
830      825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
831      322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
832       98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
833      348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
834      204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
835      195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
836      192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
837      373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
838       86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
839
840      332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
841      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
842      347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
843      104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
844      356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
845      357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
846       86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
847      630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
848      230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
849      361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
850
851      239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
852      104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
853      111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
854      394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
855       86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
856      372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
857      401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
858      415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
859       86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
860       86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
861
862       86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
863       86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
864      437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
865      443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
866      495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
867      347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
868      357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
869      356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
870      357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
871      228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
872
873      104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
874      361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
875      361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
876      471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
877      362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
878      469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
879       86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
880      477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
881       86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
882      369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
883
884       86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
885      519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
886       86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
887       86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
888       86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
889       86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
890       86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
891      550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
892      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
893      471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
894
895       86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
896      468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
897      594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
898      361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
899      571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
900      477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
901      476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
902      576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
903      605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
904      607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
905
906      617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
907      620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
908      627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
909       86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
910       86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
911      571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
912      655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
913      571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
914      575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
915      676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
916
917      576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
918      577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
919      576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
920      680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
921       86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
922      689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
923      700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
924      655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
925      714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
926      717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
927
928      656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
929      729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
930      575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
931       86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
932      734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
933       86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
934      655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
935       86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
936       86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
937      769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
938
939      791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
940      795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
941      825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
942      811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
943       86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
944      823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
945      798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
946       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
947       68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
948       74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
949
950       77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
951       85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
952      139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
953      194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
954      199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
955      203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
956      211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
957      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
958      246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
959      262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
960
961       86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
962      751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
963      341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
964       86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
965      710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
966      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
967      232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
968      367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
969      379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
970       86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
971
972      268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
973       85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
974      194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
975      447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
976      448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
977      649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
978      454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
979      341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
980      461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
981       86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
982
983      465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
984      365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
985      578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
986      462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
987      377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
988      490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
989       86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
990       85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
991      447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
992      489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
993
994      555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
995      452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
996      561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
997       86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
998      461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
999      567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
1000      470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
1001      579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
1002      347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
1003      583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
1004
1005      488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
1006      589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
1007       85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
1008      638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
1009      255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
1010       84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
1011      557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
1012      648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
1013      825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
1014      825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
1015
1016      567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
1017      825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
1018      825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
1019      583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
1020      665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
1021       85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
1022      638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
1023      825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
1024      199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
1025      199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
1026
1027      648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
1028      708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
1029      825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
1030      139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
1031      825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
1032      701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
1033      825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
1034      749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
1035      825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
1036      772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
1037
1038      774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
1039      825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
1040      589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
1041      796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
1042      825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
1043      801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
1044      139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
1045      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1046      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1047      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1048
1049      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1050      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1051      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1052      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1053      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1054      825,  825
1055    } ;
1056
1057static yyconst flex_int16_t yy_chk[2653] =
1058    {   0,
1059        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1060        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1061        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1062        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1063        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1064        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1065        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1066        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1067        1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
1068       19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
1069
1070        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1071        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1072        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1073        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1074        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1075        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1076        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
1077        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
1078       10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
1079       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
1080
1081       15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
1082       28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
1083       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
1084       40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
1085       30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
1086       55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
1087       56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
1088       51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
1089       30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
1090       61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
1091
1092      108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
1093      126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
1094       31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
1095       57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
1096       52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
1097       59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
1098      131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
1099       38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
1100      154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
1101       38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
1102
1103      129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
1104      103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
1105       38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
1106      134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
1107       76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
1108       76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
1109       76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
1110      104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
1111      110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
1112      149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
1113
1114       76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
1115       84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
1116      156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
1117       84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
1118      167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
1119      160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
1120      170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
1121      806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
1122       98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
1123      176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
1124
1125      183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
1126      803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
1127      183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
1128      102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
1129      215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
1130      204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
1131      193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
1132      192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
1133      249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
1134      285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
1135
1136      197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
1137      195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
1138      221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
1139      237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
1140      229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
1141      229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
1142      541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
1143      541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
1144      234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
1145      239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
1146
1147      240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
1148      248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
1149      253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
1150      279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
1151      286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
1152      246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
1153      283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
1154      297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
1155      307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
1156      314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
1157
1158      318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
1159      324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
1160      319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
1161      327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
1162      386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
1163      349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
1164      356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
1165      358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
1166      358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
1167      359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
1168
1169      360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
1170      361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
1171      362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
1172      365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
1173      361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
1174      362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
1175      397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
1176      369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
1177      401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
1178      371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
1179
1180      412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
1181      410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
1182      423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
1183      431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
1184      438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
1185      439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
1186      446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
1187      445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
1188      467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
1189      473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
1190
1191      498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
1192      467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
1193      498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
1194      469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
1195      471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
1196      476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
1197      478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
1198      477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
1199      509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
1200      511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
1201
1202      524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
1203      528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
1204      537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
1205      550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
1206      596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
1207      570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
1208      571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
1209      572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
1210      575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
1211      600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
1212
1213      571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
1214      575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
1215      577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
1216      604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
1217      623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
1218      613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
1219      637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
1220      655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
1221      666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
1222      670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
1223
1224      655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
1225      683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
1226      657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
1227      688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
1228      688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
1229      720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
1230      707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
1231      726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
1232      754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
1233      735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
1234
1235      764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
1236      769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
1237      782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
1238      795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
1239      810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
1240      817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
1241      772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
1242      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
1243      826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1244      827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
1245
1246      828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
1247      829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
1248      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
1249      831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
1250      832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
1251      833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
1252      834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
1253      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
1254      836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
1255      837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
1256
1257      715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
1258      711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
1259      842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
1260      690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
1261      660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
1262      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
1263      847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
1264      849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
1265      852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
1266      622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
1267
1268      856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
1269      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
1270      858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
1271      859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
1272      860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
1273      561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
1274      864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
1275      867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
1276      870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
1277      518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
1278
1279      874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
1280      877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
1281      480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
1282      462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
1283      882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
1284      885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
1285      418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
1286      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
1287      890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
1288      379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
1289
1290      893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
1291      896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
1292      899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
1293      323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
1294      903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
1295      906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
1296      908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
1297      910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
1298      212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
1299      914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
1300
1301      917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
1302      920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
1303      922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
1304      923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
1305      123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
1306       92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
1307      929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
1308      932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
1309       11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
1310        0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
1311
1312      939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
1313        0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
1314        0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
1315      946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
1316      949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
1317      951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
1318      953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
1319        0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
1320      956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
1321      960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
1322
1323      963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
1324      968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
1325        0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
1326      974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
1327        0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
1328      978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
1329        0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
1330      982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
1331        0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
1332      986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
1333
1334      987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
1335        0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
1336      991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
1337      992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
1338        0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
1339      996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
1340      997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
1341      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1342      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1343      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1344
1345      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1346      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1347      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1348      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1349      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
1350      825,  825
1351    } ;
1352
1353/* Table of booleans, true if rule could match eol. */
1354static yyconst flex_int32_t yy_rule_can_match_eol[172] =
1355    {   0,
13561, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1357    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1358    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1359    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1360    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1361    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 
1362    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1363    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
1364    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
1365
1366static yy_state_type yy_last_accepting_state;
1367static char *yy_last_accepting_cpos;
1368
1369extern int yy_flex_debug;
1370int yy_flex_debug = 0;
1371
1372/* The intent behind this definition is that it'll catch
1373 * any uses of REJECT which flex missed.
1374 */
1375#define REJECT reject_used_but_not_detected
1376#define yymore() yymore_used_but_not_detected
1377#define YY_MORE_ADJ 0
1378#define YY_RESTORE_YY_MORE_OFFSET
1379char *yytext;
1380#line 1 "lex.ll"
1381/*
1382 * Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
1383 *
1384 * The contents of this file are covered under the licence agreement in the
1385 * file "LICENCE" distributed with Cforall.
1386 *
1387 * lex.l --
1388 *
1389 * Author           : Peter A. Buhr
1390 * Created On       : Sat Sep 22 08:58:10 2001
1391 * Last Modified By : Peter A. Buhr
1392 * Last Modified On : Mon Jun  8 20:24:15 2015
1393 * Update Count     : 381
1394 */
1395#line 20 "lex.ll"
1396// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
1397// have been performed and removed from the source. The only exceptions are preprocessor directives passed to
1398// the compiler (e.g., line-number directives) and C/C++ style comments, which are ignored.
1399
1400//**************************** Includes and Defines ****************************
1401
1402#include <string>
1403
1404#include "lex.h"
1405#include "ParseNode.h"
1406#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
1407
1408char *yyfilename;
1409std::string *strtext;                                                                   // accumulate parts of character and string constant value
1410
1411#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
1412#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
1413#define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN(x)
1414#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN(x)
1415
1416#define WHITE_RETURN(x)                                                                 // do nothing
1417#define NEWLINE_RETURN()        WHITE_RETURN('\n')
1418#define ASCIIOP_RETURN()        RETURN_CHAR((int)yytext[0])     // single character operator
1419#define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
1420#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
1421#define KEYWORD_RETURN(x)       RETURN_CHAR(x)                          // keyword
1422#define IDENTIFIER_RETURN()     RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
1423#define ATTRIBUTE_RETURN()      RETURN_VAL(ATTR_IDENTIFIER)
1424
1425void rm_underscore() {
1426        // remove underscores in numeric constant
1427        int j = 0;
1428        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
1429                if ( yytext[i] != '_' ) {
1430                        yytext[j] = yytext[i];
1431                        j += 1;
1432                } // if
1433        } // for
1434        yyleng = j;
1435        yytext[yyleng] = '\0';
1436}
1437
1438// identifier, GCC: $ in identifier
1439// quoted identifier
1440// attribute identifier, GCC: $ in identifier
1441// numeric constants, CFA: '_' in constant
1442// character escape sequence, GCC: \e => esc character
1443// ' stop highlighting
1444// display/white-space characters
1445// operators
1446
1447
1448
1449
1450#line 1451 "Parser/lex.cc"
1451
1452#define INITIAL 0
1453#define COMMENT 1
1454#define BKQUOTE 2
1455#define QUOTE 3
1456#define STRING 4
1457
1458#ifndef YY_NO_UNISTD_H
1459/* Special case for "unistd.h", since it is non-ANSI. We include it way
1460 * down here because we want the user's section 1 to have been scanned first.
1461 * The user has a chance to override it with an option.
1462 */
1463#include <unistd.h>
1464#endif
1465
1466#ifndef YY_EXTRA_TYPE
1467#define YY_EXTRA_TYPE void *
1468#endif
1469
1470static int yy_init_globals (void );
1471
1472/* Accessor methods to globals.
1473   These are made visible to non-reentrant scanners for convenience. */
1474
1475int yylex_destroy (void );
1476
1477int yyget_debug (void );
1478
1479void yyset_debug (int debug_flag  );
1480
1481YY_EXTRA_TYPE yyget_extra (void );
1482
1483void yyset_extra (YY_EXTRA_TYPE user_defined  );
1484
1485FILE *yyget_in (void );
1486
1487void yyset_in  (FILE * in_str  );
1488
1489FILE *yyget_out (void );
1490
1491void yyset_out  (FILE * out_str  );
1492
1493int yyget_leng (void );
1494
1495char *yyget_text (void );
1496
1497int yyget_lineno (void );
1498
1499void yyset_lineno (int line_number  );
1500
1501/* Macros after this point can all be overridden by user definitions in
1502 * section 1.
1503 */
1504
1505#ifndef YY_SKIP_YYWRAP
1506#ifdef __cplusplus
1507extern "C" int yywrap (void );
1508#else
1509extern int yywrap (void );
1510#endif
1511#endif
1512
1513#ifndef yytext_ptr
1514static void yy_flex_strncpy (char *,yyconst char *,int );
1515#endif
1516
1517#ifdef YY_NEED_STRLEN
1518static int yy_flex_strlen (yyconst char * );
1519#endif
1520
1521#ifndef YY_NO_INPUT
1522
1523#ifdef __cplusplus
1524static int yyinput (void );
1525#else
1526static int input (void );
1527#endif
1528
1529#endif
1530
1531/* Amount of stuff to slurp up with each read. */
1532#ifndef YY_READ_BUF_SIZE
1533#ifdef __ia64__
1534/* On IA-64, the buffer size is 16k, not 8k */
1535#define YY_READ_BUF_SIZE 16384
1536#else
1537#define YY_READ_BUF_SIZE 8192
1538#endif /* __ia64__ */
1539#endif
1540
1541/* Copy whatever the last rule matched to the standard output. */
1542#ifndef ECHO
1543/* This used to be an fputs(), but since the string might contain NUL's,
1544 * we now use fwrite().
1545 */
1546#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1547#endif
1548
1549/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1550 * is returned in "result".
1551 */
1552#ifndef YY_INPUT
1553#define YY_INPUT(buf,result,max_size) \
1554        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1555                { \
1556                int c = '*'; \
1557                size_t n; \
1558                for ( n = 0; n < max_size && \
1559                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1560                        buf[n] = (char) c; \
1561                if ( c == '\n' ) \
1562                        buf[n++] = (char) c; \
1563                if ( c == EOF && ferror( yyin ) ) \
1564                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
1565                result = n; \
1566                } \
1567        else \
1568                { \
1569                errno=0; \
1570                while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1571                        { \
1572                        if( errno != EINTR) \
1573                                { \
1574                                YY_FATAL_ERROR( "input in flex scanner failed" ); \
1575                                break; \
1576                                } \
1577                        errno=0; \
1578                        clearerr(yyin); \
1579                        } \
1580                }\
1581\
1582
1583#endif
1584
1585/* No semi-colon after return; correct usage is to write "yyterminate();" -
1586 * we don't want an extra ';' after the "return" because that will cause
1587 * some compilers to complain about unreachable statements.
1588 */
1589#ifndef yyterminate
1590#define yyterminate() return YY_NULL
1591#endif
1592
1593/* Number of entries by which start-condition stack grows. */
1594#ifndef YY_START_STACK_INCR
1595#define YY_START_STACK_INCR 25
1596#endif
1597
1598/* Report a fatal error. */
1599#ifndef YY_FATAL_ERROR
1600#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1601#endif
1602
1603/* end tables serialization structures and prototypes */
1604
1605/* Default declaration of generated scanner - a define so the user can
1606 * easily add parameters.
1607 */
1608#ifndef YY_DECL
1609#define YY_DECL_IS_OURS 1
1610
1611extern int yylex (void);
1612
1613#define YY_DECL int yylex (void)
1614#endif /* !YY_DECL */
1615
1616/* Code executed at the beginning of each rule, after yytext and yyleng
1617 * have been set up.
1618 */
1619#ifndef YY_USER_ACTION
1620#define YY_USER_ACTION
1621#endif
1622
1623/* Code executed at the end of each rule. */
1624#ifndef YY_BREAK
1625#define YY_BREAK break;
1626#endif
1627
1628#define YY_RULE_SETUP \
1629        if ( yyleng > 0 ) \
1630                YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1631                                (yytext[yyleng - 1] == '\n'); \
1632        YY_USER_ACTION
1633
1634/** The main scanner function which does all the work.
1635 */
1636YY_DECL
1637{
1638        register yy_state_type yy_current_state;
1639        register char *yy_cp, *yy_bp;
1640        register int yy_act;
1641   
1642#line 136 "lex.ll"
1643
1644                                   /* line directives */
1645#line 1646 "Parser/lex.cc"
1646
1647        if ( !(yy_init) )
1648                {
1649                (yy_init) = 1;
1650
1651#ifdef YY_USER_INIT
1652                YY_USER_INIT;
1653#endif
1654
1655                if ( ! (yy_start) )
1656                        (yy_start) = 1; /* first start state */
1657
1658                if ( ! yyin )
1659                        yyin = stdin;
1660
1661                if ( ! yyout )
1662                        yyout = stdout;
1663
1664                if ( ! YY_CURRENT_BUFFER ) {
1665                        yyensure_buffer_stack ();
1666                        YY_CURRENT_BUFFER_LVALUE =
1667                                yy_create_buffer(yyin,YY_BUF_SIZE );
1668                }
1669
1670                yy_load_buffer_state( );
1671                }
1672
1673        while ( 1 )             /* loops until end-of-file is reached */
1674                {
1675                yy_cp = (yy_c_buf_p);
1676
1677                /* Support of yytext. */
1678                *yy_cp = (yy_hold_char);
1679
1680                /* yy_bp points to the position in yy_ch_buf of the start of
1681                 * the current run.
1682                 */
1683                yy_bp = yy_cp;
1684
1685                yy_current_state = (yy_start);
1686                yy_current_state += YY_AT_BOL();
1687yy_match:
1688                do
1689                        {
1690                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1691                        if ( yy_accept[yy_current_state] )
1692                                {
1693                                (yy_last_accepting_state) = yy_current_state;
1694                                (yy_last_accepting_cpos) = yy_cp;
1695                                }
1696                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1697                                {
1698                                yy_current_state = (int) yy_def[yy_current_state];
1699                                if ( yy_current_state >= 826 )
1700                                        yy_c = yy_meta[(unsigned int) yy_c];
1701                                }
1702                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1703                        ++yy_cp;
1704                        }
1705                while ( yy_base[yy_current_state] != 2568 );
1706
1707yy_find_action:
1708                yy_act = yy_accept[yy_current_state];
1709                if ( yy_act == 0 )
1710                        { /* have to back up */
1711                        yy_cp = (yy_last_accepting_cpos);
1712                        yy_current_state = (yy_last_accepting_state);
1713                        yy_act = yy_accept[yy_current_state];
1714                        }
1715
1716                YY_DO_BEFORE_ACTION;
1717
1718                if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1719                        {
1720                        int yyl;
1721                        for ( yyl = 0; yyl < yyleng; ++yyl )
1722                                if ( yytext[yyl] == '\n' )
1723                                           
1724    yylineno++;
1725;
1726                        }
1727
1728do_action:      /* This label is used only to access EOF actions. */
1729
1730                switch ( yy_act )
1731        { /* beginning of action switch */
1732                        case 0: /* must back up */
1733                        /* undo the effects of YY_DO_BEFORE_ACTION */
1734                        *yy_cp = (yy_hold_char);
1735                        yy_cp = (yy_last_accepting_cpos);
1736                        yy_current_state = (yy_last_accepting_state);
1737                        goto yy_find_action;
1738
1739case 1:
1740/* rule 1 can match eol */
1741YY_RULE_SETUP
1742#line 138 "lex.ll"
1743{
1744        /* " stop highlighting */
1745        char *end_num;
1746        char *begin_string, *end_string;
1747        char *filename;
1748        long lineno, length;
1749        lineno = strtol( yytext + 1, &end_num, 0 );
1750        begin_string = strchr( end_num, '"' );
1751        if ( begin_string ) {
1752                end_string = strchr( begin_string + 1, '"' );
1753                if ( end_string ) {
1754                        length = end_string - begin_string - 1;
1755                        filename = new char[ length + 1 ];
1756                        memcpy( filename, begin_string + 1, length );
1757                        filename[ length ] = '\0';
1758                        //std::cout << "file " << filename << " line " << lineno << std::endl;
1759                        yylineno = lineno;
1760                        yyfilename = filename;
1761                } // if
1762        } // if
1763}
1764        YY_BREAK
1765/* ignore preprocessor directives (for now) */
1766case 2:
1767/* rule 2 can match eol */
1768YY_RULE_SETUP
1769#line 161 "lex.ll"
1770;
1771        YY_BREAK
1772/* ignore C style comments (ALSO HANDLED BY CPP) */
1773case 3:
1774YY_RULE_SETUP
1775#line 164 "lex.ll"
1776{ BEGIN COMMENT; }
1777        YY_BREAK
1778case 4:
1779/* rule 4 can match eol */
1780YY_RULE_SETUP
1781#line 165 "lex.ll"
1782;
1783        YY_BREAK
1784case 5:
1785YY_RULE_SETUP
1786#line 166 "lex.ll"
1787{ BEGIN 0; }
1788        YY_BREAK
1789/* ignore C++ style comments (ALSO HANDLED BY CPP) */
1790case 6:
1791/* rule 6 can match eol */
1792YY_RULE_SETUP
1793#line 169 "lex.ll"
1794;
1795        YY_BREAK
1796/* ignore whitespace */
1797case 7:
1798YY_RULE_SETUP
1799#line 172 "lex.ll"
1800{ WHITE_RETURN(' '); }
1801        YY_BREAK
1802case 8:
1803YY_RULE_SETUP
1804#line 173 "lex.ll"
1805{ WHITE_RETURN(' '); }
1806        YY_BREAK
1807case 9:
1808/* rule 9 can match eol */
1809YY_RULE_SETUP
1810#line 174 "lex.ll"
1811{ NEWLINE_RETURN(); }
1812        YY_BREAK
1813/* keywords */
1814case 10:
1815YY_RULE_SETUP
1816#line 177 "lex.ll"
1817{ KEYWORD_RETURN(ALIGNAS); }                    // C11
1818        YY_BREAK
1819case 11:
1820YY_RULE_SETUP
1821#line 178 "lex.ll"
1822{ KEYWORD_RETURN(ALIGNOF); }                    // C11
1823        YY_BREAK
1824case 12:
1825YY_RULE_SETUP
1826#line 179 "lex.ll"
1827{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
1828        YY_BREAK
1829case 13:
1830YY_RULE_SETUP
1831#line 180 "lex.ll"
1832{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
1833        YY_BREAK
1834case 14:
1835YY_RULE_SETUP
1836#line 181 "lex.ll"
1837{ KEYWORD_RETURN(ASM); }
1838        YY_BREAK
1839case 15:
1840YY_RULE_SETUP
1841#line 182 "lex.ll"
1842{ KEYWORD_RETURN(ASM); }                                // GCC
1843        YY_BREAK
1844case 16:
1845YY_RULE_SETUP
1846#line 183 "lex.ll"
1847{ KEYWORD_RETURN(ASM); }                                // GCC
1848        YY_BREAK
1849case 17:
1850YY_RULE_SETUP
1851#line 184 "lex.ll"
1852{ KEYWORD_RETURN(ATOMIC); }                             // C11
1853        YY_BREAK
1854case 18:
1855YY_RULE_SETUP
1856#line 185 "lex.ll"
1857{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
1858        YY_BREAK
1859case 19:
1860YY_RULE_SETUP
1861#line 186 "lex.ll"
1862{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
1863        YY_BREAK
1864case 20:
1865YY_RULE_SETUP
1866#line 187 "lex.ll"
1867{ KEYWORD_RETURN(AUTO); }
1868        YY_BREAK
1869case 21:
1870YY_RULE_SETUP
1871#line 188 "lex.ll"
1872{ KEYWORD_RETURN(BOOL); }                               // C99
1873        YY_BREAK
1874case 22:
1875YY_RULE_SETUP
1876#line 189 "lex.ll"
1877{ KEYWORD_RETURN(BREAK); }
1878        YY_BREAK
1879case 23:
1880YY_RULE_SETUP
1881#line 190 "lex.ll"
1882{ KEYWORD_RETURN(CASE); }
1883        YY_BREAK
1884case 24:
1885YY_RULE_SETUP
1886#line 191 "lex.ll"
1887{ KEYWORD_RETURN(CATCH); }                              // CFA
1888        YY_BREAK
1889case 25:
1890YY_RULE_SETUP
1891#line 192 "lex.ll"
1892{ KEYWORD_RETURN(CHAR); }
1893        YY_BREAK
1894case 26:
1895YY_RULE_SETUP
1896#line 193 "lex.ll"
1897{ KEYWORD_RETURN(CHOOSE); }                             // CFA
1898        YY_BREAK
1899case 27:
1900YY_RULE_SETUP
1901#line 194 "lex.ll"
1902{ KEYWORD_RETURN(COMPLEX); }                    // C99
1903        YY_BREAK
1904case 28:
1905YY_RULE_SETUP
1906#line 195 "lex.ll"
1907{ KEYWORD_RETURN(COMPLEX); }                    // GCC
1908        YY_BREAK
1909case 29:
1910YY_RULE_SETUP
1911#line 196 "lex.ll"
1912{ KEYWORD_RETURN(COMPLEX); }                    // GCC
1913        YY_BREAK
1914case 30:
1915YY_RULE_SETUP
1916#line 197 "lex.ll"
1917{ KEYWORD_RETURN(CONST); }
1918        YY_BREAK
1919case 31:
1920YY_RULE_SETUP
1921#line 198 "lex.ll"
1922{ KEYWORD_RETURN(CONST); }                              // GCC
1923        YY_BREAK
1924case 32:
1925YY_RULE_SETUP
1926#line 199 "lex.ll"
1927{ KEYWORD_RETURN(CONST); }                              // GCC
1928        YY_BREAK
1929case 33:
1930YY_RULE_SETUP
1931#line 200 "lex.ll"
1932{ KEYWORD_RETURN(CONTEXT); }                    // CFA
1933        YY_BREAK
1934case 34:
1935YY_RULE_SETUP
1936#line 201 "lex.ll"
1937{ KEYWORD_RETURN(CONTINUE); }
1938        YY_BREAK
1939case 35:
1940YY_RULE_SETUP
1941#line 202 "lex.ll"
1942{ KEYWORD_RETURN(DEFAULT); }
1943        YY_BREAK
1944case 36:
1945YY_RULE_SETUP
1946#line 203 "lex.ll"
1947{ KEYWORD_RETURN(DO); }
1948        YY_BREAK
1949case 37:
1950YY_RULE_SETUP
1951#line 204 "lex.ll"
1952{ KEYWORD_RETURN(DOUBLE); }
1953        YY_BREAK
1954case 38:
1955YY_RULE_SETUP
1956#line 205 "lex.ll"
1957{ KEYWORD_RETURN(DTYPE); }                              // CFA
1958        YY_BREAK
1959case 39:
1960YY_RULE_SETUP
1961#line 206 "lex.ll"
1962{ KEYWORD_RETURN(ELSE); }
1963        YY_BREAK
1964case 40:
1965YY_RULE_SETUP
1966#line 207 "lex.ll"
1967{ KEYWORD_RETURN(ENUM); }
1968        YY_BREAK
1969case 41:
1970YY_RULE_SETUP
1971#line 208 "lex.ll"
1972{ KEYWORD_RETURN(EXTENSION); }                  // GCC
1973        YY_BREAK
1974case 42:
1975YY_RULE_SETUP
1976#line 209 "lex.ll"
1977{ KEYWORD_RETURN(EXTERN); }
1978        YY_BREAK
1979case 43:
1980YY_RULE_SETUP
1981#line 210 "lex.ll"
1982{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
1983        YY_BREAK
1984case 44:
1985YY_RULE_SETUP
1986#line 211 "lex.ll"
1987{ KEYWORD_RETURN(FINALLY); }                    // CFA
1988        YY_BREAK
1989case 45:
1990YY_RULE_SETUP
1991#line 212 "lex.ll"
1992{ KEYWORD_RETURN(FLOAT); }
1993        YY_BREAK
1994case 46:
1995YY_RULE_SETUP
1996#line 213 "lex.ll"
1997{ KEYWORD_RETURN(FLOAT); }                              // GCC
1998        YY_BREAK
1999case 47:
2000YY_RULE_SETUP
2001#line 214 "lex.ll"
2002{ KEYWORD_RETURN(FOR); }
2003        YY_BREAK
2004case 48:
2005YY_RULE_SETUP
2006#line 215 "lex.ll"
2007{ KEYWORD_RETURN(FORALL); }                             // CFA
2008        YY_BREAK
2009case 49:
2010YY_RULE_SETUP
2011#line 216 "lex.ll"
2012{ KEYWORD_RETURN(FORTRAN); }
2013        YY_BREAK
2014case 50:
2015YY_RULE_SETUP
2016#line 217 "lex.ll"
2017{ KEYWORD_RETURN(FTYPE); }                              // CFA
2018        YY_BREAK
2019case 51:
2020YY_RULE_SETUP
2021#line 218 "lex.ll"
2022{ KEYWORD_RETURN(GENERIC); }                    // C11
2023        YY_BREAK
2024case 52:
2025YY_RULE_SETUP
2026#line 219 "lex.ll"
2027{ KEYWORD_RETURN(GOTO); }
2028        YY_BREAK
2029case 53:
2030YY_RULE_SETUP
2031#line 220 "lex.ll"
2032{ KEYWORD_RETURN(IF); }
2033        YY_BREAK
2034case 54:
2035YY_RULE_SETUP
2036#line 221 "lex.ll"
2037{ KEYWORD_RETURN(IMAGINARY); }                  // C99
2038        YY_BREAK
2039case 55:
2040YY_RULE_SETUP
2041#line 222 "lex.ll"
2042{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
2043        YY_BREAK
2044case 56:
2045YY_RULE_SETUP
2046#line 223 "lex.ll"
2047{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
2048        YY_BREAK
2049case 57:
2050YY_RULE_SETUP
2051#line 224 "lex.ll"
2052{ KEYWORD_RETURN(INLINE); }                             // C99
2053        YY_BREAK
2054case 58:
2055YY_RULE_SETUP
2056#line 225 "lex.ll"
2057{ KEYWORD_RETURN(INLINE); }                             // GCC
2058        YY_BREAK
2059case 59:
2060YY_RULE_SETUP
2061#line 226 "lex.ll"
2062{ KEYWORD_RETURN(INLINE); }                             // GCC
2063        YY_BREAK
2064case 60:
2065YY_RULE_SETUP
2066#line 227 "lex.ll"
2067{ KEYWORD_RETURN(INT); }
2068        YY_BREAK
2069case 61:
2070YY_RULE_SETUP
2071#line 228 "lex.ll"
2072{ KEYWORD_RETURN(INT); }                                // GCC
2073        YY_BREAK
2074case 62:
2075YY_RULE_SETUP
2076#line 229 "lex.ll"
2077{ KEYWORD_RETURN(LABEL); }                              // GCC
2078        YY_BREAK
2079case 63:
2080YY_RULE_SETUP
2081#line 230 "lex.ll"
2082{ KEYWORD_RETURN(LONG); }
2083        YY_BREAK
2084case 64:
2085YY_RULE_SETUP
2086#line 231 "lex.ll"
2087{ KEYWORD_RETURN(LVALUE); }                             // CFA
2088        YY_BREAK
2089case 65:
2090YY_RULE_SETUP
2091#line 232 "lex.ll"
2092{ KEYWORD_RETURN(NORETURN); }                   // C11
2093        YY_BREAK
2094case 66:
2095YY_RULE_SETUP
2096#line 233 "lex.ll"
2097{ KEYWORD_RETURN(REGISTER); }
2098        YY_BREAK
2099case 67:
2100YY_RULE_SETUP
2101#line 234 "lex.ll"
2102{ KEYWORD_RETURN(RESTRICT); }                   // C99
2103        YY_BREAK
2104case 68:
2105YY_RULE_SETUP
2106#line 235 "lex.ll"
2107{ KEYWORD_RETURN(RESTRICT); }                   // GCC
2108        YY_BREAK
2109case 69:
2110YY_RULE_SETUP
2111#line 236 "lex.ll"
2112{ KEYWORD_RETURN(RESTRICT); }                   // GCC
2113        YY_BREAK
2114case 70:
2115YY_RULE_SETUP
2116#line 237 "lex.ll"
2117{ KEYWORD_RETURN(RETURN); }
2118        YY_BREAK
2119case 71:
2120YY_RULE_SETUP
2121#line 238 "lex.ll"
2122{ KEYWORD_RETURN(SHORT); }
2123        YY_BREAK
2124case 72:
2125YY_RULE_SETUP
2126#line 239 "lex.ll"
2127{ KEYWORD_RETURN(SIGNED); }
2128        YY_BREAK
2129case 73:
2130YY_RULE_SETUP
2131#line 240 "lex.ll"
2132{ KEYWORD_RETURN(SIGNED); }                             // GCC
2133        YY_BREAK
2134case 74:
2135YY_RULE_SETUP
2136#line 241 "lex.ll"
2137{ KEYWORD_RETURN(SIGNED); }                             // GCC
2138        YY_BREAK
2139case 75:
2140YY_RULE_SETUP
2141#line 242 "lex.ll"
2142{ KEYWORD_RETURN(SIZEOF); }
2143        YY_BREAK
2144case 76:
2145YY_RULE_SETUP
2146#line 243 "lex.ll"
2147{ KEYWORD_RETURN(STATIC); }
2148        YY_BREAK
2149case 77:
2150YY_RULE_SETUP
2151#line 244 "lex.ll"
2152{ KEYWORD_RETURN(STATICASSERT); }               // C11
2153        YY_BREAK
2154case 78:
2155YY_RULE_SETUP
2156#line 245 "lex.ll"
2157{ KEYWORD_RETURN(STRUCT); }
2158        YY_BREAK
2159case 79:
2160YY_RULE_SETUP
2161#line 246 "lex.ll"
2162{ KEYWORD_RETURN(SWITCH); }
2163        YY_BREAK
2164case 80:
2165YY_RULE_SETUP
2166#line 247 "lex.ll"
2167{ KEYWORD_RETURN(THREADLOCAL); }                // C11
2168        YY_BREAK
2169case 81:
2170YY_RULE_SETUP
2171#line 248 "lex.ll"
2172{ KEYWORD_RETURN(THROW); }                              // CFA
2173        YY_BREAK
2174case 82:
2175YY_RULE_SETUP
2176#line 249 "lex.ll"
2177{ KEYWORD_RETURN(TRY); }                                // CFA
2178        YY_BREAK
2179case 83:
2180YY_RULE_SETUP
2181#line 250 "lex.ll"
2182{ KEYWORD_RETURN(TYPE); }                               // CFA
2183        YY_BREAK
2184case 84:
2185YY_RULE_SETUP
2186#line 251 "lex.ll"
2187{ KEYWORD_RETURN(TYPEDEF); }
2188        YY_BREAK
2189case 85:
2190YY_RULE_SETUP
2191#line 252 "lex.ll"
2192{ KEYWORD_RETURN(TYPEOF); }                             // GCC
2193        YY_BREAK
2194case 86:
2195YY_RULE_SETUP
2196#line 253 "lex.ll"
2197{ KEYWORD_RETURN(TYPEOF); }                             // GCC
2198        YY_BREAK
2199case 87:
2200YY_RULE_SETUP
2201#line 254 "lex.ll"
2202{ KEYWORD_RETURN(TYPEOF); }                             // GCC
2203        YY_BREAK
2204case 88:
2205YY_RULE_SETUP
2206#line 255 "lex.ll"
2207{ KEYWORD_RETURN(UNION); }
2208        YY_BREAK
2209case 89:
2210YY_RULE_SETUP
2211#line 256 "lex.ll"
2212{ KEYWORD_RETURN(UNSIGNED); }
2213        YY_BREAK
2214case 90:
2215YY_RULE_SETUP
2216#line 257 "lex.ll"
2217{ KEYWORD_RETURN(VOID); }
2218        YY_BREAK
2219case 91:
2220YY_RULE_SETUP
2221#line 258 "lex.ll"
2222{ KEYWORD_RETURN(VOLATILE); }
2223        YY_BREAK
2224case 92:
2225YY_RULE_SETUP
2226#line 259 "lex.ll"
2227{ KEYWORD_RETURN(VOLATILE); }                   // GCC
2228        YY_BREAK
2229case 93:
2230YY_RULE_SETUP
2231#line 260 "lex.ll"
2232{ KEYWORD_RETURN(VOLATILE); }                   // GCC
2233        YY_BREAK
2234case 94:
2235YY_RULE_SETUP
2236#line 261 "lex.ll"
2237{ KEYWORD_RETURN(WHILE); }
2238        YY_BREAK
2239/* identifier */
2240case 95:
2241YY_RULE_SETUP
2242#line 264 "lex.ll"
2243{ IDENTIFIER_RETURN(); }
2244        YY_BREAK
2245case 96:
2246YY_RULE_SETUP
2247#line 265 "lex.ll"
2248{ ATTRIBUTE_RETURN(); }
2249        YY_BREAK
2250case 97:
2251YY_RULE_SETUP
2252#line 266 "lex.ll"
2253{ BEGIN BKQUOTE; }
2254        YY_BREAK
2255case 98:
2256YY_RULE_SETUP
2257#line 267 "lex.ll"
2258{ IDENTIFIER_RETURN(); }
2259        YY_BREAK
2260case 99:
2261YY_RULE_SETUP
2262#line 268 "lex.ll"
2263{ BEGIN 0; }
2264        YY_BREAK
2265/* numeric constants */
2266case 100:
2267YY_RULE_SETUP
2268#line 271 "lex.ll"
2269{ NUMERIC_RETURN(ZERO); }                               // CFA
2270        YY_BREAK
2271case 101:
2272YY_RULE_SETUP
2273#line 272 "lex.ll"
2274{ NUMERIC_RETURN(ONE); }                                // CFA
2275        YY_BREAK
2276case 102:
2277YY_RULE_SETUP
2278#line 273 "lex.ll"
2279{ NUMERIC_RETURN(INTEGERconstant); }
2280        YY_BREAK
2281case 103:
2282YY_RULE_SETUP
2283#line 274 "lex.ll"
2284{ NUMERIC_RETURN(INTEGERconstant); }
2285        YY_BREAK
2286case 104:
2287YY_RULE_SETUP
2288#line 275 "lex.ll"
2289{ NUMERIC_RETURN(INTEGERconstant); }
2290        YY_BREAK
2291case 105:
2292YY_RULE_SETUP
2293#line 276 "lex.ll"
2294{ NUMERIC_RETURN(FLOATINGconstant); }
2295        YY_BREAK
2296case 106:
2297YY_RULE_SETUP
2298#line 277 "lex.ll"
2299{ NUMERIC_RETURN(FLOATINGconstant); }
2300        YY_BREAK
2301/* character constant, allows empty value */
2302case 107:
2303YY_RULE_SETUP
2304#line 280 "lex.ll"
2305{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
2306        YY_BREAK
2307case 108:
2308YY_RULE_SETUP
2309#line 281 "lex.ll"
2310{ *strtext += std::string( yytext ); }
2311        YY_BREAK
2312case 109:
2313/* rule 109 can match eol */
2314YY_RULE_SETUP
2315#line 282 "lex.ll"
2316{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
2317        YY_BREAK
2318/* ' stop highlighting */
2319/* string constant */
2320case 110:
2321YY_RULE_SETUP
2322#line 286 "lex.ll"
2323{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
2324        YY_BREAK
2325case 111:
2326YY_RULE_SETUP
2327#line 287 "lex.ll"
2328{ *strtext += std::string( yytext ); }
2329        YY_BREAK
2330case 112:
2331/* rule 112 can match eol */
2332YY_RULE_SETUP
2333#line 288 "lex.ll"
2334{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
2335        YY_BREAK
2336/* " stop highlighting */
2337/* common character/string constant */
2338case 113:
2339YY_RULE_SETUP
2340#line 292 "lex.ll"
2341{ rm_underscore(); *strtext += std::string( yytext ); }
2342        YY_BREAK
2343case 114:
2344/* rule 114 can match eol */
2345YY_RULE_SETUP
2346#line 293 "lex.ll"
2347{}                                              // continuation (ALSO HANDLED BY CPP)
2348        YY_BREAK
2349case 115:
2350YY_RULE_SETUP
2351#line 294 "lex.ll"
2352{ *strtext += std::string( yytext ); } // unknown escape character
2353        YY_BREAK
2354/* punctuation */
2355case 116:
2356YY_RULE_SETUP
2357#line 297 "lex.ll"
2358{ ASCIIOP_RETURN(); }
2359        YY_BREAK
2360case 117:
2361YY_RULE_SETUP
2362#line 298 "lex.ll"
2363{ ASCIIOP_RETURN(); }
2364        YY_BREAK
2365case 118:
2366YY_RULE_SETUP
2367#line 299 "lex.ll"
2368{ ASCIIOP_RETURN(); }
2369        YY_BREAK
2370case 119:
2371YY_RULE_SETUP
2372#line 300 "lex.ll"
2373{ ASCIIOP_RETURN(); }
2374        YY_BREAK
2375case 120:
2376YY_RULE_SETUP
2377#line 301 "lex.ll"
2378{ ASCIIOP_RETURN(); }
2379        YY_BREAK
2380case 121:
2381YY_RULE_SETUP
2382#line 302 "lex.ll"
2383{ ASCIIOP_RETURN(); }
2384        YY_BREAK
2385case 122:
2386YY_RULE_SETUP
2387#line 303 "lex.ll"
2388{ ASCIIOP_RETURN(); }                                   // also operator
2389        YY_BREAK
2390case 123:
2391YY_RULE_SETUP
2392#line 304 "lex.ll"
2393{ ASCIIOP_RETURN(); }
2394        YY_BREAK
2395case 124:
2396YY_RULE_SETUP
2397#line 305 "lex.ll"
2398{ ASCIIOP_RETURN(); }
2399        YY_BREAK
2400case 125:
2401YY_RULE_SETUP
2402#line 306 "lex.ll"
2403{ ASCIIOP_RETURN(); }                                   // also operator
2404        YY_BREAK
2405case 126:
2406YY_RULE_SETUP
2407#line 307 "lex.ll"
2408{ NAMEDOP_RETURN(ELLIPSIS); }
2409        YY_BREAK
2410/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
2411case 127:
2412YY_RULE_SETUP
2413#line 310 "lex.ll"
2414{ RETURN_VAL('['); }
2415        YY_BREAK
2416case 128:
2417YY_RULE_SETUP
2418#line 311 "lex.ll"
2419{ RETURN_VAL(']'); }
2420        YY_BREAK
2421case 129:
2422YY_RULE_SETUP
2423#line 312 "lex.ll"
2424{ RETURN_VAL('{'); }
2425        YY_BREAK
2426case 130:
2427YY_RULE_SETUP
2428#line 313 "lex.ll"
2429{ RETURN_VAL('}'); }
2430        YY_BREAK
2431/* operators */
2432case 131:
2433YY_RULE_SETUP
2434#line 316 "lex.ll"
2435{ ASCIIOP_RETURN(); }
2436        YY_BREAK
2437case 132:
2438YY_RULE_SETUP
2439#line 317 "lex.ll"
2440{ ASCIIOP_RETURN(); }
2441        YY_BREAK
2442case 133:
2443YY_RULE_SETUP
2444#line 318 "lex.ll"
2445{ ASCIIOP_RETURN(); }
2446        YY_BREAK
2447case 134:
2448YY_RULE_SETUP
2449#line 319 "lex.ll"
2450{ ASCIIOP_RETURN(); }
2451        YY_BREAK
2452case 135:
2453YY_RULE_SETUP
2454#line 320 "lex.ll"
2455{ ASCIIOP_RETURN(); }
2456        YY_BREAK
2457case 136:
2458YY_RULE_SETUP
2459#line 321 "lex.ll"
2460{ ASCIIOP_RETURN(); }
2461        YY_BREAK
2462case 137:
2463YY_RULE_SETUP
2464#line 322 "lex.ll"
2465{ ASCIIOP_RETURN(); }
2466        YY_BREAK
2467case 138:
2468YY_RULE_SETUP
2469#line 323 "lex.ll"
2470{ ASCIIOP_RETURN(); }
2471        YY_BREAK
2472case 139:
2473YY_RULE_SETUP
2474#line 324 "lex.ll"
2475{ ASCIIOP_RETURN(); }
2476        YY_BREAK
2477case 140:
2478YY_RULE_SETUP
2479#line 325 "lex.ll"
2480{ ASCIIOP_RETURN(); }
2481        YY_BREAK
2482case 141:
2483YY_RULE_SETUP
2484#line 326 "lex.ll"
2485{ ASCIIOP_RETURN(); }
2486        YY_BREAK
2487case 142:
2488YY_RULE_SETUP
2489#line 327 "lex.ll"
2490{ ASCIIOP_RETURN(); }
2491        YY_BREAK
2492case 143:
2493YY_RULE_SETUP
2494#line 328 "lex.ll"
2495{ ASCIIOP_RETURN(); }
2496        YY_BREAK
2497case 144:
2498YY_RULE_SETUP
2499#line 329 "lex.ll"
2500{ ASCIIOP_RETURN(); }
2501        YY_BREAK
2502case 145:
2503YY_RULE_SETUP
2504#line 331 "lex.ll"
2505{ NAMEDOP_RETURN(ICR); }
2506        YY_BREAK
2507case 146:
2508YY_RULE_SETUP
2509#line 332 "lex.ll"
2510{ NAMEDOP_RETURN(DECR); }
2511        YY_BREAK
2512case 147:
2513YY_RULE_SETUP
2514#line 333 "lex.ll"
2515{ NAMEDOP_RETURN(EQ); }
2516        YY_BREAK
2517case 148:
2518YY_RULE_SETUP
2519#line 334 "lex.ll"
2520{ NAMEDOP_RETURN(NE); }
2521        YY_BREAK
2522case 149:
2523YY_RULE_SETUP
2524#line 335 "lex.ll"
2525{ NAMEDOP_RETURN(LS); }
2526        YY_BREAK
2527case 150:
2528YY_RULE_SETUP
2529#line 336 "lex.ll"
2530{ NAMEDOP_RETURN(RS); }
2531        YY_BREAK
2532case 151:
2533YY_RULE_SETUP
2534#line 337 "lex.ll"
2535{ NAMEDOP_RETURN(LE); }
2536        YY_BREAK
2537case 152:
2538YY_RULE_SETUP
2539#line 338 "lex.ll"
2540{ NAMEDOP_RETURN(GE); }
2541        YY_BREAK
2542case 153:
2543YY_RULE_SETUP
2544#line 339 "lex.ll"
2545{ NAMEDOP_RETURN(ANDAND); }
2546        YY_BREAK
2547case 154:
2548YY_RULE_SETUP
2549#line 340 "lex.ll"
2550{ NAMEDOP_RETURN(OROR); }
2551        YY_BREAK
2552case 155:
2553YY_RULE_SETUP
2554#line 341 "lex.ll"
2555{ NAMEDOP_RETURN(ARROW); }
2556        YY_BREAK
2557case 156:
2558YY_RULE_SETUP
2559#line 342 "lex.ll"
2560{ NAMEDOP_RETURN(PLUSassign); }
2561        YY_BREAK
2562case 157:
2563YY_RULE_SETUP
2564#line 343 "lex.ll"
2565{ NAMEDOP_RETURN(MINUSassign); }
2566        YY_BREAK
2567case 158:
2568YY_RULE_SETUP
2569#line 344 "lex.ll"
2570{ NAMEDOP_RETURN(MULTassign); }
2571        YY_BREAK
2572case 159:
2573YY_RULE_SETUP
2574#line 345 "lex.ll"
2575{ NAMEDOP_RETURN(DIVassign); }
2576        YY_BREAK
2577case 160:
2578YY_RULE_SETUP
2579#line 346 "lex.ll"
2580{ NAMEDOP_RETURN(MODassign); }
2581        YY_BREAK
2582case 161:
2583YY_RULE_SETUP
2584#line 347 "lex.ll"
2585{ NAMEDOP_RETURN(ANDassign); }
2586        YY_BREAK
2587case 162:
2588YY_RULE_SETUP
2589#line 348 "lex.ll"
2590{ NAMEDOP_RETURN(ORassign); }
2591        YY_BREAK
2592case 163:
2593YY_RULE_SETUP
2594#line 349 "lex.ll"
2595{ NAMEDOP_RETURN(ERassign); }
2596        YY_BREAK
2597case 164:
2598YY_RULE_SETUP
2599#line 350 "lex.ll"
2600{ NAMEDOP_RETURN(LSassign); }
2601        YY_BREAK
2602case 165:
2603YY_RULE_SETUP
2604#line 351 "lex.ll"
2605{ NAMEDOP_RETURN(RSassign); }
2606        YY_BREAK
2607/* CFA, operator identifier */
2608case 166:
2609YY_RULE_SETUP
2610#line 354 "lex.ll"
2611{ IDENTIFIER_RETURN(); }                                // unary
2612        YY_BREAK
2613case 167:
2614YY_RULE_SETUP
2615#line 355 "lex.ll"
2616{ IDENTIFIER_RETURN(); }
2617        YY_BREAK
2618case 168:
2619YY_RULE_SETUP
2620#line 356 "lex.ll"
2621{ IDENTIFIER_RETURN(); }                // binary
2622        YY_BREAK
2623/*
2624          This rule handles ambiguous cases with operator identifiers, e.g., "int *?*?()", where the string "*?*?"
2625          can be lexed as "*"/"?*?" or "*?"/"*?". Since it is common practise to put a unary operator juxtaposed
2626          to an identifier, e.g., "*i", users will be annoyed if they cannot do this with respect to operator
2627          identifiers. Even with this special hack, there are 5 general cases that cannot be handled. The first
2628          case is for the function-call identifier "?()":
2629
2630          int * ?()();  // declaration: space required after '*'
2631          * ?()();      // expression: space required after '*'
2632
2633          Without the space, the string "*?()" is ambiguous without N character look ahead; it requires scanning
2634          ahead to determine if there is a '(', which is the start of an argument/parameter list.
2635
2636          The 4 remaining cases occur in expressions:
2637
2638          i++?i:0;              // space required before '?'
2639          i--?i:0;              // space required before '?'
2640          i?++i:0;              // space required after '?'
2641          i?--i:0;              // space required after '?'
2642
2643          In the first two cases, the string "i++?" is ambiguous, where this string can be lexed as "i"/"++?" or
2644          "i++"/"?"; it requires scanning ahead to determine if there is a '(', which is the start of an argument
2645          list.  In the second two cases, the string "?++x" is ambiguous, where this string can be lexed as
2646          "?++"/"x" or "?"/"++x"; it requires scanning ahead to determine if there is a '(', which is the start of
2647          an argument list.
2648        */
2649case 169:
2650YY_RULE_SETUP
2651#line 383 "lex.ll"
2652{
2653        // 1 or 2 character unary operator ?
2654        int i = yytext[1] == '?' ? 1 : 2;
2655        yyless( i );            // put back characters up to first '?'
2656        if ( i > 1 ) {
2657                NAMEDOP_RETURN( yytext[0] == '+' ? ICR : DECR );
2658        } else {
2659                ASCIIOP_RETURN();
2660        } // if
2661}
2662        YY_BREAK
2663/* unknown characters */
2664case 170:
2665YY_RULE_SETUP
2666#line 395 "lex.ll"
2667{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
2668        YY_BREAK
2669case 171:
2670YY_RULE_SETUP
2671#line 397 "lex.ll"
2672ECHO;
2673        YY_BREAK
2674#line 2675 "Parser/lex.cc"
2675case YY_STATE_EOF(INITIAL):
2676case YY_STATE_EOF(COMMENT):
2677case YY_STATE_EOF(BKQUOTE):
2678case YY_STATE_EOF(QUOTE):
2679case YY_STATE_EOF(STRING):
2680        yyterminate();
2681
2682        case YY_END_OF_BUFFER:
2683                {
2684                /* Amount of text matched not including the EOB char. */
2685                int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2686
2687                /* Undo the effects of YY_DO_BEFORE_ACTION. */
2688                *yy_cp = (yy_hold_char);
2689                YY_RESTORE_YY_MORE_OFFSET
2690
2691                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2692                        {
2693                        /* We're scanning a new file or input source.  It's
2694                         * possible that this happened because the user
2695                         * just pointed yyin at a new source and called
2696                         * yylex().  If so, then we have to assure
2697                         * consistency between YY_CURRENT_BUFFER and our
2698                         * globals.  Here is the right place to do so, because
2699                         * this is the first action (other than possibly a
2700                         * back-up) that will match for the new input source.
2701                         */
2702                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2703                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2704                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2705                        }
2706
2707                /* Note that here we test for yy_c_buf_p "<=" to the position
2708                 * of the first EOB in the buffer, since yy_c_buf_p will
2709                 * already have been incremented past the NUL character
2710                 * (since all states make transitions on EOB to the
2711                 * end-of-buffer state).  Contrast this with the test
2712                 * in input().
2713                 */
2714                if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2715                        { /* This was really a NUL. */
2716                        yy_state_type yy_next_state;
2717
2718                        (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2719
2720                        yy_current_state = yy_get_previous_state(  );
2721
2722                        /* Okay, we're now positioned to make the NUL
2723                         * transition.  We couldn't have
2724                         * yy_get_previous_state() go ahead and do it
2725                         * for us because it doesn't know how to deal
2726                         * with the possibility of jamming (and we don't
2727                         * want to build jamming into it because then it
2728                         * will run more slowly).
2729                         */
2730
2731                        yy_next_state = yy_try_NUL_trans( yy_current_state );
2732
2733                        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2734
2735                        if ( yy_next_state )
2736                                {
2737                                /* Consume the NUL. */
2738                                yy_cp = ++(yy_c_buf_p);
2739                                yy_current_state = yy_next_state;
2740                                goto yy_match;
2741                                }
2742
2743                        else
2744                                {
2745                                yy_cp = (yy_c_buf_p);
2746                                goto yy_find_action;
2747                                }
2748                        }
2749
2750                else switch ( yy_get_next_buffer(  ) )
2751                        {
2752                        case EOB_ACT_END_OF_FILE:
2753                                {
2754                                (yy_did_buffer_switch_on_eof) = 0;
2755
2756                                if ( yywrap( ) )
2757                                        {
2758                                        /* Note: because we've taken care in
2759                                         * yy_get_next_buffer() to have set up
2760                                         * yytext, we can now set up
2761                                         * yy_c_buf_p so that if some total
2762                                         * hoser (like flex itself) wants to
2763                                         * call the scanner after we return the
2764                                         * YY_NULL, it'll still work - another
2765                                         * YY_NULL will get returned.
2766                                         */
2767                                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2768
2769                                        yy_act = YY_STATE_EOF(YY_START);
2770                                        goto do_action;
2771                                        }
2772
2773                                else
2774                                        {
2775                                        if ( ! (yy_did_buffer_switch_on_eof) )
2776                                                YY_NEW_FILE;
2777                                        }
2778                                break;
2779                                }
2780
2781                        case EOB_ACT_CONTINUE_SCAN:
2782                                (yy_c_buf_p) =
2783                                        (yytext_ptr) + yy_amount_of_matched_text;
2784
2785                                yy_current_state = yy_get_previous_state(  );
2786
2787                                yy_cp = (yy_c_buf_p);
2788                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2789                                goto yy_match;
2790
2791                        case EOB_ACT_LAST_MATCH:
2792                                (yy_c_buf_p) =
2793                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2794
2795                                yy_current_state = yy_get_previous_state(  );
2796
2797                                yy_cp = (yy_c_buf_p);
2798                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2799                                goto yy_find_action;
2800                        }
2801                break;
2802                }
2803
2804        default:
2805                YY_FATAL_ERROR(
2806                        "fatal flex scanner internal error--no action found" );
2807        } /* end of action switch */
2808                } /* end of scanning one token */
2809} /* end of yylex */
2810
2811/* yy_get_next_buffer - try to read in a new buffer
2812 *
2813 * Returns a code representing an action:
2814 *      EOB_ACT_LAST_MATCH -
2815 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2816 *      EOB_ACT_END_OF_FILE - end of file
2817 */
2818static int yy_get_next_buffer (void)
2819{
2820        register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2821        register char *source = (yytext_ptr);
2822        register int number_to_move, i;
2823        int ret_val;
2824
2825        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2826                YY_FATAL_ERROR(
2827                "fatal flex scanner internal error--end of buffer missed" );
2828
2829        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2830                { /* Don't try to fill the buffer, so this is an EOF. */
2831                if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2832                        {
2833                        /* We matched a single character, the EOB, so
2834                         * treat this as a final EOF.
2835                         */
2836                        return EOB_ACT_END_OF_FILE;
2837                        }
2838
2839                else
2840                        {
2841                        /* We matched some text prior to the EOB, first
2842                         * process it.
2843                         */
2844                        return EOB_ACT_LAST_MATCH;
2845                        }
2846                }
2847
2848        /* Try to read more data. */
2849
2850        /* First move last chars to start of buffer. */
2851        number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2852
2853        for ( i = 0; i < number_to_move; ++i )
2854                *(dest++) = *(source++);
2855
2856        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2857                /* don't do the read, it's not guaranteed to return an EOF,
2858                 * just force an EOF
2859                 */
2860                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2861
2862        else
2863                {
2864                        int num_to_read =
2865                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2866
2867                while ( num_to_read <= 0 )
2868                        { /* Not enough room in the buffer - grow it. */
2869
2870                        /* just a shorter name for the current buffer */
2871                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2872
2873                        int yy_c_buf_p_offset =
2874                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
2875
2876                        if ( b->yy_is_our_buffer )
2877                                {
2878                                int new_size = b->yy_buf_size * 2;
2879
2880                                if ( new_size <= 0 )
2881                                        b->yy_buf_size += b->yy_buf_size / 8;
2882                                else
2883                                        b->yy_buf_size *= 2;
2884
2885                                b->yy_ch_buf = (char *)
2886                                        /* Include room in for 2 EOB chars. */
2887                                        yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
2888                                }
2889                        else
2890                                /* Can't grow it, we don't own it. */
2891                                b->yy_ch_buf = 0;
2892
2893                        if ( ! b->yy_ch_buf )
2894                                YY_FATAL_ERROR(
2895                                "fatal error - scanner input buffer overflow" );
2896
2897                        (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2898
2899                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2900                                                number_to_move - 1;
2901
2902                        }
2903
2904                if ( num_to_read > YY_READ_BUF_SIZE )
2905                        num_to_read = YY_READ_BUF_SIZE;
2906
2907                /* Read in more data. */
2908                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2909                        (yy_n_chars), (size_t) num_to_read );
2910
2911                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2912                }
2913
2914        if ( (yy_n_chars) == 0 )
2915                {
2916                if ( number_to_move == YY_MORE_ADJ )
2917                        {
2918                        ret_val = EOB_ACT_END_OF_FILE;
2919                        yyrestart(yyin  );
2920                        }
2921
2922                else
2923                        {
2924                        ret_val = EOB_ACT_LAST_MATCH;
2925                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2926                                YY_BUFFER_EOF_PENDING;
2927                        }
2928                }
2929
2930        else
2931                ret_val = EOB_ACT_CONTINUE_SCAN;
2932
2933        if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2934                /* Extend the array by 50%, plus the number we really need. */
2935                yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2936                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
2937                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2938                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2939        }
2940
2941        (yy_n_chars) += number_to_move;
2942        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2943        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2944
2945        (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2946
2947        return ret_val;
2948}
2949
2950/* yy_get_previous_state - get the state just before the EOB char was reached */
2951
2952    static yy_state_type yy_get_previous_state (void)
2953{
2954        register yy_state_type yy_current_state;
2955        register char *yy_cp;
2956   
2957        yy_current_state = (yy_start);
2958        yy_current_state += YY_AT_BOL();
2959
2960        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2961                {
2962                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2963                if ( yy_accept[yy_current_state] )
2964                        {
2965                        (yy_last_accepting_state) = yy_current_state;
2966                        (yy_last_accepting_cpos) = yy_cp;
2967                        }
2968                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2969                        {
2970                        yy_current_state = (int) yy_def[yy_current_state];
2971                        if ( yy_current_state >= 826 )
2972                                yy_c = yy_meta[(unsigned int) yy_c];
2973                        }
2974                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2975                }
2976
2977        return yy_current_state;
2978}
2979
2980/* yy_try_NUL_trans - try to make a transition on the NUL character
2981 *
2982 * synopsis
2983 *      next_state = yy_try_NUL_trans( current_state );
2984 */
2985    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
2986{
2987        register int yy_is_jam;
2988        register char *yy_cp = (yy_c_buf_p);
2989
2990        register YY_CHAR yy_c = 1;
2991        if ( yy_accept[yy_current_state] )
2992                {
2993                (yy_last_accepting_state) = yy_current_state;
2994                (yy_last_accepting_cpos) = yy_cp;
2995                }
2996        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2997                {
2998                yy_current_state = (int) yy_def[yy_current_state];
2999                if ( yy_current_state >= 826 )
3000                        yy_c = yy_meta[(unsigned int) yy_c];
3001                }
3002        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3003        yy_is_jam = (yy_current_state == 825);
3004
3005        return yy_is_jam ? 0 : yy_current_state;
3006}
3007
3008#ifndef YY_NO_INPUT
3009#ifdef __cplusplus
3010    static int yyinput (void)
3011#else
3012    static int input  (void)
3013#endif
3014
3015{
3016        int c;
3017   
3018        *(yy_c_buf_p) = (yy_hold_char);
3019
3020        if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3021                {
3022                /* yy_c_buf_p now points to the character we want to return.
3023                 * If this occurs *before* the EOB characters, then it's a
3024                 * valid NUL; if not, then we've hit the end of the buffer.
3025                 */
3026                if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3027                        /* This was really a NUL. */
3028                        *(yy_c_buf_p) = '\0';
3029
3030                else
3031                        { /* need more input */
3032                        int offset = (yy_c_buf_p) - (yytext_ptr);
3033                        ++(yy_c_buf_p);
3034
3035                        switch ( yy_get_next_buffer(  ) )
3036                                {
3037                                case EOB_ACT_LAST_MATCH:
3038                                        /* This happens because yy_g_n_b()
3039                                         * sees that we've accumulated a
3040                                         * token and flags that we need to
3041                                         * try matching the token before
3042                                         * proceeding.  But for input(),
3043                                         * there's no matching to consider.
3044                                         * So convert the EOB_ACT_LAST_MATCH
3045                                         * to EOB_ACT_END_OF_FILE.
3046                                         */
3047
3048                                        /* Reset buffer status. */
3049                                        yyrestart(yyin );
3050
3051                                        /*FALLTHROUGH*/
3052
3053                                case EOB_ACT_END_OF_FILE:
3054                                        {
3055                                        if ( yywrap( ) )
3056                                                return EOF;
3057
3058                                        if ( ! (yy_did_buffer_switch_on_eof) )
3059                                                YY_NEW_FILE;
3060#ifdef __cplusplus
3061                                        return yyinput();
3062#else
3063                                        return input();
3064#endif
3065                                        }
3066
3067                                case EOB_ACT_CONTINUE_SCAN:
3068                                        (yy_c_buf_p) = (yytext_ptr) + offset;
3069                                        break;
3070                                }
3071                        }
3072                }
3073
3074        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
3075        *(yy_c_buf_p) = '\0';   /* preserve yytext */
3076        (yy_hold_char) = *++(yy_c_buf_p);
3077
3078        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3079        if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )
3080                   
3081    yylineno++;
3082;
3083
3084        return c;
3085}
3086#endif  /* ifndef YY_NO_INPUT */
3087
3088/** Immediately switch to a different input stream.
3089 * @param input_file A readable stream.
3090 *
3091 * @note This function does not reset the start condition to @c INITIAL .
3092 */
3093    void yyrestart  (FILE * input_file )
3094{
3095   
3096        if ( ! YY_CURRENT_BUFFER ){
3097        yyensure_buffer_stack ();
3098                YY_CURRENT_BUFFER_LVALUE =
3099            yy_create_buffer(yyin,YY_BUF_SIZE );
3100        }
3101
3102        yy_init_buffer(YY_CURRENT_BUFFER,input_file );
3103        yy_load_buffer_state( );
3104}
3105
3106/** Switch to a different input buffer.
3107 * @param new_buffer The new input buffer.
3108 *
3109 */
3110    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
3111{
3112   
3113        /* TODO. We should be able to replace this entire function body
3114         * with
3115         *              yypop_buffer_state();
3116         *              yypush_buffer_state(new_buffer);
3117     */
3118        yyensure_buffer_stack ();
3119        if ( YY_CURRENT_BUFFER == new_buffer )
3120                return;
3121
3122        if ( YY_CURRENT_BUFFER )
3123                {
3124                /* Flush out information for old buffer. */
3125                *(yy_c_buf_p) = (yy_hold_char);
3126                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3127                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3128                }
3129
3130        YY_CURRENT_BUFFER_LVALUE = new_buffer;
3131        yy_load_buffer_state( );
3132
3133        /* We don't actually know whether we did this switch during
3134         * EOF (yywrap()) processing, but the only time this flag
3135         * is looked at is after yywrap() is called, so it's safe
3136         * to go ahead and always set it.
3137         */
3138        (yy_did_buffer_switch_on_eof) = 1;
3139}
3140
3141static void yy_load_buffer_state  (void)
3142{
3143        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3144        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3145        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3146        (yy_hold_char) = *(yy_c_buf_p);
3147}
3148
3149/** Allocate and initialize an input buffer state.
3150 * @param file A readable stream.
3151 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3152 *
3153 * @return the allocated buffer state.
3154 */
3155    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
3156{
3157        YY_BUFFER_STATE b;
3158   
3159        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
3160        if ( ! b )
3161                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3162
3163        b->yy_buf_size = size;
3164
3165        /* yy_ch_buf has to be 2 characters longer than the size given because
3166         * we need to put in 2 end-of-buffer characters.
3167         */
3168        b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
3169        if ( ! b->yy_ch_buf )
3170                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3171
3172        b->yy_is_our_buffer = 1;
3173
3174        yy_init_buffer(b,file );
3175
3176        return b;
3177}
3178
3179/** Destroy the buffer.
3180 * @param b a buffer created with yy_create_buffer()
3181 *
3182 */
3183    void yy_delete_buffer (YY_BUFFER_STATE  b )
3184{
3185   
3186        if ( ! b )
3187                return;
3188
3189        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3190                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3191
3192        if ( b->yy_is_our_buffer )
3193                yyfree((void *) b->yy_ch_buf  );
3194
3195        yyfree((void *) b  );
3196}
3197
3198#ifndef __cplusplus
3199extern int isatty (int );
3200#endif /* __cplusplus */
3201   
3202/* Initializes or reinitializes a buffer.
3203 * This function is sometimes called more than once on the same buffer,
3204 * such as during a yyrestart() or at EOF.
3205 */
3206    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
3207
3208{
3209        int oerrno = errno;
3210   
3211        yy_flush_buffer(b );
3212
3213        b->yy_input_file = file;
3214        b->yy_fill_buffer = 1;
3215
3216    /* If b is the current buffer, then yy_init_buffer was _probably_
3217     * called from yyrestart() or through yy_get_next_buffer.
3218     * In that case, we don't want to reset the lineno or column.
3219     */
3220    if (b != YY_CURRENT_BUFFER){
3221        b->yy_bs_lineno = 1;
3222        b->yy_bs_column = 0;
3223    }
3224
3225        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3226   
3227        errno = oerrno;
3228}
3229
3230/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3231 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3232 *
3233 */
3234    void yy_flush_buffer (YY_BUFFER_STATE  b )
3235{
3236        if ( ! b )
3237                return;
3238
3239        b->yy_n_chars = 0;
3240
3241        /* We always need two end-of-buffer characters.  The first causes
3242         * a transition to the end-of-buffer state.  The second causes
3243         * a jam in that state.
3244         */
3245        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3246        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3247
3248        b->yy_buf_pos = &b->yy_ch_buf[0];
3249
3250        b->yy_at_bol = 1;
3251        b->yy_buffer_status = YY_BUFFER_NEW;
3252
3253        if ( b == YY_CURRENT_BUFFER )
3254                yy_load_buffer_state( );
3255}
3256
3257/** Pushes the new state onto the stack. The new state becomes
3258 *  the current state. This function will allocate the stack
3259 *  if necessary.
3260 *  @param new_buffer The new state.
3261 * 
3262 */
3263void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3264{
3265        if (new_buffer == NULL)
3266                return;
3267
3268        yyensure_buffer_stack();
3269
3270        /* This block is copied from yy_switch_to_buffer. */
3271        if ( YY_CURRENT_BUFFER )
3272                {
3273                /* Flush out information for old buffer. */
3274                *(yy_c_buf_p) = (yy_hold_char);
3275                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3276                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3277                }
3278
3279        /* Only push if top exists. Otherwise, replace top. */
3280        if (YY_CURRENT_BUFFER)
3281                (yy_buffer_stack_top)++;
3282        YY_CURRENT_BUFFER_LVALUE = new_buffer;
3283
3284        /* copied from yy_switch_to_buffer. */
3285        yy_load_buffer_state( );
3286        (yy_did_buffer_switch_on_eof) = 1;
3287}
3288
3289/** Removes and deletes the top of the stack, if present.
3290 *  The next element becomes the new top.
3291 * 
3292 */
3293void yypop_buffer_state (void)
3294{
3295        if (!YY_CURRENT_BUFFER)
3296                return;
3297
3298        yy_delete_buffer(YY_CURRENT_BUFFER );
3299        YY_CURRENT_BUFFER_LVALUE = NULL;
3300        if ((yy_buffer_stack_top) > 0)
3301                --(yy_buffer_stack_top);
3302
3303        if (YY_CURRENT_BUFFER) {
3304                yy_load_buffer_state( );
3305                (yy_did_buffer_switch_on_eof) = 1;
3306        }
3307}
3308
3309/* Allocates the stack if it does not exist.
3310 *  Guarantees space for at least one push.
3311 */
3312static void yyensure_buffer_stack (void)
3313{
3314        int num_to_alloc;
3315   
3316        if (!(yy_buffer_stack)) {
3317
3318                /* First allocation is just for 2 elements, since we don't know if this
3319                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3320                 * immediate realloc on the next call.
3321         */
3322                num_to_alloc = 1;
3323                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3324                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
3325                                                                );
3326                if ( ! (yy_buffer_stack) )
3327                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3328                                                                 
3329                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3330                               
3331                (yy_buffer_stack_max) = num_to_alloc;
3332                (yy_buffer_stack_top) = 0;
3333                return;
3334        }
3335
3336        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3337
3338                /* Increase the buffer to prepare for a possible push. */
3339                int grow_size = 8 /* arbitrary grow size */;
3340
3341                num_to_alloc = (yy_buffer_stack_max) + grow_size;
3342                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3343                                                                ((yy_buffer_stack),
3344                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
3345                                                                );
3346                if ( ! (yy_buffer_stack) )
3347                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3348
3349                /* zero only the new slots.*/
3350                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3351                (yy_buffer_stack_max) = num_to_alloc;
3352        }
3353}
3354
3355/** Setup the input buffer state to scan directly from a user-specified character buffer.
3356 * @param base the character buffer
3357 * @param size the size in bytes of the character buffer
3358 *
3359 * @return the newly allocated buffer state object.
3360 */
3361YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
3362{
3363        YY_BUFFER_STATE b;
3364   
3365        if ( size < 2 ||
3366             base[size-2] != YY_END_OF_BUFFER_CHAR ||
3367             base[size-1] != YY_END_OF_BUFFER_CHAR )
3368                /* They forgot to leave room for the EOB's. */
3369                return 0;
3370
3371        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
3372        if ( ! b )
3373                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3374
3375        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
3376        b->yy_buf_pos = b->yy_ch_buf = base;
3377        b->yy_is_our_buffer = 0;
3378        b->yy_input_file = 0;
3379        b->yy_n_chars = b->yy_buf_size;
3380        b->yy_is_interactive = 0;
3381        b->yy_at_bol = 1;
3382        b->yy_fill_buffer = 0;
3383        b->yy_buffer_status = YY_BUFFER_NEW;
3384
3385        yy_switch_to_buffer();
3386
3387        return b;
3388}
3389
3390/** Setup the input buffer state to scan a string. The next call to yylex() will
3391 * scan from a @e copy of @a str.
3392 * @param yystr a NUL-terminated string to scan
3393 *
3394 * @return the newly allocated buffer state object.
3395 * @note If you want to scan bytes that may contain NUL values, then use
3396 *       yy_scan_bytes() instead.
3397 */
3398YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
3399{
3400   
3401        return yy_scan_bytes(yystr,strlen(yystr) );
3402}
3403
3404/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
3405 * scan from a @e copy of @a bytes.
3406 * @param yybytes the byte buffer to scan
3407 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3408 *
3409 * @return the newly allocated buffer state object.
3410 */
3411YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
3412{
3413        YY_BUFFER_STATE b;
3414        char *buf;
3415        yy_size_t n;
3416        int i;
3417   
3418        /* Get memory for full buffer, including space for trailing EOB's. */
3419        n = _yybytes_len + 2;
3420        buf = (char *) yyalloc();
3421        if ( ! buf )
3422                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3423
3424        for ( i = 0; i < _yybytes_len; ++i )
3425                buf[i] = yybytes[i];
3426
3427        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3428
3429        b = yy_scan_buffer(buf,n );
3430        if ( ! b )
3431                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3432
3433        /* It's okay to grow etc. this buffer, and we should throw it
3434         * away when we're done.
3435         */
3436        b->yy_is_our_buffer = 1;
3437
3438        return b;
3439}
3440
3441#ifndef YY_EXIT_FAILURE
3442#define YY_EXIT_FAILURE 2
3443#endif
3444
3445static void yy_fatal_error (yyconst char* msg )
3446{
3447        (void) fprintf( stderr, "%s\n", msg );
3448        exit( YY_EXIT_FAILURE );
3449}
3450
3451/* Redefine yyless() so it works in section 3 code. */
3452
3453#undef yyless
3454#define yyless(n) \
3455        do \
3456                { \
3457                /* Undo effects of setting up yytext. */ \
3458        int yyless_macro_arg = (n); \
3459        YY_LESS_LINENO(yyless_macro_arg);\
3460                yytext[yyleng] = (yy_hold_char); \
3461                (yy_c_buf_p) = yytext + yyless_macro_arg; \
3462                (yy_hold_char) = *(yy_c_buf_p); \
3463                *(yy_c_buf_p) = '\0'; \
3464                yyleng = yyless_macro_arg; \
3465                } \
3466        while ( 0 )
3467
3468/* Accessor  methods (get/set functions) to struct members. */
3469
3470/** Get the current line number.
3471 *
3472 */
3473int yyget_lineno  (void)
3474{
3475       
3476    return yylineno;
3477}
3478
3479/** Get the input stream.
3480 *
3481 */
3482FILE *yyget_in  (void)
3483{
3484        return yyin;
3485}
3486
3487/** Get the output stream.
3488 *
3489 */
3490FILE *yyget_out  (void)
3491{
3492        return yyout;
3493}
3494
3495/** Get the length of the current token.
3496 *
3497 */
3498int yyget_leng  (void)
3499{
3500        return yyleng;
3501}
3502
3503/** Get the current token.
3504 *
3505 */
3506
3507char *yyget_text  (void)
3508{
3509        return yytext;
3510}
3511
3512/** Set the current line number.
3513 * @param line_number
3514 *
3515 */
3516void yyset_lineno (int  line_number )
3517{
3518   
3519    yylineno = line_number;
3520}
3521
3522/** Set the input stream. This does not discard the current
3523 * input buffer.
3524 * @param in_str A readable stream.
3525 *
3526 * @see yy_switch_to_buffer
3527 */
3528void yyset_in (FILE *  in_str )
3529{
3530        yyin = in_str ;
3531}
3532
3533void yyset_out (FILE *  out_str )
3534{
3535        yyout = out_str ;
3536}
3537
3538int yyget_debug  (void)
3539{
3540        return yy_flex_debug;
3541}
3542
3543void yyset_debug (int  bdebug )
3544{
3545        yy_flex_debug = bdebug ;
3546}
3547
3548static int yy_init_globals (void)
3549{
3550        /* Initialization is the same as for the non-reentrant scanner.
3551     * This function is called from yylex_destroy(), so don't allocate here.
3552     */
3553
3554    /* We do not touch yylineno unless the option is enabled. */
3555    yylineno =  1;
3556   
3557    (yy_buffer_stack) = 0;
3558    (yy_buffer_stack_top) = 0;
3559    (yy_buffer_stack_max) = 0;
3560    (yy_c_buf_p) = (char *) 0;
3561    (yy_init) = 0;
3562    (yy_start) = 0;
3563
3564/* Defined in main.c */
3565#ifdef YY_STDINIT
3566    yyin = stdin;
3567    yyout = stdout;
3568#else
3569    yyin = (FILE *) 0;
3570    yyout = (FILE *) 0;
3571#endif
3572
3573    /* For future reference: Set errno on error, since we are called by
3574     * yylex_init()
3575     */
3576    return 0;
3577}
3578
3579/* yylex_destroy is for both reentrant and non-reentrant scanners. */
3580int yylex_destroy  (void)
3581{
3582   
3583    /* Pop the buffer stack, destroying each element. */
3584        while(YY_CURRENT_BUFFER){
3585                yy_delete_buffer(YY_CURRENT_BUFFER  );
3586                YY_CURRENT_BUFFER_LVALUE = NULL;
3587                yypop_buffer_state();
3588        }
3589
3590        /* Destroy the stack itself. */
3591        yyfree((yy_buffer_stack) );
3592        (yy_buffer_stack) = NULL;
3593
3594    /* Reset the globals. This is important in a non-reentrant scanner so the next time
3595     * yylex() is called, initialization will occur. */
3596    yy_init_globals( );
3597
3598    return 0;
3599}
3600
3601/*
3602 * Internal utility routines.
3603 */
3604
3605#ifndef yytext_ptr
3606static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3607{
3608        register int i;
3609        for ( i = 0; i < n; ++i )
3610                s1[i] = s2[i];
3611}
3612#endif
3613
3614#ifdef YY_NEED_STRLEN
3615static int yy_flex_strlen (yyconst char * s )
3616{
3617        register int n;
3618        for ( n = 0; s[n]; ++n )
3619                ;
3620
3621        return n;
3622}
3623#endif
3624
3625void *yyalloc (yy_size_t  size )
3626{
3627        return (void *) malloc( size );
3628}
3629
3630void *yyrealloc  (void * ptr, yy_size_t  size )
3631{
3632        /* The cast to (char *) in the following accommodates both
3633         * implementations that use char* generic pointers, and those
3634         * that use void* generic pointers.  It works with the latter
3635         * because both ANSI C and C++ allow castless assignment from
3636         * any pointer type to void*, and deal with argument conversions
3637         * as though doing an assignment.
3638         */
3639        return (void *) realloc( (char *) ptr, size );
3640}
3641
3642void yyfree (void * ptr )
3643{
3644        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
3645}
3646
3647#define YYTABLES_NAME "yytables"
3648
3649#line 397 "lex.ll"
3650
3651
3652
3653// Local Variables: //
3654// fill-column: 110 //
3655// tab-width: 4 //
3656// mode: c++ //
3657// compile-command: "make install" //
3658// End: //
3659
Note: See TracBrowser for help on using the repository browser.