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