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