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