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