sdk: Fixed many warnings and related problems
[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 #define YY_NO_UNPUT 1
1185 #line 13 "lexer.l"
1186 import "ecdefs"
1187 #define YYLTYPE Location
1188 #define YY_NEVER_INTERACTIVE 1    // Avoid calling isatty on eC File object
1189
1190 #include "grammar.h"
1191
1192 bool echoOn = true;
1193 public void SetEchoOn(bool b) { echoOn = b; }
1194
1195 extern YYLTYPE type_yylloc;
1196 extern YYLTYPE expression_yylloc;
1197
1198 extern File fileInput;
1199 int preprocessor();
1200 int comment();
1201
1202 void TESTTTT()
1203 {
1204    yylloc.end.charPos += yyleng;
1205    yylloc.end.pos += yyleng;
1206    type_yylloc.end.charPos += yyleng;
1207    type_yylloc.end.pos += yyleng;
1208    expression_yylloc.end.charPos += yyleng;
1209    expression_yylloc.end.pos += yyleng;
1210 }
1211
1212 #define YY_USER_ACTION  \
1213    TESTTTT();
1214
1215    /*
1216    yylloc.end.charPos += yyleng;
1217    yylloc.end.pos += yyleng;
1218    */
1219
1220 #define YY_INPUT(buf,result,max_size) \
1221    result = fileInput.Read(buf, 1, max_size) \
1222
1223 YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
1224 File fileStack[MAX_INCLUDE_DEPTH];
1225 char sourceFileStack[MAX_INCLUDE_DEPTH][MAX_LOCATION];
1226 public void SetSomeSourceFileStack(const char * fileName, int index) { strcpy(sourceFileStack[index], fileName); }
1227 YYLTYPE locStack[MAX_INCLUDE_DEPTH];
1228 AccessMode declModeStack[MAX_INCLUDE_DEPTH];
1229 int include_stack_ptr = 0;
1230
1231 #define uint _uint
1232 default:
1233
1234 #line 1235 "lexer.ec"
1235
1236 /* Macros after this point can all be overridden by user definitions in
1237  * section 1.
1238  */
1239
1240 #ifndef YY_SKIP_YYWRAP
1241 #ifdef __cplusplus
1242 extern "C" int yywrap YY_PROTO(( void ));
1243 #else
1244 extern int yywrap YY_PROTO(( void ));
1245 #endif
1246 #endif
1247
1248 #ifndef YY_NO_UNPUT
1249 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1250 #endif
1251
1252 #ifndef yytext_ptr
1253 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1254 #endif
1255
1256 #ifdef YY_NEED_STRLEN
1257 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1258 #endif
1259
1260 #ifndef YY_NO_INPUT
1261 #ifdef __cplusplus
1262 static int yyinput YY_PROTO(( void ));
1263 #else
1264 static int input YY_PROTO(( void ));
1265 #endif
1266 #endif
1267
1268 #if YY_STACK_USED
1269 static int yy_start_stack_ptr = 0;
1270 static int yy_start_stack_depth = 0;
1271 static int *yy_start_stack = 0;
1272 #ifndef YY_NO_PUSH_STATE
1273 static void yy_push_state YY_PROTO(( int new_state ));
1274 #endif
1275 #ifndef YY_NO_POP_STATE
1276 static void yy_pop_state YY_PROTO(( void ));
1277 #endif
1278 #ifndef YY_NO_TOP_STATE
1279 static int yy_top_state YY_PROTO(( void ));
1280 #endif
1281
1282 #else
1283 #define YY_NO_PUSH_STATE 1
1284 #define YY_NO_POP_STATE 1
1285 #define YY_NO_TOP_STATE 1
1286 #endif
1287
1288 #ifdef YY_MALLOC_DECL
1289 YY_MALLOC_DECL
1290 #else
1291 #if __STDC__
1292 #ifndef __cplusplus
1293 #include <stdlib.h>
1294 #endif
1295 #else
1296 /* Just try to get by without declaring the routines.  This will fail
1297  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1298  * or sizeof(void*) != sizeof(int).
1299  */
1300 #endif
1301 #endif
1302
1303 /* Amount of stuff to slurp up with each read. */
1304 #ifndef YY_READ_BUF_SIZE
1305 #define YY_READ_BUF_SIZE 8192
1306 #endif
1307
1308 /* Copy whatever the last rule matched to the standard output. */
1309
1310 #ifndef ECHO
1311 /* This used to be an fputs(), but since the string might contain NUL's,
1312  * we now use fwrite().
1313  */
1314 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1315 #endif
1316
1317 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1318  * is returned in "result".
1319  */
1320 #ifndef YY_INPUT
1321 #define YY_INPUT(buf,result,max_size) \
1322         if ( yy_current_buffer->yy_is_interactive ) \
1323                 { \
1324                 int c = '*', n; \
1325                 for ( n = 0; n < max_size && \
1326                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1327                         buf[n] = (char) c; \
1328                 if ( c == '\n' ) \
1329                         buf[n++] = (char) c; \
1330                 if ( c == EOF && ferror( yyin ) ) \
1331                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1332                 result = n; \
1333                 } \
1334         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1335                   && ferror( yyin ) ) \
1336                 YY_FATAL_ERROR( "input in flex scanner failed" );
1337 #endif
1338
1339 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1340  * we don't want an extra ';' after the "return" because that will cause
1341  * some compilers to complain about unreachable statements.
1342  */
1343 #ifndef yyterminate
1344 #define yyterminate() return YY_NULL
1345 #endif
1346
1347 /* Number of entries by which start-condition stack grows. */
1348 #ifndef YY_START_STACK_INCR
1349 #define YY_START_STACK_INCR 25
1350 #endif
1351
1352 /* Report a fatal error. */
1353 #ifndef YY_FATAL_ERROR
1354 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1355 #endif
1356
1357 /* Default declaration of generated scanner - a define so the user can
1358  * easily add parameters.
1359  */
1360 #ifndef YY_DECL
1361 #define YY_DECL int yylex YY_PROTO(( void ))
1362 #endif
1363
1364 /* Code executed at the beginning of each rule, after yytext and yyleng
1365  * have been set up.
1366  */
1367 #ifndef YY_USER_ACTION
1368 #define YY_USER_ACTION
1369 #endif
1370
1371 /* Code executed at the end of each rule. */
1372 #ifndef YY_BREAK
1373 #define YY_BREAK break;
1374 #endif
1375
1376 #define YY_RULE_SETUP \
1377         YY_USER_ACTION
1378
1379 YY_DECL
1380         {
1381         register yy_state_type yy_current_state;
1382         register char *yy_cp, *yy_bp;
1383         register int yy_act;
1384
1385 #line 63 "lexer.l"
1386
1387
1388
1389    yylloc.start = yylloc.end;
1390    type_yylloc.start = type_yylloc.end;
1391    expression_yylloc.start = expression_yylloc.end;
1392
1393
1394 #line 1395 "lexer.ec"
1395
1396         if ( yy_init )
1397                 {
1398                 yy_init = 0;
1399
1400 #ifdef YY_USER_INIT
1401                 YY_USER_INIT;
1402 #endif
1403
1404                 if ( ! yy_start )
1405                         yy_start = 1;   /* first start state */
1406
1407                 if ( ! yyin )
1408                         yyin = stdin;
1409
1410                 if ( ! yyout )
1411                         yyout = stdout;
1412
1413                 if ( ! yy_current_buffer )
1414                         yy_current_buffer =
1415                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1416
1417                 yy_load_buffer_state();
1418                 }
1419
1420         while ( 1 )             /* loops until end-of-file is reached */
1421                 {
1422                 yy_cp = yy_c_buf_p;
1423
1424                 /* Support of yytext. */
1425                 *yy_cp = yy_hold_char;
1426
1427                 /* yy_bp points to the position in yy_ch_buf of the start of
1428                  * the current run.
1429                  */
1430                 yy_bp = yy_cp;
1431
1432                 yy_current_state = yy_start;
1433 yy_match:
1434                 do
1435                         {
1436                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1437                         if ( yy_accept[yy_current_state] )
1438                                 {
1439                                 yy_last_accepting_state = yy_current_state;
1440                                 yy_last_accepting_cpos = yy_cp;
1441                                 }
1442                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1443                                 {
1444                                 yy_current_state = (int) yy_def[yy_current_state];
1445                                 if ( yy_current_state >= 720 )
1446                                         yy_c = yy_meta[(unsigned int) yy_c];
1447                                 }
1448                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1449                         ++yy_cp;
1450                         }
1451                 while ( yy_base[yy_current_state] != 2557 );
1452
1453 yy_find_action:
1454                 yy_act = yy_accept[yy_current_state];
1455                 if ( yy_act == 0 )
1456                         { /* have to back up */
1457                         yy_cp = yy_last_accepting_cpos;
1458                         yy_current_state = yy_last_accepting_state;
1459                         yy_act = yy_accept[yy_current_state];
1460                         }
1461
1462                 YY_DO_BEFORE_ACTION;
1463
1464
1465 do_action:      /* This label is used only to access EOF actions. */
1466
1467
1468                 switch ( yy_act )
1469         { /* beginning of action switch */
1470                         case 0: /* must back up */
1471                         /* undo the effects of YY_DO_BEFORE_ACTION */
1472                         *yy_cp = yy_hold_char;
1473                         yy_cp = yy_last_accepting_cpos;
1474                         yy_current_state = yy_last_accepting_state;
1475                         goto yy_find_action;
1476
1477 case 1:
1478 YY_RULE_SETUP
1479 #line 71 "lexer.l"
1480 { preprocessor(); }
1481         YY_BREAK
1482 case 2:
1483 YY_RULE_SETUP
1484 #line 72 "lexer.l"
1485 { comment(); }
1486         YY_BREAK
1487 case 3:
1488 YY_RULE_SETUP
1489 #line 73 "lexer.l"
1490 { commentCPP(); }
1491         YY_BREAK
1492 case 4:
1493 YY_RULE_SETUP
1494 #line 75 "lexer.l"
1495 { return(AUTO); }
1496         YY_BREAK
1497 case 5:
1498 YY_RULE_SETUP
1499 #line 76 "lexer.l"
1500 { return(BREAK); }
1501         YY_BREAK
1502 case 6:
1503 YY_RULE_SETUP
1504 #line 77 "lexer.l"
1505 { return(CASE); }
1506         YY_BREAK
1507 case 7:
1508 YY_RULE_SETUP
1509 #line 78 "lexer.l"
1510 { return(CHAR); }
1511         YY_BREAK
1512 case 8:
1513 YY_RULE_SETUP
1514 #line 79 "lexer.l"
1515 { return(CONST); }
1516         YY_BREAK
1517 case 9:
1518 YY_RULE_SETUP
1519 #line 80 "lexer.l"
1520 { return(CONTINUE); }
1521         YY_BREAK
1522 case 10:
1523 YY_RULE_SETUP
1524 #line 81 "lexer.l"
1525 { return(DEFAULT); }
1526         YY_BREAK
1527 case 11:
1528 YY_RULE_SETUP
1529 #line 82 "lexer.l"
1530 { return(DO); }
1531         YY_BREAK
1532 case 12:
1533 YY_RULE_SETUP
1534 #line 83 "lexer.l"
1535 { return(DOUBLE); }
1536         YY_BREAK
1537 case 13:
1538 YY_RULE_SETUP
1539 #line 84 "lexer.l"
1540 { return(ELSE); }
1541         YY_BREAK
1542 case 14:
1543 YY_RULE_SETUP
1544 #line 85 "lexer.l"
1545 { return(ENUM); }
1546         YY_BREAK
1547 case 15:
1548 YY_RULE_SETUP
1549 #line 86 "lexer.l"
1550 { return(EXTERN); }
1551         YY_BREAK
1552 case 16:
1553 YY_RULE_SETUP
1554 #line 87 "lexer.l"
1555 { return(FLOAT); }
1556         YY_BREAK
1557 case 17:
1558 YY_RULE_SETUP
1559 #line 88 "lexer.l"
1560 { return(FOR); }
1561         YY_BREAK
1562 case 18:
1563 YY_RULE_SETUP
1564 #line 89 "lexer.l"
1565 { return(GOTO); }
1566         YY_BREAK
1567 case 19:
1568 YY_RULE_SETUP
1569 #line 90 "lexer.l"
1570 { return(IF); }
1571         YY_BREAK
1572 case 20:
1573 YY_RULE_SETUP
1574 #line 91 "lexer.l"
1575 { return(INT); }
1576         YY_BREAK
1577 case 21:
1578 YY_RULE_SETUP
1579 #line 92 "lexer.l"
1580 { return(UINT); }
1581         YY_BREAK
1582 /* "uint16"            { return(UINT16); } */
1583 /* "uint32"            { return(UINT32); } */
1584 /* "bool"              { return(BOOL_TOKEN); } */
1585 case 22:
1586 YY_RULE_SETUP
1587 #line 96 "lexer.l"
1588 { return(LONG); }
1589         YY_BREAK
1590 case 23:
1591 YY_RULE_SETUP
1592 #line 97 "lexer.l"
1593 { return(REGISTER); }
1594         YY_BREAK
1595 case 24:
1596 YY_RULE_SETUP
1597 #line 98 "lexer.l"
1598 { return(RETURN); }
1599         YY_BREAK
1600 case 25:
1601 YY_RULE_SETUP
1602 #line 99 "lexer.l"
1603 { return(SHORT); }
1604         YY_BREAK
1605 case 26:
1606 YY_RULE_SETUP
1607 #line 100 "lexer.l"
1608 { return(SIGNED); }
1609         YY_BREAK
1610 case 27:
1611 YY_RULE_SETUP
1612 #line 101 "lexer.l"
1613 { return(SIGNED); }
1614         YY_BREAK
1615 case 28:
1616 YY_RULE_SETUP
1617 #line 102 "lexer.l"
1618 { return(SIGNED); }
1619         YY_BREAK
1620 case 29:
1621 YY_RULE_SETUP
1622 #line 103 "lexer.l"
1623 { return(SIZEOF); }
1624         YY_BREAK
1625 case 30:
1626 YY_RULE_SETUP
1627 #line 104 "lexer.l"
1628 { return(ALIGNOF); }
1629         YY_BREAK
1630 case 31:
1631 YY_RULE_SETUP
1632 #line 105 "lexer.l"
1633 { return(STATIC); }
1634         YY_BREAK
1635 case 32:
1636 YY_RULE_SETUP
1637 #line 106 "lexer.l"
1638 { return(THREAD); }
1639         YY_BREAK
1640 case 33:
1641 YY_RULE_SETUP
1642 #line 107 "lexer.l"
1643 { return(STRUCT); }
1644         YY_BREAK
1645 case 34:
1646 YY_RULE_SETUP
1647 #line 108 "lexer.l"
1648 { return(SWITCH); }
1649         YY_BREAK
1650 case 35:
1651 YY_RULE_SETUP
1652 #line 109 "lexer.l"
1653 { return(TYPEDEF); }
1654         YY_BREAK
1655 case 36:
1656 YY_RULE_SETUP
1657 #line 110 "lexer.l"
1658 { return(UNION); }
1659         YY_BREAK
1660 case 37:
1661 YY_RULE_SETUP
1662 #line 111 "lexer.l"
1663 { return(UNSIGNED); }
1664         YY_BREAK
1665 case 38:
1666 YY_RULE_SETUP
1667 #line 112 "lexer.l"
1668 { return(VOID); }
1669         YY_BREAK
1670 case 39:
1671 YY_RULE_SETUP
1672 #line 113 "lexer.l"
1673 { return(VOLATILE); }
1674         YY_BREAK
1675 case 40:
1676 YY_RULE_SETUP
1677 #line 114 "lexer.l"
1678 { return(VOLATILE); }
1679         YY_BREAK
1680 case 41:
1681 YY_RULE_SETUP
1682 #line 115 "lexer.l"
1683 { return(VOLATILE); }
1684         YY_BREAK
1685 case 42:
1686 YY_RULE_SETUP
1687 #line 116 "lexer.l"
1688 { return(WHILE); }
1689         YY_BREAK
1690 case 43:
1691 YY_RULE_SETUP
1692 #line 118 "lexer.l"
1693 { return(PROPERTY); }
1694         YY_BREAK
1695 case 44:
1696 YY_RULE_SETUP
1697 #line 119 "lexer.l"
1698 { return(SETPROP); }    // TODO: Don't make this a keyword...
1699         YY_BREAK
1700 case 45:
1701 YY_RULE_SETUP
1702 #line 120 "lexer.l"
1703 { return(GETPROP); }    // TODO: Don't make this a keyword...
1704         YY_BREAK
1705 case 46:
1706 YY_RULE_SETUP
1707 #line 121 "lexer.l"
1708 { return(ISPROPSET); }    // TODO: Don't make this a keyword...
1709         YY_BREAK
1710 case 47:
1711 YY_RULE_SETUP
1712 #line 122 "lexer.l"
1713 { return(CLASS); }
1714         YY_BREAK
1715 case 48:
1716 YY_RULE_SETUP
1717 #line 123 "lexer.l"
1718 { return(THISCLASS); }
1719         YY_BREAK
1720 case 49:
1721 YY_RULE_SETUP
1722 #line 124 "lexer.l"
1723 { return(VIRTUAL); }
1724         YY_BREAK
1725 case 50:
1726 YY_RULE_SETUP
1727 #line 125 "lexer.l"
1728 { return(DELETE); }
1729         YY_BREAK
1730 case 51:
1731 YY_RULE_SETUP
1732 #line 126 "lexer.l"
1733 { return(NEWOP); }
1734         YY_BREAK
1735 case 52:
1736 YY_RULE_SETUP
1737 #line 127 "lexer.l"
1738 { return(NEW0OP); }
1739         YY_BREAK
1740 case 53:
1741 YY_RULE_SETUP
1742 #line 128 "lexer.l"
1743 { return(RENEW); }
1744         YY_BREAK
1745 case 54:
1746 YY_RULE_SETUP
1747 #line 129 "lexer.l"
1748 { return(RENEW0); }
1749         YY_BREAK
1750 case 55:
1751 YY_RULE_SETUP
1752 #line 130 "lexer.l"
1753 { return(IMPORT); }
1754         YY_BREAK
1755 case 56:
1756 YY_RULE_SETUP
1757 #line 131 "lexer.l"
1758 { return(DEFINE); }
1759         YY_BREAK
1760 case 57:
1761 YY_RULE_SETUP
1762 #line 132 "lexer.l"
1763 { return(INT64); }
1764         YY_BREAK
1765 case 58:
1766 YY_RULE_SETUP
1767 #line 133 "lexer.l"
1768 { return(INT64); }
1769         YY_BREAK
1770 case 59:
1771 YY_RULE_SETUP
1772 #line 134 "lexer.l"
1773 { return(VALIST); }
1774         YY_BREAK
1775 case 60:
1776 YY_RULE_SETUP
1777 #line 135 "lexer.l"
1778 { return(VAARG); }
1779         YY_BREAK
1780 case 61:
1781 YY_RULE_SETUP
1782 #line 136 "lexer.l"
1783 { return(BOOL); }
1784         YY_BREAK
1785 case 62:
1786 YY_RULE_SETUP
1787 #line 137 "lexer.l"
1788 { return(_BOOL); }
1789         YY_BREAK
1790 case 63:
1791 YY_RULE_SETUP
1792 #line 138 "lexer.l"
1793 { return(_COMPLEX); }
1794         YY_BREAK
1795 case 64:
1796 YY_RULE_SETUP
1797 #line 139 "lexer.l"
1798 { return(_IMAGINARY); }
1799         YY_BREAK
1800 case 65:
1801 YY_RULE_SETUP
1802 #line 140 "lexer.l"
1803 { return(EXT_DECL); }
1804         YY_BREAK
1805 /* "__attribute__".?"(("({D}|{L})*"))" { return(EXT_ATTRIB); } */
1806 /* DID I MEAN? "__attribute__"" "*"(("" "*({D}|{L})*" "*("("({D}|{L})*(" "*","" "*({D}|{L})*)*" "*")")?" "*"))" { return(EXT_ATTRIB); } */
1807 /*
1808  "__attribute_deprecated__"(" "*)"(("(" "*)({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  "__attribute"             (" "*)"(("(" "*)({D}|{L})*(" "*)("("({D}|{L}|\")*((" "*)","(" "*)({D}|{L}|\")*)*(" "*)")")?(" "*)(","(" "*)({D}|{L})*(" "*)("("({D}|{L}|\")*((" "*)","(" "*)({D}|{L}|\")*)*(" "*)")")?(" "*))*"))" { return(EXT_ATTRIB); }
1811  */
1812 /*
1813  [__attribute__] [spaces]
1814    [((] [spaces]
1815       [digits | letters] [spaces]
1816          ( [(]  [digits or letters or "]  ( [spaces] [,] [spaces] [digits or letters or "] )*  [spaces]  [)] )?
1817       [spaces]
1818       ( [,] [spaces]  [digits or letters]  [spaces]
1819          ( [(]  [digits or letters or "]
1820             ( [spaces] [,] [spaces] [digits or letters or "] )*  [spaces] [)]
1821          )? [spaces]
1822       )*
1823    [))]
1824  */
1825 /* "__attribute__".?"((".?({D}|{L})*.?("("({D}|{L})*(.?",".?({D}|{L})*)*.?")")?.?"))" { return(EXT_ATTRIB); } */
1826 /* "__attribute".?"((".?({D}|{L})*.?("("({D}|{L})*(.?",".?({D}|{L})*)*.?")")?.?"))" { return(EXT_ATTRIB); }*/
1827 case 66:
1828 YY_RULE_SETUP
1829 #line 167 "lexer.l"
1830 { return ATTRIB_DEP; }
1831         YY_BREAK
1832 case 67:
1833 YY_RULE_SETUP
1834 #line 168 "lexer.l"
1835 { return ATTRIB; }
1836         YY_BREAK
1837 case 68:
1838 YY_RULE_SETUP
1839 #line 169 "lexer.l"
1840 { return __ATTRIB; }
1841         YY_BREAK
1842 case 69:
1843 YY_RULE_SETUP
1844 #line 171 "lexer.l"
1845 { return(EXT_STORAGE); }
1846         YY_BREAK
1847 case 70:
1848 YY_RULE_SETUP
1849 #line 172 "lexer.l"
1850 { return(EXT_STORAGE); }
1851         YY_BREAK
1852 case 71:
1853 YY_RULE_SETUP
1854 #line 173 "lexer.l"
1855 { return(EXT_STORAGE); }
1856         YY_BREAK
1857 case 72:
1858 YY_RULE_SETUP
1859 #line 174 "lexer.l"
1860 { return(EXT_STORAGE); }
1861         YY_BREAK
1862 case 73:
1863 YY_RULE_SETUP
1864 #line 175 "lexer.l"
1865 { return(EXT_STORAGE); }
1866         YY_BREAK
1867 case 74:
1868 YY_RULE_SETUP
1869 #line 176 "lexer.l"
1870 { return(EXT_STORAGE); }
1871         YY_BREAK
1872 case 75:
1873 YY_RULE_SETUP
1874 #line 177 "lexer.l"
1875 { return(EXT_STORAGE); }
1876         YY_BREAK
1877 case 76:
1878 YY_RULE_SETUP
1879 #line 178 "lexer.l"
1880 { return(EXT_DECL); }
1881         YY_BREAK
1882 case 77:
1883 YY_RULE_SETUP
1884 #line 179 "lexer.l"
1885 { return(EXT_DECL); }
1886         YY_BREAK
1887 case 78:
1888 YY_RULE_SETUP
1889 #line 180 "lexer.l"
1890 { return(EXT_DECL); }
1891         YY_BREAK
1892 case 79:
1893 YY_RULE_SETUP
1894 #line 181 "lexer.l"
1895 { return(EXT_DECL); }
1896         YY_BREAK
1897 case 80:
1898 YY_RULE_SETUP
1899 #line 182 "lexer.l"
1900 { return(EXT_DECL); }
1901         YY_BREAK
1902 case 81:
1903 YY_RULE_SETUP
1904 #line 183 "lexer.l"
1905 { return(EXT_DECL); }
1906         YY_BREAK
1907 case 82:
1908 YY_RULE_SETUP
1909 #line 184 "lexer.l"
1910 { return(EXT_DECL); }
1911         YY_BREAK
1912 case 83:
1913 YY_RULE_SETUP
1914 #line 185 "lexer.l"
1915 { return(EXT_DECL); }
1916         YY_BREAK
1917 case 84:
1918 YY_RULE_SETUP
1919 #line 186 "lexer.l"
1920 { return(PUBLIC); }
1921         YY_BREAK
1922 case 85:
1923 YY_RULE_SETUP
1924 #line 187 "lexer.l"
1925 { return(PRIVATE); }
1926         YY_BREAK
1927 case 86:
1928 YY_RULE_SETUP
1929 #line 188 "lexer.l"
1930 { return(TYPED_OBJECT); }
1931         YY_BREAK
1932 case 87:
1933 YY_RULE_SETUP
1934 #line 189 "lexer.l"
1935 { return(ANY_OBJECT); }
1936         YY_BREAK
1937 case 88:
1938 YY_RULE_SETUP
1939 #line 190 "lexer.l"
1940 { return(_INCREF); }
1941         YY_BREAK
1942 case 89:
1943 YY_RULE_SETUP
1944 #line 191 "lexer.l"
1945 { return(EXTENSION); }
1946         YY_BREAK
1947 case 90:
1948 YY_RULE_SETUP
1949 #line 192 "lexer.l"
1950 { return(EXTENSION); }
1951         YY_BREAK
1952 case 91:
1953 YY_RULE_SETUP
1954 #line 193 "lexer.l"
1955 { return(ASM); }
1956         YY_BREAK
1957 case 92:
1958 YY_RULE_SETUP
1959 #line 194 "lexer.l"
1960 { return(ASM); }
1961         YY_BREAK
1962 case 93:
1963 YY_RULE_SETUP
1964 #line 195 "lexer.l"
1965 { return(ASM); }
1966         YY_BREAK
1967 case 94:
1968 YY_RULE_SETUP
1969 #line 196 "lexer.l"
1970 { return(TYPEOF); }
1971         YY_BREAK
1972 case 95:
1973 YY_RULE_SETUP
1974 #line 197 "lexer.l"
1975 { return(WATCH); }
1976         YY_BREAK
1977 case 96:
1978 YY_RULE_SETUP
1979 #line 198 "lexer.l"
1980 { return(STOPWATCHING); }
1981         YY_BREAK
1982 case 97:
1983 YY_RULE_SETUP
1984 #line 199 "lexer.l"
1985 { return(FIREWATCHERS); }
1986         YY_BREAK
1987 case 98:
1988 YY_RULE_SETUP
1989 #line 200 "lexer.l"
1990 { return(WATCHABLE); }
1991         YY_BREAK
1992 case 99:
1993 YY_RULE_SETUP
1994 #line 201 "lexer.l"
1995 { return(CLASS_DESIGNER); }
1996         YY_BREAK
1997 case 100:
1998 YY_RULE_SETUP
1999 #line 202 "lexer.l"
2000 { return(CLASS_NO_EXPANSION); }
2001         YY_BREAK
2002 case 101:
2003 YY_RULE_SETUP
2004 #line 203 "lexer.l"
2005 { return(CLASS_FIXED); }
2006         YY_BREAK
2007 case 102:
2008 YY_RULE_SETUP
2009 #line 204 "lexer.l"
2010 { return(CLASS_DEFAULT_PROPERTY); }
2011         YY_BREAK
2012 case 103:
2013 YY_RULE_SETUP
2014 #line 205 "lexer.l"
2015 { return(PROPERTY_CATEGORY); }
2016         YY_BREAK
2017 case 104:
2018 YY_RULE_SETUP
2019 #line 206 "lexer.l"
2020 { return(CLASS_DATA); }
2021         YY_BREAK
2022 case 105:
2023 YY_RULE_SETUP
2024 #line 207 "lexer.l"
2025 { return(CLASS_PROPERTY); }
2026         YY_BREAK
2027 case 106:
2028 YY_RULE_SETUP
2029 #line 208 "lexer.l"
2030 { return(SUBCLASS); }
2031         YY_BREAK
2032 case 107:
2033 YY_RULE_SETUP
2034 #line 209 "lexer.l"
2035 { return(NAMESPACE); }
2036         YY_BREAK
2037 case 108:
2038 YY_RULE_SETUP
2039 #line 210 "lexer.l"
2040 { return(DBTABLE); }
2041         YY_BREAK
2042 case 109:
2043 YY_RULE_SETUP
2044 #line 211 "lexer.l"
2045 { return(DBFIELD); }
2046         YY_BREAK
2047 case 110:
2048 YY_RULE_SETUP
2049 #line 212 "lexer.l"
2050 { return(DBINDEX); }
2051         YY_BREAK
2052 case 111:
2053 YY_RULE_SETUP
2054 #line 213 "lexer.l"
2055 { return(DATABASE_OPEN); }
2056         YY_BREAK
2057 case 112:
2058 YY_RULE_SETUP
2059 #line 215 "lexer.l"
2060 { return(check_type()); }     // {L}({L}|{D})*      { return(check_type()); }  // ("::"|(({IDENT}"::")*)){IDENT}  { return(check_type()); }     // {L}({L}|{D})*      { return(check_type()); }
2061         YY_BREAK
2062 case 113:
2063 YY_RULE_SETUP
2064 #line 217 "lexer.l"
2065 { return(CONSTANT); }
2066         YY_BREAK
2067 case 114:
2068 YY_RULE_SETUP
2069 #line 219 "lexer.l"
2070 { return(CONSTANT); }
2071         YY_BREAK
2072 case 115:
2073 YY_RULE_SETUP
2074 #line 220 "lexer.l"
2075 { return(CONSTANT); }
2076         YY_BREAK
2077 case 116:
2078 YY_RULE_SETUP
2079 #line 221 "lexer.l"
2080 { return(CONSTANT); }
2081         YY_BREAK
2082 case 117:
2083 YY_RULE_SETUP
2084 #line 223 "lexer.l"
2085 { return(CONSTANT); }
2086         YY_BREAK
2087 case 118:
2088 YY_RULE_SETUP
2089 #line 224 "lexer.l"
2090 { return(CONSTANT); }
2091         YY_BREAK
2092 case 119:
2093 YY_RULE_SETUP
2094 #line 225 "lexer.l"
2095 { return(CONSTANT); }
2096         YY_BREAK
2097 case 120:
2098 YY_RULE_SETUP
2099 #line 227 "lexer.l"
2100 { return(CONSTANT); }
2101         YY_BREAK
2102 case 121:
2103 YY_RULE_SETUP
2104 #line 228 "lexer.l"
2105 { return(CONSTANT); }
2106         YY_BREAK
2107 case 122:
2108 YY_RULE_SETUP
2109 #line 229 "lexer.l"
2110 { return(CONSTANT); }
2111         YY_BREAK
2112 case 123:
2113 YY_RULE_SETUP
2114 #line 231 "lexer.l"
2115 { return(STRING_LITERAL); }
2116         YY_BREAK
2117 case 124:
2118 YY_RULE_SETUP
2119 #line 233 "lexer.l"
2120 { return(ELLIPSIS); }
2121         YY_BREAK
2122 case 125:
2123 YY_RULE_SETUP
2124 #line 234 "lexer.l"
2125 { return(RIGHT_ASSIGN); }
2126         YY_BREAK
2127 case 126:
2128 YY_RULE_SETUP
2129 #line 235 "lexer.l"
2130 { return(LEFT_ASSIGN); }
2131         YY_BREAK
2132 case 127:
2133 YY_RULE_SETUP
2134 #line 236 "lexer.l"
2135 { return(ADD_ASSIGN); }
2136         YY_BREAK
2137 case 128:
2138 YY_RULE_SETUP
2139 #line 237 "lexer.l"
2140 { return(SUB_ASSIGN); }
2141         YY_BREAK
2142 case 129:
2143 YY_RULE_SETUP
2144 #line 238 "lexer.l"
2145 { return(MUL_ASSIGN); }
2146         YY_BREAK
2147 case 130:
2148 YY_RULE_SETUP
2149 #line 239 "lexer.l"
2150 { return(DIV_ASSIGN); }
2151         YY_BREAK
2152 case 131:
2153 YY_RULE_SETUP
2154 #line 240 "lexer.l"
2155 { return(MOD_ASSIGN); }
2156         YY_BREAK
2157 case 132:
2158 YY_RULE_SETUP
2159 #line 241 "lexer.l"
2160 { return(AND_ASSIGN); }
2161         YY_BREAK
2162 case 133:
2163 YY_RULE_SETUP
2164 #line 242 "lexer.l"
2165 { return(XOR_ASSIGN); }
2166         YY_BREAK
2167 case 134:
2168 YY_RULE_SETUP
2169 #line 243 "lexer.l"
2170 { return(OR_ASSIGN); }
2171         YY_BREAK
2172 case 135:
2173 YY_RULE_SETUP
2174 #line 244 "lexer.l"
2175 { return(RIGHT_OP); }
2176         YY_BREAK
2177 case 136:
2178 YY_RULE_SETUP
2179 #line 245 "lexer.l"
2180 { return(LEFT_OP); }
2181         YY_BREAK
2182 case 137:
2183 YY_RULE_SETUP
2184 #line 246 "lexer.l"
2185 { return(INC_OP); }
2186         YY_BREAK
2187 case 138:
2188 YY_RULE_SETUP
2189 #line 247 "lexer.l"
2190 { return(DEC_OP); }
2191         YY_BREAK
2192 case 139:
2193 YY_RULE_SETUP
2194 #line 248 "lexer.l"
2195 { return(PTR_OP); }
2196         YY_BREAK
2197 case 140:
2198 YY_RULE_SETUP
2199 #line 249 "lexer.l"
2200 { return(AND_OP); }
2201         YY_BREAK
2202 case 141:
2203 YY_RULE_SETUP
2204 #line 250 "lexer.l"
2205 { return(OR_OP); }
2206         YY_BREAK
2207 case 142:
2208 YY_RULE_SETUP
2209 #line 251 "lexer.l"
2210 { return(LE_OP); }
2211         YY_BREAK
2212 case 143:
2213 YY_RULE_SETUP
2214 #line 252 "lexer.l"
2215 { return(GE_OP); }
2216         YY_BREAK
2217 case 144:
2218 YY_RULE_SETUP
2219 #line 253 "lexer.l"
2220 { return(EQ_OP); }
2221         YY_BREAK
2222 case 145:
2223 YY_RULE_SETUP
2224 #line 254 "lexer.l"
2225 { return(NE_OP); }
2226         YY_BREAK
2227 /* "::"        { return(CLASS_OP); } */
2228 case 146:
2229 YY_RULE_SETUP
2230 #line 256 "lexer.l"
2231 { return(';'); }
2232         YY_BREAK
2233 case 147:
2234 YY_RULE_SETUP
2235 #line 257 "lexer.l"
2236 { return('{'); }
2237         YY_BREAK
2238 case 148:
2239 YY_RULE_SETUP
2240 #line 258 "lexer.l"
2241 { return('}'); }
2242         YY_BREAK
2243 case 149:
2244 YY_RULE_SETUP
2245 #line 259 "lexer.l"
2246 { return(','); }
2247         YY_BREAK
2248 case 150:
2249 YY_RULE_SETUP
2250 #line 260 "lexer.l"
2251 { return(':'); }
2252         YY_BREAK
2253 case 151:
2254 YY_RULE_SETUP
2255 #line 261 "lexer.l"
2256 { return('='); }
2257         YY_BREAK
2258 case 152:
2259 YY_RULE_SETUP
2260 #line 262 "lexer.l"
2261 { return('('); }
2262         YY_BREAK
2263 case 153:
2264 YY_RULE_SETUP
2265 #line 263 "lexer.l"
2266 { return(')'); }
2267         YY_BREAK
2268 case 154:
2269 YY_RULE_SETUP
2270 #line 264 "lexer.l"
2271 { return('['); }
2272         YY_BREAK
2273 case 155:
2274 YY_RULE_SETUP
2275 #line 265 "lexer.l"
2276 { return(']'); }
2277         YY_BREAK
2278 case 156:
2279 YY_RULE_SETUP
2280 #line 266 "lexer.l"
2281 { return('.'); }
2282         YY_BREAK
2283 case 157:
2284 YY_RULE_SETUP
2285 #line 267 "lexer.l"
2286 { return('&'); }
2287         YY_BREAK
2288 case 158:
2289 YY_RULE_SETUP
2290 #line 268 "lexer.l"
2291 { return('!'); }
2292         YY_BREAK
2293 case 159:
2294 YY_RULE_SETUP
2295 #line 269 "lexer.l"
2296 { return('~'); }
2297         YY_BREAK
2298 case 160:
2299 YY_RULE_SETUP
2300 #line 270 "lexer.l"
2301 { return('-'); }
2302         YY_BREAK
2303 case 161:
2304 YY_RULE_SETUP
2305 #line 271 "lexer.l"
2306 { return('+'); }
2307         YY_BREAK
2308 case 162:
2309 YY_RULE_SETUP
2310 #line 272 "lexer.l"
2311 { return('*'); }
2312         YY_BREAK
2313 case 163:
2314 YY_RULE_SETUP
2315 #line 273 "lexer.l"
2316 { return('/'); }
2317         YY_BREAK
2318 case 164:
2319 YY_RULE_SETUP
2320 #line 274 "lexer.l"
2321 { return('%'); }
2322         YY_BREAK
2323 case 165:
2324 YY_RULE_SETUP
2325 #line 275 "lexer.l"
2326 { return('<'); }
2327         YY_BREAK
2328 case 166:
2329 YY_RULE_SETUP
2330 #line 276 "lexer.l"
2331 { return('>'); }
2332         YY_BREAK
2333 case 167:
2334 YY_RULE_SETUP
2335 #line 277 "lexer.l"
2336 { return('^'); }
2337         YY_BREAK
2338 case 168:
2339 YY_RULE_SETUP
2340 #line 278 "lexer.l"
2341 { return('|'); }
2342         YY_BREAK
2343 case 169:
2344 YY_RULE_SETUP
2345 #line 279 "lexer.l"
2346 { return('?'); }
2347         YY_BREAK
2348 case 170:
2349 YY_RULE_SETUP
2350 #line 280 "lexer.l"
2351 { return('$'); }
2352         YY_BREAK
2353 case YY_STATE_EOF(INITIAL):
2354 #line 282 "lexer.l"
2355 {
2356       while(include_stack_ptr && !fileStack[include_stack_ptr-1])
2357       {
2358          --include_stack_ptr;
2359          defaultDeclMode = declMode = structDeclMode = declModeStack[include_stack_ptr];
2360       }
2361
2362       if ( --include_stack_ptr < 0 )
2363       {
2364          include_stack_ptr = 0;
2365          yyterminate();
2366       }
2367       else
2368       {
2369          delete fileInput;
2370          yy_delete_buffer( YY_CURRENT_BUFFER );
2371          fileInput = fileStack[include_stack_ptr];
2372          yylloc = locStack[include_stack_ptr];
2373          type_yylloc = locStack[include_stack_ptr];
2374          expression_yylloc = locStack[include_stack_ptr];
2375          yy_switch_to_buffer(include_stack[include_stack_ptr] );
2376          defaultDeclMode = declMode = structDeclMode = declModeStack[include_stack_ptr];
2377       }
2378    }
2379         YY_BREAK
2380 case 171:
2381 YY_RULE_SETUP
2382 #line 308 "lexer.l"
2383 { yylloc.start = yylloc.end; type_yylloc.start = type_yylloc.end; expression_yylloc.start = expression_yylloc.end;}
2384         YY_BREAK
2385 case 172:
2386 YY_RULE_SETUP
2387 #line 309 "lexer.l"
2388 {
2389    yylloc.end.charPos = 1; yylloc.end.line += yyleng; yylloc.start = yylloc.end;
2390    type_yylloc.end.charPos = 1; type_yylloc.end.line += yyleng; type_yylloc.start = type_yylloc.end;
2391    expression_yylloc.end.charPos = 1; expression_yylloc.end.line += yyleng; expression_yylloc.start = expression_yylloc.end;
2392    }
2393         YY_BREAK
2394 case 173:
2395 YY_RULE_SETUP
2396 #line 314 "lexer.l"
2397 {
2398    yylloc.start.charPos++ /*= 3 - (yylloc.start.col % 3)*/; yylloc.end.charPos = yylloc.start.charPos; yylloc.start.pos = yylloc.end.pos;
2399    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;
2400    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;
2401    }
2402         YY_BREAK
2403 case 174:
2404 YY_RULE_SETUP
2405 #line 319 "lexer.l"
2406 { yylloc.start = yylloc.end; expression_yylloc.start = expression_yylloc.end;  type_yylloc.start = type_yylloc.end; }
2407         YY_BREAK
2408 case 175:
2409 YY_RULE_SETUP
2410 #line 320 "lexer.l"
2411 {
2412    yylloc.start = yylloc.end; expression_yylloc.start = expression_yylloc.end;  type_yylloc.start = type_yylloc.end;
2413    if(inCompiler)
2414       printf("lexer error: invalid char 0x%X at line %d, col %d\n", (unsigned char)yytext[0], yylloc.start.line, yylloc.start.charPos);
2415    yyerror();
2416    }
2417         YY_BREAK
2418 case 176:
2419 YY_RULE_SETUP
2420 #line 327 "lexer.l"
2421 ECHO;
2422         YY_BREAK
2423 #line 2424 "lexer.ec"
2424
2425         case YY_END_OF_BUFFER:
2426                 {
2427                 /* Amount of text matched not including the EOB char. */
2428                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2429
2430                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2431                 *yy_cp = yy_hold_char;
2432                 YY_RESTORE_YY_MORE_OFFSET
2433
2434                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2435                         {
2436                         /* We're scanning a new file or input source.  It's
2437                          * possible that this happened because the user
2438                          * just pointed yyin at a new source and called
2439                          * yylex().  If so, then we have to assure
2440                          * consistency between yy_current_buffer and our
2441                          * globals.  Here is the right place to do so, because
2442                          * this is the first action (other than possibly a
2443                          * back-up) that will match for the new input source.
2444                          */
2445                         yy_n_chars = yy_current_buffer->yy_n_chars;
2446                         yy_current_buffer->yy_input_file = yyin;
2447                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2448                         }
2449
2450                 /* Note that here we test for yy_c_buf_p "<=" to the position
2451                  * of the first EOB in the buffer, since yy_c_buf_p will
2452                  * already have been incremented past the NUL character
2453                  * (since all states make transitions on EOB to the
2454                  * end-of-buffer state).  Contrast this with the test
2455                  * in input().
2456                  */
2457                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2458                         { /* This was really a NUL. */
2459                         yy_state_type yy_next_state;
2460
2461                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2462
2463                         yy_current_state = yy_get_previous_state();
2464
2465                         /* Okay, we're now positioned to make the NUL
2466                          * transition.  We couldn't have
2467                          * yy_get_previous_state() go ahead and do it
2468                          * for us because it doesn't know how to deal
2469                          * with the possibility of jamming (and we don't
2470                          * want to build jamming into it because then it
2471                          * will run more slowly).
2472                          */
2473
2474                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2475
2476                         yy_bp = yytext_ptr + YY_MORE_ADJ;
2477
2478                         if ( yy_next_state )
2479                                 {
2480                                 /* Consume the NUL. */
2481                                 yy_cp = ++yy_c_buf_p;
2482                                 yy_current_state = yy_next_state;
2483                                 goto yy_match;
2484                                 }
2485
2486                         else
2487                                 {
2488                                 yy_cp = yy_c_buf_p;
2489                                 goto yy_find_action;
2490                                 }
2491                         }
2492
2493                 else switch ( yy_get_next_buffer() )
2494                         {
2495                         case EOB_ACT_END_OF_FILE:
2496                                 {
2497                                 yy_did_buffer_switch_on_eof = 0;
2498
2499                                 if ( yywrap() )
2500                                         {
2501                                         /* Note: because we've taken care in
2502                                          * yy_get_next_buffer() to have set up
2503                                          * yytext, we can now set up
2504                                          * yy_c_buf_p so that if some total
2505                                          * hoser (like flex itself) wants to
2506                                          * call the scanner after we return the
2507                                          * YY_NULL, it'll still work - another
2508                                          * YY_NULL will get returned.
2509                                          */
2510                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2511
2512                                         yy_act = YY_STATE_EOF(YY_START);
2513                                         goto do_action;
2514                                         }
2515
2516                                 else
2517                                         {
2518                                         if ( ! yy_did_buffer_switch_on_eof )
2519                                                 YY_NEW_FILE;
2520                                         }
2521                                 break;
2522                                 }
2523
2524                         case EOB_ACT_CONTINUE_SCAN:
2525                                 yy_c_buf_p =
2526                                         yytext_ptr + yy_amount_of_matched_text;
2527
2528                                 yy_current_state = yy_get_previous_state();
2529
2530                                 yy_cp = yy_c_buf_p;
2531                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2532                                 goto yy_match;
2533
2534                         case EOB_ACT_LAST_MATCH:
2535                                 yy_c_buf_p =
2536                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2537
2538                                 yy_current_state = yy_get_previous_state();
2539
2540                                 yy_cp = yy_c_buf_p;
2541                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2542                                 goto yy_find_action;
2543                         }
2544                 break;
2545                 }
2546
2547         default:
2548                 YY_FATAL_ERROR(
2549                         "fatal flex scanner internal error--no action found" );
2550         } /* end of action switch */
2551                 } /* end of scanning one token */
2552         } /* end of yylex */
2553
2554
2555 /* yy_get_next_buffer - try to read in a new buffer
2556  *
2557  * Returns a code representing an action:
2558  *      EOB_ACT_LAST_MATCH -
2559  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2560  *      EOB_ACT_END_OF_FILE - end of file
2561  */
2562
2563 static int yy_get_next_buffer()
2564         {
2565         register char *dest = yy_current_buffer->yy_ch_buf;
2566         register char *source = yytext_ptr;
2567         register int number_to_move, i;
2568         int ret_val;
2569
2570         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2571                 YY_FATAL_ERROR(
2572                 "fatal flex scanner internal error--end of buffer missed" );
2573
2574         if ( yy_current_buffer->yy_fill_buffer == 0 )
2575                 { /* Don't try to fill the buffer, so this is an EOF. */
2576                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2577                         {
2578                         /* We matched a single character, the EOB, so
2579                          * treat this as a final EOF.
2580                          */
2581                         return EOB_ACT_END_OF_FILE;
2582                         }
2583
2584                 else
2585                         {
2586                         /* We matched some text prior to the EOB, first
2587                          * process it.
2588                          */
2589                         return EOB_ACT_LAST_MATCH;
2590                         }
2591                 }
2592
2593         /* Try to read more data. */
2594
2595         /* First move last chars to start of buffer. */
2596         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2597
2598         for ( i = 0; i < number_to_move; ++i )
2599                 *(dest++) = *(source++);
2600
2601         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2602                 /* don't do the read, it's not guaranteed to return an EOF,
2603                  * just force an EOF
2604                  */
2605                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2606
2607         else
2608                 {
2609                 int num_to_read =
2610                         yy_current_buffer->yy_buf_size - number_to_move - 1;
2611
2612                 while ( num_to_read <= 0 )
2613                         { /* Not enough room in the buffer - grow it. */
2614 #ifdef YY_USES_REJECT
2615                         YY_FATAL_ERROR(
2616 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2617 #else
2618
2619                         /* just a shorter name for the current buffer */
2620                         YY_BUFFER_STATE b = yy_current_buffer;
2621
2622                         int yy_c_buf_p_offset =
2623                                 (int) (yy_c_buf_p - b->yy_ch_buf);
2624
2625                         if ( b->yy_is_our_buffer )
2626                                 {
2627                                 int new_size = b->yy_buf_size * 2;
2628
2629                                 if ( new_size <= 0 )
2630                                         b->yy_buf_size += b->yy_buf_size / 8;
2631                                 else
2632                                         b->yy_buf_size *= 2;
2633
2634                                 b->yy_ch_buf = (char *)
2635                                         /* Include room in for 2 EOB chars. */
2636                                         yy_flex_realloc( (void *) b->yy_ch_buf,
2637                                                          b->yy_buf_size + 2 );
2638                                 }
2639                         else
2640                                 /* Can't grow it, we don't own it. */
2641                                 b->yy_ch_buf = 0;
2642
2643                         if ( ! b->yy_ch_buf )
2644                                 YY_FATAL_ERROR(
2645                                 "fatal error - scanner input buffer overflow" );
2646
2647                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2648
2649                         num_to_read = yy_current_buffer->yy_buf_size -
2650                                                 number_to_move - 1;
2651 #endif
2652                         }
2653
2654                 if ( num_to_read > YY_READ_BUF_SIZE )
2655                         num_to_read = YY_READ_BUF_SIZE;
2656
2657                 /* Read in more data. */
2658                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2659                         yy_n_chars, num_to_read );
2660
2661                 yy_current_buffer->yy_n_chars = yy_n_chars;
2662                 }
2663
2664         if ( yy_n_chars == 0 )
2665                 {
2666                 if ( number_to_move == YY_MORE_ADJ )
2667                         {
2668                         ret_val = EOB_ACT_END_OF_FILE;
2669                         yyrestart( yyin );
2670                         }
2671
2672                 else
2673                         {
2674                         ret_val = EOB_ACT_LAST_MATCH;
2675                         yy_current_buffer->yy_buffer_status =
2676                                 YY_BUFFER_EOF_PENDING;
2677                         }
2678                 }
2679
2680         else
2681                 ret_val = EOB_ACT_CONTINUE_SCAN;
2682
2683         yy_n_chars += number_to_move;
2684         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2685         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2686
2687         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2688
2689         return ret_val;
2690         }
2691
2692
2693 /* yy_get_previous_state - get the state just before the EOB char was reached */
2694
2695 static yy_state_type yy_get_previous_state()
2696         {
2697         register yy_state_type yy_current_state;
2698         register char *yy_cp;
2699
2700         yy_current_state = yy_start;
2701
2702         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2703                 {
2704                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2705                 if ( yy_accept[yy_current_state] )
2706                         {
2707                         yy_last_accepting_state = yy_current_state;
2708                         yy_last_accepting_cpos = yy_cp;
2709                         }
2710                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2711                         {
2712                         yy_current_state = (int) yy_def[yy_current_state];
2713                         if ( yy_current_state >= 720 )
2714                                 yy_c = yy_meta[(unsigned int) yy_c];
2715                         }
2716                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2717                 }
2718
2719         return yy_current_state;
2720         }
2721
2722
2723 /* yy_try_NUL_trans - try to make a transition on the NUL character
2724  *
2725  * synopsis
2726  *      next_state = yy_try_NUL_trans( current_state );
2727  */
2728
2729 #ifdef YY_USE_PROTOS
2730 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2731 #else
2732 static yy_state_type yy_try_NUL_trans( yy_current_state )
2733 yy_state_type yy_current_state;
2734 #endif
2735         {
2736         register int yy_is_jam;
2737         register char *yy_cp = yy_c_buf_p;
2738
2739         register YY_CHAR yy_c = 1;
2740         if ( yy_accept[yy_current_state] )
2741                 {
2742                 yy_last_accepting_state = yy_current_state;
2743                 yy_last_accepting_cpos = yy_cp;
2744                 }
2745         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2746                 {
2747                 yy_current_state = (int) yy_def[yy_current_state];
2748                 if ( yy_current_state >= 720 )
2749                         yy_c = yy_meta[(unsigned int) yy_c];
2750                 }
2751         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2752         yy_is_jam = (yy_current_state == 719);
2753
2754         return yy_is_jam ? 0 : yy_current_state;
2755         }
2756
2757
2758 #ifndef YY_NO_UNPUT
2759 #ifdef YY_USE_PROTOS
2760 static void yyunput( int c, register char *yy_bp )
2761 #else
2762 static void yyunput( c, yy_bp )
2763 int c;
2764 register char *yy_bp;
2765 #endif
2766         {
2767         register char *yy_cp = yy_c_buf_p;
2768
2769         /* undo effects of setting up yytext */
2770         *yy_cp = yy_hold_char;
2771
2772         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2773                 { /* need to shift things up to make room */
2774                 /* +2 for EOB chars. */
2775                 register int number_to_move = yy_n_chars + 2;
2776                 register char *dest = &yy_current_buffer->yy_ch_buf[
2777                                         yy_current_buffer->yy_buf_size + 2];
2778                 register char *source =
2779                                 &yy_current_buffer->yy_ch_buf[number_to_move];
2780
2781                 while ( source > yy_current_buffer->yy_ch_buf )
2782                         *--dest = *--source;
2783
2784                 yy_cp += (int) (dest - source);
2785                 yy_bp += (int) (dest - source);
2786                 yy_current_buffer->yy_n_chars =
2787                         yy_n_chars = yy_current_buffer->yy_buf_size;
2788
2789                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2790                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2791                 }
2792
2793         *--yy_cp = (char) c;
2794
2795
2796         yytext_ptr = yy_bp;
2797         yy_hold_char = *yy_cp;
2798         yy_c_buf_p = yy_cp;
2799         }
2800 #endif  /* ifndef YY_NO_UNPUT */
2801
2802
2803 #ifdef __cplusplus
2804 static int yyinput()
2805 #else
2806 static int input()
2807 #endif
2808         {
2809         int c;
2810
2811         *yy_c_buf_p = yy_hold_char;
2812
2813         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2814                 {
2815                 /* yy_c_buf_p now points to the character we want to return.
2816                  * If this occurs *before* the EOB characters, then it's a
2817                  * valid NUL; if not, then we've hit the end of the buffer.
2818                  */
2819                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2820                         /* This was really a NUL. */
2821                         *yy_c_buf_p = '\0';
2822
2823                 else
2824                         { /* need more input */
2825                         int offset = yy_c_buf_p - yytext_ptr;
2826                         ++yy_c_buf_p;
2827
2828                         switch ( yy_get_next_buffer() )
2829                                 {
2830                                 case EOB_ACT_LAST_MATCH:
2831                                         /* This happens because yy_g_n_b()
2832                                          * sees that we've accumulated a
2833                                          * token and flags that we need to
2834                                          * try matching the token before
2835                                          * proceeding.  But for input(),
2836                                          * there's no matching to consider.
2837                                          * So convert the EOB_ACT_LAST_MATCH
2838                                          * to EOB_ACT_END_OF_FILE.
2839                                          */
2840
2841                                         /* Reset buffer status. */
2842                                         yyrestart( yyin );
2843
2844                                         /* fall through */
2845
2846                                 case EOB_ACT_END_OF_FILE:
2847                                         {
2848                                         if ( yywrap() )
2849                                                 return EOF;
2850
2851                                         if ( ! yy_did_buffer_switch_on_eof )
2852                                                 YY_NEW_FILE;
2853 #ifdef __cplusplus
2854                                         return yyinput();
2855 #else
2856                                         return input();
2857 #endif
2858                                         }
2859
2860                                 case EOB_ACT_CONTINUE_SCAN:
2861                                         yy_c_buf_p = yytext_ptr + offset;
2862                                         break;
2863                                 }
2864                         }
2865                 }
2866
2867         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2868         *yy_c_buf_p = '\0';     /* preserve yytext */
2869         yy_hold_char = *++yy_c_buf_p;
2870
2871
2872         return c;
2873         }
2874
2875
2876 #ifdef YY_USE_PROTOS
2877 void yyrestart( FILE *input_file )
2878 #else
2879 void yyrestart( input_file )
2880 FILE *input_file;
2881 #endif
2882         {
2883         if ( ! yy_current_buffer )
2884                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2885
2886         yy_init_buffer( yy_current_buffer, input_file );
2887         yy_load_buffer_state();
2888         }
2889
2890
2891 #ifdef YY_USE_PROTOS
2892 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2893 #else
2894 void yy_switch_to_buffer( new_buffer )
2895 YY_BUFFER_STATE new_buffer;
2896 #endif
2897         {
2898         if ( yy_current_buffer == new_buffer )
2899                 return;
2900
2901         if ( yy_current_buffer )
2902                 {
2903                 /* Flush out information for old buffer. */
2904                 *yy_c_buf_p = yy_hold_char;
2905                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2906                 yy_current_buffer->yy_n_chars = yy_n_chars;
2907                 }
2908
2909         yy_current_buffer = new_buffer;
2910         yy_load_buffer_state();
2911
2912         /* We don't actually know whether we did this switch during
2913          * EOF (yywrap()) processing, but the only time this flag
2914          * is looked at is after yywrap() is called, so it's safe
2915          * to go ahead and always set it.
2916          */
2917         yy_did_buffer_switch_on_eof = 1;
2918         }
2919
2920
2921 #ifdef YY_USE_PROTOS
2922 void yy_load_buffer_state( void )
2923 #else
2924 void yy_load_buffer_state()
2925 #endif
2926         {
2927         yy_n_chars = yy_current_buffer->yy_n_chars;
2928         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2929         yyin = yy_current_buffer->yy_input_file;
2930         yy_hold_char = *yy_c_buf_p;
2931         }
2932
2933
2934 #ifdef YY_USE_PROTOS
2935 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2936 #else
2937 YY_BUFFER_STATE yy_create_buffer( file, size )
2938 FILE *file;
2939 int size;
2940 #endif
2941         {
2942         YY_BUFFER_STATE b;
2943
2944         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2945         if ( ! b )
2946                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2947
2948         b->yy_buf_size = size;
2949
2950         /* yy_ch_buf has to be 2 characters longer than the size given because
2951          * we need to put in 2 end-of-buffer characters.
2952          */
2953         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2954         if ( ! b->yy_ch_buf )
2955                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2956
2957         b->yy_is_our_buffer = 1;
2958
2959         yy_init_buffer( b, file );
2960
2961         return b;
2962         }
2963
2964
2965 #ifdef YY_USE_PROTOS
2966 void yy_delete_buffer( YY_BUFFER_STATE b )
2967 #else
2968 void yy_delete_buffer( b )
2969 YY_BUFFER_STATE b;
2970 #endif
2971         {
2972         if ( ! b )
2973                 return;
2974
2975         if ( b == yy_current_buffer )
2976                 yy_current_buffer = (YY_BUFFER_STATE) 0;
2977
2978         if ( b->yy_is_our_buffer )
2979                 yy_flex_free( (void *) b->yy_ch_buf );
2980
2981         yy_flex_free( (void *) b );
2982         }
2983
2984
2985 #ifndef YY_ALWAYS_INTERACTIVE
2986 #ifndef YY_NEVER_INTERACTIVE
2987 extern int isatty YY_PROTO(( int ));
2988 #endif
2989 #endif
2990
2991 #ifdef YY_USE_PROTOS
2992 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2993 #else
2994 void yy_init_buffer( b, file )
2995 YY_BUFFER_STATE b;
2996 FILE *file;
2997 #endif
2998
2999
3000         {
3001         yy_flush_buffer( b );
3002
3003         b->yy_input_file = file;
3004         b->yy_fill_buffer = 1;
3005
3006 #if YY_ALWAYS_INTERACTIVE
3007         b->yy_is_interactive = 1;
3008 #else
3009 #if YY_NEVER_INTERACTIVE
3010         b->yy_is_interactive = 0;
3011 #else
3012         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3013 #endif
3014 #endif
3015         }
3016
3017
3018 #ifdef YY_USE_PROTOS
3019 void yy_flush_buffer( YY_BUFFER_STATE b )
3020 #else
3021 void yy_flush_buffer( b )
3022 YY_BUFFER_STATE b;
3023 #endif
3024
3025         {
3026         if ( ! b )
3027                 return;
3028
3029         b->yy_n_chars = 0;
3030
3031         /* We always need two end-of-buffer characters.  The first causes
3032          * a transition to the end-of-buffer state.  The second causes
3033          * a jam in that state.
3034          */
3035         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3036         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3037
3038         b->yy_buf_pos = &b->yy_ch_buf[0];
3039
3040         b->yy_at_bol = 1;
3041         b->yy_buffer_status = YY_BUFFER_NEW;
3042
3043         if ( b == yy_current_buffer )
3044                 yy_load_buffer_state();
3045         }
3046
3047
3048 #ifndef YY_NO_SCAN_BUFFER
3049 #ifdef YY_USE_PROTOS
3050 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3051 #else
3052 YY_BUFFER_STATE yy_scan_buffer( base, size )
3053 char *base;
3054 yy_size_t size;
3055 #endif
3056         {
3057         YY_BUFFER_STATE b;
3058
3059         if ( size < 2 ||
3060              base[size-2] != YY_END_OF_BUFFER_CHAR ||
3061              base[size-1] != YY_END_OF_BUFFER_CHAR )
3062                 /* They forgot to leave room for the EOB's. */
3063                 return 0;
3064
3065         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3066         if ( ! b )
3067                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3068
3069         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
3070         b->yy_buf_pos = b->yy_ch_buf = base;
3071         b->yy_is_our_buffer = 0;
3072         b->yy_input_file = 0;
3073         b->yy_n_chars = b->yy_buf_size;
3074         b->yy_is_interactive = 0;
3075         b->yy_at_bol = 1;
3076         b->yy_fill_buffer = 0;
3077         b->yy_buffer_status = YY_BUFFER_NEW;
3078
3079         yy_switch_to_buffer( b );
3080
3081         return b;
3082         }
3083 #endif
3084
3085
3086 #ifndef YY_NO_SCAN_STRING
3087 #ifdef YY_USE_PROTOS
3088 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3089 #else
3090 YY_BUFFER_STATE yy_scan_string( yy_str )
3091 yyconst char *yy_str;
3092 #endif
3093         {
3094         int len;
3095         for ( len = 0; yy_str[len]; ++len )
3096                 ;
3097
3098         return yy_scan_bytes( yy_str, len );
3099         }
3100 #endif
3101
3102
3103 #ifndef YY_NO_SCAN_BYTES
3104 #ifdef YY_USE_PROTOS
3105 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3106 #else
3107 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3108 yyconst char *bytes;
3109 int len;
3110 #endif
3111         {
3112         YY_BUFFER_STATE b;
3113         char *buf;
3114         yy_size_t n;
3115         int i;
3116
3117         /* Get memory for full buffer, including space for trailing EOB's. */
3118         n = len + 2;
3119         buf = (char *) yy_flex_alloc( n );
3120         if ( ! buf )
3121                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3122
3123         for ( i = 0; i < len; ++i )
3124                 buf[i] = bytes[i];
3125
3126         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3127
3128         b = yy_scan_buffer( buf, n );
3129         if ( ! b )
3130                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3131
3132         /* It's okay to grow etc. this buffer, and we should throw it
3133          * away when we're done.
3134          */
3135         b->yy_is_our_buffer = 1;
3136
3137         return b;
3138         }
3139 #endif
3140
3141
3142 #ifndef YY_NO_PUSH_STATE
3143 #ifdef YY_USE_PROTOS
3144 static void yy_push_state( int new_state )
3145 #else
3146 static void yy_push_state( new_state )
3147 int new_state;
3148 #endif
3149         {
3150         if ( yy_start_stack_ptr >= yy_start_stack_depth )
3151                 {
3152                 yy_size_t new_size;
3153
3154                 yy_start_stack_depth += YY_START_STACK_INCR;
3155                 new_size = yy_start_stack_depth * sizeof( int );
3156
3157                 if ( ! yy_start_stack )
3158                         yy_start_stack = (int *) yy_flex_alloc( new_size );
3159
3160                 else
3161                         yy_start_stack = (int *) yy_flex_realloc(
3162                                         (void *) yy_start_stack, new_size );
3163
3164                 if ( ! yy_start_stack )
3165                         YY_FATAL_ERROR(
3166                         "out of memory expanding start-condition stack" );
3167                 }
3168
3169         yy_start_stack[yy_start_stack_ptr++] = YY_START;
3170
3171         BEGIN(new_state);
3172         }
3173 #endif
3174
3175
3176 #ifndef YY_NO_POP_STATE
3177 static void yy_pop_state()
3178         {
3179         if ( --yy_start_stack_ptr < 0 )
3180                 YY_FATAL_ERROR( "start-condition stack underflow" );
3181
3182         BEGIN(yy_start_stack[yy_start_stack_ptr]);
3183         }
3184 #endif
3185
3186
3187 #ifndef YY_NO_TOP_STATE
3188 static int yy_top_state()
3189         {
3190         return yy_start_stack[yy_start_stack_ptr - 1];
3191         }
3192 #endif
3193
3194 #ifndef YY_EXIT_FAILURE
3195 #define YY_EXIT_FAILURE 2
3196 #endif
3197
3198 #ifdef YY_USE_PROTOS
3199 static void yy_fatal_error( yyconst char msg[] )
3200 #else
3201 static void yy_fatal_error( msg )
3202 char msg[];
3203 #endif
3204         {
3205         (void) fprintf( stderr, "%s\n", msg );
3206         exit( YY_EXIT_FAILURE );
3207         }
3208
3209
3210
3211 /* Redefine yyless() so it works in section 3 code. */
3212
3213 #undef yyless
3214 #define yyless(n) \
3215         do \
3216                 { \
3217                 /* Undo effects of setting up yytext. */ \
3218                 yytext[yyleng] = yy_hold_char; \
3219                 yy_c_buf_p = yytext + n; \
3220                 yy_hold_char = *yy_c_buf_p; \
3221                 *yy_c_buf_p = '\0'; \
3222                 yyleng = n; \
3223                 } \
3224         while ( 0 )
3225
3226
3227 /* Internal utility routines. */
3228
3229 #ifndef yytext_ptr
3230 #ifdef YY_USE_PROTOS
3231 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3232 #else
3233 static void yy_flex_strncpy( s1, s2, n )
3234 char *s1;
3235 yyconst char *s2;
3236 int n;
3237 #endif
3238         {
3239         register int i;
3240         for ( i = 0; i < n; ++i )
3241                 s1[i] = s2[i];
3242         }
3243 #endif
3244
3245 #ifdef YY_NEED_STRLEN
3246 #ifdef YY_USE_PROTOS
3247 static int yy_flex_strlen( yyconst char *s )
3248 #else
3249 static int yy_flex_strlen( s )
3250 yyconst char *s;
3251 #endif
3252         {
3253         register int n;
3254         for ( n = 0; s[n]; ++n )
3255                 ;
3256
3257         return n;
3258         }
3259 #endif
3260
3261
3262 #ifdef YY_USE_PROTOS
3263 static void *yy_flex_alloc( yy_size_t size )
3264 #else
3265 static void *yy_flex_alloc( size )
3266 yy_size_t size;
3267 #endif
3268         {
3269         return (void *) malloc( size );
3270         }
3271
3272 #ifdef YY_USE_PROTOS
3273 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3274 #else
3275 static void *yy_flex_realloc( ptr, size )
3276 void *ptr;
3277 yy_size_t size;
3278 #endif
3279         {
3280         /* The cast to (char *) in the following accommodates both
3281          * implementations that use char* generic pointers, and those
3282          * that use void* generic pointers.  It works with the latter
3283          * because both ANSI C and C++ allow castless assignment from
3284          * any pointer type to void*, and deal with argument conversions
3285          * as though doing an assignment.
3286          */
3287         return (void *) realloc( (char *) ptr, size );
3288         }
3289
3290 #ifdef YY_USE_PROTOS
3291 static void yy_flex_free( void *ptr )
3292 #else
3293 static void yy_flex_free( ptr )
3294 void *ptr;
3295 #endif
3296         {
3297         free( ptr );
3298         }
3299
3300 #if YY_MAIN
3301 int main()
3302         {
3303         yylex();
3304         return 0;
3305         }
3306 #endif
3307 #line 327 "lexer.l"
3308
3309
3310 private:
3311
3312 int yywrap()
3313 {
3314    return(1);
3315 }
3316
3317 int comment()
3318 {
3319    int c, last = 0;
3320    for(;;)
3321    {
3322       c = input();
3323       if(c == EOF) break;
3324
3325       // fputc(c, output);
3326       // putchar(c);
3327       if(c == '\n')
3328       {
3329          yylloc.end.charPos = 1;
3330          yylloc.end.pos++;
3331          yylloc.end.line++;
3332       }
3333       else if (c == '\t')
3334       {
3335          yylloc.end.charPos++ /* += 3 - (yylloc.end.col % 3)*/;
3336          yylloc.end.pos++;
3337       }
3338       else
3339       {
3340          yylloc.end.charPos++;
3341          yylloc.end.pos++;
3342       }
3343       if(c == '/' && last == '*')
3344          break;
3345       last = c;
3346    }
3347    yylloc.start = yylloc.end;
3348    return 0;
3349 }
3350
3351 int commentCPP()
3352 {
3353    int c; //, last = 0;
3354    for(;;)
3355    {
3356       c = input();
3357       if(c == EOF) break;
3358
3359       // fputc(c, output);
3360       // putchar(c);
3361       if(c == '\n')
3362       {
3363          yylloc.end.charPos = 1;
3364          yylloc.end.pos++;
3365          yylloc.end.line++;
3366          break;
3367       }
3368       else if (c == '\t')
3369       {
3370          yylloc.end.charPos++ /* += 3 - (yylloc.end.col % 3)*/;
3371          yylloc.end.pos++;
3372       }
3373       else
3374       {
3375          yylloc.end.charPos++;
3376          yylloc.end.pos++;
3377       }
3378       //last = c;
3379    }
3380    yylloc.start = yylloc.end;
3381    return 0;
3382 }
3383
3384 int preprocessor()
3385 {
3386    int c, last = 0;
3387    int count = 0;
3388    char line[1024];
3389
3390    line[0] = '\0';
3391
3392    for(;;)
3393    {
3394       c = input();
3395       if(c == EOF) break;
3396
3397       if(c == '\n')
3398       {
3399          yylloc.end.charPos = 1;
3400          yylloc.end.pos++;
3401          yylloc.end.line++;
3402          if(last != '\\')
3403          {
3404             char * pointer = line + 1;
3405             int lineNumber;
3406             line[count] = 0;
3407             lineNumber = GetValue(&pointer);
3408             if(lineNumber)
3409             {
3410                char fileName[MAX_LOCATION];
3411
3412                int inOut;
3413
3414                fileName[0] = 0;
3415                GetString(&pointer, fileName, MAX_LOCATION);
3416                inOut = GetValue(&pointer);
3417
3418                if(inOut == 1)
3419                {
3420                   char extension[MAX_EXTENSION];
3421
3422                   defaultDeclMode = declModeStack[include_stack_ptr] = declMode;
3423
3424                   GetExtension(fileName, extension);
3425                   if(!strcmp(extension, "c") || !strcmp(extension, "h"))
3426                      declMode = defaultDeclMode = structDeclMode = defaultAccess;
3427
3428                   fileStack[include_stack_ptr] = null;
3429                   include_stack_ptr++;
3430                }
3431                else if(inOut == 2)
3432                {
3433                   include_stack_ptr--;
3434                   defaultDeclMode = declMode = structDeclMode = declModeStack[include_stack_ptr];
3435                }
3436
3437                yylloc.end.charPos = 1;
3438                yylloc.end.line = lineNumber;
3439                //yylloc.end.pos -= count;
3440
3441                if(include_stack_ptr > 0 || (lineNumber && fileName[0]))
3442                   yylloc.end.included = GetIncludeFileID(fileName);
3443                else
3444                   yylloc.end.included = 0;
3445             }
3446             /*
3447             int lineNumber = strtol(line+1, &endPtr, 0);
3448             if(lineNumber)
3449             {
3450                GetString(&
3451                endPtr
3452
3453                yylloc.end.charPos = 1;
3454                yylloc.end.line = lineNumber;
3455                yylloc.end.pos -= count;
3456             }
3457             */
3458             break;
3459          }
3460          count = 0;
3461       }
3462       else if (c == '\t')
3463       {
3464          yylloc.end.charPos++ /* += 3 - (yylloc.end.col % 3)*/;
3465          yylloc.end.pos++;
3466          line[count++] = c;
3467       }
3468       else
3469       {
3470          yylloc.end.pos++;
3471          if(c != '\r')
3472          {
3473             yylloc.end.charPos++;
3474             line[count++] = c;
3475          }
3476       }
3477       last = c;
3478    }
3479    yylloc.start = yylloc.end;
3480    line[count] = 0;
3481
3482    TrimLSpaces(line, line);
3483    for(c = 0; line[c] && line[c] != ' '; c++);
3484    if(!strncmp(line, "include", c))
3485    {
3486       char includeFile[MAX_LOCATION] = "";
3487
3488       memmove(line, line+c, strlen(line+c)+1);
3489       TrimLSpaces(line, line);
3490       if(line[0] == '\"')
3491       {
3492          for(c = 1; line[c]; c++)
3493          {
3494             if(line[c] == '\"')
3495             {
3496                strncpy(includeFile, line+1, c-1);
3497                includeFile[c-1] = '\0';
3498                break;
3499             }
3500          }
3501       }
3502       else if(line[0] == '<')
3503       {
3504          for(c = 1; line[c]; c++)
3505             if(line[c] == '>')
3506             {
3507                strncpy(includeFile, line+1, c-1);
3508                includeFile[c-1] = '\0';
3509                break;
3510             }
3511       }
3512
3513       if ( include_stack_ptr >= MAX_INCLUDE_DEPTH )
3514       {
3515          fprintf( stderr, $"Includes nested too deeply" );
3516          exit( 1 );
3517       }
3518
3519       if(inCompiler || !FindIncludeFileID(includeFile))
3520       {
3521          File file = OpenIncludeFile(includeFile);
3522          if(file)
3523          {
3524             char extension[MAX_EXTENSION];
3525
3526             fileStack[include_stack_ptr] = fileInput;
3527             locStack[include_stack_ptr] = yylloc;
3528             defaultDeclMode = declModeStack[include_stack_ptr] = declMode;
3529             include_stack[include_stack_ptr++] = YY_CURRENT_BUFFER;
3530
3531             yylloc.start.charPos = yylloc.end.charPos = 1;
3532             yylloc.start.line = yylloc.end.line = 1;
3533             yylloc.start.pos = yylloc.end.pos = 0;
3534             yylloc.start.included = yylloc.end.included = GetIncludeFileID(includeFile);
3535
3536             GetExtension(includeFile, extension);
3537             if(!strcmp(extension, "c") || !strcmp(extension, "h"))
3538                declMode = defaultDeclMode = structDeclMode = defaultAccess;
3539
3540             fileInput = file;
3541             yy_switch_to_buffer( yy_create_buffer( fileInput, YY_BUF_SIZE ) );
3542             BEGIN(INITIAL);
3543          }
3544       }
3545    }
3546    return 0;
3547 }
3548
3549 public void resetScanner()
3550 {
3551    YY_FLUSH_BUFFER;
3552    yylloc.start.charPos = yylloc.end.charPos = 1;
3553    yylloc.start.line = yylloc.end.line = 1;
3554    yylloc.start.pos = yylloc.end.pos = 0;
3555    yylloc.start.included = yylloc.end.included = 0;
3556
3557    expression_yylloc.start.charPos = expression_yylloc.end.charPos = 1;
3558    expression_yylloc.start.line = expression_yylloc.end.line = 1;
3559    expression_yylloc.start.pos = expression_yylloc.end.pos = 0;
3560    expression_yylloc.start.included = expression_yylloc.end.included = 0;
3561
3562    type_yylloc.start.charPos = type_yylloc.end.charPos = 1;
3563    type_yylloc.start.line = type_yylloc.end.line = 1;
3564    type_yylloc.start.pos = type_yylloc.end.pos = 0;
3565    type_yylloc.start.included = type_yylloc.end.included = 0;
3566
3567    include_stack_ptr = 0;
3568 }
3569
3570 void resetScannerPos(CodePosition pos)
3571 {
3572    YY_FLUSH_BUFFER;
3573    yylloc.start = yylloc.end = pos;
3574    type_yylloc.start = type_yylloc.end = pos;
3575    expression_yylloc.start = expression_yylloc.end = pos;
3576 }
3577
3578 class LexerBackup
3579 {
3580    YYLTYPE yylloc;
3581    YYLTYPE type_yylloc;
3582    YYLTYPE expression_yylloc;
3583
3584    AccessMode declMode;
3585    AccessMode defaultDeclMode;
3586
3587    File fileInput;
3588    YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
3589    File fileStack[MAX_INCLUDE_DEPTH];
3590    char sourceFileStack[MAX_INCLUDE_DEPTH][MAX_LOCATION];
3591    YYLTYPE locStack[MAX_INCLUDE_DEPTH];
3592    AccessMode declModeStack[MAX_INCLUDE_DEPTH];
3593    int include_stack_ptr;
3594    YY_BUFFER_STATE buffer;
3595
3596    int yy_n_chars;
3597    char * yytext_ptr;
3598    char * yy_c_buf_p;
3599    FILE * yyin;
3600    char yy_hold_char;
3601    int yychar;
3602    int yy_init;
3603    int yy_start;
3604
3605 };
3606
3607 LexerBackup pushLexer()
3608 {
3609    LexerBackup backup { };
3610
3611    backup.yylloc = yylloc;
3612    backup.type_yylloc = type_yylloc;
3613    backup.expression_yylloc = expression_yylloc;
3614    backup.fileInput = fileInput;
3615    memcpy(backup.include_stack, include_stack, sizeof(include_stack));
3616    memcpy(backup.fileStack, fileStack, sizeof(fileStack));
3617    memcpy(backup.sourceFileStack, sourceFileStack, sizeof(sourceFileStack));
3618    memcpy(backup.locStack, locStack, sizeof(locStack));
3619    memcpy(backup.declModeStack, declModeStack, sizeof(declModeStack));
3620    backup.include_stack_ptr = include_stack_ptr;
3621    backup.defaultDeclMode = defaultDeclMode;
3622    backup.declMode = declMode;
3623    backup.buffer = yy_current_buffer;
3624
3625    backup.yy_n_chars = yy_n_chars;
3626    backup.yytext_ptr = yytext_ptr;
3627    backup.yy_c_buf_p = yy_c_buf_p;
3628    backup.yyin = yyin;
3629    backup.yy_hold_char = yy_hold_char;
3630    backup.yychar = yychar;
3631    backup.yy_init = yy_init;
3632    backup.yy_start = yy_start;
3633
3634    yy_init = 1;
3635
3636    yy_current_buffer = 0;
3637
3638    yylloc.start.charPos = yylloc.end.charPos = 1;
3639    yylloc.start.line = yylloc.end.line = 1;
3640    yylloc.start.pos = yylloc.end.pos = 0;
3641    yylloc.start.included = yylloc.end.included = 0;
3642
3643    expression_yylloc.start.charPos = expression_yylloc.end.charPos = 1;
3644    expression_yylloc.start.line = expression_yylloc.end.line = 1;
3645    expression_yylloc.start.pos = expression_yylloc.end.pos = 0;
3646    expression_yylloc.start.included = expression_yylloc.end.included = 0;
3647
3648    type_yylloc.start.charPos = type_yylloc.end.charPos = 1;
3649    type_yylloc.start.line = type_yylloc.end.line = 1;
3650    type_yylloc.start.pos = type_yylloc.end.pos = 0;
3651    type_yylloc.start.included = type_yylloc.end.included = 0;
3652
3653    include_stack_ptr = 0;
3654
3655    return backup;
3656 }
3657
3658 void popLexer(LexerBackup backup)
3659 {
3660    yylloc = backup.yylloc;
3661    type_yylloc = backup.type_yylloc;
3662    expression_yylloc = backup.expression_yylloc;
3663    fileInput = backup.fileInput;
3664    memcpy(include_stack, backup.include_stack, sizeof(include_stack));
3665    memcpy(fileStack, backup.fileStack, sizeof(fileStack));
3666    memcpy(sourceFileStack, backup.sourceFileStack, sizeof(sourceFileStack));
3667    memcpy(locStack, backup.locStack, sizeof(locStack));
3668    memcpy(declModeStack, backup.declModeStack, sizeof(declModeStack));
3669    include_stack_ptr = backup.include_stack_ptr;
3670    defaultDeclMode = backup.defaultDeclMode;
3671    declMode = structDeclMode = backup.declMode;
3672
3673    // yy_switch_to_buffer(backup.buffer);
3674    yy_current_buffer = backup.buffer;
3675    yy_n_chars = backup.yy_n_chars;
3676    yytext_ptr = backup.yytext_ptr;
3677    yy_c_buf_p = backup.yy_c_buf_p;
3678    yyin = backup.yyin;
3679    yy_hold_char = backup.yy_hold_char;
3680    yychar = backup.yychar;
3681    yy_init = backup.yy_init;
3682    yy_start = backup.yy_start;
3683
3684    delete backup;
3685 }