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 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 1 |
1189 | #define FIELDS 2 |
1190 | |
1191 | |
1192 | |
1193 | |
1194 | |
1195 | |
1196 | #define 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 ; |
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 | |
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 | */ |
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 |
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 | */ |
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 | */ |
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 | |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | |
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 | */ |
3207 | YY_EXTRA_TYPE (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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | */ |
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 | |
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 | */ |
3297 | void (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 | */ |
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 | */ |
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 | */ |
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 | |
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 | |
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 | |
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 | |
3385 | YYSTYPE * yyget_lval (yyscan_t yyscanner) |
3386 | { |
3387 | struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; |
3388 | return yylval; |
3389 | } |
3390 | |
3391 | |
3392 | |
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 | |
3402 | YYLTYPE *yyget_lloc (yyscan_t yyscanner) |
3403 | { |
3404 | struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; |
3405 | return yylloc; |
3406 | } |
3407 | |
3408 | |
3409 | |
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 | */ |
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 | */ |
3454 | int ( 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 | |
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. */ |
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 |
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 |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |