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