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