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