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