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