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