Changed memory reference instructions to store the result as the implicit
[oota-llvm.git] / lib / AsmParser / Lexer.cpp
1 #define yy_create_buffer llvmAsm_create_buffer
2 #define yy_delete_buffer llvmAsm_delete_buffer
3 #define yy_scan_buffer llvmAsm_scan_buffer
4 #define yy_scan_string llvmAsm_scan_string
5 #define yy_scan_bytes llvmAsm_scan_bytes
6 #define yy_flex_debug llvmAsm_flex_debug
7 #define yy_init_buffer llvmAsm_init_buffer
8 #define yy_flush_buffer llvmAsm_flush_buffer
9 #define yy_load_buffer_state llvmAsm_load_buffer_state
10 #define yy_switch_to_buffer llvmAsm_switch_to_buffer
11 #define yyin llvmAsmin
12 #define yyleng llvmAsmleng
13 #define yylex llvmAsmlex
14 #define yyout llvmAsmout
15 #define yyrestart llvmAsmrestart
16 #define yytext llvmAsmtext
17 #define yylineno llvmAsmlineno
18
19 #line 20 "Lexer.cpp"
20 /* A lexical scanner generated by flex */
21
22 /* Scanner skeleton version:
23  * $Header$
24  */
25
26 #define FLEX_SCANNER
27 #define YY_FLEX_MAJOR_VERSION 2
28 #define YY_FLEX_MINOR_VERSION 5
29
30 #include <stdio.h>
31
32
33 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
34 #ifdef c_plusplus
35 #ifndef __cplusplus
36 #define __cplusplus
37 #endif
38 #endif
39
40
41 #ifdef __cplusplus
42
43 #include <stdlib.h>
44 #include <unistd.h>
45
46 /* Use prototypes in function declarations. */
47 #define YY_USE_PROTOS
48
49 /* The "const" storage-class-modifier is valid. */
50 #define YY_USE_CONST
51
52 #else   /* ! __cplusplus */
53
54 #if __STDC__
55
56 #define YY_USE_PROTOS
57 #define YY_USE_CONST
58
59 #endif  /* __STDC__ */
60 #endif  /* ! __cplusplus */
61
62 #ifdef __TURBOC__
63  #pragma warn -rch
64  #pragma warn -use
65 #include <io.h>
66 #include <stdlib.h>
67 #define YY_USE_CONST
68 #define YY_USE_PROTOS
69 #endif
70
71 #ifdef YY_USE_CONST
72 #define yyconst const
73 #else
74 #define yyconst
75 #endif
76
77
78 #ifdef YY_USE_PROTOS
79 #define YY_PROTO(proto) proto
80 #else
81 #define YY_PROTO(proto) ()
82 #endif
83
84 /* Returned upon end-of-file. */
85 #define YY_NULL 0
86
87 /* Promotes a possibly negative, possibly signed char to an unsigned
88  * integer for use as an array index.  If the signed char is negative,
89  * we want to instead treat it as an 8-bit unsigned char, hence the
90  * double cast.
91  */
92 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
93
94 /* Enter a start condition.  This macro really ought to take a parameter,
95  * but we do it the disgusting crufty way forced on us by the ()-less
96  * definition of BEGIN.
97  */
98 #define BEGIN yy_start = 1 + 2 *
99
100 /* Translate the current start state into a value that can be later handed
101  * to BEGIN to return to the state.  The YYSTATE alias is for lex
102  * compatibility.
103  */
104 #define YY_START ((yy_start - 1) / 2)
105 #define YYSTATE YY_START
106
107 /* Action number for EOF rule of a given start state. */
108 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
109
110 /* Special action meaning "start processing a new file". */
111 #define YY_NEW_FILE yyrestart( yyin )
112
113 #define YY_END_OF_BUFFER_CHAR 0
114
115 /* Size of default input buffer. */
116 #define YY_BUF_SIZE 16384
117
118 typedef struct yy_buffer_state *YY_BUFFER_STATE;
119
120 extern int yyleng;
121 extern FILE *yyin, *yyout;
122
123 #define EOB_ACT_CONTINUE_SCAN 0
124 #define EOB_ACT_END_OF_FILE 1
125 #define EOB_ACT_LAST_MATCH 2
126
127 /* The funky do-while in the following #define is used to turn the definition
128  * int a single C statement (which needs a semi-colon terminator).  This
129  * avoids problems with code like:
130  *
131  *      if ( condition_holds )
132  *              yyless( 5 );
133  *      else
134  *              do_something_else();
135  *
136  * Prior to using the do-while the compiler would get upset at the
137  * "else" because it interpreted the "if" statement as being all
138  * done when it reached the ';' after the yyless() call.
139  */
140
141 /* Return all but the first 'n' matched characters back to the input stream. */
142
143 #define yyless(n) \
144         do \
145                 { \
146                 /* Undo effects of setting up yytext. */ \
147                 *yy_cp = yy_hold_char; \
148                 YY_RESTORE_YY_MORE_OFFSET \
149                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
150                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
151                 } \
152         while ( 0 )
153
154 #define unput(c) yyunput( c, yytext_ptr )
155
156 /* The following is because we cannot portably get our hands on size_t
157  * (without autoconf's help, which isn't available because we want
158  * flex-generated scanners to compile on their own).
159  */
160 typedef unsigned int yy_size_t;
161
162
163 struct yy_buffer_state
164         {
165         FILE *yy_input_file;
166
167         char *yy_ch_buf;                /* input buffer */
168         char *yy_buf_pos;               /* current position in input buffer */
169
170         /* Size of input buffer in bytes, not including room for EOB
171          * characters.
172          */
173         yy_size_t yy_buf_size;
174
175         /* Number of characters read into yy_ch_buf, not including EOB
176          * characters.
177          */
178         int yy_n_chars;
179
180         /* Whether we "own" the buffer - i.e., we know we created it,
181          * and can realloc() it to grow it, and should free() it to
182          * delete it.
183          */
184         int yy_is_our_buffer;
185
186         /* Whether this is an "interactive" input source; if so, and
187          * if we're using stdio for input, then we want to use getc()
188          * instead of fread(), to make sure we stop fetching input after
189          * each newline.
190          */
191         int yy_is_interactive;
192
193         /* Whether we're considered to be at the beginning of a line.
194          * If so, '^' rules will be active on the next match, otherwise
195          * not.
196          */
197         int yy_at_bol;
198
199         /* Whether to try to fill the input buffer when we reach the
200          * end of it.
201          */
202         int yy_fill_buffer;
203
204         int yy_buffer_status;
205 #define YY_BUFFER_NEW 0
206 #define YY_BUFFER_NORMAL 1
207         /* When an EOF's been seen but there's still some text to process
208          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
209          * shouldn't try reading from the input source any more.  We might
210          * still have a bunch of tokens to match, though, because of
211          * possible backing-up.
212          *
213          * When we actually see the EOF, we change the status to "new"
214          * (via yyrestart()), so that the user can continue scanning by
215          * just pointing yyin at a new input file.
216          */
217 #define YY_BUFFER_EOF_PENDING 2
218         };
219
220 static YY_BUFFER_STATE yy_current_buffer = 0;
221
222 /* We provide macros for accessing buffer states in case in the
223  * future we want to put the buffer states in a more general
224  * "scanner state".
225  */
226 #define YY_CURRENT_BUFFER yy_current_buffer
227
228
229 /* yy_hold_char holds the character lost when yytext is formed. */
230 static char yy_hold_char;
231
232 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
233
234
235 int yyleng;
236
237 /* Points to current character in buffer. */
238 static char *yy_c_buf_p = (char *) 0;
239 static int yy_init = 1;         /* whether we need to initialize */
240 static int yy_start = 0;        /* start state number */
241
242 /* Flag which is used to allow yywrap()'s to do buffer switches
243  * instead of setting up a fresh yyin.  A bit of a hack ...
244  */
245 static int yy_did_buffer_switch_on_eof;
246
247 void yyrestart YY_PROTO(( FILE *input_file ));
248
249 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
250 void yy_load_buffer_state YY_PROTO(( void ));
251 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
252 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
253 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
254 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
255 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
256
257 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
258 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
259 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
260
261 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
262 static inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
263 static void yy_flex_free YY_PROTO(( void * ));
264
265 #define yy_new_buffer yy_create_buffer
266
267 #define yy_set_interactive(is_interactive) \
268         { \
269         if ( ! yy_current_buffer ) \
270                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
271         yy_current_buffer->yy_is_interactive = is_interactive; \
272         }
273
274 #define yy_set_bol(at_bol) \
275         { \
276         if ( ! yy_current_buffer ) \
277                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
278         yy_current_buffer->yy_at_bol = at_bol; \
279         }
280
281 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
282
283
284 #define YY_USES_REJECT
285
286 #define yywrap() 1
287 #define YY_SKIP_YYWRAP
288 typedef unsigned char YY_CHAR;
289 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
290 typedef int yy_state_type;
291 extern int yylineno;
292 int yylineno = 1;
293 extern char *yytext;
294 #define yytext_ptr yytext
295
296 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
297 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
298 static int yy_get_next_buffer YY_PROTO(( void ));
299 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
300
301 /* Done after the current pattern has been matched and before the
302  * corresponding action - sets up yytext.
303  */
304 #define YY_DO_BEFORE_ACTION \
305         yytext_ptr = yy_bp; \
306         yyleng = (int) (yy_cp - yy_bp); \
307         yy_hold_char = *yy_cp; \
308         *yy_cp = '\0'; \
309         yy_c_buf_p = yy_cp;
310
311 #define YY_NUM_RULES 58
312 #define YY_END_OF_BUFFER 59
313 static yyconst short int yy_acclist[113] =
314     {   0,
315        59,   57,   58,   56,   57,   58,   56,   58,   57,   58,
316        57,   58,   57,   58,    8,   57,   58,   52,   57,   58,
317         1,   57,   58,   57,   58,   57,   58,   57,   58,   57,
318        58,   57,   58,   57,   58,   57,   58,   57,   58,   57,
319        58,   57,   58,   57,   58,   57,   58,   57,   58,   57,
320        58,   57,   58,   57,   58,   57,   58,   50,   49,   54,
321        53,   52,    1,    9,   40,   51,   49,   55,   28,   31,
322         3,   16,   30,   24,   25,   26,   32,   39,   29,   11,
323        27,   44,   45,   18,    4,   22,   17,   10,    2,    5,
324        20,   23,   12,   34,   38,   36,   37,   35,   33,   14,
325
326        46,   13,   19,   43,   21,   42,   41,   15,    6,   47,
327        48,    7
328     } ;
329
330 static yyconst short int yy_accept[199] =
331     {   0,
332         1,    1,    1,    2,    4,    7,    9,   11,   13,   15,
333        18,   21,   24,   26,   28,   30,   32,   34,   36,   38,
334        40,   42,   44,   46,   48,   50,   52,   54,   56,   58,
335        58,   58,   59,   60,   60,   61,   62,   63,   64,   64,
336        64,   65,   65,   65,   66,   66,   66,   66,   66,   66,
337        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
338        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
339        66,   66,   66,   66,   66,   66,   66,   66,   67,   68,
340        69,   70,   70,   70,   70,   70,   70,   71,   71,   72,
341        72,   72,   72,   72,   72,   73,   73,   73,   73,   73,
342
343        74,   75,   76,   77,   77,   78,   79,   79,   79,   79,
344        79,   80,   80,   80,   80,   80,   80,   80,   80,   80,
345        80,   80,   81,   82,   82,   82,   82,   82,   83,   83,
346        83,   83,   84,   85,   85,   85,   85,   85,   85,   85,
347        85,   85,   85,   85,   86,   87,   87,   88,   88,   88,
348        89,   89,   90,   90,   90,   91,   92,   92,   92,   93,
349        93,   93,   94,   95,   96,   97,   98,   99,  100,  101,
350       102,  102,  103,  104,  104,  105,  105,  106,  106,  106,
351       107,  107,  108,  109,  110,  110,  110,  110,  111,  111,
352       112,  112,  112,  112,  112,  112,  113,  113
353
354     } ;
355
356 static yyconst int yy_ec[256] =
357     {   0,
358         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
359         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
360         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
361         1,    2,    1,    4,    1,    5,    6,    1,    1,    1,
362         1,    1,    1,    1,    7,    5,    1,    8,    8,    8,
363         8,    8,    8,    8,    8,    8,    8,    9,   10,    1,
364         1,    1,    1,    1,    5,    5,    5,    5,    5,    5,
365         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
366         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
367         1,    1,    1,    1,    5,    1,   11,   12,   13,   14,
368
369        15,   16,   17,   18,   19,    5,    5,   20,   21,   22,
370        23,   24,   25,   26,   27,   28,   29,   30,   31,    5,
371        32,    5,    1,    1,    1,    1,    1,    1,    1,    1,
372         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
373         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
374         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
375         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
376         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
377         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
378         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
379
380         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
381         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
382         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
384         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
385         1,    1,    1,    1,    1
386     } ;
387
388 static yyconst int yy_meta[33] =
389     {   0,
390         1,    1,    2,    3,    4,    1,    5,    4,    6,    1,
391         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
392         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
393         4,    4
394     } ;
395
396 static yyconst short int yy_base[203] =
397     {   0,
398         0,    0,  389,  390,  390,  390,    0,  379,   26,  379,
399        27,    0,   28,   40,   29,   35,   34,   42,   30,   38,
400        56,   60,   55,   63,   65,   84,   68,  107,   52,  382,
401       376,  390,    0,  376,  375,  374,   74,    0,   32,   64,
402       372,   78,   67,  371,   77,   92,   76,   79,   89,   98,
403       100,   95,  102,  105,  108,  112,  111,  119,  122,  123,
404       116,  126,  128,  129,  132,  134,  137,  138,  139,  140,
405       143,  144,  145,  149,  146,  156,  154,  390,    0,  371,
406       369,  157,  166,  158,  161,  167,  368,  170,  367,  174,
407       175,  179,  180,  182,  366,  183,  181,  188,  184,  365,
408
409       364,  363,  362,  190,  361,  360,  191,  211,  198,  199,
410       359,  194,  200,  201,  202,  204,  205,  212,  203,  225,
411       214,  358,  357,  228,  209,  231,  232,  356,  233,  234,
412       235,  355,  354,  236,  238,  239,  241,  247,  249,  252,
413       242,  254,  259,  353,  352,  256,  351,  264,  265,  350,
414       267,  349,  270,  271,  348,  347,  273,  274,  346,  276,
415       275,  345,  344,  343,  342,  341,  340,  335,  330,  325,
416       283,  320,  319,  278,  317,  284,  316,  285,  288,  315,
417       289,  313,  311,  310,  293,  291,  301,  308,  295,  244,
418       303,  299,  302,  307,  309,   82,  390,  331,  334,  337,
419
420       342,   53
421     } ;
422
423 static yyconst short int yy_def[203] =
424     {   0,
425       197,    1,  197,  197,  197,  197,  198,  199,  200,  197,
426       199,  201,  199,  199,  199,  199,  199,  199,  199,  199,
427       199,  199,  199,  199,  199,  199,  199,  199,  199,  198,
428       199,  197,  202,  197,  197,  197,  199,  201,  199,  199,
429       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
430       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
431       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
432       199,  199,  199,  199,  199,  199,  199,  197,  202,  197,
433       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
434       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
435
436       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
437       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
438       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
439       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
440       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
441       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
442       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
443       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
444       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
445       199,  199,  199,  199,  199,  199,    0,  197,  197,  197,
446
447       197,  197
448     } ;
449
450 static yyconst short int yy_nxt[423] =
451     {   0,
452         4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
453        13,   14,   15,   16,   17,   18,   19,    8,   20,   21,
454        22,   23,    8,   24,    8,   25,   26,   27,   28,   29,
455         8,    8,   34,   35,   37,   32,   32,   32,   32,   45,
456        32,   39,   32,   32,   53,   81,   32,   40,   32,   46,
457        32,   41,   50,   47,   42,   49,   79,   48,   54,   55,
458        32,   51,   43,   32,   32,   44,   56,   52,   32,   60,
459        58,   32,   32,   32,   77,   32,   32,   61,   57,   64,
460        62,   37,   32,   82,   32,   32,   32,   32,   59,   84,
461        32,   63,   32,   71,   83,   65,   85,   32,   66,   72,
462
463        32,   67,   89,   32,   86,   87,   32,   88,   32,   92,
464        32,   68,   69,   32,   70,   32,   32,   90,   73,   32,
465        32,   97,   91,   96,   32,   74,   75,   32,   94,   93,
466        32,   32,   98,   76,   32,   95,   32,   32,   99,  101,
467        32,  100,   32,  102,  103,   32,   32,   32,   32,  105,
468       111,   32,   32,   32,   32,  104,  106,   32,  112,  109,
469       110,  108,   32,  107,   32,   32,   32,  114,  117,   32,
470       116,  113,  119,  118,   32,   32,  115,  122,   32,  120,
471       123,  125,   32,   32,  121,  127,  124,   32,   32,   32,
472        32,   32,   32,  128,  132,  129,   32,  131,   32,   32,
473
474       126,  130,   32,  134,  133,  135,   32,   32,   32,   32,
475        32,   32,   32,   32,  144,  145,  150,   32,  136,   32,
476        32,  143,   32,  141,  142,  137,  148,  138,  154,  146,
477       139,  147,  140,   32,  149,  152,   32,  151,  153,   32,
478        32,   32,   32,   32,   32,  155,   32,   32,  158,   32,
479        32,  157,   32,  162,  159,   32,  161,   32,  160,  156,
480        32,  164,   32,  166,   32,  163,  168,   32,  170,  169,
481       172,  171,   32,   32,  165,   32,  167,  175,   32,   32,
482       173,   32,   32,   32,   32,  177,   32,  178,  180,  181,
483       174,   32,   32,   32,  179,  176,   32,   32,  184,   32,
484
485       182,   32,  186,   32,  185,  183,  188,   32,  187,   32,
486        32,   32,  189,  192,  190,   32,   32,   32,   32,   32,
487       194,   32,  191,   32,   32,   32,  193,   32,   32,  195,
488       196,   30,   30,   32,   30,   30,   30,   31,   32,   31,
489        33,   33,   38,   32,   38,   38,   38,   38,   32,   32,
490        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
491        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
492        32,   32,   32,   32,   32,   32,   32,   32,   80,   32,
493        32,   36,   35,   80,   32,   78,   36,   32,  197,    3,
494       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
495
496       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
497       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
498       197,  197
499     } ;
500
501 static yyconst short int yy_chk[423] =
502     {   0,
503         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
504         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
505         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
506         1,    1,    9,    9,   11,   11,   13,   15,   19,   15,
507        39,   13,   17,   16,   19,   39,   20,   13,   14,   16,
508        18,   14,   18,   16,   14,   17,  202,   16,   20,   20,
509        29,   18,   14,   23,   21,   14,   21,   18,   22,   23,
510        22,   24,   40,   25,   29,   43,   27,   23,   21,   25,
511        24,   37,   37,   40,   47,   45,   42,   48,   22,   43,
512       196,   24,   26,   27,   42,   26,   45,   49,   26,   27,
513
514        46,   26,   49,   52,   46,   47,   50,   48,   51,   52,
515        53,   26,   26,   54,   26,   28,   55,   50,   28,   57,
516        56,   57,   51,   56,   61,   28,   28,   58,   54,   53,
517        59,   60,   57,   28,   62,   55,   63,   64,   58,   60,
518        65,   59,   66,   61,   62,   67,   68,   69,   70,   64,
519        69,   71,   72,   73,   75,   63,   64,   74,   70,   67,
520        68,   66,   77,   65,   76,   82,   84,   72,   75,   85,
521        74,   71,   77,   76,   83,   86,   73,   84,   88,   82,
522        85,   88,   90,   91,   83,   91,   86,   92,   93,   97,
523        94,   96,   99,   92,   97,   93,   98,   96,  104,  107,
524
525        90,   94,  112,   99,   98,  104,  109,  110,  113,  114,
526       115,  119,  116,  117,  113,  114,  119,  125,  107,  108,
527       118,  112,  121,  109,  110,  108,  117,  108,  125,  115,
528       108,  116,  108,  120,  118,  121,  124,  120,  124,  126,
529       127,  129,  130,  131,  134,  126,  135,  136,  130,  137,
530       141,  129,  190,  136,  131,  138,  135,  139,  134,  127,
531       140,  138,  142,  139,  146,  137,  140,  143,  142,  141,
532       146,  143,  148,  149,  138,  151,  139,  151,  153,  154,
533       148,  157,  158,  161,  160,  154,  174,  157,  160,  161,
534       149,  171,  176,  178,  158,  153,  179,  181,  176,  186,
535
536       171,  185,  179,  189,  178,  174,  185,  192,  181,  187,
537       193,  191,  186,  191,  187,  194,  188,  195,  184,  183,
538       193,  182,  189,  180,  177,  175,  192,  173,  172,  194,
539       195,  198,  198,  170,  198,  198,  198,  199,  169,  199,
540       200,  200,  201,  168,  201,  201,  201,  201,  167,  166,
541       165,  164,  163,  162,  159,  156,  155,  152,  150,  147,
542       145,  144,  133,  132,  128,  123,  122,  111,  106,  105,
543       103,  102,  101,  100,   95,   89,   87,   81,   80,   44,
544        41,   36,   35,   34,   31,   30,   10,    8,    3,  197,
545       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
546
547       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
548       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
549       197,  197
550     } ;
551
552 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
553 static char *yy_full_match;
554 static int yy_lp;
555 #define REJECT \
556 { \
557 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
558 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
559 ++yy_lp; \
560 goto find_rule; \
561 }
562 #define yymore() yymore_used_but_not_detected
563 #define YY_MORE_ADJ 0
564 #define YY_RESTORE_YY_MORE_OFFSET
565 char *yytext;
566 #line 1 "Lexer.l"
567 #define INITIAL 0
568 /*===-- Lexer.l - Scanner for llvm assembly files ----------------*- C++ -*--=//
569 //
570 //  This file implements the flex scanner for LLVM assembly languages files.
571 //
572 //===------------------------------------------------------------------------=*/
573 #define YY_NEVER_INTERACTIVE 1
574 #line 21 "Lexer.l"
575 #include "ParserInternals.h"
576 #include "llvm/BasicBlock.h"
577 #include "llvm/Method.h"
578 #include "llvm/Module.h"
579 #include <list>
580 #include "llvmAsmParser.h"
581
582 #define RET_TOK(type, Enum, sym) \
583   llvmAsmlval.type = Instruction::Enum; return sym
584
585
586 // TODO: All of the static identifiers are figured out by the lexer, 
587 // these should be hashed.
588
589
590 // atoull - Convert an ascii string of decimal digits into the unsigned long
591 // long representation... this does not have to do input error checking, 
592 // because we know that the input will be matched by a suitable regex...
593 //
594 uint64_t atoull(const char *Buffer) {
595   uint64_t Result = 0;
596   for (; *Buffer; Buffer++) {
597     uint64_t OldRes = Result;
598     Result *= 10;
599     Result += *Buffer-'0';
600     if (Result < OldRes) {  // Uh, oh, overflow detected!!!
601       ThrowException("constant bigger than 64 bits detected!");
602     }
603   }
604   return Result;
605 }
606
607
608 #define YY_NEVER_INTERACTIVE 1
609 /* Comments start with a ; and go till end of line */
610 /* Variable(Def) identifiers start with a % sign */
611 /* Label identifiers end with a colon */
612 /* Quoted names can contain any character except " and \ */
613 /* [PN]Integer: match positive and negative literal integer values that
614  * are preceeded by a '%' character.  These represent unnamed variable slots.
615  */
616 /* E[PN]Integer: match positive and negative literal integer values */
617 #line 618 "Lexer.cpp"
618
619 /* Macros after this point can all be overridden by user definitions in
620  * section 1.
621  */
622
623 #ifndef YY_SKIP_YYWRAP
624 #ifdef __cplusplus
625 extern "C" int yywrap YY_PROTO(( void ));
626 #else
627 extern int yywrap YY_PROTO(( void ));
628 #endif
629 #endif
630
631 #ifndef YY_NO_UNPUT
632 static inline void yyunput YY_PROTO(( int c, char *buf_ptr ));
633 #endif
634
635 #ifndef yytext_ptr
636 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
637 #endif
638
639 #ifdef YY_NEED_STRLEN
640 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
641 #endif
642
643 #ifndef YY_NO_INPUT
644 #ifdef __cplusplus
645 static int yyinput YY_PROTO(( void ));
646 #else
647 static int input YY_PROTO(( void ));
648 #endif
649 #endif
650
651 #if YY_STACK_USED
652 static int yy_start_stack_ptr = 0;
653 static int yy_start_stack_depth = 0;
654 static int *yy_start_stack = 0;
655 #ifndef YY_NO_PUSH_STATE
656 static void yy_push_state YY_PROTO(( int new_state ));
657 #endif
658 #ifndef YY_NO_POP_STATE
659 static void yy_pop_state YY_PROTO(( void ));
660 #endif
661 #ifndef YY_NO_TOP_STATE
662 static int yy_top_state YY_PROTO(( void ));
663 #endif
664
665 #else
666 #define YY_NO_PUSH_STATE 1
667 #define YY_NO_POP_STATE 1
668 #define YY_NO_TOP_STATE 1
669 #endif
670
671 #ifdef YY_MALLOC_DECL
672 YY_MALLOC_DECL
673 #else
674 #if __STDC__
675 #ifndef __cplusplus
676 #include <stdlib.h>
677 #endif
678 #else
679 /* Just try to get by without declaring the routines.  This will fail
680  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
681  * or sizeof(void*) != sizeof(int).
682  */
683 #endif
684 #endif
685
686 /* Amount of stuff to slurp up with each read. */
687 #ifndef YY_READ_BUF_SIZE
688 #define YY_READ_BUF_SIZE 8192
689 #endif
690
691 /* Copy whatever the last rule matched to the standard output. */
692
693 #ifndef ECHO
694 /* This used to be an fputs(), but since the string might contain NUL's,
695  * we now use fwrite().
696  */
697 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
698 #endif
699
700 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
701  * is returned in "result".
702  */
703 #ifndef YY_INPUT
704 #define YY_INPUT(buf,result,max_size) \
705         if ( yy_current_buffer->yy_is_interactive ) \
706                 { \
707                 int c = '*', n; \
708                 for ( n = 0; n < max_size && \
709                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
710                         buf[n] = (char) c; \
711                 if ( c == '\n' ) \
712                         buf[n++] = (char) c; \
713                 if ( c == EOF && ferror( yyin ) ) \
714                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
715                 result = n; \
716                 } \
717         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
718                   && ferror( yyin ) ) \
719                 YY_FATAL_ERROR( "input in flex scanner failed" );
720 #endif
721
722 /* No semi-colon after return; correct usage is to write "yyterminate();" -
723  * we don't want an extra ';' after the "return" because that will cause
724  * some compilers to complain about unreachable statements.
725  */
726 #ifndef yyterminate
727 #define yyterminate() return YY_NULL
728 #endif
729
730 /* Number of entries by which start-condition stack grows. */
731 #ifndef YY_START_STACK_INCR
732 #define YY_START_STACK_INCR 25
733 #endif
734
735 /* Report a fatal error. */
736 #ifndef YY_FATAL_ERROR
737 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
738 #endif
739
740 /* Default declaration of generated scanner - a define so the user can
741  * easily add parameters.
742  */
743 #ifndef YY_DECL
744 #define YY_DECL int yylex YY_PROTO(( void ))
745 #endif
746
747 /* Code executed at the beginning of each rule, after yytext and yyleng
748  * have been set up.
749  */
750 #ifndef YY_USER_ACTION
751 #define YY_USER_ACTION
752 #endif
753
754 /* Code executed at the end of each rule. */
755 #ifndef YY_BREAK
756 #define YY_BREAK break;
757 #endif
758
759 #define YY_RULE_SETUP \
760         YY_USER_ACTION
761
762 YY_DECL
763         {
764         register yy_state_type yy_current_state;
765         register char *yy_cp, *yy_bp;
766         register int yy_act;
767
768 #line 83 "Lexer.l"
769
770
771 #line 772 "Lexer.cpp"
772
773         if ( yy_init )
774                 {
775                 yy_init = 0;
776
777 #ifdef YY_USER_INIT
778                 YY_USER_INIT;
779 #endif
780
781                 if ( ! yy_start )
782                         yy_start = 1;   /* first start state */
783
784                 if ( ! yyin )
785                         yyin = stdin;
786
787                 if ( ! yyout )
788                         yyout = stdout;
789
790                 if ( ! yy_current_buffer )
791                         yy_current_buffer =
792                                 yy_create_buffer( yyin, YY_BUF_SIZE );
793
794                 yy_load_buffer_state();
795                 }
796
797         while ( 1 )             /* loops until end-of-file is reached */
798                 {
799                 yy_cp = yy_c_buf_p;
800
801                 /* Support of yytext. */
802                 *yy_cp = yy_hold_char;
803
804                 /* yy_bp points to the position in yy_ch_buf of the start of
805                  * the current run.
806                  */
807                 yy_bp = yy_cp;
808
809                 yy_current_state = yy_start;
810                 yy_state_ptr = yy_state_buf;
811                 *yy_state_ptr++ = yy_current_state;
812 yy_match:
813                 do
814                         {
815                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
816                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
817                                 {
818                                 yy_current_state = (int) yy_def[yy_current_state];
819                                 if ( yy_current_state >= 198 )
820                                         yy_c = yy_meta[(unsigned int) yy_c];
821                                 }
822                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
823                         *yy_state_ptr++ = yy_current_state;
824                         ++yy_cp;
825                         }
826                 while ( yy_current_state != 197 );
827
828 yy_find_action:
829                 yy_current_state = *--yy_state_ptr;
830                 yy_lp = yy_accept[yy_current_state];
831                 for ( ; ; ) /* until we find what rule we matched */
832                         {
833                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
834                                 {
835                                 yy_act = yy_acclist[yy_lp];
836                                         {
837                                         yy_full_match = yy_cp;
838                                         break;
839                                         }
840                                 }
841                         --yy_cp;
842                         yy_current_state = *--yy_state_ptr;
843                         yy_lp = yy_accept[yy_current_state];
844                         }
845
846                 YY_DO_BEFORE_ACTION;
847
848                 if ( yy_act != YY_END_OF_BUFFER )
849                         {
850                         int yyl;
851                         for ( yyl = 0; yyl < yyleng; ++yyl )
852                                 if ( yytext[yyl] == '\n' )
853                                         ++yylineno;
854                         }
855
856 do_action:      /* This label is used only to access EOF actions. */
857
858
859                 switch ( yy_act )
860         { /* beginning of action switch */
861 case 1:
862 YY_RULE_SETUP
863 #line 85 "Lexer.l"
864 { /* Ignore comments for now */ }
865         YY_BREAK
866 case 2:
867 YY_RULE_SETUP
868 #line 87 "Lexer.l"
869 { return BEGINTOK; }
870         YY_BREAK
871 case 3:
872 YY_RULE_SETUP
873 #line 88 "Lexer.l"
874 { return END; }
875         YY_BREAK
876 case 4:
877 YY_RULE_SETUP
878 #line 89 "Lexer.l"
879 { return TRUE;  }
880         YY_BREAK
881 case 5:
882 YY_RULE_SETUP
883 #line 90 "Lexer.l"
884 { return FALSE; }
885         YY_BREAK
886 case 6:
887 YY_RULE_SETUP
888 #line 91 "Lexer.l"
889 { return DECLARE; }
890         YY_BREAK
891 case 7:
892 YY_RULE_SETUP
893 #line 92 "Lexer.l"
894 { return IMPLEMENTATION; }
895         YY_BREAK
896 case 8:
897 YY_RULE_SETUP
898 #line 94 "Lexer.l"
899 { cerr << "deprecated argument '-' used!\n"; return '-'; }
900         YY_BREAK
901 case 9:
902 YY_RULE_SETUP
903 #line 95 "Lexer.l"
904 { cerr << "deprecated type 'bb' used!\n"; llvmAsmlval.TypeVal = Type::LabelTy; return LABEL;}
905         YY_BREAK
906 case 10:
907 YY_RULE_SETUP
908 #line 97 "Lexer.l"
909 { llvmAsmlval.TypeVal = Type::VoidTy  ; return VOID;   }
910         YY_BREAK
911 case 11:
912 YY_RULE_SETUP
913 #line 98 "Lexer.l"
914 { llvmAsmlval.TypeVal = Type::BoolTy  ; return BOOL;   }
915         YY_BREAK
916 case 12:
917 YY_RULE_SETUP
918 #line 99 "Lexer.l"
919 { llvmAsmlval.TypeVal = Type::SByteTy ; return SBYTE;  }
920         YY_BREAK
921 case 13:
922 YY_RULE_SETUP
923 #line 100 "Lexer.l"
924 { llvmAsmlval.TypeVal = Type::UByteTy ; return UBYTE;  }
925         YY_BREAK
926 case 14:
927 YY_RULE_SETUP
928 #line 101 "Lexer.l"
929 { llvmAsmlval.TypeVal = Type::ShortTy ; return SHORT;  }
930         YY_BREAK
931 case 15:
932 YY_RULE_SETUP
933 #line 102 "Lexer.l"
934 { llvmAsmlval.TypeVal = Type::UShortTy; return USHORT; }
935         YY_BREAK
936 case 16:
937 YY_RULE_SETUP
938 #line 103 "Lexer.l"
939 { llvmAsmlval.TypeVal = Type::IntTy   ; return INT;    }
940         YY_BREAK
941 case 17:
942 YY_RULE_SETUP
943 #line 104 "Lexer.l"
944 { llvmAsmlval.TypeVal = Type::UIntTy  ; return UINT;   }
945         YY_BREAK
946 case 18:
947 YY_RULE_SETUP
948 #line 105 "Lexer.l"
949 { llvmAsmlval.TypeVal = Type::LongTy  ; return LONG;   }
950         YY_BREAK
951 case 19:
952 YY_RULE_SETUP
953 #line 106 "Lexer.l"
954 { llvmAsmlval.TypeVal = Type::ULongTy ; return ULONG;  }
955         YY_BREAK
956 case 20:
957 YY_RULE_SETUP
958 #line 107 "Lexer.l"
959 { llvmAsmlval.TypeVal = Type::FloatTy ; return FLOAT;  }
960         YY_BREAK
961 case 21:
962 YY_RULE_SETUP
963 #line 108 "Lexer.l"
964 { llvmAsmlval.TypeVal = Type::DoubleTy; return DOUBLE; }
965         YY_BREAK
966 case 22:
967 YY_RULE_SETUP
968 #line 110 "Lexer.l"
969 { llvmAsmlval.TypeVal = Type::TypeTy  ; return TYPE;   }
970         YY_BREAK
971 case 23:
972 YY_RULE_SETUP
973 #line 112 "Lexer.l"
974 { llvmAsmlval.TypeVal = Type::LabelTy ; return LABEL;  }
975         YY_BREAK
976 case 24:
977 YY_RULE_SETUP
978 #line 114 "Lexer.l"
979 { RET_TOK(UnaryOpVal, Neg, NEG); }
980         YY_BREAK
981 case 25:
982 YY_RULE_SETUP
983 #line 115 "Lexer.l"
984 { RET_TOK(UnaryOpVal, Not, NOT); }
985         YY_BREAK
986 case 26:
987 YY_RULE_SETUP
988 #line 117 "Lexer.l"
989 { return PHI; }
990         YY_BREAK
991 case 27:
992 YY_RULE_SETUP
993 #line 118 "Lexer.l"
994 { return CALL; }
995         YY_BREAK
996 case 28:
997 YY_RULE_SETUP
998 #line 119 "Lexer.l"
999 { RET_TOK(BinaryOpVal, Add, ADD); }
1000         YY_BREAK
1001 case 29:
1002 YY_RULE_SETUP
1003 #line 120 "Lexer.l"
1004 { RET_TOK(BinaryOpVal, Sub, SUB); }
1005         YY_BREAK
1006 case 30:
1007 YY_RULE_SETUP
1008 #line 121 "Lexer.l"
1009 { RET_TOK(BinaryOpVal, Mul, MUL); }
1010         YY_BREAK
1011 case 31:
1012 YY_RULE_SETUP
1013 #line 122 "Lexer.l"
1014 { RET_TOK(BinaryOpVal, Div, DIV); }
1015         YY_BREAK
1016 case 32:
1017 YY_RULE_SETUP
1018 #line 123 "Lexer.l"
1019 { RET_TOK(BinaryOpVal, Rem, REM); }
1020         YY_BREAK
1021 case 33:
1022 YY_RULE_SETUP
1023 #line 124 "Lexer.l"
1024 { RET_TOK(BinaryOpVal, SetNE, SETNE); }
1025         YY_BREAK
1026 case 34:
1027 YY_RULE_SETUP
1028 #line 125 "Lexer.l"
1029 { RET_TOK(BinaryOpVal, SetEQ, SETEQ); }
1030         YY_BREAK
1031 case 35:
1032 YY_RULE_SETUP
1033 #line 126 "Lexer.l"
1034 { RET_TOK(BinaryOpVal, SetLT, SETLT); }
1035         YY_BREAK
1036 case 36:
1037 YY_RULE_SETUP
1038 #line 127 "Lexer.l"
1039 { RET_TOK(BinaryOpVal, SetGT, SETGT); }
1040         YY_BREAK
1041 case 37:
1042 YY_RULE_SETUP
1043 #line 128 "Lexer.l"
1044 { RET_TOK(BinaryOpVal, SetLE, SETLE); }
1045         YY_BREAK
1046 case 38:
1047 YY_RULE_SETUP
1048 #line 129 "Lexer.l"
1049 { RET_TOK(BinaryOpVal, SetGE, SETGE); }
1050         YY_BREAK
1051 case 39:
1052 YY_RULE_SETUP
1053 #line 131 "Lexer.l"
1054 { RET_TOK(TermOpVal, Ret, RET); }
1055         YY_BREAK
1056 case 40:
1057 YY_RULE_SETUP
1058 #line 132 "Lexer.l"
1059 { RET_TOK(TermOpVal, Br, BR); }
1060         YY_BREAK
1061 case 41:
1062 YY_RULE_SETUP
1063 #line 133 "Lexer.l"
1064 { RET_TOK(TermOpVal, Switch, SWITCH); }
1065         YY_BREAK
1066 case 42:
1067 YY_RULE_SETUP
1068 #line 136 "Lexer.l"
1069 { RET_TOK(MemOpVal, Malloc, MALLOC); }
1070         YY_BREAK
1071 case 43:
1072 YY_RULE_SETUP
1073 #line 137 "Lexer.l"
1074 { RET_TOK(MemOpVal, Alloca, ALLOCA); }
1075         YY_BREAK
1076 case 44:
1077 YY_RULE_SETUP
1078 #line 138 "Lexer.l"
1079 { RET_TOK(MemOpVal, Free, FREE); }
1080         YY_BREAK
1081 case 45:
1082 YY_RULE_SETUP
1083 #line 139 "Lexer.l"
1084 { RET_TOK(MemOpVal, Load, LOAD); }
1085         YY_BREAK
1086 case 46:
1087 YY_RULE_SETUP
1088 #line 140 "Lexer.l"
1089 { RET_TOK(MemOpVal, Store, STORE); }
1090         YY_BREAK
1091 case 47:
1092 YY_RULE_SETUP
1093 #line 141 "Lexer.l"
1094 { RET_TOK(MemOpVal, GetField, GETFIELD); }
1095         YY_BREAK
1096 case 48:
1097 YY_RULE_SETUP
1098 #line 142 "Lexer.l"
1099 { RET_TOK(MemOpVal, PutField, PUTFIELD); }
1100         YY_BREAK
1101 case 49:
1102 YY_RULE_SETUP
1103 #line 145 "Lexer.l"
1104 { llvmAsmlval.StrVal = strdup(yytext+1); return VAR_ID; }
1105         YY_BREAK
1106 case 50:
1107 YY_RULE_SETUP
1108 #line 146 "Lexer.l"
1109
1110                   yytext[strlen(yytext)-1] = 0;  // nuke colon
1111                   llvmAsmlval.StrVal = strdup(yytext); 
1112                   return LABELSTR; 
1113                 }
1114         YY_BREAK
1115 case 51:
1116 YY_RULE_SETUP
1117 #line 152 "Lexer.l"
1118
1119                   yytext[strlen(yytext)-1] = 0;           // nuke end quote
1120                   llvmAsmlval.StrVal = strdup(yytext+1);  // Nuke start quote 
1121                   return STRINGCONSTANT;
1122                 }
1123         YY_BREAK
1124 case 52:
1125 YY_RULE_SETUP
1126 #line 159 "Lexer.l"
1127 { llvmAsmlval.UInt64Val = atoull(yytext); return EUINT64VAL; }
1128         YY_BREAK
1129 case 53:
1130 YY_RULE_SETUP
1131 #line 160 "Lexer.l"
1132
1133                   uint64_t Val = atoull(yytext+1);
1134                   // +1:  we have bigger negative range
1135                   if (Val > (uint64_t)INT64_MAX+1)
1136                     ThrowException("Constant too large for signed 64 bits!");
1137                   llvmAsmlval.SInt64Val = -Val; 
1138                   return ESINT64VAL; 
1139                 }
1140         YY_BREAK
1141 case 54:
1142 YY_RULE_SETUP
1143 #line 170 "Lexer.l"
1144 { llvmAsmlval.UIntVal = atoull(yytext+1); return UINTVAL; }
1145         YY_BREAK
1146 case 55:
1147 YY_RULE_SETUP
1148 #line 171 "Lexer.l"
1149 {
1150                   uint64_t Val = atoull(yytext+2);
1151                   // +1:  we have bigger negative range
1152                   if (Val > (uint64_t)INT32_MAX+1)
1153                     ThrowException("Constant too large for signed 32 bits!");
1154                   llvmAsmlval.SIntVal = -Val;
1155                   return SINTVAL;
1156                 }
1157         YY_BREAK
1158 case 56:
1159 YY_RULE_SETUP
1160 #line 181 "Lexer.l"
1161 { /* Ignore whitespace */ }
1162         YY_BREAK
1163 case 57:
1164 YY_RULE_SETUP
1165 #line 182 "Lexer.l"
1166 { /*printf("'%s'", yytext);*/ return yytext[0]; }
1167         YY_BREAK
1168 case 58:
1169 YY_RULE_SETUP
1170 #line 184 "Lexer.l"
1171 YY_FATAL_ERROR( "flex scanner jammed" );
1172         YY_BREAK
1173 #line 1175 "Lexer.cpp"
1174                         case YY_STATE_EOF(INITIAL):
1175                                 yyterminate();
1176
1177         case YY_END_OF_BUFFER:
1178                 {
1179                 /* Amount of text matched not including the EOB char. */
1180                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1181
1182                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1183                 *yy_cp = yy_hold_char;
1184                 YY_RESTORE_YY_MORE_OFFSET
1185
1186                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1187                         {
1188                         /* We're scanning a new file or input source.  It's
1189                          * possible that this happened because the user
1190                          * just pointed yyin at a new source and called
1191                          * yylex().  If so, then we have to assure
1192                          * consistency between yy_current_buffer and our
1193                          * globals.  Here is the right place to do so, because
1194                          * this is the first action (other than possibly a
1195                          * back-up) that will match for the new input source.
1196                          */
1197                         yy_n_chars = yy_current_buffer->yy_n_chars;
1198                         yy_current_buffer->yy_input_file = yyin;
1199                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1200                         }
1201
1202                 /* Note that here we test for yy_c_buf_p "<=" to the position
1203                  * of the first EOB in the buffer, since yy_c_buf_p will
1204                  * already have been incremented past the NUL character
1205                  * (since all states make transitions on EOB to the
1206                  * end-of-buffer state).  Contrast this with the test
1207                  * in input().
1208                  */
1209                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1210                         { /* This was really a NUL. */
1211                         yy_state_type yy_next_state;
1212
1213                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1214
1215                         yy_current_state = yy_get_previous_state();
1216
1217                         /* Okay, we're now positioned to make the NUL
1218                          * transition.  We couldn't have
1219                          * yy_get_previous_state() go ahead and do it
1220                          * for us because it doesn't know how to deal
1221                          * with the possibility of jamming (and we don't
1222                          * want to build jamming into it because then it
1223                          * will run more slowly).
1224                          */
1225
1226                         yy_next_state = yy_try_NUL_trans( yy_current_state );
1227
1228                         yy_bp = yytext_ptr + YY_MORE_ADJ;
1229
1230                         if ( yy_next_state )
1231                                 {
1232                                 /* Consume the NUL. */
1233                                 yy_cp = ++yy_c_buf_p;
1234                                 yy_current_state = yy_next_state;
1235                                 goto yy_match;
1236                                 }
1237
1238                         else
1239                                 {
1240                                 yy_cp = yy_c_buf_p;
1241                                 goto yy_find_action;
1242                                 }
1243                         }
1244
1245                 else switch ( yy_get_next_buffer() )
1246                         {
1247                         case EOB_ACT_END_OF_FILE:
1248                                 {
1249                                 yy_did_buffer_switch_on_eof = 0;
1250
1251                                 if ( yywrap() )
1252                                         {
1253                                         /* Note: because we've taken care in
1254                                          * yy_get_next_buffer() to have set up
1255                                          * yytext, we can now set up
1256                                          * yy_c_buf_p so that if some total
1257                                          * hoser (like flex itself) wants to
1258                                          * call the scanner after we return the
1259                                          * YY_NULL, it'll still work - another
1260                                          * YY_NULL will get returned.
1261                                          */
1262                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1263
1264                                         yy_act = YY_STATE_EOF(YY_START);
1265                                         goto do_action;
1266                                         }
1267
1268                                 else
1269                                         {
1270                                         if ( ! yy_did_buffer_switch_on_eof )
1271                                                 YY_NEW_FILE;
1272                                         }
1273                                 break;
1274                                 }
1275
1276                         case EOB_ACT_CONTINUE_SCAN:
1277                                 yy_c_buf_p =
1278                                         yytext_ptr + yy_amount_of_matched_text;
1279
1280                                 yy_current_state = yy_get_previous_state();
1281
1282                                 yy_cp = yy_c_buf_p;
1283                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1284                                 goto yy_match;
1285
1286                         case EOB_ACT_LAST_MATCH:
1287                                 yy_c_buf_p =
1288                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1289
1290                                 yy_current_state = yy_get_previous_state();
1291
1292                                 yy_cp = yy_c_buf_p;
1293                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1294                                 goto yy_find_action;
1295                         }
1296                 break;
1297                 }
1298
1299         default:
1300                 YY_FATAL_ERROR(
1301                         "fatal flex scanner internal error--no action found" );
1302         } /* end of action switch */
1303                 } /* end of scanning one token */
1304         } /* end of yylex */
1305
1306
1307 /* yy_get_next_buffer - try to read in a new buffer
1308  *
1309  * Returns a code representing an action:
1310  *      EOB_ACT_LAST_MATCH -
1311  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1312  *      EOB_ACT_END_OF_FILE - end of file
1313  */
1314
1315 static int yy_get_next_buffer()
1316         {
1317         register char *dest = yy_current_buffer->yy_ch_buf;
1318         register char *source = yytext_ptr;
1319         register int number_to_move, i;
1320         int ret_val;
1321
1322         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1323                 YY_FATAL_ERROR(
1324                 "fatal flex scanner internal error--end of buffer missed" );
1325
1326         if ( yy_current_buffer->yy_fill_buffer == 0 )
1327                 { /* Don't try to fill the buffer, so this is an EOF. */
1328                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1329                         {
1330                         /* We matched a single character, the EOB, so
1331                          * treat this as a final EOF.
1332                          */
1333                         return EOB_ACT_END_OF_FILE;
1334                         }
1335
1336                 else
1337                         {
1338                         /* We matched some text prior to the EOB, first
1339                          * process it.
1340                          */
1341                         return EOB_ACT_LAST_MATCH;
1342                         }
1343                 }
1344
1345         /* Try to read more data. */
1346
1347         /* First move last chars to start of buffer. */
1348         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1349
1350         for ( i = 0; i < number_to_move; ++i )
1351                 *(dest++) = *(source++);
1352
1353         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1354                 /* don't do the read, it's not guaranteed to return an EOF,
1355                  * just force an EOF
1356                  */
1357                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1358
1359         else
1360                 {
1361                 int num_to_read =
1362                         yy_current_buffer->yy_buf_size - number_to_move - 1;
1363
1364                 while ( num_to_read <= 0 )
1365                         { /* Not enough room in the buffer - grow it. */
1366 #ifdef YY_USES_REJECT
1367                         YY_FATAL_ERROR(
1368 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1369 #else
1370
1371                         /* just a shorter name for the current buffer */
1372                         YY_BUFFER_STATE b = yy_current_buffer;
1373
1374                         int yy_c_buf_p_offset =
1375                                 (int) (yy_c_buf_p - b->yy_ch_buf);
1376
1377                         if ( b->yy_is_our_buffer )
1378                                 {
1379                                 int new_size = b->yy_buf_size * 2;
1380
1381                                 if ( new_size <= 0 )
1382                                         b->yy_buf_size += b->yy_buf_size / 8;
1383                                 else
1384                                         b->yy_buf_size *= 2;
1385
1386                                 b->yy_ch_buf = (char *)
1387                                         /* Include room in for 2 EOB chars. */
1388                                         yy_flex_realloc( (void *) b->yy_ch_buf,
1389                                                          b->yy_buf_size + 2 );
1390                                 }
1391                         else
1392                                 /* Can't grow it, we don't own it. */
1393                                 b->yy_ch_buf = 0;
1394
1395                         if ( ! b->yy_ch_buf )
1396                                 YY_FATAL_ERROR(
1397                                 "fatal error - scanner input buffer overflow" );
1398
1399                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1400
1401                         num_to_read = yy_current_buffer->yy_buf_size -
1402                                                 number_to_move - 1;
1403 #endif
1404                         }
1405
1406                 if ( num_to_read > YY_READ_BUF_SIZE )
1407                         num_to_read = YY_READ_BUF_SIZE;
1408
1409                 /* Read in more data. */
1410                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1411                         yy_n_chars, num_to_read );
1412
1413                 yy_current_buffer->yy_n_chars = yy_n_chars;
1414                 }
1415
1416         if ( yy_n_chars == 0 )
1417                 {
1418                 if ( number_to_move == YY_MORE_ADJ )
1419                         {
1420                         ret_val = EOB_ACT_END_OF_FILE;
1421                         yyrestart( yyin );
1422                         }
1423
1424                 else
1425                         {
1426                         ret_val = EOB_ACT_LAST_MATCH;
1427                         yy_current_buffer->yy_buffer_status =
1428                                 YY_BUFFER_EOF_PENDING;
1429                         }
1430                 }
1431
1432         else
1433                 ret_val = EOB_ACT_CONTINUE_SCAN;
1434
1435         yy_n_chars += number_to_move;
1436         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1437         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1438
1439         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1440
1441         return ret_val;
1442         }
1443
1444
1445 /* yy_get_previous_state - get the state just before the EOB char was reached */
1446
1447 static yy_state_type yy_get_previous_state()
1448         {
1449         register yy_state_type yy_current_state;
1450         register char *yy_cp;
1451
1452         yy_current_state = yy_start;
1453         yy_state_ptr = yy_state_buf;
1454         *yy_state_ptr++ = yy_current_state;
1455
1456         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1457                 {
1458                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1459                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1460                         {
1461                         yy_current_state = (int) yy_def[yy_current_state];
1462                         if ( yy_current_state >= 198 )
1463                                 yy_c = yy_meta[(unsigned int) yy_c];
1464                         }
1465                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1466                 *yy_state_ptr++ = yy_current_state;
1467                 }
1468
1469         return yy_current_state;
1470         }
1471
1472
1473 /* yy_try_NUL_trans - try to make a transition on the NUL character
1474  *
1475  * synopsis
1476  *      next_state = yy_try_NUL_trans( current_state );
1477  */
1478
1479 #ifdef YY_USE_PROTOS
1480 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1481 #else
1482 static yy_state_type yy_try_NUL_trans( yy_current_state )
1483 yy_state_type yy_current_state;
1484 #endif
1485         {
1486         register int yy_is_jam;
1487
1488         register YY_CHAR yy_c = 1;
1489         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1490                 {
1491                 yy_current_state = (int) yy_def[yy_current_state];
1492                 if ( yy_current_state >= 198 )
1493                         yy_c = yy_meta[(unsigned int) yy_c];
1494                 }
1495         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1496         yy_is_jam = (yy_current_state == 197);
1497         if ( ! yy_is_jam )
1498                 *yy_state_ptr++ = yy_current_state;
1499
1500         return yy_is_jam ? 0 : yy_current_state;
1501         }
1502
1503
1504 #ifndef YY_NO_UNPUT
1505 #ifdef YY_USE_PROTOS
1506 static inline void yyunput( int c, register char *yy_bp )
1507 #else
1508 static inline void yyunput( c, yy_bp )
1509 int c;
1510 register char *yy_bp;
1511 #endif
1512         {
1513         register char *yy_cp = yy_c_buf_p;
1514
1515         /* undo effects of setting up yytext */
1516         *yy_cp = yy_hold_char;
1517
1518         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1519                 { /* need to shift things up to make room */
1520                 /* +2 for EOB chars. */
1521                 register int number_to_move = yy_n_chars + 2;
1522                 register char *dest = &yy_current_buffer->yy_ch_buf[
1523                                         yy_current_buffer->yy_buf_size + 2];
1524                 register char *source =
1525                                 &yy_current_buffer->yy_ch_buf[number_to_move];
1526
1527                 while ( source > yy_current_buffer->yy_ch_buf )
1528                         *--dest = *--source;
1529
1530                 yy_cp += (int) (dest - source);
1531                 yy_bp += (int) (dest - source);
1532                 yy_current_buffer->yy_n_chars =
1533                         yy_n_chars = yy_current_buffer->yy_buf_size;
1534
1535                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1536                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
1537                 }
1538
1539         *--yy_cp = (char) c;
1540
1541         if ( c == '\n' )
1542                 --yylineno;
1543
1544         yytext_ptr = yy_bp;
1545         yy_hold_char = *yy_cp;
1546         yy_c_buf_p = yy_cp;
1547         }
1548 #endif  /* ifndef YY_NO_UNPUT */
1549
1550
1551 #ifdef __cplusplus
1552 static int yyinput()
1553 #else
1554 static int input()
1555 #endif
1556         {
1557         int c;
1558
1559         *yy_c_buf_p = yy_hold_char;
1560
1561         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1562                 {
1563                 /* yy_c_buf_p now points to the character we want to return.
1564                  * If this occurs *before* the EOB characters, then it's a
1565                  * valid NUL; if not, then we've hit the end of the buffer.
1566                  */
1567                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1568                         /* This was really a NUL. */
1569                         *yy_c_buf_p = '\0';
1570
1571                 else
1572                         { /* need more input */
1573                         int offset = yy_c_buf_p - yytext_ptr;
1574                         ++yy_c_buf_p;
1575
1576                         switch ( yy_get_next_buffer() )
1577                                 {
1578                                 case EOB_ACT_LAST_MATCH:
1579                                         /* This happens because yy_g_n_b()
1580                                          * sees that we've accumulated a
1581                                          * token and flags that we need to
1582                                          * try matching the token before
1583                                          * proceeding.  But for input(),
1584                                          * there's no matching to consider.
1585                                          * So convert the EOB_ACT_LAST_MATCH
1586                                          * to EOB_ACT_END_OF_FILE.
1587                                          */
1588
1589                                         /* Reset buffer status. */
1590                                         yyrestart( yyin );
1591
1592                                         /* fall through */
1593
1594                                 case EOB_ACT_END_OF_FILE:
1595                                         {
1596                                         if ( yywrap() )
1597                                                 return EOF;
1598
1599                                         if ( ! yy_did_buffer_switch_on_eof )
1600                                                 YY_NEW_FILE;
1601 #ifdef __cplusplus
1602                                         return yyinput();
1603 #else
1604                                         return input();
1605 #endif
1606                                         }
1607
1608                                 case EOB_ACT_CONTINUE_SCAN:
1609                                         yy_c_buf_p = yytext_ptr + offset;
1610                                         break;
1611                                 }
1612                         }
1613                 }
1614
1615         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
1616         *yy_c_buf_p = '\0';     /* preserve yytext */
1617         yy_hold_char = *++yy_c_buf_p;
1618
1619         if ( c == '\n' )
1620                 ++yylineno;
1621
1622         return c;
1623         }
1624
1625
1626 #ifdef YY_USE_PROTOS
1627 void yyrestart( FILE *input_file )
1628 #else
1629 void yyrestart( input_file )
1630 FILE *input_file;
1631 #endif
1632         {
1633         if ( ! yy_current_buffer )
1634                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1635
1636         yy_init_buffer( yy_current_buffer, input_file );
1637         yy_load_buffer_state();
1638         }
1639
1640
1641 #ifdef YY_USE_PROTOS
1642 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1643 #else
1644 void yy_switch_to_buffer( new_buffer )
1645 YY_BUFFER_STATE new_buffer;
1646 #endif
1647         {
1648         if ( yy_current_buffer == new_buffer )
1649                 return;
1650
1651         if ( yy_current_buffer )
1652                 {
1653                 /* Flush out information for old buffer. */
1654                 *yy_c_buf_p = yy_hold_char;
1655                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1656                 yy_current_buffer->yy_n_chars = yy_n_chars;
1657                 }
1658
1659         yy_current_buffer = new_buffer;
1660         yy_load_buffer_state();
1661
1662         /* We don't actually know whether we did this switch during
1663          * EOF (yywrap()) processing, but the only time this flag
1664          * is looked at is after yywrap() is called, so it's safe
1665          * to go ahead and always set it.
1666          */
1667         yy_did_buffer_switch_on_eof = 1;
1668         }
1669
1670
1671 #ifdef YY_USE_PROTOS
1672 void yy_load_buffer_state( void )
1673 #else
1674 void yy_load_buffer_state()
1675 #endif
1676         {
1677         yy_n_chars = yy_current_buffer->yy_n_chars;
1678         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1679         yyin = yy_current_buffer->yy_input_file;
1680         yy_hold_char = *yy_c_buf_p;
1681         }
1682
1683
1684 #ifdef YY_USE_PROTOS
1685 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1686 #else
1687 YY_BUFFER_STATE yy_create_buffer( file, size )
1688 FILE *file;
1689 int size;
1690 #endif
1691         {
1692         YY_BUFFER_STATE b;
1693
1694         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1695         if ( ! b )
1696                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1697
1698         b->yy_buf_size = size;
1699
1700         /* yy_ch_buf has to be 2 characters longer than the size given because
1701          * we need to put in 2 end-of-buffer characters.
1702          */
1703         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1704         if ( ! b->yy_ch_buf )
1705                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1706
1707         b->yy_is_our_buffer = 1;
1708
1709         yy_init_buffer( b, file );
1710
1711         return b;
1712         }
1713
1714
1715 #ifdef YY_USE_PROTOS
1716 void yy_delete_buffer( YY_BUFFER_STATE b )
1717 #else
1718 void yy_delete_buffer( b )
1719 YY_BUFFER_STATE b;
1720 #endif
1721         {
1722         if ( ! b )
1723                 return;
1724
1725         if ( b == yy_current_buffer )
1726                 yy_current_buffer = (YY_BUFFER_STATE) 0;
1727
1728         if ( b->yy_is_our_buffer )
1729                 yy_flex_free( (void *) b->yy_ch_buf );
1730
1731         yy_flex_free( (void *) b );
1732         }
1733
1734
1735 #ifndef YY_ALWAYS_INTERACTIVE
1736 #ifndef YY_NEVER_INTERACTIVE
1737 extern int isatty YY_PROTO(( int ));
1738 #endif
1739 #endif
1740
1741 #ifdef YY_USE_PROTOS
1742 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1743 #else
1744 void yy_init_buffer( b, file )
1745 YY_BUFFER_STATE b;
1746 FILE *file;
1747 #endif
1748
1749
1750         {
1751         yy_flush_buffer( b );
1752
1753         b->yy_input_file = file;
1754         b->yy_fill_buffer = 1;
1755
1756 #if YY_ALWAYS_INTERACTIVE
1757         b->yy_is_interactive = 1;
1758 #else
1759 #if YY_NEVER_INTERACTIVE
1760         b->yy_is_interactive = 0;
1761 #else
1762         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1763 #endif
1764 #endif
1765         }
1766
1767
1768 #ifdef YY_USE_PROTOS
1769 void yy_flush_buffer( YY_BUFFER_STATE b )
1770 #else
1771 void yy_flush_buffer( b )
1772 YY_BUFFER_STATE b;
1773 #endif
1774
1775         {
1776         if ( ! b )
1777                 return;
1778
1779         b->yy_n_chars = 0;
1780
1781         /* We always need two end-of-buffer characters.  The first causes
1782          * a transition to the end-of-buffer state.  The second causes
1783          * a jam in that state.
1784          */
1785         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1786         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1787
1788         b->yy_buf_pos = &b->yy_ch_buf[0];
1789
1790         b->yy_at_bol = 1;
1791         b->yy_buffer_status = YY_BUFFER_NEW;
1792
1793         if ( b == yy_current_buffer )
1794                 yy_load_buffer_state();
1795         }
1796
1797
1798 #ifndef YY_NO_SCAN_BUFFER
1799 #ifdef YY_USE_PROTOS
1800 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
1801 #else
1802 YY_BUFFER_STATE yy_scan_buffer( base, size )
1803 char *base;
1804 yy_size_t size;
1805 #endif
1806         {
1807         YY_BUFFER_STATE b;
1808
1809         if ( size < 2 ||
1810              base[size-2] != YY_END_OF_BUFFER_CHAR ||
1811              base[size-1] != YY_END_OF_BUFFER_CHAR )
1812                 /* They forgot to leave room for the EOB's. */
1813                 return 0;
1814
1815         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1816         if ( ! b )
1817                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1818
1819         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
1820         b->yy_buf_pos = b->yy_ch_buf = base;
1821         b->yy_is_our_buffer = 0;
1822         b->yy_input_file = 0;
1823         b->yy_n_chars = b->yy_buf_size;
1824         b->yy_is_interactive = 0;
1825         b->yy_at_bol = 1;
1826         b->yy_fill_buffer = 0;
1827         b->yy_buffer_status = YY_BUFFER_NEW;
1828
1829         yy_switch_to_buffer( b );
1830
1831         return b;
1832         }
1833 #endif
1834
1835
1836 #ifndef YY_NO_SCAN_STRING
1837 #ifdef YY_USE_PROTOS
1838 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
1839 #else
1840 YY_BUFFER_STATE yy_scan_string( yy_str )
1841 yyconst char *yy_str;
1842 #endif
1843         {
1844         int len;
1845         for ( len = 0; yy_str[len]; ++len )
1846                 ;
1847
1848         return yy_scan_bytes( yy_str, len );
1849         }
1850 #endif
1851
1852
1853 #ifndef YY_NO_SCAN_BYTES
1854 #ifdef YY_USE_PROTOS
1855 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
1856 #else
1857 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
1858 yyconst char *bytes;
1859 int len;
1860 #endif
1861         {
1862         YY_BUFFER_STATE b;
1863         char *buf;
1864         yy_size_t n;
1865         int i;
1866
1867         /* Get memory for full buffer, including space for trailing EOB's. */
1868         n = len + 2;
1869         buf = (char *) yy_flex_alloc( n );
1870         if ( ! buf )
1871                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1872
1873         for ( i = 0; i < len; ++i )
1874                 buf[i] = bytes[i];
1875
1876         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
1877
1878         b = yy_scan_buffer( buf, n );
1879         if ( ! b )
1880                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1881
1882         /* It's okay to grow etc. this buffer, and we should throw it
1883          * away when we're done.
1884          */
1885         b->yy_is_our_buffer = 1;
1886
1887         return b;
1888         }
1889 #endif
1890
1891
1892 #ifndef YY_NO_PUSH_STATE
1893 #ifdef YY_USE_PROTOS
1894 static void yy_push_state( int new_state )
1895 #else
1896 static void yy_push_state( new_state )
1897 int new_state;
1898 #endif
1899         {
1900         if ( yy_start_stack_ptr >= yy_start_stack_depth )
1901                 {
1902                 yy_size_t new_size;
1903
1904                 yy_start_stack_depth += YY_START_STACK_INCR;
1905                 new_size = yy_start_stack_depth * sizeof( int );
1906
1907                 if ( ! yy_start_stack )
1908                         yy_start_stack = (int *) yy_flex_alloc( new_size );
1909
1910                 else
1911                         yy_start_stack = (int *) yy_flex_realloc(
1912                                         (void *) yy_start_stack, new_size );
1913
1914                 if ( ! yy_start_stack )
1915                         YY_FATAL_ERROR(
1916                         "out of memory expanding start-condition stack" );
1917                 }
1918
1919         yy_start_stack[yy_start_stack_ptr++] = YY_START;
1920
1921         BEGIN(new_state);
1922         }
1923 #endif
1924
1925
1926 #ifndef YY_NO_POP_STATE
1927 static void yy_pop_state()
1928         {
1929         if ( --yy_start_stack_ptr < 0 )
1930                 YY_FATAL_ERROR( "start-condition stack underflow" );
1931
1932         BEGIN(yy_start_stack[yy_start_stack_ptr]);
1933         }
1934 #endif
1935
1936
1937 #ifndef YY_NO_TOP_STATE
1938 static int yy_top_state()
1939         {
1940         return yy_start_stack[yy_start_stack_ptr - 1];
1941         }
1942 #endif
1943
1944 #ifndef YY_EXIT_FAILURE
1945 #define YY_EXIT_FAILURE 2
1946 #endif
1947
1948 #ifdef YY_USE_PROTOS
1949 static void yy_fatal_error( yyconst char msg[] )
1950 #else
1951 static void yy_fatal_error( msg )
1952 char msg[];
1953 #endif
1954         {
1955         (void) fprintf( stderr, "%s\n", msg );
1956         exit( YY_EXIT_FAILURE );
1957         }
1958
1959
1960
1961 /* Redefine yyless() so it works in section 3 code. */
1962
1963 #undef yyless
1964 #define yyless(n) \
1965         do \
1966                 { \
1967                 /* Undo effects of setting up yytext. */ \
1968                 yytext[yyleng] = yy_hold_char; \
1969                 yy_c_buf_p = yytext + n; \
1970                 yy_hold_char = *yy_c_buf_p; \
1971                 *yy_c_buf_p = '\0'; \
1972                 yyleng = n; \
1973                 } \
1974         while ( 0 )
1975
1976
1977 /* Internal utility routines. */
1978
1979 #ifndef yytext_ptr
1980 #ifdef YY_USE_PROTOS
1981 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
1982 #else
1983 static void yy_flex_strncpy( s1, s2, n )
1984 char *s1;
1985 yyconst char *s2;
1986 int n;
1987 #endif
1988         {
1989         register int i;
1990         for ( i = 0; i < n; ++i )
1991                 s1[i] = s2[i];
1992         }
1993 #endif
1994
1995 #ifdef YY_NEED_STRLEN
1996 #ifdef YY_USE_PROTOS
1997 static int yy_flex_strlen( yyconst char *s )
1998 #else
1999 static int yy_flex_strlen( s )
2000 yyconst char *s;
2001 #endif
2002         {
2003         register int n;
2004         for ( n = 0; s[n]; ++n )
2005                 ;
2006
2007         return n;
2008         }
2009 #endif
2010
2011
2012 #ifdef YY_USE_PROTOS
2013 static void *yy_flex_alloc( yy_size_t size )
2014 #else
2015 static void *yy_flex_alloc( size )
2016 yy_size_t size;
2017 #endif
2018         {
2019         return (void *) malloc( size );
2020         }
2021
2022 #ifdef YY_USE_PROTOS
2023 static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
2024 #else
2025 static inline void *yy_flex_realloc( ptr, size )
2026 void *ptr;
2027 yy_size_t size;
2028 #endif
2029         {
2030         /* The cast to (char *) in the following accommodates both
2031          * implementations that use char* generic pointers, and those
2032          * that use void* generic pointers.  It works with the latter
2033          * because both ANSI C and C++ allow castless assignment from
2034          * any pointer type to void*, and deal with argument conversions
2035          * as though doing an assignment.
2036          */
2037         return (void *) realloc( (char *) ptr, size );
2038         }
2039
2040 #ifdef YY_USE_PROTOS
2041 static void yy_flex_free( void *ptr )
2042 #else
2043 static void yy_flex_free( ptr )
2044 void *ptr;
2045 #endif
2046         {
2047         free( ptr );
2048         }
2049
2050 #if YY_MAIN
2051 int main()
2052         {
2053         yylex();
2054         return 0;
2055         }
2056 #endif
2057 #line 184 "Lexer.l"
2058