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