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