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