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