Merge branch 'mesa_7_6_branch'
[mesa.git] / src / mesa / shader / 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 "prog_instruction.h"
1046 #include "prog_statevars.h"
1047
1048 #include "symbol_table.h"
1049 #include "program_parser.h"
1050 #include "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_EXTRA_TYPE struct asm_parser_state *
1163 #line 1164 "lex.yy.c"
1164
1165 #define INITIAL 0
1166
1167 #ifndef YY_NO_UNISTD_H
1168 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1169 * down here because we want the user's section 1 to have been scanned first.
1170 * The user has a chance to override it with an option.
1171 */
1172 #include <unistd.h>
1173 #endif
1174
1175 #ifndef YY_EXTRA_TYPE
1176 #define YY_EXTRA_TYPE void *
1177 #endif
1178
1179 /* Holds the entire state of the reentrant scanner. */
1180 struct yyguts_t
1181 {
1182
1183 /* User-defined. Not touched by flex. */
1184 YY_EXTRA_TYPE yyextra_r;
1185
1186 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1187 FILE *yyin_r, *yyout_r;
1188 size_t yy_buffer_stack_top; /**< index of top of stack. */
1189 size_t yy_buffer_stack_max; /**< capacity of stack. */
1190 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1191 char yy_hold_char;
1192 int yy_n_chars;
1193 int yyleng_r;
1194 char *yy_c_buf_p;
1195 int yy_init;
1196 int yy_start;
1197 int yy_did_buffer_switch_on_eof;
1198 int yy_start_stack_ptr;
1199 int yy_start_stack_depth;
1200 int *yy_start_stack;
1201 yy_state_type yy_last_accepting_state;
1202 char* yy_last_accepting_cpos;
1203
1204 int yylineno_r;
1205 int yy_flex_debug_r;
1206
1207 char *yytext_r;
1208 int yy_more_flag;
1209 int yy_more_len;
1210
1211 YYSTYPE * yylval_r;
1212
1213 YYLTYPE * yylloc_r;
1214
1215 }; /* end struct yyguts_t */
1216
1217 static int yy_init_globals (yyscan_t yyscanner );
1218
1219 /* This must go here because YYSTYPE and YYLTYPE are included
1220 * from bison output in section 1.*/
1221 # define yylval yyg->yylval_r
1222
1223 # define yylloc yyg->yylloc_r
1224
1225 int yylex_init (yyscan_t* scanner);
1226
1227 int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
1228
1229 /* Accessor methods to globals.
1230 These are made visible to non-reentrant scanners for convenience. */
1231
1232 int yylex_destroy (yyscan_t yyscanner );
1233
1234 int yyget_debug (yyscan_t yyscanner );
1235
1236 void yyset_debug (int debug_flag ,yyscan_t yyscanner );
1237
1238 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
1239
1240 void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1241
1242 FILE *yyget_in (yyscan_t yyscanner );
1243
1244 void yyset_in (FILE * in_str ,yyscan_t yyscanner );
1245
1246 FILE *yyget_out (yyscan_t yyscanner );
1247
1248 void yyset_out (FILE * out_str ,yyscan_t yyscanner );
1249
1250 int yyget_leng (yyscan_t yyscanner );
1251
1252 char *yyget_text (yyscan_t yyscanner );
1253
1254 int yyget_lineno (yyscan_t yyscanner );
1255
1256 void yyset_lineno (int line_number ,yyscan_t yyscanner );
1257
1258 YYSTYPE * yyget_lval (yyscan_t yyscanner );
1259
1260 void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1261
1262 YYLTYPE *yyget_lloc (yyscan_t yyscanner );
1263
1264 void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1265
1266 /* Macros after this point can all be overridden by user definitions in
1267 * section 1.
1268 */
1269
1270 #ifndef YY_SKIP_YYWRAP
1271 #ifdef __cplusplus
1272 extern "C" int yywrap (yyscan_t yyscanner );
1273 #else
1274 extern int yywrap (yyscan_t yyscanner );
1275 #endif
1276 #endif
1277
1278 static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
1279
1280 #ifndef yytext_ptr
1281 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1282 #endif
1283
1284 #ifdef YY_NEED_STRLEN
1285 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1286 #endif
1287
1288 #ifndef YY_NO_INPUT
1289
1290 #ifdef __cplusplus
1291 static int yyinput (yyscan_t yyscanner );
1292 #else
1293 static int input (yyscan_t yyscanner );
1294 #endif
1295
1296 #endif
1297
1298 /* Amount of stuff to slurp up with each read. */
1299 #ifndef YY_READ_BUF_SIZE
1300 #ifdef __ia64__
1301 /* On IA-64, the buffer size is 16k, not 8k */
1302 #define YY_READ_BUF_SIZE 16384
1303 #else
1304 #define YY_READ_BUF_SIZE 8192
1305 #endif /* __ia64__ */
1306 #endif
1307
1308 /* Copy whatever the last rule matched to the standard output. */
1309 #ifndef ECHO
1310 /* This used to be an fputs(), but since the string might contain NUL's,
1311 * we now use fwrite().
1312 */
1313 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1314 #endif
1315
1316 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1317 * is returned in "result".
1318 */
1319 #ifndef YY_INPUT
1320 #define YY_INPUT(buf,result,max_size) \
1321 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1322 { \
1323 int c = '*'; \
1324 size_t n; \
1325 for ( n = 0; n < max_size && \
1326 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1327 buf[n] = (char) c; \
1328 if ( c == '\n' ) \
1329 buf[n++] = (char) c; \
1330 if ( c == EOF && ferror( yyin ) ) \
1331 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1332 result = n; \
1333 } \
1334 else \
1335 { \
1336 errno=0; \
1337 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1338 { \
1339 if( errno != EINTR) \
1340 { \
1341 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1342 break; \
1343 } \
1344 errno=0; \
1345 clearerr(yyin); \
1346 } \
1347 }\
1348 \
1349
1350 #endif
1351
1352 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1353 * we don't want an extra ';' after the "return" because that will cause
1354 * some compilers to complain about unreachable statements.
1355 */
1356 #ifndef yyterminate
1357 #define yyterminate() return YY_NULL
1358 #endif
1359
1360 /* Number of entries by which start-condition stack grows. */
1361 #ifndef YY_START_STACK_INCR
1362 #define YY_START_STACK_INCR 25
1363 #endif
1364
1365 /* Report a fatal error. */
1366 #ifndef YY_FATAL_ERROR
1367 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1368 #endif
1369
1370 /* end tables serialization structures and prototypes */
1371
1372 /* Default declaration of generated scanner - a define so the user can
1373 * easily add parameters.
1374 */
1375 #ifndef YY_DECL
1376 #define YY_DECL_IS_OURS 1
1377
1378 extern int yylex \
1379 (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1380
1381 #define YY_DECL int yylex \
1382 (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1383 #endif /* !YY_DECL */
1384
1385 /* Code executed at the beginning of each rule, after yytext and yyleng
1386 * have been set up.
1387 */
1388 #ifndef YY_USER_ACTION
1389 #define YY_USER_ACTION
1390 #endif
1391
1392 /* Code executed at the end of each rule. */
1393 #ifndef YY_BREAK
1394 #define YY_BREAK break;
1395 #endif
1396
1397 #define YY_RULE_SETUP \
1398 YY_USER_ACTION
1399
1400 /** The main scanner function which does all the work.
1401 */
1402 YY_DECL
1403 {
1404 register yy_state_type yy_current_state;
1405 register char *yy_cp, *yy_bp;
1406 register int yy_act;
1407 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1408
1409 #line 156 "program_lexer.l"
1410
1411
1412 #line 1413 "lex.yy.c"
1413
1414 yylval = yylval_param;
1415
1416 yylloc = yylloc_param;
1417
1418 if ( !yyg->yy_init )
1419 {
1420 yyg->yy_init = 1;
1421
1422 #ifdef YY_USER_INIT
1423 YY_USER_INIT;
1424 #endif
1425
1426 if ( ! yyg->yy_start )
1427 yyg->yy_start = 1; /* first start state */
1428
1429 if ( ! yyin )
1430 yyin = stdin;
1431
1432 if ( ! yyout )
1433 yyout = stdout;
1434
1435 if ( ! YY_CURRENT_BUFFER ) {
1436 yyensure_buffer_stack (yyscanner);
1437 YY_CURRENT_BUFFER_LVALUE =
1438 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1439 }
1440
1441 yy_load_buffer_state(yyscanner );
1442 }
1443
1444 while ( 1 ) /* loops until end-of-file is reached */
1445 {
1446 yy_cp = yyg->yy_c_buf_p;
1447
1448 /* Support of yytext. */
1449 *yy_cp = yyg->yy_hold_char;
1450
1451 /* yy_bp points to the position in yy_ch_buf of the start of
1452 * the current run.
1453 */
1454 yy_bp = yy_cp;
1455
1456 yy_current_state = yyg->yy_start;
1457 yy_match:
1458 do
1459 {
1460 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1461 if ( yy_accept[yy_current_state] )
1462 {
1463 yyg->yy_last_accepting_state = yy_current_state;
1464 yyg->yy_last_accepting_cpos = yy_cp;
1465 }
1466 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1467 {
1468 yy_current_state = (int) yy_def[yy_current_state];
1469 if ( yy_current_state >= 850 )
1470 yy_c = yy_meta[(unsigned int) yy_c];
1471 }
1472 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1473 ++yy_cp;
1474 }
1475 while ( yy_base[yy_current_state] != 1300 );
1476
1477 yy_find_action:
1478 yy_act = yy_accept[yy_current_state];
1479 if ( yy_act == 0 )
1480 { /* have to back up */
1481 yy_cp = yyg->yy_last_accepting_cpos;
1482 yy_current_state = yyg->yy_last_accepting_state;
1483 yy_act = yy_accept[yy_current_state];
1484 }
1485
1486 YY_DO_BEFORE_ACTION;
1487
1488 do_action: /* This label is used only to access EOF actions. */
1489
1490 switch ( yy_act )
1491 { /* beginning of action switch */
1492 case 0: /* must back up */
1493 /* undo the effects of YY_DO_BEFORE_ACTION */
1494 *yy_cp = yyg->yy_hold_char;
1495 yy_cp = yyg->yy_last_accepting_cpos;
1496 yy_current_state = yyg->yy_last_accepting_state;
1497 goto yy_find_action;
1498
1499 case 1:
1500 YY_RULE_SETUP
1501 #line 158 "program_lexer.l"
1502 { return ARBvp_10; }
1503 YY_BREAK
1504 case 2:
1505 YY_RULE_SETUP
1506 #line 159 "program_lexer.l"
1507 { return ARBfp_10; }
1508 YY_BREAK
1509 case 3:
1510 YY_RULE_SETUP
1511 #line 160 "program_lexer.l"
1512 {
1513 yylval->integer = at_address;
1514 return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS);
1515 }
1516 YY_BREAK
1517 case 4:
1518 YY_RULE_SETUP
1519 #line 164 "program_lexer.l"
1520 { return ALIAS; }
1521 YY_BREAK
1522 case 5:
1523 YY_RULE_SETUP
1524 #line 165 "program_lexer.l"
1525 { return ATTRIB; }
1526 YY_BREAK
1527 case 6:
1528 YY_RULE_SETUP
1529 #line 166 "program_lexer.l"
1530 { return END; }
1531 YY_BREAK
1532 case 7:
1533 YY_RULE_SETUP
1534 #line 167 "program_lexer.l"
1535 { return OPTION; }
1536 YY_BREAK
1537 case 8:
1538 YY_RULE_SETUP
1539 #line 168 "program_lexer.l"
1540 { return OUTPUT; }
1541 YY_BREAK
1542 case 9:
1543 YY_RULE_SETUP
1544 #line 169 "program_lexer.l"
1545 { return PARAM; }
1546 YY_BREAK
1547 case 10:
1548 YY_RULE_SETUP
1549 #line 170 "program_lexer.l"
1550 { yylval->integer = at_temp; return TEMP; }
1551 YY_BREAK
1552 case 11:
1553 YY_RULE_SETUP
1554 #line 172 "program_lexer.l"
1555 { return_opcode( 1, VECTOR_OP, ABS, 3); }
1556 YY_BREAK
1557 case 12:
1558 YY_RULE_SETUP
1559 #line 173 "program_lexer.l"
1560 { return_opcode( 1, BIN_OP, ADD, 3); }
1561 YY_BREAK
1562 case 13:
1563 YY_RULE_SETUP
1564 #line 174 "program_lexer.l"
1565 { return_opcode(require_ARB_vp, ARL, ARL, 3); }
1566 YY_BREAK
1567 case 14:
1568 YY_RULE_SETUP
1569 #line 176 "program_lexer.l"
1570 { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); }
1571 YY_BREAK
1572 case 15:
1573 YY_RULE_SETUP
1574 #line 177 "program_lexer.l"
1575 { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); }
1576 YY_BREAK
1577 case 16:
1578 YY_RULE_SETUP
1579 #line 179 "program_lexer.l"
1580 { return_opcode(require_NV_fp, VECTOR_OP, DDX, 3); }
1581 YY_BREAK
1582 case 17:
1583 YY_RULE_SETUP
1584 #line 180 "program_lexer.l"
1585 { return_opcode(require_NV_fp, VECTOR_OP, DDY, 3); }
1586 YY_BREAK
1587 case 18:
1588 YY_RULE_SETUP
1589 #line 181 "program_lexer.l"
1590 { return_opcode( 1, BIN_OP, DP3, 3); }
1591 YY_BREAK
1592 case 19:
1593 YY_RULE_SETUP
1594 #line 182 "program_lexer.l"
1595 { return_opcode( 1, BIN_OP, DP4, 3); }
1596 YY_BREAK
1597 case 20:
1598 YY_RULE_SETUP
1599 #line 183 "program_lexer.l"
1600 { return_opcode( 1, BIN_OP, DPH, 3); }
1601 YY_BREAK
1602 case 21:
1603 YY_RULE_SETUP
1604 #line 184 "program_lexer.l"
1605 { return_opcode( 1, BIN_OP, DST, 3); }
1606 YY_BREAK
1607 case 22:
1608 YY_RULE_SETUP
1609 #line 186 "program_lexer.l"
1610 { return_opcode( 1, SCALAR_OP, EX2, 3); }
1611 YY_BREAK
1612 case 23:
1613 YY_RULE_SETUP
1614 #line 187 "program_lexer.l"
1615 { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); }
1616 YY_BREAK
1617 case 24:
1618 YY_RULE_SETUP
1619 #line 189 "program_lexer.l"
1620 { return_opcode( 1, VECTOR_OP, FLR, 3); }
1621 YY_BREAK
1622 case 25:
1623 YY_RULE_SETUP
1624 #line 190 "program_lexer.l"
1625 { return_opcode( 1, VECTOR_OP, FRC, 3); }
1626 YY_BREAK
1627 case 26:
1628 YY_RULE_SETUP
1629 #line 192 "program_lexer.l"
1630 { return_opcode(require_ARB_fp, KIL, KIL, 3); }
1631 YY_BREAK
1632 case 27:
1633 YY_RULE_SETUP
1634 #line 194 "program_lexer.l"
1635 { return_opcode( 1, VECTOR_OP, LIT, 3); }
1636 YY_BREAK
1637 case 28:
1638 YY_RULE_SETUP
1639 #line 195 "program_lexer.l"
1640 { return_opcode( 1, SCALAR_OP, LG2, 3); }
1641 YY_BREAK
1642 case 29:
1643 YY_RULE_SETUP
1644 #line 196 "program_lexer.l"
1645 { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); }
1646 YY_BREAK
1647 case 30:
1648 YY_RULE_SETUP
1649 #line 197 "program_lexer.l"
1650 { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); }
1651 YY_BREAK
1652 case 31:
1653 YY_RULE_SETUP
1654 #line 199 "program_lexer.l"
1655 { return_opcode( 1, TRI_OP, MAD, 3); }
1656 YY_BREAK
1657 case 32:
1658 YY_RULE_SETUP
1659 #line 200 "program_lexer.l"
1660 { return_opcode( 1, BIN_OP, MAX, 3); }
1661 YY_BREAK
1662 case 33:
1663 YY_RULE_SETUP
1664 #line 201 "program_lexer.l"
1665 { return_opcode( 1, BIN_OP, MIN, 3); }
1666 YY_BREAK
1667 case 34:
1668 YY_RULE_SETUP
1669 #line 202 "program_lexer.l"
1670 { return_opcode( 1, VECTOR_OP, MOV, 3); }
1671 YY_BREAK
1672 case 35:
1673 YY_RULE_SETUP
1674 #line 203 "program_lexer.l"
1675 { return_opcode( 1, BIN_OP, MUL, 3); }
1676 YY_BREAK
1677 case 36:
1678 YY_RULE_SETUP
1679 #line 205 "program_lexer.l"
1680 { return_opcode(require_NV_fp, VECTOR_OP, PK2H, 4); }
1681 YY_BREAK
1682 case 37:
1683 YY_RULE_SETUP
1684 #line 206 "program_lexer.l"
1685 { return_opcode(require_NV_fp, VECTOR_OP, PK2US, 5); }
1686 YY_BREAK
1687 case 38:
1688 YY_RULE_SETUP
1689 #line 207 "program_lexer.l"
1690 { return_opcode(require_NV_fp, VECTOR_OP, PK4B, 4); }
1691 YY_BREAK
1692 case 39:
1693 YY_RULE_SETUP
1694 #line 208 "program_lexer.l"
1695 { return_opcode(require_NV_fp, VECTOR_OP, PK4UB, 5); }
1696 YY_BREAK
1697 case 40:
1698 YY_RULE_SETUP
1699 #line 209 "program_lexer.l"
1700 { return_opcode( 1, BINSC_OP, POW, 3); }
1701 YY_BREAK
1702 case 41:
1703 YY_RULE_SETUP
1704 #line 211 "program_lexer.l"
1705 { return_opcode( 1, SCALAR_OP, RCP, 3); }
1706 YY_BREAK
1707 case 42:
1708 YY_RULE_SETUP
1709 #line 212 "program_lexer.l"
1710 { return_opcode(require_NV_fp, BIN_OP, RFL, 3); }
1711 YY_BREAK
1712 case 43:
1713 YY_RULE_SETUP
1714 #line 213 "program_lexer.l"
1715 { return_opcode( 1, SCALAR_OP, RSQ, 3); }
1716 YY_BREAK
1717 case 44:
1718 YY_RULE_SETUP
1719 #line 215 "program_lexer.l"
1720 { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); }
1721 YY_BREAK
1722 case 45:
1723 YY_RULE_SETUP
1724 #line 216 "program_lexer.l"
1725 { return_opcode(require_NV_fp, BIN_OP, SEQ, 3); }
1726 YY_BREAK
1727 case 46:
1728 YY_RULE_SETUP
1729 #line 217 "program_lexer.l"
1730 { return_opcode(require_NV_fp, BIN_OP, SFL, 3); }
1731 YY_BREAK
1732 case 47:
1733 YY_RULE_SETUP
1734 #line 218 "program_lexer.l"
1735 { return_opcode( 1, BIN_OP, SGE, 3); }
1736 YY_BREAK
1737 case 48:
1738 YY_RULE_SETUP
1739 #line 219 "program_lexer.l"
1740 { return_opcode(require_NV_fp, BIN_OP, SGT, 3); }
1741 YY_BREAK
1742 case 49:
1743 YY_RULE_SETUP
1744 #line 220 "program_lexer.l"
1745 { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); }
1746 YY_BREAK
1747 case 50:
1748 YY_RULE_SETUP
1749 #line 221 "program_lexer.l"
1750 { return_opcode(require_NV_fp, BIN_OP, SLE, 3); }
1751 YY_BREAK
1752 case 51:
1753 YY_RULE_SETUP
1754 #line 222 "program_lexer.l"
1755 { return_opcode( 1, BIN_OP, SLT, 3); }
1756 YY_BREAK
1757 case 52:
1758 YY_RULE_SETUP
1759 #line 223 "program_lexer.l"
1760 { return_opcode(require_NV_fp, BIN_OP, SNE, 3); }
1761 YY_BREAK
1762 case 53:
1763 YY_RULE_SETUP
1764 #line 224 "program_lexer.l"
1765 { return_opcode(require_NV_fp, BIN_OP, STR, 3); }
1766 YY_BREAK
1767 case 54:
1768 YY_RULE_SETUP
1769 #line 225 "program_lexer.l"
1770 { return_opcode( 1, BIN_OP, SUB, 3); }
1771 YY_BREAK
1772 case 55:
1773 YY_RULE_SETUP
1774 #line 226 "program_lexer.l"
1775 { return_opcode( 1, SWZ, SWZ, 3); }
1776 YY_BREAK
1777 case 56:
1778 YY_RULE_SETUP
1779 #line 228 "program_lexer.l"
1780 { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); }
1781 YY_BREAK
1782 case 57:
1783 YY_RULE_SETUP
1784 #line 229 "program_lexer.l"
1785 { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); }
1786 YY_BREAK
1787 case 58:
1788 YY_RULE_SETUP
1789 #line 230 "program_lexer.l"
1790 { return_opcode(require_NV_fp, TXD_OP, TXD, 3); }
1791 YY_BREAK
1792 case 59:
1793 YY_RULE_SETUP
1794 #line 231 "program_lexer.l"
1795 { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); }
1796 YY_BREAK
1797 case 60:
1798 YY_RULE_SETUP
1799 #line 233 "program_lexer.l"
1800 { return_opcode(require_NV_fp, SCALAR_OP, UP2H, 4); }
1801 YY_BREAK
1802 case 61:
1803 YY_RULE_SETUP
1804 #line 234 "program_lexer.l"
1805 { return_opcode(require_NV_fp, SCALAR_OP, UP2US, 5); }
1806 YY_BREAK
1807 case 62:
1808 YY_RULE_SETUP
1809 #line 235 "program_lexer.l"
1810 { return_opcode(require_NV_fp, SCALAR_OP, UP4B, 4); }
1811 YY_BREAK
1812 case 63:
1813 YY_RULE_SETUP
1814 #line 236 "program_lexer.l"
1815 { return_opcode(require_NV_fp, SCALAR_OP, UP4UB, 5); }
1816 YY_BREAK
1817 case 64:
1818 YY_RULE_SETUP
1819 #line 238 "program_lexer.l"
1820 { return_opcode(require_NV_fp, TRI_OP, X2D, 3); }
1821 YY_BREAK
1822 case 65:
1823 YY_RULE_SETUP
1824 #line 239 "program_lexer.l"
1825 { return_opcode( 1, BIN_OP, XPD, 3); }
1826 YY_BREAK
1827 case 66:
1828 YY_RULE_SETUP
1829 #line 241 "program_lexer.l"
1830 { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
1831 YY_BREAK
1832 case 67:
1833 YY_RULE_SETUP
1834 #line 242 "program_lexer.l"
1835 { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
1836 YY_BREAK
1837 case 68:
1838 YY_RULE_SETUP
1839 #line 243 "program_lexer.l"
1840 { return PROGRAM; }
1841 YY_BREAK
1842 case 69:
1843 YY_RULE_SETUP
1844 #line 244 "program_lexer.l"
1845 { return STATE; }
1846 YY_BREAK
1847 case 70:
1848 YY_RULE_SETUP
1849 #line 245 "program_lexer.l"
1850 { return RESULT; }
1851 YY_BREAK
1852 case 71:
1853 YY_RULE_SETUP
1854 #line 247 "program_lexer.l"
1855 { return AMBIENT; }
1856 YY_BREAK
1857 case 72:
1858 YY_RULE_SETUP
1859 #line 248 "program_lexer.l"
1860 { return ATTENUATION; }
1861 YY_BREAK
1862 case 73:
1863 YY_RULE_SETUP
1864 #line 249 "program_lexer.l"
1865 { return BACK; }
1866 YY_BREAK
1867 case 74:
1868 YY_RULE_SETUP
1869 #line 250 "program_lexer.l"
1870 { return_token_or_DOT(require_ARB_vp, CLIP); }
1871 YY_BREAK
1872 case 75:
1873 YY_RULE_SETUP
1874 #line 251 "program_lexer.l"
1875 { return COLOR; }
1876 YY_BREAK
1877 case 76:
1878 YY_RULE_SETUP
1879 #line 252 "program_lexer.l"
1880 { return_token_or_DOT(require_ARB_fp, DEPTH); }
1881 YY_BREAK
1882 case 77:
1883 YY_RULE_SETUP
1884 #line 253 "program_lexer.l"
1885 { return DIFFUSE; }
1886 YY_BREAK
1887 case 78:
1888 YY_RULE_SETUP
1889 #line 254 "program_lexer.l"
1890 { return DIRECTION; }
1891 YY_BREAK
1892 case 79:
1893 YY_RULE_SETUP
1894 #line 255 "program_lexer.l"
1895 { return EMISSION; }
1896 YY_BREAK
1897 case 80:
1898 YY_RULE_SETUP
1899 #line 256 "program_lexer.l"
1900 { return ENV; }
1901 YY_BREAK
1902 case 81:
1903 YY_RULE_SETUP
1904 #line 257 "program_lexer.l"
1905 { return EYE; }
1906 YY_BREAK
1907 case 82:
1908 YY_RULE_SETUP
1909 #line 258 "program_lexer.l"
1910 { return FOGCOORD; }
1911 YY_BREAK
1912 case 83:
1913 YY_RULE_SETUP
1914 #line 259 "program_lexer.l"
1915 { return FOG; }
1916 YY_BREAK
1917 case 84:
1918 YY_RULE_SETUP
1919 #line 260 "program_lexer.l"
1920 { return FRONT; }
1921 YY_BREAK
1922 case 85:
1923 YY_RULE_SETUP
1924 #line 261 "program_lexer.l"
1925 { return HALF; }
1926 YY_BREAK
1927 case 86:
1928 YY_RULE_SETUP
1929 #line 262 "program_lexer.l"
1930 { return INVERSE; }
1931 YY_BREAK
1932 case 87:
1933 YY_RULE_SETUP
1934 #line 263 "program_lexer.l"
1935 { return INVTRANS; }
1936 YY_BREAK
1937 case 88:
1938 YY_RULE_SETUP
1939 #line 264 "program_lexer.l"
1940 { return LIGHT; }
1941 YY_BREAK
1942 case 89:
1943 YY_RULE_SETUP
1944 #line 265 "program_lexer.l"
1945 { return LIGHTMODEL; }
1946 YY_BREAK
1947 case 90:
1948 YY_RULE_SETUP
1949 #line 266 "program_lexer.l"
1950 { return LIGHTPROD; }
1951 YY_BREAK
1952 case 91:
1953 YY_RULE_SETUP
1954 #line 267 "program_lexer.l"
1955 { return LOCAL; }
1956 YY_BREAK
1957 case 92:
1958 YY_RULE_SETUP
1959 #line 268 "program_lexer.l"
1960 { return MATERIAL; }
1961 YY_BREAK
1962 case 93:
1963 YY_RULE_SETUP
1964 #line 269 "program_lexer.l"
1965 { return MAT_PROGRAM; }
1966 YY_BREAK
1967 case 94:
1968 YY_RULE_SETUP
1969 #line 270 "program_lexer.l"
1970 { return MATRIX; }
1971 YY_BREAK
1972 case 95:
1973 YY_RULE_SETUP
1974 #line 271 "program_lexer.l"
1975 { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
1976 YY_BREAK
1977 case 96:
1978 YY_RULE_SETUP
1979 #line 272 "program_lexer.l"
1980 { return MODELVIEW; }
1981 YY_BREAK
1982 case 97:
1983 YY_RULE_SETUP
1984 #line 273 "program_lexer.l"
1985 { return MVP; }
1986 YY_BREAK
1987 case 98:
1988 YY_RULE_SETUP
1989 #line 274 "program_lexer.l"
1990 { return_token_or_DOT(require_ARB_vp, NORMAL); }
1991 YY_BREAK
1992 case 99:
1993 YY_RULE_SETUP
1994 #line 275 "program_lexer.l"
1995 { return OBJECT; }
1996 YY_BREAK
1997 case 100:
1998 YY_RULE_SETUP
1999 #line 276 "program_lexer.l"
2000 { return PALETTE; }
2001 YY_BREAK
2002 case 101:
2003 YY_RULE_SETUP
2004 #line 277 "program_lexer.l"
2005 { return PARAMS; }
2006 YY_BREAK
2007 case 102:
2008 YY_RULE_SETUP
2009 #line 278 "program_lexer.l"
2010 { return PLANE; }
2011 YY_BREAK
2012 case 103:
2013 YY_RULE_SETUP
2014 #line 279 "program_lexer.l"
2015 { return_token_or_DOT(require_ARB_vp, POINT_TOK); }
2016 YY_BREAK
2017 case 104:
2018 YY_RULE_SETUP
2019 #line 280 "program_lexer.l"
2020 { return_token_or_DOT(require_ARB_vp, POINTSIZE); }
2021 YY_BREAK
2022 case 105:
2023 YY_RULE_SETUP
2024 #line 281 "program_lexer.l"
2025 { return POSITION; }
2026 YY_BREAK
2027 case 106:
2028 YY_RULE_SETUP
2029 #line 282 "program_lexer.l"
2030 { return PRIMARY; }
2031 YY_BREAK
2032 case 107:
2033 YY_RULE_SETUP
2034 #line 283 "program_lexer.l"
2035 { return PROJECTION; }
2036 YY_BREAK
2037 case 108:
2038 YY_RULE_SETUP
2039 #line 284 "program_lexer.l"
2040 { return_token_or_DOT(require_ARB_fp, RANGE); }
2041 YY_BREAK
2042 case 109:
2043 YY_RULE_SETUP
2044 #line 285 "program_lexer.l"
2045 { return ROW; }
2046 YY_BREAK
2047 case 110:
2048 YY_RULE_SETUP
2049 #line 286 "program_lexer.l"
2050 { return SCENECOLOR; }
2051 YY_BREAK
2052 case 111:
2053 YY_RULE_SETUP
2054 #line 287 "program_lexer.l"
2055 { return SECONDARY; }
2056 YY_BREAK
2057 case 112:
2058 YY_RULE_SETUP
2059 #line 288 "program_lexer.l"
2060 { return SHININESS; }
2061 YY_BREAK
2062 case 113:
2063 YY_RULE_SETUP
2064 #line 289 "program_lexer.l"
2065 { return_token_or_DOT(require_ARB_vp, SIZE_TOK); }
2066 YY_BREAK
2067 case 114:
2068 YY_RULE_SETUP
2069 #line 290 "program_lexer.l"
2070 { return SPECULAR; }
2071 YY_BREAK
2072 case 115:
2073 YY_RULE_SETUP
2074 #line 291 "program_lexer.l"
2075 { return SPOT; }
2076 YY_BREAK
2077 case 116:
2078 YY_RULE_SETUP
2079 #line 292 "program_lexer.l"
2080 { return TEXCOORD; }
2081 YY_BREAK
2082 case 117:
2083 YY_RULE_SETUP
2084 #line 293 "program_lexer.l"
2085 { return_token_or_DOT(require_ARB_fp, TEXENV); }
2086 YY_BREAK
2087 case 118:
2088 YY_RULE_SETUP
2089 #line 294 "program_lexer.l"
2090 { return_token_or_DOT(require_ARB_vp, TEXGEN); }
2091 YY_BREAK
2092 case 119:
2093 YY_RULE_SETUP
2094 #line 295 "program_lexer.l"
2095 { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
2096 YY_BREAK
2097 case 120:
2098 YY_RULE_SETUP
2099 #line 296 "program_lexer.l"
2100 { return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
2101 YY_BREAK
2102 case 121:
2103 YY_RULE_SETUP
2104 #line 297 "program_lexer.l"
2105 { return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
2106 YY_BREAK
2107 case 122:
2108 YY_RULE_SETUP
2109 #line 298 "program_lexer.l"
2110 { return TEXTURE; }
2111 YY_BREAK
2112 case 123:
2113 YY_RULE_SETUP
2114 #line 299 "program_lexer.l"
2115 { return TRANSPOSE; }
2116 YY_BREAK
2117 case 124:
2118 YY_RULE_SETUP
2119 #line 300 "program_lexer.l"
2120 { return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
2121 YY_BREAK
2122 case 125:
2123 YY_RULE_SETUP
2124 #line 301 "program_lexer.l"
2125 { return_token_or_DOT(require_ARB_vp, WEIGHT); }
2126 YY_BREAK
2127 case 126:
2128 YY_RULE_SETUP
2129 #line 303 "program_lexer.l"
2130 { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
2131 YY_BREAK
2132 case 127:
2133 YY_RULE_SETUP
2134 #line 304 "program_lexer.l"
2135 { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
2136 YY_BREAK
2137 case 128:
2138 YY_RULE_SETUP
2139 #line 305 "program_lexer.l"
2140 { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
2141 YY_BREAK
2142 case 129:
2143 YY_RULE_SETUP
2144 #line 306 "program_lexer.l"
2145 { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
2146 YY_BREAK
2147 case 130:
2148 YY_RULE_SETUP
2149 #line 307 "program_lexer.l"
2150 { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
2151 YY_BREAK
2152 case 131:
2153 YY_RULE_SETUP
2154 #line 308 "program_lexer.l"
2155 { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
2156 YY_BREAK
2157 case 132:
2158 YY_RULE_SETUP
2159 #line 309 "program_lexer.l"
2160 { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
2161 YY_BREAK
2162 case 133:
2163 YY_RULE_SETUP
2164 #line 310 "program_lexer.l"
2165 { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
2166 YY_BREAK
2167 case 134:
2168 YY_RULE_SETUP
2169 #line 311 "program_lexer.l"
2170 { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
2171 YY_BREAK
2172 case 135:
2173 YY_RULE_SETUP
2174 #line 312 "program_lexer.l"
2175 { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
2176 YY_BREAK
2177 case 136:
2178 YY_RULE_SETUP
2179 #line 313 "program_lexer.l"
2180 { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
2181 YY_BREAK
2182 case 137:
2183 YY_RULE_SETUP
2184 #line 314 "program_lexer.l"
2185 { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
2186 YY_BREAK
2187 case 138:
2188 YY_RULE_SETUP
2189 #line 315 "program_lexer.l"
2190 { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
2191 YY_BREAK
2192 case 139:
2193 YY_RULE_SETUP
2194 #line 317 "program_lexer.l"
2195 { return handle_ident(yyextra, yytext, yylval); }
2196 YY_BREAK
2197 case 140:
2198 YY_RULE_SETUP
2199 #line 319 "program_lexer.l"
2200 { return DOT_DOT; }
2201 YY_BREAK
2202 case 141:
2203 YY_RULE_SETUP
2204 #line 321 "program_lexer.l"
2205 {
2206 yylval->integer = strtol(yytext, NULL, 10);
2207 return INTEGER;
2208 }
2209 YY_BREAK
2210 case 142:
2211 YY_RULE_SETUP
2212 #line 325 "program_lexer.l"
2213 {
2214 yylval->real = strtod(yytext, NULL);
2215 return REAL;
2216 }
2217 YY_BREAK
2218 case 143:
2219 /* rule 143 can match eol */
2220 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
2221 yyg->yy_c_buf_p = yy_cp -= 1;
2222 YY_DO_BEFORE_ACTION; /* set up yytext again */
2223 YY_RULE_SETUP
2224 #line 329 "program_lexer.l"
2225 {
2226 yylval->real = strtod(yytext, NULL);
2227 return REAL;
2228 }
2229 YY_BREAK
2230 case 144:
2231 YY_RULE_SETUP
2232 #line 333 "program_lexer.l"
2233 {
2234 yylval->real = strtod(yytext, NULL);
2235 return REAL;
2236 }
2237 YY_BREAK
2238 case 145:
2239 YY_RULE_SETUP
2240 #line 337 "program_lexer.l"
2241 {
2242 yylval->real = strtod(yytext, NULL);
2243 return REAL;
2244 }
2245 YY_BREAK
2246 case 146:
2247 YY_RULE_SETUP
2248 #line 342 "program_lexer.l"
2249 {
2250 yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
2251 yylval->swiz_mask.mask = WRITEMASK_XYZW;
2252 return MASK4;
2253 }
2254 YY_BREAK
2255 case 147:
2256 YY_RULE_SETUP
2257 #line 348 "program_lexer.l"
2258 {
2259 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2260 yylval->swiz_mask.mask = WRITEMASK_XY
2261 | mask_from_char(yytext[3]);
2262 return MASK3;
2263 }
2264 YY_BREAK
2265 case 148:
2266 YY_RULE_SETUP
2267 #line 354 "program_lexer.l"
2268 {
2269 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2270 yylval->swiz_mask.mask = WRITEMASK_XZW;
2271 return MASK3;
2272 }
2273 YY_BREAK
2274 case 149:
2275 YY_RULE_SETUP
2276 #line 359 "program_lexer.l"
2277 {
2278 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2279 yylval->swiz_mask.mask = WRITEMASK_YZW;
2280 return MASK3;
2281 }
2282 YY_BREAK
2283 case 150:
2284 YY_RULE_SETUP
2285 #line 365 "program_lexer.l"
2286 {
2287 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2288 yylval->swiz_mask.mask = WRITEMASK_X
2289 | mask_from_char(yytext[2]);
2290 return MASK2;
2291 }
2292 YY_BREAK
2293 case 151:
2294 YY_RULE_SETUP
2295 #line 371 "program_lexer.l"
2296 {
2297 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2298 yylval->swiz_mask.mask = WRITEMASK_Y
2299 | mask_from_char(yytext[2]);
2300 return MASK2;
2301 }
2302 YY_BREAK
2303 case 152:
2304 YY_RULE_SETUP
2305 #line 377 "program_lexer.l"
2306 {
2307 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2308 yylval->swiz_mask.mask = WRITEMASK_ZW;
2309 return MASK2;
2310 }
2311 YY_BREAK
2312 case 153:
2313 YY_RULE_SETUP
2314 #line 383 "program_lexer.l"
2315 {
2316 const unsigned s = swiz_from_char(yytext[1]);
2317 yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
2318 yylval->swiz_mask.mask = mask_from_char(yytext[1]);
2319 return MASK1;
2320 }
2321 YY_BREAK
2322 case 154:
2323 YY_RULE_SETUP
2324 #line 390 "program_lexer.l"
2325 {
2326 yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
2327 swiz_from_char(yytext[2]),
2328 swiz_from_char(yytext[3]),
2329 swiz_from_char(yytext[4]));
2330 yylval->swiz_mask.mask = 0;
2331 return SWIZZLE;
2332 }
2333 YY_BREAK
2334 case 155:
2335 YY_RULE_SETUP
2336 #line 399 "program_lexer.l"
2337 {
2338 yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
2339 yylval->swiz_mask.mask = WRITEMASK_XYZW;
2340 return_token_or_DOT(require_ARB_fp, MASK4);
2341 }
2342 YY_BREAK
2343 case 156:
2344 YY_RULE_SETUP
2345 #line 405 "program_lexer.l"
2346 {
2347 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2348 yylval->swiz_mask.mask = WRITEMASK_XY
2349 | mask_from_char(yytext[3]);
2350 return_token_or_DOT(require_ARB_fp, MASK3);
2351 }
2352 YY_BREAK
2353 case 157:
2354 YY_RULE_SETUP
2355 #line 411 "program_lexer.l"
2356 {
2357 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2358 yylval->swiz_mask.mask = WRITEMASK_XZW;
2359 return_token_or_DOT(require_ARB_fp, MASK3);
2360 }
2361 YY_BREAK
2362 case 158:
2363 YY_RULE_SETUP
2364 #line 416 "program_lexer.l"
2365 {
2366 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2367 yylval->swiz_mask.mask = WRITEMASK_YZW;
2368 return_token_or_DOT(require_ARB_fp, MASK3);
2369 }
2370 YY_BREAK
2371 case 159:
2372 YY_RULE_SETUP
2373 #line 422 "program_lexer.l"
2374 {
2375 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2376 yylval->swiz_mask.mask = WRITEMASK_X
2377 | mask_from_char(yytext[2]);
2378 return_token_or_DOT(require_ARB_fp, MASK2);
2379 }
2380 YY_BREAK
2381 case 160:
2382 YY_RULE_SETUP
2383 #line 428 "program_lexer.l"
2384 {
2385 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2386 yylval->swiz_mask.mask = WRITEMASK_Y
2387 | mask_from_char(yytext[2]);
2388 return_token_or_DOT(require_ARB_fp, MASK2);
2389 }
2390 YY_BREAK
2391 case 161:
2392 YY_RULE_SETUP
2393 #line 434 "program_lexer.l"
2394 {
2395 yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
2396 yylval->swiz_mask.mask = WRITEMASK_ZW;
2397 return_token_or_DOT(require_ARB_fp, MASK2);
2398 }
2399 YY_BREAK
2400 case 162:
2401 YY_RULE_SETUP
2402 #line 440 "program_lexer.l"
2403 {
2404 const unsigned s = swiz_from_char(yytext[1]);
2405 yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
2406 yylval->swiz_mask.mask = mask_from_char(yytext[1]);
2407 return_token_or_DOT(require_ARB_fp, MASK1);
2408 }
2409 YY_BREAK
2410 case 163:
2411 YY_RULE_SETUP
2412 #line 448 "program_lexer.l"
2413 {
2414 if (require_ARB_vp) {
2415 return TEXGEN_R;
2416 } else {
2417 yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X,
2418 SWIZZLE_X, SWIZZLE_X);
2419 yylval->swiz_mask.mask = WRITEMASK_X;
2420 return MASK1;
2421 }
2422 }
2423 YY_BREAK
2424 case 164:
2425 YY_RULE_SETUP
2426 #line 459 "program_lexer.l"
2427 {
2428 yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
2429 swiz_from_char(yytext[2]),
2430 swiz_from_char(yytext[3]),
2431 swiz_from_char(yytext[4]));
2432 yylval->swiz_mask.mask = 0;
2433 return_token_or_DOT(require_ARB_fp, SWIZZLE);
2434 }
2435 YY_BREAK
2436 case 165:
2437 YY_RULE_SETUP
2438 #line 468 "program_lexer.l"
2439 { return DOT; }
2440 YY_BREAK
2441 case 166:
2442 /* rule 166 can match eol */
2443 YY_RULE_SETUP
2444 #line 470 "program_lexer.l"
2445 {
2446 yylloc->first_line++;
2447 yylloc->first_column = 1;
2448 yylloc->last_line++;
2449 yylloc->last_column = 1;
2450 yylloc->position++;
2451 }
2452 YY_BREAK
2453 case 167:
2454 YY_RULE_SETUP
2455 #line 477 "program_lexer.l"
2456 /* eat whitespace */ ;
2457 YY_BREAK
2458 case 168:
2459 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
2460 yyg->yy_c_buf_p = yy_cp -= 1;
2461 YY_DO_BEFORE_ACTION; /* set up yytext again */
2462 YY_RULE_SETUP
2463 #line 478 "program_lexer.l"
2464 /* eat comments */ ;
2465 YY_BREAK
2466 case 169:
2467 YY_RULE_SETUP
2468 #line 479 "program_lexer.l"
2469 { return yytext[0]; }
2470 YY_BREAK
2471 case 170:
2472 YY_RULE_SETUP
2473 #line 480 "program_lexer.l"
2474 ECHO;
2475 YY_BREAK
2476 #line 2477 "lex.yy.c"
2477 case YY_STATE_EOF(INITIAL):
2478 yyterminate();
2479
2480 case YY_END_OF_BUFFER:
2481 {
2482 /* Amount of text matched not including the EOB char. */
2483 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2484
2485 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2486 *yy_cp = yyg->yy_hold_char;
2487 YY_RESTORE_YY_MORE_OFFSET
2488
2489 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2490 {
2491 /* We're scanning a new file or input source. It's
2492 * possible that this happened because the user
2493 * just pointed yyin at a new source and called
2494 * yylex(). If so, then we have to assure
2495 * consistency between YY_CURRENT_BUFFER and our
2496 * globals. Here is the right place to do so, because
2497 * this is the first action (other than possibly a
2498 * back-up) that will match for the new input source.
2499 */
2500 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2501 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2502 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2503 }
2504
2505 /* Note that here we test for yy_c_buf_p "<=" to the position
2506 * of the first EOB in the buffer, since yy_c_buf_p will
2507 * already have been incremented past the NUL character
2508 * (since all states make transitions on EOB to the
2509 * end-of-buffer state). Contrast this with the test
2510 * in input().
2511 */
2512 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2513 { /* This was really a NUL. */
2514 yy_state_type yy_next_state;
2515
2516 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2517
2518 yy_current_state = yy_get_previous_state( yyscanner );
2519
2520 /* Okay, we're now positioned to make the NUL
2521 * transition. We couldn't have
2522 * yy_get_previous_state() go ahead and do it
2523 * for us because it doesn't know how to deal
2524 * with the possibility of jamming (and we don't
2525 * want to build jamming into it because then it
2526 * will run more slowly).
2527 */
2528
2529 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2530
2531 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2532
2533 if ( yy_next_state )
2534 {
2535 /* Consume the NUL. */
2536 yy_cp = ++yyg->yy_c_buf_p;
2537 yy_current_state = yy_next_state;
2538 goto yy_match;
2539 }
2540
2541 else
2542 {
2543 yy_cp = yyg->yy_c_buf_p;
2544 goto yy_find_action;
2545 }
2546 }
2547
2548 else switch ( yy_get_next_buffer( yyscanner ) )
2549 {
2550 case EOB_ACT_END_OF_FILE:
2551 {
2552 yyg->yy_did_buffer_switch_on_eof = 0;
2553
2554 if ( yywrap(yyscanner ) )
2555 {
2556 /* Note: because we've taken care in
2557 * yy_get_next_buffer() to have set up
2558 * yytext, we can now set up
2559 * yy_c_buf_p so that if some total
2560 * hoser (like flex itself) wants to
2561 * call the scanner after we return the
2562 * YY_NULL, it'll still work - another
2563 * YY_NULL will get returned.
2564 */
2565 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2566
2567 yy_act = YY_STATE_EOF(YY_START);
2568 goto do_action;
2569 }
2570
2571 else
2572 {
2573 if ( ! yyg->yy_did_buffer_switch_on_eof )
2574 YY_NEW_FILE;
2575 }
2576 break;
2577 }
2578
2579 case EOB_ACT_CONTINUE_SCAN:
2580 yyg->yy_c_buf_p =
2581 yyg->yytext_ptr + yy_amount_of_matched_text;
2582
2583 yy_current_state = yy_get_previous_state( yyscanner );
2584
2585 yy_cp = yyg->yy_c_buf_p;
2586 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2587 goto yy_match;
2588
2589 case EOB_ACT_LAST_MATCH:
2590 yyg->yy_c_buf_p =
2591 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2592
2593 yy_current_state = yy_get_previous_state( yyscanner );
2594
2595 yy_cp = yyg->yy_c_buf_p;
2596 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2597 goto yy_find_action;
2598 }
2599 break;
2600 }
2601
2602 default:
2603 YY_FATAL_ERROR(
2604 "fatal flex scanner internal error--no action found" );
2605 } /* end of action switch */
2606 } /* end of scanning one token */
2607 } /* end of yylex */
2608
2609 /* yy_get_next_buffer - try to read in a new buffer
2610 *
2611 * Returns a code representing an action:
2612 * EOB_ACT_LAST_MATCH -
2613 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2614 * EOB_ACT_END_OF_FILE - end of file
2615 */
2616 static int yy_get_next_buffer (yyscan_t yyscanner)
2617 {
2618 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2619 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2620 register char *source = yyg->yytext_ptr;
2621 register int number_to_move, i;
2622 int ret_val;
2623
2624 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2625 YY_FATAL_ERROR(
2626 "fatal flex scanner internal error--end of buffer missed" );
2627
2628 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2629 { /* Don't try to fill the buffer, so this is an EOF. */
2630 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2631 {
2632 /* We matched a single character, the EOB, so
2633 * treat this as a final EOF.
2634 */
2635 return EOB_ACT_END_OF_FILE;
2636 }
2637
2638 else
2639 {
2640 /* We matched some text prior to the EOB, first
2641 * process it.
2642 */
2643 return EOB_ACT_LAST_MATCH;
2644 }
2645 }
2646
2647 /* Try to read more data. */
2648
2649 /* First move last chars to start of buffer. */
2650 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2651
2652 for ( i = 0; i < number_to_move; ++i )
2653 *(dest++) = *(source++);
2654
2655 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2656 /* don't do the read, it's not guaranteed to return an EOF,
2657 * just force an EOF
2658 */
2659 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2660
2661 else
2662 {
2663 int num_to_read =
2664 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2665
2666 while ( num_to_read <= 0 )
2667 { /* Not enough room in the buffer - grow it. */
2668
2669 /* just a shorter name for the current buffer */
2670 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2671
2672 int yy_c_buf_p_offset =
2673 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2674
2675 if ( b->yy_is_our_buffer )
2676 {
2677 int new_size = b->yy_buf_size * 2;
2678
2679 if ( new_size <= 0 )
2680 b->yy_buf_size += b->yy_buf_size / 8;
2681 else
2682 b->yy_buf_size *= 2;
2683
2684 b->yy_ch_buf = (char *)
2685 /* Include room in for 2 EOB chars. */
2686 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2687 }
2688 else
2689 /* Can't grow it, we don't own it. */
2690 b->yy_ch_buf = 0;
2691
2692 if ( ! b->yy_ch_buf )
2693 YY_FATAL_ERROR(
2694 "fatal error - scanner input buffer overflow" );
2695
2696 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2697
2698 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2699 number_to_move - 1;
2700
2701 }
2702
2703 if ( num_to_read > YY_READ_BUF_SIZE )
2704 num_to_read = YY_READ_BUF_SIZE;
2705
2706 /* Read in more data. */
2707 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2708 yyg->yy_n_chars, (size_t) num_to_read );
2709
2710 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2711 }
2712
2713 if ( yyg->yy_n_chars == 0 )
2714 {
2715 if ( number_to_move == YY_MORE_ADJ )
2716 {
2717 ret_val = EOB_ACT_END_OF_FILE;
2718 yyrestart(yyin ,yyscanner);
2719 }
2720
2721 else
2722 {
2723 ret_val = EOB_ACT_LAST_MATCH;
2724 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2725 YY_BUFFER_EOF_PENDING;
2726 }
2727 }
2728
2729 else
2730 ret_val = EOB_ACT_CONTINUE_SCAN;
2731
2732 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2733 /* Extend the array by 50%, plus the number we really need. */
2734 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2735 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
2736 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2737 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2738 }
2739
2740 yyg->yy_n_chars += number_to_move;
2741 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2742 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2743
2744 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2745
2746 return ret_val;
2747 }
2748
2749 /* yy_get_previous_state - get the state just before the EOB char was reached */
2750
2751 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2752 {
2753 register yy_state_type yy_current_state;
2754 register char *yy_cp;
2755 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2756
2757 yy_current_state = yyg->yy_start;
2758
2759 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2760 {
2761 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2762 if ( yy_accept[yy_current_state] )
2763 {
2764 yyg->yy_last_accepting_state = yy_current_state;
2765 yyg->yy_last_accepting_cpos = yy_cp;
2766 }
2767 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2768 {
2769 yy_current_state = (int) yy_def[yy_current_state];
2770 if ( yy_current_state >= 850 )
2771 yy_c = yy_meta[(unsigned int) yy_c];
2772 }
2773 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2774 }
2775
2776 return yy_current_state;
2777 }
2778
2779 /* yy_try_NUL_trans - try to make a transition on the NUL character
2780 *
2781 * synopsis
2782 * next_state = yy_try_NUL_trans( current_state );
2783 */
2784 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2785 {
2786 register int yy_is_jam;
2787 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2788 register char *yy_cp = yyg->yy_c_buf_p;
2789
2790 register YY_CHAR yy_c = 1;
2791 if ( yy_accept[yy_current_state] )
2792 {
2793 yyg->yy_last_accepting_state = yy_current_state;
2794 yyg->yy_last_accepting_cpos = yy_cp;
2795 }
2796 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2797 {
2798 yy_current_state = (int) yy_def[yy_current_state];
2799 if ( yy_current_state >= 850 )
2800 yy_c = yy_meta[(unsigned int) yy_c];
2801 }
2802 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2803 yy_is_jam = (yy_current_state == 849);
2804
2805 return yy_is_jam ? 0 : yy_current_state;
2806 }
2807
2808 static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2809 {
2810 register char *yy_cp;
2811 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2812
2813 yy_cp = yyg->yy_c_buf_p;
2814
2815 /* undo effects of setting up yytext */
2816 *yy_cp = yyg->yy_hold_char;
2817
2818 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2819 { /* need to shift things up to make room */
2820 /* +2 for EOB chars. */
2821 register int number_to_move = yyg->yy_n_chars + 2;
2822 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2823 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2824 register char *source =
2825 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2826
2827 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2828 *--dest = *--source;
2829
2830 yy_cp += (int) (dest - source);
2831 yy_bp += (int) (dest - source);
2832 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2833 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2834
2835 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2836 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2837 }
2838
2839 *--yy_cp = (char) c;
2840
2841 yyg->yytext_ptr = yy_bp;
2842 yyg->yy_hold_char = *yy_cp;
2843 yyg->yy_c_buf_p = yy_cp;
2844 }
2845
2846 #ifndef YY_NO_INPUT
2847 #ifdef __cplusplus
2848 static int yyinput (yyscan_t yyscanner)
2849 #else
2850 static int input (yyscan_t yyscanner)
2851 #endif
2852
2853 {
2854 int c;
2855 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2856
2857 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2858
2859 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2860 {
2861 /* yy_c_buf_p now points to the character we want to return.
2862 * If this occurs *before* the EOB characters, then it's a
2863 * valid NUL; if not, then we've hit the end of the buffer.
2864 */
2865 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2866 /* This was really a NUL. */
2867 *yyg->yy_c_buf_p = '\0';
2868
2869 else
2870 { /* need more input */
2871 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2872 ++yyg->yy_c_buf_p;
2873
2874 switch ( yy_get_next_buffer( yyscanner ) )
2875 {
2876 case EOB_ACT_LAST_MATCH:
2877 /* This happens because yy_g_n_b()
2878 * sees that we've accumulated a
2879 * token and flags that we need to
2880 * try matching the token before
2881 * proceeding. But for input(),
2882 * there's no matching to consider.
2883 * So convert the EOB_ACT_LAST_MATCH
2884 * to EOB_ACT_END_OF_FILE.
2885 */
2886
2887 /* Reset buffer status. */
2888 yyrestart(yyin ,yyscanner);
2889
2890 /*FALLTHROUGH*/
2891
2892 case EOB_ACT_END_OF_FILE:
2893 {
2894 if ( yywrap(yyscanner ) )
2895 return EOF;
2896
2897 if ( ! yyg->yy_did_buffer_switch_on_eof )
2898 YY_NEW_FILE;
2899 #ifdef __cplusplus
2900 return yyinput(yyscanner);
2901 #else
2902 return input(yyscanner);
2903 #endif
2904 }
2905
2906 case EOB_ACT_CONTINUE_SCAN:
2907 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2908 break;
2909 }
2910 }
2911 }
2912
2913 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2914 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2915 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2916
2917 return c;
2918 }
2919 #endif /* ifndef YY_NO_INPUT */
2920
2921 /** Immediately switch to a different input stream.
2922 * @param input_file A readable stream.
2923 * @param yyscanner The scanner object.
2924 * @note This function does not reset the start condition to @c INITIAL .
2925 */
2926 void yyrestart (FILE * input_file , yyscan_t yyscanner)
2927 {
2928 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2929
2930 if ( ! YY_CURRENT_BUFFER ){
2931 yyensure_buffer_stack (yyscanner);
2932 YY_CURRENT_BUFFER_LVALUE =
2933 yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2934 }
2935
2936 yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2937 yy_load_buffer_state(yyscanner );
2938 }
2939
2940 /** Switch to a different input buffer.
2941 * @param new_buffer The new input buffer.
2942 * @param yyscanner The scanner object.
2943 */
2944 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2945 {
2946 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2947
2948 /* TODO. We should be able to replace this entire function body
2949 * with
2950 * yypop_buffer_state();
2951 * yypush_buffer_state(new_buffer);
2952 */
2953 yyensure_buffer_stack (yyscanner);
2954 if ( YY_CURRENT_BUFFER == new_buffer )
2955 return;
2956
2957 if ( YY_CURRENT_BUFFER )
2958 {
2959 /* Flush out information for old buffer. */
2960 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2961 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2962 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2963 }
2964
2965 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2966 yy_load_buffer_state(yyscanner );
2967
2968 /* We don't actually know whether we did this switch during
2969 * EOF (yywrap()) processing, but the only time this flag
2970 * is looked at is after yywrap() is called, so it's safe
2971 * to go ahead and always set it.
2972 */
2973 yyg->yy_did_buffer_switch_on_eof = 1;
2974 }
2975
2976 static void yy_load_buffer_state (yyscan_t yyscanner)
2977 {
2978 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2979 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2980 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2981 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2982 yyg->yy_hold_char = *yyg->yy_c_buf_p;
2983 }
2984
2985 /** Allocate and initialize an input buffer state.
2986 * @param file A readable stream.
2987 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2988 * @param yyscanner The scanner object.
2989 * @return the allocated buffer state.
2990 */
2991 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
2992 {
2993 YY_BUFFER_STATE b;
2994
2995 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2996 if ( ! b )
2997 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2998
2999 b->yy_buf_size = size;
3000
3001 /* yy_ch_buf has to be 2 characters longer than the size given because
3002 * we need to put in 2 end-of-buffer characters.
3003 */
3004 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
3005 if ( ! b->yy_ch_buf )
3006 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3007
3008 b->yy_is_our_buffer = 1;
3009
3010 yy_init_buffer(b,file ,yyscanner);
3011
3012 return b;
3013 }
3014
3015 /** Destroy the buffer.
3016 * @param b a buffer created with yy_create_buffer()
3017 * @param yyscanner The scanner object.
3018 */
3019 void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
3020 {
3021 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3022
3023 if ( ! b )
3024 return;
3025
3026 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3027 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3028
3029 if ( b->yy_is_our_buffer )
3030 yyfree((void *) b->yy_ch_buf ,yyscanner );
3031
3032 yyfree((void *) b ,yyscanner );
3033 }
3034
3035 /* Initializes or reinitializes a buffer.
3036 * This function is sometimes called more than once on the same buffer,
3037 * such as during a yyrestart() or at EOF.
3038 */
3039 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
3040
3041 {
3042 int oerrno = errno;
3043 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3044
3045 yy_flush_buffer(b ,yyscanner);
3046
3047 b->yy_input_file = file;
3048 b->yy_fill_buffer = 1;
3049
3050 /* If b is the current buffer, then yy_init_buffer was _probably_
3051 * called from yyrestart() or through yy_get_next_buffer.
3052 * In that case, we don't want to reset the lineno or column.
3053 */
3054 if (b != YY_CURRENT_BUFFER){
3055 b->yy_bs_lineno = 1;
3056 b->yy_bs_column = 0;
3057 }
3058
3059 b->yy_is_interactive = 0;
3060
3061 errno = oerrno;
3062 }
3063
3064 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3065 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3066 * @param yyscanner The scanner object.
3067 */
3068 void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
3069 {
3070 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3071 if ( ! b )
3072 return;
3073
3074 b->yy_n_chars = 0;
3075
3076 /* We always need two end-of-buffer characters. The first causes
3077 * a transition to the end-of-buffer state. The second causes
3078 * a jam in that state.
3079 */
3080 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3081 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3082
3083 b->yy_buf_pos = &b->yy_ch_buf[0];
3084
3085 b->yy_at_bol = 1;
3086 b->yy_buffer_status = YY_BUFFER_NEW;
3087
3088 if ( b == YY_CURRENT_BUFFER )
3089 yy_load_buffer_state(yyscanner );
3090 }
3091
3092 /** Pushes the new state onto the stack. The new state becomes
3093 * the current state. This function will allocate the stack
3094 * if necessary.
3095 * @param new_buffer The new state.
3096 * @param yyscanner The scanner object.
3097 */
3098 void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
3099 {
3100 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3101 if (new_buffer == NULL)
3102 return;
3103
3104 yyensure_buffer_stack(yyscanner);
3105
3106 /* This block is copied from yy_switch_to_buffer. */
3107 if ( YY_CURRENT_BUFFER )
3108 {
3109 /* Flush out information for old buffer. */
3110 *yyg->yy_c_buf_p = yyg->yy_hold_char;
3111 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3112 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3113 }
3114
3115 /* Only push if top exists. Otherwise, replace top. */
3116 if (YY_CURRENT_BUFFER)
3117 yyg->yy_buffer_stack_top++;
3118 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3119
3120 /* copied from yy_switch_to_buffer. */
3121 yy_load_buffer_state(yyscanner );
3122 yyg->yy_did_buffer_switch_on_eof = 1;
3123 }
3124
3125 /** Removes and deletes the top of the stack, if present.
3126 * The next element becomes the new top.
3127 * @param yyscanner The scanner object.
3128 */
3129 void yypop_buffer_state (yyscan_t yyscanner)
3130 {
3131 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3132 if (!YY_CURRENT_BUFFER)
3133 return;
3134
3135 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
3136 YY_CURRENT_BUFFER_LVALUE = NULL;
3137 if (yyg->yy_buffer_stack_top > 0)
3138 --yyg->yy_buffer_stack_top;
3139
3140 if (YY_CURRENT_BUFFER) {
3141 yy_load_buffer_state(yyscanner );
3142 yyg->yy_did_buffer_switch_on_eof = 1;
3143 }
3144 }
3145
3146 /* Allocates the stack if it does not exist.
3147 * Guarantees space for at least one push.
3148 */
3149 static void yyensure_buffer_stack (yyscan_t yyscanner)
3150 {
3151 int num_to_alloc;
3152 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3153
3154 if (!yyg->yy_buffer_stack) {
3155
3156 /* First allocation is just for 2 elements, since we don't know if this
3157 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3158 * immediate realloc on the next call.
3159 */
3160 num_to_alloc = 1;
3161 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
3162 (num_to_alloc * sizeof(struct yy_buffer_state*)
3163 , yyscanner);
3164 if ( ! yyg->yy_buffer_stack )
3165 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3166
3167 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3168
3169 yyg->yy_buffer_stack_max = num_to_alloc;
3170 yyg->yy_buffer_stack_top = 0;
3171 return;
3172 }
3173
3174 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
3175
3176 /* Increase the buffer to prepare for a possible push. */
3177 int grow_size = 8 /* arbitrary grow size */;
3178
3179 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
3180 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
3181 (yyg->yy_buffer_stack,
3182 num_to_alloc * sizeof(struct yy_buffer_state*)
3183 , yyscanner);
3184 if ( ! yyg->yy_buffer_stack )
3185 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3186
3187 /* zero only the new slots.*/
3188 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
3189 yyg->yy_buffer_stack_max = num_to_alloc;
3190 }
3191 }
3192
3193 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3194 * @param base the character buffer
3195 * @param size the size in bytes of the character buffer
3196 * @param yyscanner The scanner object.
3197 * @return the newly allocated buffer state object.
3198 */
3199 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
3200 {
3201 YY_BUFFER_STATE b;
3202
3203 if ( size < 2 ||
3204 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3205 base[size-1] != YY_END_OF_BUFFER_CHAR )
3206 /* They forgot to leave room for the EOB's. */
3207 return 0;
3208
3209 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
3210 if ( ! b )
3211 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3212
3213 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3214 b->yy_buf_pos = b->yy_ch_buf = base;
3215 b->yy_is_our_buffer = 0;
3216 b->yy_input_file = 0;
3217 b->yy_n_chars = b->yy_buf_size;
3218 b->yy_is_interactive = 0;
3219 b->yy_at_bol = 1;
3220 b->yy_fill_buffer = 0;
3221 b->yy_buffer_status = YY_BUFFER_NEW;
3222
3223 yy_switch_to_buffer(b ,yyscanner );
3224
3225 return b;
3226 }
3227
3228 /** Setup the input buffer state to scan a string. The next call to yylex() will
3229 * scan from a @e copy of @a str.
3230 * @param yystr a NUL-terminated string to scan
3231 * @param yyscanner The scanner object.
3232 * @return the newly allocated buffer state object.
3233 * @note If you want to scan bytes that may contain NUL values, then use
3234 * yy_scan_bytes() instead.
3235 */
3236 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
3237 {
3238
3239 return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
3240 }
3241
3242 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
3243 * scan from a @e copy of @a bytes.
3244 * @param yybytes the byte buffer to scan
3245 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3246 * @param yyscanner The scanner object.
3247 * @return the newly allocated buffer state object.
3248 */
3249 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
3250 {
3251 YY_BUFFER_STATE b;
3252 char *buf;
3253 yy_size_t n;
3254 int i;
3255
3256 /* Get memory for full buffer, including space for trailing EOB's. */
3257 n = _yybytes_len + 2;
3258 buf = (char *) yyalloc(n ,yyscanner );
3259 if ( ! buf )
3260 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3261
3262 for ( i = 0; i < _yybytes_len; ++i )
3263 buf[i] = yybytes[i];
3264
3265 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3266
3267 b = yy_scan_buffer(buf,n ,yyscanner);
3268 if ( ! b )
3269 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3270
3271 /* It's okay to grow etc. this buffer, and we should throw it
3272 * away when we're done.
3273 */
3274 b->yy_is_our_buffer = 1;
3275
3276 return b;
3277 }
3278
3279 #ifndef YY_EXIT_FAILURE
3280 #define YY_EXIT_FAILURE 2
3281 #endif
3282
3283 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
3284 {
3285 (void) fprintf( stderr, "%s\n", msg );
3286 exit( YY_EXIT_FAILURE );
3287 }
3288
3289 /* Redefine yyless() so it works in section 3 code. */
3290
3291 #undef yyless
3292 #define yyless(n) \
3293 do \
3294 { \
3295 /* Undo effects of setting up yytext. */ \
3296 int yyless_macro_arg = (n); \
3297 YY_LESS_LINENO(yyless_macro_arg);\
3298 yytext[yyleng] = yyg->yy_hold_char; \
3299 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3300 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3301 *yyg->yy_c_buf_p = '\0'; \
3302 yyleng = yyless_macro_arg; \
3303 } \
3304 while ( 0 )
3305
3306 /* Accessor methods (get/set functions) to struct members. */
3307
3308 /** Get the user-defined data for this scanner.
3309 * @param yyscanner The scanner object.
3310 */
3311 YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
3312 {
3313 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3314 return yyextra;
3315 }
3316
3317 /** Get the current line number.
3318 * @param yyscanner The scanner object.
3319 */
3320 int yyget_lineno (yyscan_t yyscanner)
3321 {
3322 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3323
3324 if (! YY_CURRENT_BUFFER)
3325 return 0;
3326
3327 return yylineno;
3328 }
3329
3330 /** Get the current column number.
3331 * @param yyscanner The scanner object.
3332 */
3333 int yyget_column (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 yycolumn;
3341 }
3342
3343 /** Get the input stream.
3344 * @param yyscanner The scanner object.
3345 */
3346 FILE *yyget_in (yyscan_t yyscanner)
3347 {
3348 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3349 return yyin;
3350 }
3351
3352 /** Get the output stream.
3353 * @param yyscanner The scanner object.
3354 */
3355 FILE *yyget_out (yyscan_t yyscanner)
3356 {
3357 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3358 return yyout;
3359 }
3360
3361 /** Get the length of the current token.
3362 * @param yyscanner The scanner object.
3363 */
3364 int yyget_leng (yyscan_t yyscanner)
3365 {
3366 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3367 return yyleng;
3368 }
3369
3370 /** Get the current token.
3371 * @param yyscanner The scanner object.
3372 */
3373
3374 char *yyget_text (yyscan_t yyscanner)
3375 {
3376 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3377 return yytext;
3378 }
3379
3380 /** Set the user-defined data. This data is never touched by the scanner.
3381 * @param user_defined The data to be associated with this scanner.
3382 * @param yyscanner The scanner object.
3383 */
3384 void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
3385 {
3386 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3387 yyextra = user_defined ;
3388 }
3389
3390 /** Set the current line number.
3391 * @param line_number
3392 * @param yyscanner The scanner object.
3393 */
3394 void yyset_lineno (int line_number , yyscan_t yyscanner)
3395 {
3396 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3397
3398 /* lineno is only valid if an input buffer exists. */
3399 if (! YY_CURRENT_BUFFER )
3400 yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner);
3401
3402 yylineno = line_number;
3403 }
3404
3405 /** Set the current column.
3406 * @param line_number
3407 * @param yyscanner The scanner object.
3408 */
3409 void yyset_column (int column_no , yyscan_t yyscanner)
3410 {
3411 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3412
3413 /* column is only valid if an input buffer exists. */
3414 if (! YY_CURRENT_BUFFER )
3415 yy_fatal_error( "yyset_column called with no buffer" , yyscanner);
3416
3417 yycolumn = column_no;
3418 }
3419
3420 /** Set the input stream. This does not discard the current
3421 * input buffer.
3422 * @param in_str A readable stream.
3423 * @param yyscanner The scanner object.
3424 * @see yy_switch_to_buffer
3425 */
3426 void yyset_in (FILE * in_str , yyscan_t yyscanner)
3427 {
3428 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3429 yyin = in_str ;
3430 }
3431
3432 void yyset_out (FILE * out_str , yyscan_t yyscanner)
3433 {
3434 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3435 yyout = out_str ;
3436 }
3437
3438 int yyget_debug (yyscan_t yyscanner)
3439 {
3440 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3441 return yy_flex_debug;
3442 }
3443
3444 void yyset_debug (int bdebug , yyscan_t yyscanner)
3445 {
3446 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3447 yy_flex_debug = bdebug ;
3448 }
3449
3450 /* Accessor methods for yylval and yylloc */
3451
3452 YYSTYPE * yyget_lval (yyscan_t yyscanner)
3453 {
3454 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3455 return yylval;
3456 }
3457
3458 void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
3459 {
3460 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3461 yylval = yylval_param;
3462 }
3463
3464 YYLTYPE *yyget_lloc (yyscan_t yyscanner)
3465 {
3466 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3467 return yylloc;
3468 }
3469
3470 void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner)
3471 {
3472 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3473 yylloc = yylloc_param;
3474 }
3475
3476 /* User-visible API */
3477
3478 /* yylex_init is special because it creates the scanner itself, so it is
3479 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3480 * That's why we explicitly handle the declaration, instead of using our macros.
3481 */
3482
3483 int yylex_init(yyscan_t* ptr_yy_globals)
3484
3485 {
3486 if (ptr_yy_globals == NULL){
3487 errno = EINVAL;
3488 return 1;
3489 }
3490
3491 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
3492
3493 if (*ptr_yy_globals == NULL){
3494 errno = ENOMEM;
3495 return 1;
3496 }
3497
3498 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3499 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3500
3501 return yy_init_globals ( *ptr_yy_globals );
3502 }
3503
3504 /* yylex_init_extra has the same functionality as yylex_init, but follows the
3505 * convention of taking the scanner as the last argument. Note however, that
3506 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3507 * is the reason, too, why this function also must handle its own declaration).
3508 * The user defined value in the first argument will be available to yyalloc in
3509 * the yyextra field.
3510 */
3511
3512 int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
3513
3514 {
3515 struct yyguts_t dummy_yyguts;
3516
3517 yyset_extra (yy_user_defined, &dummy_yyguts);
3518
3519 if (ptr_yy_globals == NULL){
3520 errno = EINVAL;
3521 return 1;
3522 }
3523
3524 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
3525
3526 if (*ptr_yy_globals == NULL){
3527 errno = ENOMEM;
3528 return 1;
3529 }
3530
3531 /* By setting to 0xAA, we expose bugs in
3532 yy_init_globals. Leave at 0x00 for releases. */
3533 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3534
3535 yyset_extra (yy_user_defined, *ptr_yy_globals);
3536
3537 return yy_init_globals ( *ptr_yy_globals );
3538 }
3539
3540 static int yy_init_globals (yyscan_t yyscanner)
3541 {
3542 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3543 /* Initialization is the same as for the non-reentrant scanner.
3544 * This function is called from yylex_destroy(), so don't allocate here.
3545 */
3546
3547 yyg->yy_buffer_stack = 0;
3548 yyg->yy_buffer_stack_top = 0;
3549 yyg->yy_buffer_stack_max = 0;
3550 yyg->yy_c_buf_p = (char *) 0;
3551 yyg->yy_init = 0;
3552 yyg->yy_start = 0;
3553
3554 yyg->yy_start_stack_ptr = 0;
3555 yyg->yy_start_stack_depth = 0;
3556 yyg->yy_start_stack = NULL;
3557
3558 /* Defined in main.c */
3559 #ifdef YY_STDINIT
3560 yyin = stdin;
3561 yyout = stdout;
3562 #else
3563 yyin = (FILE *) 0;
3564 yyout = (FILE *) 0;
3565 #endif
3566
3567 /* For future reference: Set errno on error, since we are called by
3568 * yylex_init()
3569 */
3570 return 0;
3571 }
3572
3573 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
3574 int yylex_destroy (yyscan_t yyscanner)
3575 {
3576 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3577
3578 /* Pop the buffer stack, destroying each element. */
3579 while(YY_CURRENT_BUFFER){
3580 yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3581 YY_CURRENT_BUFFER_LVALUE = NULL;
3582 yypop_buffer_state(yyscanner);
3583 }
3584
3585 /* Destroy the stack itself. */
3586 yyfree(yyg->yy_buffer_stack ,yyscanner);
3587 yyg->yy_buffer_stack = NULL;
3588
3589 /* Destroy the start condition stack. */
3590 yyfree(yyg->yy_start_stack ,yyscanner );
3591 yyg->yy_start_stack = NULL;
3592
3593 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3594 * yylex() is called, initialization will occur. */
3595 yy_init_globals( yyscanner);
3596
3597 /* Destroy the main struct (reentrant only). */
3598 yyfree ( yyscanner , yyscanner );
3599 yyscanner = NULL;
3600 return 0;
3601 }
3602
3603 /*
3604 * Internal utility routines.
3605 */
3606
3607 #ifndef yytext_ptr
3608 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3609 {
3610 register int i;
3611 for ( i = 0; i < n; ++i )
3612 s1[i] = s2[i];
3613 }
3614 #endif
3615
3616 #ifdef YY_NEED_STRLEN
3617 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3618 {
3619 register int n;
3620 for ( n = 0; s[n]; ++n )
3621 ;
3622
3623 return n;
3624 }
3625 #endif
3626
3627 void *yyalloc (yy_size_t size , yyscan_t yyscanner)
3628 {
3629 return (void *) malloc( size );
3630 }
3631
3632 void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
3633 {
3634 /* The cast to (char *) in the following accommodates both
3635 * implementations that use char* generic pointers, and those
3636 * that use void* generic pointers. It works with the latter
3637 * because both ANSI C and C++ allow castless assignment from
3638 * any pointer type to void*, and deal with argument conversions
3639 * as though doing an assignment.
3640 */
3641 return (void *) realloc( (char *) ptr, size );
3642 }
3643
3644 void yyfree (void * ptr , yyscan_t yyscanner)
3645 {
3646 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3647 }
3648
3649 #define YYTABLES_NAME "yytables"
3650
3651 #line 480 "program_lexer.l"
3652
3653
3654
3655 void
3656 _mesa_program_lexer_ctor(void **scanner, struct asm_parser_state *state,
3657 const char *string, size_t len)
3658 {
3659 yylex_init_extra(state,scanner);
3660 yy_scan_bytes(string,len,*scanner);
3661 }
3662
3663 void
3664 _mesa_program_lexer_dtor(void *scanner)
3665 {
3666 yylex_destroy(scanner);
3667 }
3668