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