glsl_lexer.cpp revision b8e80941
1b8e80941Smrg#line 1 "src/compiler/glsl/glsl_lexer.cpp"
2b8e80941Smrg
3b8e80941Smrg#line 3 "src/compiler/glsl/glsl_lexer.cpp"
4b8e80941Smrg
5b8e80941Smrg#define  YY_INT_ALIGNED short int
6b8e80941Smrg
7b8e80941Smrg/* A lexical scanner generated by flex */
8b8e80941Smrg
9b8e80941Smrg#define FLEX_SCANNER
10b8e80941Smrg#define YY_FLEX_MAJOR_VERSION 2
11b8e80941Smrg#define YY_FLEX_MINOR_VERSION 6
12b8e80941Smrg#define YY_FLEX_SUBMINOR_VERSION 4
13b8e80941Smrg#if YY_FLEX_SUBMINOR_VERSION > 0
14b8e80941Smrg#define FLEX_BETA
15b8e80941Smrg#endif
16b8e80941Smrg
17b8e80941Smrg#ifdef yy_create_buffer
18b8e80941Smrg#define _mesa_glsl_lexer__create_buffer_ALREADY_DEFINED
19b8e80941Smrg#else
20b8e80941Smrg#define yy_create_buffer _mesa_glsl_lexer__create_buffer
21b8e80941Smrg#endif
22b8e80941Smrg
23b8e80941Smrg#ifdef yy_delete_buffer
24b8e80941Smrg#define _mesa_glsl_lexer__delete_buffer_ALREADY_DEFINED
25b8e80941Smrg#else
26b8e80941Smrg#define yy_delete_buffer _mesa_glsl_lexer__delete_buffer
27b8e80941Smrg#endif
28b8e80941Smrg
29b8e80941Smrg#ifdef yy_scan_buffer
30b8e80941Smrg#define _mesa_glsl_lexer__scan_buffer_ALREADY_DEFINED
31b8e80941Smrg#else
32b8e80941Smrg#define yy_scan_buffer _mesa_glsl_lexer__scan_buffer
33b8e80941Smrg#endif
34b8e80941Smrg
35b8e80941Smrg#ifdef yy_scan_string
36b8e80941Smrg#define _mesa_glsl_lexer__scan_string_ALREADY_DEFINED
37b8e80941Smrg#else
38b8e80941Smrg#define yy_scan_string _mesa_glsl_lexer__scan_string
39b8e80941Smrg#endif
40b8e80941Smrg
41b8e80941Smrg#ifdef yy_scan_bytes
42b8e80941Smrg#define _mesa_glsl_lexer__scan_bytes_ALREADY_DEFINED
43b8e80941Smrg#else
44b8e80941Smrg#define yy_scan_bytes _mesa_glsl_lexer__scan_bytes
45b8e80941Smrg#endif
46b8e80941Smrg
47b8e80941Smrg#ifdef yy_init_buffer
48b8e80941Smrg#define _mesa_glsl_lexer__init_buffer_ALREADY_DEFINED
49b8e80941Smrg#else
50b8e80941Smrg#define yy_init_buffer _mesa_glsl_lexer__init_buffer
51b8e80941Smrg#endif
52b8e80941Smrg
53b8e80941Smrg#ifdef yy_flush_buffer
54b8e80941Smrg#define _mesa_glsl_lexer__flush_buffer_ALREADY_DEFINED
55b8e80941Smrg#else
56b8e80941Smrg#define yy_flush_buffer _mesa_glsl_lexer__flush_buffer
57b8e80941Smrg#endif
58b8e80941Smrg
59b8e80941Smrg#ifdef yy_load_buffer_state
60b8e80941Smrg#define _mesa_glsl_lexer__load_buffer_state_ALREADY_DEFINED
61b8e80941Smrg#else
62b8e80941Smrg#define yy_load_buffer_state _mesa_glsl_lexer__load_buffer_state
63b8e80941Smrg#endif
64b8e80941Smrg
65b8e80941Smrg#ifdef yy_switch_to_buffer
66b8e80941Smrg#define _mesa_glsl_lexer__switch_to_buffer_ALREADY_DEFINED
67b8e80941Smrg#else
68b8e80941Smrg#define yy_switch_to_buffer _mesa_glsl_lexer__switch_to_buffer
69b8e80941Smrg#endif
70b8e80941Smrg
71b8e80941Smrg#ifdef yypush_buffer_state
72b8e80941Smrg#define _mesa_glsl_lexer_push_buffer_state_ALREADY_DEFINED
73b8e80941Smrg#else
74b8e80941Smrg#define yypush_buffer_state _mesa_glsl_lexer_push_buffer_state
75b8e80941Smrg#endif
76b8e80941Smrg
77b8e80941Smrg#ifdef yypop_buffer_state
78b8e80941Smrg#define _mesa_glsl_lexer_pop_buffer_state_ALREADY_DEFINED
79b8e80941Smrg#else
80b8e80941Smrg#define yypop_buffer_state _mesa_glsl_lexer_pop_buffer_state
81b8e80941Smrg#endif
82b8e80941Smrg
83b8e80941Smrg#ifdef yyensure_buffer_stack
84b8e80941Smrg#define _mesa_glsl_lexer_ensure_buffer_stack_ALREADY_DEFINED
85b8e80941Smrg#else
86b8e80941Smrg#define yyensure_buffer_stack _mesa_glsl_lexer_ensure_buffer_stack
87b8e80941Smrg#endif
88b8e80941Smrg
89b8e80941Smrg#ifdef yylex
90b8e80941Smrg#define _mesa_glsl_lexer_lex_ALREADY_DEFINED
91b8e80941Smrg#else
92b8e80941Smrg#define yylex _mesa_glsl_lexer_lex
93b8e80941Smrg#endif
94b8e80941Smrg
95b8e80941Smrg#ifdef yyrestart
96b8e80941Smrg#define _mesa_glsl_lexer_restart_ALREADY_DEFINED
97b8e80941Smrg#else
98b8e80941Smrg#define yyrestart _mesa_glsl_lexer_restart
99b8e80941Smrg#endif
100b8e80941Smrg
101b8e80941Smrg#ifdef yylex_init
102b8e80941Smrg#define _mesa_glsl_lexer_lex_init_ALREADY_DEFINED
103b8e80941Smrg#else
104b8e80941Smrg#define yylex_init _mesa_glsl_lexer_lex_init
105b8e80941Smrg#endif
106b8e80941Smrg
107b8e80941Smrg#ifdef yylex_init_extra
108b8e80941Smrg#define _mesa_glsl_lexer_lex_init_extra_ALREADY_DEFINED
109b8e80941Smrg#else
110b8e80941Smrg#define yylex_init_extra _mesa_glsl_lexer_lex_init_extra
111b8e80941Smrg#endif
112b8e80941Smrg
113b8e80941Smrg#ifdef yylex_destroy
114b8e80941Smrg#define _mesa_glsl_lexer_lex_destroy_ALREADY_DEFINED
115b8e80941Smrg#else
116b8e80941Smrg#define yylex_destroy _mesa_glsl_lexer_lex_destroy
117b8e80941Smrg#endif
118b8e80941Smrg
119b8e80941Smrg#ifdef yyget_debug
120b8e80941Smrg#define _mesa_glsl_lexer_get_debug_ALREADY_DEFINED
121b8e80941Smrg#else
122b8e80941Smrg#define yyget_debug _mesa_glsl_lexer_get_debug
123b8e80941Smrg#endif
124b8e80941Smrg
125b8e80941Smrg#ifdef yyset_debug
126b8e80941Smrg#define _mesa_glsl_lexer_set_debug_ALREADY_DEFINED
127b8e80941Smrg#else
128b8e80941Smrg#define yyset_debug _mesa_glsl_lexer_set_debug
129b8e80941Smrg#endif
130b8e80941Smrg
131b8e80941Smrg#ifdef yyget_extra
132b8e80941Smrg#define _mesa_glsl_lexer_get_extra_ALREADY_DEFINED
133b8e80941Smrg#else
134b8e80941Smrg#define yyget_extra _mesa_glsl_lexer_get_extra
135b8e80941Smrg#endif
136b8e80941Smrg
137b8e80941Smrg#ifdef yyset_extra
138b8e80941Smrg#define _mesa_glsl_lexer_set_extra_ALREADY_DEFINED
139b8e80941Smrg#else
140b8e80941Smrg#define yyset_extra _mesa_glsl_lexer_set_extra
141b8e80941Smrg#endif
142b8e80941Smrg
143b8e80941Smrg#ifdef yyget_in
144b8e80941Smrg#define _mesa_glsl_lexer_get_in_ALREADY_DEFINED
145b8e80941Smrg#else
146b8e80941Smrg#define yyget_in _mesa_glsl_lexer_get_in
147b8e80941Smrg#endif
148b8e80941Smrg
149b8e80941Smrg#ifdef yyset_in
150b8e80941Smrg#define _mesa_glsl_lexer_set_in_ALREADY_DEFINED
151b8e80941Smrg#else
152b8e80941Smrg#define yyset_in _mesa_glsl_lexer_set_in
153b8e80941Smrg#endif
154b8e80941Smrg
155b8e80941Smrg#ifdef yyget_out
156b8e80941Smrg#define _mesa_glsl_lexer_get_out_ALREADY_DEFINED
157b8e80941Smrg#else
158b8e80941Smrg#define yyget_out _mesa_glsl_lexer_get_out
159b8e80941Smrg#endif
160b8e80941Smrg
161b8e80941Smrg#ifdef yyset_out
162b8e80941Smrg#define _mesa_glsl_lexer_set_out_ALREADY_DEFINED
163b8e80941Smrg#else
164b8e80941Smrg#define yyset_out _mesa_glsl_lexer_set_out
165b8e80941Smrg#endif
166b8e80941Smrg
167b8e80941Smrg#ifdef yyget_leng
168b8e80941Smrg#define _mesa_glsl_lexer_get_leng_ALREADY_DEFINED
169b8e80941Smrg#else
170b8e80941Smrg#define yyget_leng _mesa_glsl_lexer_get_leng
171b8e80941Smrg#endif
172b8e80941Smrg
173b8e80941Smrg#ifdef yyget_text
174b8e80941Smrg#define _mesa_glsl_lexer_get_text_ALREADY_DEFINED
175b8e80941Smrg#else
176b8e80941Smrg#define yyget_text _mesa_glsl_lexer_get_text
177b8e80941Smrg#endif
178b8e80941Smrg
179b8e80941Smrg#ifdef yyget_lineno
180b8e80941Smrg#define _mesa_glsl_lexer_get_lineno_ALREADY_DEFINED
181b8e80941Smrg#else
182b8e80941Smrg#define yyget_lineno _mesa_glsl_lexer_get_lineno
183b8e80941Smrg#endif
184b8e80941Smrg
185b8e80941Smrg#ifdef yyset_lineno
186b8e80941Smrg#define _mesa_glsl_lexer_set_lineno_ALREADY_DEFINED
187b8e80941Smrg#else
188b8e80941Smrg#define yyset_lineno _mesa_glsl_lexer_set_lineno
189b8e80941Smrg#endif
190b8e80941Smrg
191b8e80941Smrg#ifdef yyget_column
192b8e80941Smrg#define _mesa_glsl_lexer_get_column_ALREADY_DEFINED
193b8e80941Smrg#else
194b8e80941Smrg#define yyget_column _mesa_glsl_lexer_get_column
195b8e80941Smrg#endif
196b8e80941Smrg
197b8e80941Smrg#ifdef yyset_column
198b8e80941Smrg#define _mesa_glsl_lexer_set_column_ALREADY_DEFINED
199b8e80941Smrg#else
200b8e80941Smrg#define yyset_column _mesa_glsl_lexer_set_column
201b8e80941Smrg#endif
202b8e80941Smrg
203b8e80941Smrg#ifdef yywrap
204b8e80941Smrg#define _mesa_glsl_lexer_wrap_ALREADY_DEFINED
205b8e80941Smrg#else
206b8e80941Smrg#define yywrap _mesa_glsl_lexer_wrap
207b8e80941Smrg#endif
208b8e80941Smrg
209b8e80941Smrg#ifdef yyget_lval
210b8e80941Smrg#define _mesa_glsl_lexer_get_lval_ALREADY_DEFINED
211b8e80941Smrg#else
212b8e80941Smrg#define yyget_lval _mesa_glsl_lexer_get_lval
213b8e80941Smrg#endif
214b8e80941Smrg
215b8e80941Smrg#ifdef yyset_lval
216b8e80941Smrg#define _mesa_glsl_lexer_set_lval_ALREADY_DEFINED
217b8e80941Smrg#else
218b8e80941Smrg#define yyset_lval _mesa_glsl_lexer_set_lval
219b8e80941Smrg#endif
220b8e80941Smrg
221b8e80941Smrg#ifdef yyget_lloc
222b8e80941Smrg#define _mesa_glsl_lexer_get_lloc_ALREADY_DEFINED
223b8e80941Smrg#else
224b8e80941Smrg#define yyget_lloc _mesa_glsl_lexer_get_lloc
225b8e80941Smrg#endif
226b8e80941Smrg
227b8e80941Smrg#ifdef yyset_lloc
228b8e80941Smrg#define _mesa_glsl_lexer_set_lloc_ALREADY_DEFINED
229b8e80941Smrg#else
230b8e80941Smrg#define yyset_lloc _mesa_glsl_lexer_set_lloc
231b8e80941Smrg#endif
232b8e80941Smrg
233b8e80941Smrg#ifdef yyalloc
234b8e80941Smrg#define _mesa_glsl_lexer_alloc_ALREADY_DEFINED
235b8e80941Smrg#else
236b8e80941Smrg#define yyalloc _mesa_glsl_lexer_alloc
237b8e80941Smrg#endif
238b8e80941Smrg
239b8e80941Smrg#ifdef yyrealloc
240b8e80941Smrg#define _mesa_glsl_lexer_realloc_ALREADY_DEFINED
241b8e80941Smrg#else
242b8e80941Smrg#define yyrealloc _mesa_glsl_lexer_realloc
243b8e80941Smrg#endif
244b8e80941Smrg
245b8e80941Smrg#ifdef yyfree
246b8e80941Smrg#define _mesa_glsl_lexer_free_ALREADY_DEFINED
247b8e80941Smrg#else
248b8e80941Smrg#define yyfree _mesa_glsl_lexer_free
249b8e80941Smrg#endif
250b8e80941Smrg
251b8e80941Smrg/* First, we deal with  platform-specific or compiler-specific issues. */
252b8e80941Smrg
253b8e80941Smrg/* begin standard C headers. */
254b8e80941Smrg#ifdef _LIBC
255b8e80941Smrg#include "namespace.h"
256b8e80941Smrg#endif
257b8e80941Smrg#include <stdio.h>
258b8e80941Smrg#include <string.h>
259b8e80941Smrg#include <errno.h>
260b8e80941Smrg#include <stdlib.h>
261b8e80941Smrg
262b8e80941Smrg/* end standard C headers. */
263b8e80941Smrg
264b8e80941Smrg/*	$NetBSD: glsl_lexer.cpp,v 1.1.1.1 2021/07/11 20:36:33 mrg Exp $	*/
265b8e80941Smrg
266b8e80941Smrg/* flex integer type definitions */
267b8e80941Smrg
268b8e80941Smrg#ifndef FLEXINT_H
269b8e80941Smrg#define FLEXINT_H
270b8e80941Smrg
271b8e80941Smrg/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
272b8e80941Smrg
273b8e80941Smrg#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
274b8e80941Smrg
275b8e80941Smrg/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
276b8e80941Smrg * if you want the limit (max/min) macros for int types.
277b8e80941Smrg */
278b8e80941Smrg#ifndef __STDC_LIMIT_MACROS
279b8e80941Smrg#define __STDC_LIMIT_MACROS 1
280b8e80941Smrg#endif
281b8e80941Smrg
282b8e80941Smrg#include <inttypes.h>
283b8e80941Smrgtypedef int8_t flex_int8_t;
284b8e80941Smrgtypedef uint8_t flex_uint8_t;
285b8e80941Smrgtypedef int16_t flex_int16_t;
286b8e80941Smrgtypedef uint16_t flex_uint16_t;
287b8e80941Smrgtypedef int32_t flex_int32_t;
288b8e80941Smrgtypedef uint32_t flex_uint32_t;
289b8e80941Smrg#else
290b8e80941Smrgtypedef signed char flex_int8_t;
291b8e80941Smrgtypedef short int flex_int16_t;
292b8e80941Smrgtypedef int flex_int32_t;
293b8e80941Smrgtypedef unsigned char flex_uint8_t;
294b8e80941Smrgtypedef unsigned short int flex_uint16_t;
295b8e80941Smrgtypedef unsigned int flex_uint32_t;
296b8e80941Smrg
297b8e80941Smrg/* Limits of integral types. */
298b8e80941Smrg#ifndef INT8_MIN
299b8e80941Smrg#define INT8_MIN               (-128)
300b8e80941Smrg#endif
301b8e80941Smrg#ifndef INT16_MIN
302b8e80941Smrg#define INT16_MIN              (-32767-1)
303b8e80941Smrg#endif
304b8e80941Smrg#ifndef INT32_MIN
305b8e80941Smrg#define INT32_MIN              (-2147483647-1)
306b8e80941Smrg#endif
307b8e80941Smrg#ifndef INT8_MAX
308b8e80941Smrg#define INT8_MAX               (127)
309b8e80941Smrg#endif
310b8e80941Smrg#ifndef INT16_MAX
311b8e80941Smrg#define INT16_MAX              (32767)
312b8e80941Smrg#endif
313b8e80941Smrg#ifndef INT32_MAX
314b8e80941Smrg#define INT32_MAX              (2147483647)
315b8e80941Smrg#endif
316b8e80941Smrg#ifndef UINT8_MAX
317b8e80941Smrg#define UINT8_MAX              (255U)
318b8e80941Smrg#endif
319b8e80941Smrg#ifndef UINT16_MAX
320b8e80941Smrg#define UINT16_MAX             (65535U)
321b8e80941Smrg#endif
322b8e80941Smrg#ifndef UINT32_MAX
323b8e80941Smrg#define UINT32_MAX             (4294967295U)
324b8e80941Smrg#endif
325b8e80941Smrg
326b8e80941Smrg#ifndef SIZE_MAX
327b8e80941Smrg#define SIZE_MAX               (~(size_t)0)
328b8e80941Smrg#endif
329b8e80941Smrg
330b8e80941Smrg#endif /* ! C99 */
331b8e80941Smrg
332b8e80941Smrg#endif /* ! FLEXINT_H */
333b8e80941Smrg
334b8e80941Smrg/* begin standard C++ headers. */
335b8e80941Smrg
336b8e80941Smrg/* TODO: this is always defined, so inline it */
337b8e80941Smrg#define yyconst const
338b8e80941Smrg
339b8e80941Smrg#if defined(__GNUC__) && __GNUC__ >= 3
340b8e80941Smrg#define yynoreturn __attribute__((__noreturn__))
341b8e80941Smrg#else
342b8e80941Smrg#define yynoreturn
343b8e80941Smrg#endif
344b8e80941Smrg
345b8e80941Smrg/* Returned upon end-of-file. */
346b8e80941Smrg#define YY_NULL 0
347b8e80941Smrg
348b8e80941Smrg/* Promotes a possibly negative, possibly signed char to an
349b8e80941Smrg *   integer in range [0..255] for use as an array index.
350b8e80941Smrg */
351b8e80941Smrg#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
352b8e80941Smrg
353b8e80941Smrg/* An opaque pointer. */
354b8e80941Smrg#ifndef YY_TYPEDEF_YY_SCANNER_T
355b8e80941Smrg#define YY_TYPEDEF_YY_SCANNER_T
356b8e80941Smrgtypedef void* yyscan_t;
357b8e80941Smrg#endif
358b8e80941Smrg
359b8e80941Smrg/* For convenience, these vars (plus the bison vars far below)
360b8e80941Smrg   are macros in the reentrant scanner. */
361b8e80941Smrg#define yyin yyg->yyin_r
362b8e80941Smrg#define yyout yyg->yyout_r
363b8e80941Smrg#define yyextra yyg->yyextra_r
364b8e80941Smrg#define yyleng yyg->yyleng_r
365b8e80941Smrg#define yytext yyg->yytext_r
366b8e80941Smrg#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
367b8e80941Smrg#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
368b8e80941Smrg#define yy_flex_debug yyg->yy_flex_debug_r
369b8e80941Smrg
370b8e80941Smrg/* Enter a start condition.  This macro really ought to take a parameter,
371b8e80941Smrg * but we do it the disgusting crufty way forced on us by the ()-less
372b8e80941Smrg * definition of BEGIN.
373b8e80941Smrg */
374b8e80941Smrg#define BEGIN yyg->yy_start = 1 + 2 *
375b8e80941Smrg/* Translate the current start state into a value that can be later handed
376b8e80941Smrg * to BEGIN to return to the state.  The YYSTATE alias is for lex
377b8e80941Smrg * compatibility.
378b8e80941Smrg */
379b8e80941Smrg#define YY_START ((yyg->yy_start - 1) / 2)
380b8e80941Smrg#define YYSTATE YY_START
381b8e80941Smrg/* Action number for EOF rule of a given start state. */
382b8e80941Smrg#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
383b8e80941Smrg/* Special action meaning "start processing a new file". */
384b8e80941Smrg#define YY_NEW_FILE yyrestart( yyin , yyscanner )
385b8e80941Smrg#define YY_END_OF_BUFFER_CHAR 0
386b8e80941Smrg
387b8e80941Smrg/* Size of default input buffer. */
388b8e80941Smrg#ifndef YY_BUF_SIZE
389b8e80941Smrg#ifdef __ia64__
390b8e80941Smrg/* On IA-64, the buffer size is 16k, not 8k.
391b8e80941Smrg * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
392b8e80941Smrg * Ditto for the __ia64__ case accordingly.
393b8e80941Smrg */
394b8e80941Smrg#define YY_BUF_SIZE 32768
395b8e80941Smrg#else
396b8e80941Smrg#define YY_BUF_SIZE 16384
397b8e80941Smrg#endif /* __ia64__ */
398b8e80941Smrg#endif
399b8e80941Smrg
400b8e80941Smrg/* The state buf must be large enough to hold one state per character in the main buffer.
401b8e80941Smrg */
402b8e80941Smrg#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
403b8e80941Smrg
404b8e80941Smrg#ifndef YY_TYPEDEF_YY_BUFFER_STATE
405b8e80941Smrg#define YY_TYPEDEF_YY_BUFFER_STATE
406b8e80941Smrgtypedef struct yy_buffer_state *YY_BUFFER_STATE;
407b8e80941Smrg#endif
408b8e80941Smrg
409b8e80941Smrg#ifndef YY_TYPEDEF_YY_SIZE_T
410b8e80941Smrg#define YY_TYPEDEF_YY_SIZE_T
411b8e80941Smrgtypedef size_t yy_size_t;
412b8e80941Smrg#endif
413b8e80941Smrg
414b8e80941Smrg#define EOB_ACT_CONTINUE_SCAN 0
415b8e80941Smrg#define EOB_ACT_END_OF_FILE 1
416b8e80941Smrg#define EOB_ACT_LAST_MATCH 2
417b8e80941Smrg
418b8e80941Smrg    #define YY_LESS_LINENO(n)
419b8e80941Smrg    #define YY_LINENO_REWIND_TO(ptr)
420b8e80941Smrg
421b8e80941Smrg/* Return all but the first "n" matched characters back to the input stream. */
422b8e80941Smrg#define yyless(n) \
423b8e80941Smrg	do \
424b8e80941Smrg		{ \
425b8e80941Smrg		/* Undo effects of setting up yytext. */ \
426b8e80941Smrg        int yyless_macro_arg = (n); \
427b8e80941Smrg        YY_LESS_LINENO(yyless_macro_arg);\
428b8e80941Smrg		*yy_cp = yyg->yy_hold_char; \
429b8e80941Smrg		YY_RESTORE_YY_MORE_OFFSET \
430b8e80941Smrg		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
431b8e80941Smrg		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
432b8e80941Smrg		} \
433b8e80941Smrg	while ( 0 )
434b8e80941Smrg#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
435b8e80941Smrg
436b8e80941Smrg#ifndef YY_STRUCT_YY_BUFFER_STATE
437b8e80941Smrg#define YY_STRUCT_YY_BUFFER_STATE
438b8e80941Smrgstruct yy_buffer_state
439b8e80941Smrg	{
440b8e80941Smrg	FILE *yy_input_file;
441b8e80941Smrg
442b8e80941Smrg	char *yy_ch_buf;		/* input buffer */
443b8e80941Smrg	char *yy_buf_pos;		/* current position in input buffer */
444b8e80941Smrg
445b8e80941Smrg	/* Size of input buffer in bytes, not including room for EOB
446b8e80941Smrg	 * characters.
447b8e80941Smrg	 */
448b8e80941Smrg	size_t yy_buf_size;
449b8e80941Smrg
450b8e80941Smrg	/* Number of characters read into yy_ch_buf, not including EOB
451b8e80941Smrg	 * characters.
452b8e80941Smrg	 */
453b8e80941Smrg	size_t yy_n_chars;
454b8e80941Smrg
455b8e80941Smrg	/* Whether we "own" the buffer - i.e., we know we created it,
456b8e80941Smrg	 * and can realloc() it to grow it, and should free() it to
457b8e80941Smrg	 * delete it.
458b8e80941Smrg	 */
459b8e80941Smrg	int yy_is_our_buffer;
460b8e80941Smrg
461b8e80941Smrg	/* Whether this is an "interactive" input source; if so, and
462b8e80941Smrg	 * if we're using stdio for input, then we want to use getc()
463b8e80941Smrg	 * instead of fread(), to make sure we stop fetching input after
464b8e80941Smrg	 * each newline.
465b8e80941Smrg	 */
466b8e80941Smrg	int yy_is_interactive;
467b8e80941Smrg
468b8e80941Smrg	/* Whether we're considered to be at the beginning of a line.
469b8e80941Smrg	 * If so, '^' rules will be active on the next match, otherwise
470b8e80941Smrg	 * not.
471b8e80941Smrg	 */
472b8e80941Smrg	int yy_at_bol;
473b8e80941Smrg
474b8e80941Smrg    int yy_bs_lineno; /**< The line count. */
475b8e80941Smrg    int yy_bs_column; /**< The column count. */
476b8e80941Smrg
477b8e80941Smrg	/* Whether to try to fill the input buffer when we reach the
478b8e80941Smrg	 * end of it.
479b8e80941Smrg	 */
480b8e80941Smrg	int yy_fill_buffer;
481b8e80941Smrg
482b8e80941Smrg	int yy_buffer_status;
483b8e80941Smrg
484b8e80941Smrg#define YY_BUFFER_NEW 0
485b8e80941Smrg#define YY_BUFFER_NORMAL 1
486b8e80941Smrg	/* When an EOF's been seen but there's still some text to process
487b8e80941Smrg	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
488b8e80941Smrg	 * shouldn't try reading from the input source any more.  We might
489b8e80941Smrg	 * still have a bunch of tokens to match, though, because of
490b8e80941Smrg	 * possible backing-up.
491b8e80941Smrg	 *
492b8e80941Smrg	 * When we actually see the EOF, we change the status to "new"
493b8e80941Smrg	 * (via yyrestart()), so that the user can continue scanning by
494b8e80941Smrg	 * just pointing yyin at a new input file.
495b8e80941Smrg	 */
496b8e80941Smrg#define YY_BUFFER_EOF_PENDING 2
497b8e80941Smrg
498b8e80941Smrg	};
499b8e80941Smrg#endif /* !YY_STRUCT_YY_BUFFER_STATE */
500b8e80941Smrg
501b8e80941Smrg/* We provide macros for accessing buffer states in case in the
502b8e80941Smrg * future we want to put the buffer states in a more general
503b8e80941Smrg * "scanner state".
504b8e80941Smrg *
505b8e80941Smrg * Returns the top of the stack, or NULL.
506b8e80941Smrg */
507b8e80941Smrg#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
508b8e80941Smrg                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
509b8e80941Smrg                          : NULL)
510b8e80941Smrg/* Same as previous macro, but useful when we know that the buffer stack is not
511b8e80941Smrg * NULL or when we need an lvalue. For internal use only.
512b8e80941Smrg */
513b8e80941Smrg#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
514b8e80941Smrg
515b8e80941Smrgvoid yyrestart ( FILE *input_file , yyscan_t yyscanner );
516b8e80941Smrgvoid yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
517b8e80941SmrgYY_BUFFER_STATE yy_create_buffer ( FILE *file, yy_size_t size , yyscan_t yyscanner );
518b8e80941Smrgvoid yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
519b8e80941Smrgvoid yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
520b8e80941Smrgvoid yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
521b8e80941Smrgvoid yypop_buffer_state ( yyscan_t yyscanner );
522b8e80941Smrg
523b8e80941Smrgstatic void yyensure_buffer_stack ( yyscan_t yyscanner );
524b8e80941Smrgstatic void yy_load_buffer_state ( yyscan_t yyscanner );
525b8e80941Smrgstatic void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
526b8e80941Smrg#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
527b8e80941Smrg
528b8e80941SmrgYY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
529b8e80941SmrgYY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
530b8e80941SmrgYY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner );
531b8e80941Smrg
532b8e80941Smrgvoid *yyalloc ( yy_size_t , yyscan_t yyscanner );
533b8e80941Smrgvoid *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
534b8e80941Smrgvoid yyfree ( void * , yyscan_t yyscanner );
535b8e80941Smrg
536b8e80941Smrg#define yy_new_buffer yy_create_buffer
537b8e80941Smrg#define yy_set_interactive(is_interactive) \
538b8e80941Smrg	{ \
539b8e80941Smrg	if ( ! YY_CURRENT_BUFFER ){ \
540b8e80941Smrg        yyensure_buffer_stack (yyscanner); \
541b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE =    \
542b8e80941Smrg            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
543b8e80941Smrg	} \
544b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
545b8e80941Smrg	}
546b8e80941Smrg#define yy_set_bol(at_bol) \
547b8e80941Smrg	{ \
548b8e80941Smrg	if ( ! YY_CURRENT_BUFFER ){\
549b8e80941Smrg        yyensure_buffer_stack (yyscanner); \
550b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE =    \
551b8e80941Smrg            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
552b8e80941Smrg	} \
553b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
554b8e80941Smrg	}
555b8e80941Smrg#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
556b8e80941Smrg
557b8e80941Smrg/* Begin user sect3 */
558b8e80941Smrg
559b8e80941Smrg#define _mesa_glsl_lexer_wrap(yyscanner) (/*CONSTCOND*/1)
560b8e80941Smrg#define YY_SKIP_YYWRAP
561b8e80941Smrgtypedef flex_uint8_t YY_CHAR;
562b8e80941Smrg
563b8e80941Smrgtypedef int yy_state_type;
564b8e80941Smrg
565b8e80941Smrg#define yytext_ptr yytext_r
566b8e80941Smrg
567b8e80941Smrgstatic yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
568b8e80941Smrgstatic yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
569b8e80941Smrgstatic int yy_get_next_buffer ( yyscan_t yyscanner );
570b8e80941Smrgstatic void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
571b8e80941Smrg
572b8e80941Smrg/* Done after the current pattern has been matched and before the
573b8e80941Smrg * corresponding action - sets up yytext.
574b8e80941Smrg */
575b8e80941Smrg#define YY_DO_BEFORE_ACTION \
576b8e80941Smrg	yyg->yytext_ptr = yy_bp; \
577b8e80941Smrg	yyleng = (yy_size_t)(yy_cp - yy_bp); \
578b8e80941Smrg	yyg->yy_hold_char = *yy_cp; \
579b8e80941Smrg	*yy_cp = '\0'; \
580b8e80941Smrg	yyg->yy_c_buf_p = yy_cp;
581b8e80941Smrg#define YY_NUM_RULES 277
582b8e80941Smrg#define YY_END_OF_BUFFER 278
583b8e80941Smrg/* This struct is not used in this scanner,
584b8e80941Smrg   but its presence is necessary. */
585b8e80941Smrgstruct yy_trans_info
586b8e80941Smrg	{
587b8e80941Smrg	flex_int32_t yy_verify;
588b8e80941Smrg	flex_int32_t yy_nxt;
589b8e80941Smrg	};
590b8e80941Smrgstatic const flex_int16_t yy_accept[1096] =
591b8e80941Smrg    {   0,
592b8e80941Smrg        0,    0,   18,   18,    0,    0,  278,  276,    1,   25,
593b8e80941Smrg      276,  276,  276,  276,  276,  276,  275,  276,  182,  180,
594b8e80941Smrg      276,  276,  276,  274,  276,  274,  274,  274,  274,  274,
595b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
596b8e80941Smrg      274,  274,  274,  274,  274,  276,    1,  276,   24,   18,
597b8e80941Smrg       23,   24,   22,   21,   19,   20,   16,   15,    1,  164,
598b8e80941Smrg      173,  165,  176,  170,  159,  172,  160,  179,  184,  171,
599b8e80941Smrg      185,  182,    0,    0,  182,  182,    0,  182,  180,  180,
600b8e80941Smrg      180,  180,  168,  161,  163,  162,  169,  274,  177,  167,
601b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
602b8e80941Smrg
603b8e80941Smrg      274,  274,  274,  274,   34,  274,  274,  274,  274,  274,
604b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,   38,
605b8e80941Smrg      274,  274,   65,  274,  274,  274,  274,  274,  274,  274,
606b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
607b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
608b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  178,  166,
609b8e80941Smrg        1,    0,    0,    2,    0,    0,    0,    0,   18,   17,
610b8e80941Smrg       21,   20,    0,  184,    0,    0,  183,    0,  185,    0,
611b8e80941Smrg        0,    0,  186,  181,  174,  175,  274,  193,  274,  274,
612b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
613b8e80941Smrg
614b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
615b8e80941Smrg      274,  274,  274,   37,  274,  274,  274,  274,  274,  274,
616b8e80941Smrg      274,  274,  274,  274,  274,   30,  274,  274,  274,  274,
617b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,   66,  274,  274,
618b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
619b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
620b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
621b8e80941Smrg      274,  274,  274,  274,  274,    0,    0,    0,    0,   17,
622b8e80941Smrg        0,  184,  188,    0,  183,    0,    0,    0,  185,  189,
623b8e80941Smrg      186,    0,    0,  181,  181,  181,  274,  274,  274,   28,
624b8e80941Smrg
625b8e80941Smrg      274,  274,  274,  251,  244,  274,  274,  274,  274,  274,
626b8e80941Smrg      274,  274,  274,  274,  274,  274,   36,  196,  274,  274,
627b8e80941Smrg      274,  274,   73,  274,  274,  201,  214,  274,  274,  274,
628b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
629b8e80941Smrg      274,  211,  247,   53,   54,   55,  274,  274,  274,  274,
630b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
631b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
632b8e80941Smrg      274,  274,  199,  191,  274,  274,  274,   31,  274,  274,
633b8e80941Smrg      274,  274,  274,  274,  274,   50,   51,   52,  157,  274,
634b8e80941Smrg      274,  274,    0,    0,    0,    0,    0,  183,  187,  190,
635b8e80941Smrg
636b8e80941Smrg      274,  274,  274,   32,  274,   41,   42,   43,  274,  194,
637b8e80941Smrg      274,  274,   27,  274,  274,  274,  225,  226,  227,  274,
638b8e80941Smrg      222,  223,  224,  274,  192,  274,  215,   29,  237,  238,
639b8e80941Smrg      239,  249,  219,  220,  221,  274,  274,  274,  274,   67,
640b8e80941Smrg      217,  274,  274,  274,  274,   44,   45,   46,  274,  274,
641b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,   76,
642b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  212,
643b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
644b8e80941Smrg      274,  274,  274,  195,  274,  274,  246,   47,   48,   49,
645b8e80941Smrg      274,  274,   35,  274,    0,    0,    0,    0,  254,  274,
646b8e80941Smrg
647b8e80941Smrg      274,   69,  274,  274,  252,  274,  274,  274,  274,  274,
648b8e80941Smrg      274,  213,  208,  257,  274,  274,  274,  274,  274,  274,
649b8e80941Smrg      274,  204,  274,  274,  274,  274,  158,   56,   57,   58,
650b8e80941Smrg       59,   60,   61,   62,   63,   64,  274,  274,  274,  274,
651b8e80941Smrg      218,  200,  274,  274,  206,  274,  274,  274,   40,  274,
652b8e80941Smrg      264,  155,  243,   74,  207,  156,  274,  255,  202,  274,
653b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
654b8e80941Smrg        0,    0,    0,    0,  274,  274,  274,  274,  274,  203,
655b8e80941Smrg       39,  228,  229,  230,  231,  232,  233,  234,  235,  236,
656b8e80941Smrg      274,  267,  268,  269,  274,  274,  274,  274,  274,  112,
657b8e80941Smrg
658b8e80941Smrg      113,  114,  274,  274,  266,  274,  274,  274,  248,  274,
659b8e80941Smrg      274,  274,  274,  111,  274,  274,  274,  274,  274,  274,
660b8e80941Smrg      274,  274,  197,  271,  272,  273,  274,  274,  274,  274,
661b8e80941Smrg      274,  274,   68,  274,  274,   70,  274,  274,    0,    0,
662b8e80941Smrg        0,    0,    0,  274,  274,   71,  149,   33,  209,  123,
663b8e80941Smrg      124,  125,  274,  274,  274,  274,  274,  274,  274,  274,
664b8e80941Smrg      274,  274,  274,  274,  274,  274,  205,  274,  274,  274,
665b8e80941Smrg      152,  263,  151,  274,  274,  274,  274,  274,  274,  274,
666b8e80941Smrg      274,  198,  134,  135,  136,  274,  274,  270,  216,  274,
667b8e80941Smrg      150,  274,    0,    0,    6,    0,    0,    0,   14,    3,
668b8e80941Smrg
669b8e80941Smrg      274,   26,  274,  274,  274,  274,  274,  274,  274,  274,
670b8e80941Smrg      274,  121,  274,  274,  274,  116,  210,   72,  274,  274,
671b8e80941Smrg      274,  274,  274,  245,  274,  253,  250,  258,   77,   78,
672b8e80941Smrg       79,  274,  274,  274,  274,  274,  274,  274,  274,  274,
673b8e80941Smrg      274,  274,  274,  274,  274,  274,  153,    0,    0,    0,
674b8e80941Smrg        0,    0,    0,    0,    0,  274,  274,  274,  132,  274,
675b8e80941Smrg      274,  127,  274,  274,  274,  274,  274,  274,  274,  274,
676b8e80941Smrg       88,   89,   90,  274,  274,  274,  274,  274,  274,  274,
677b8e80941Smrg      274,  274,  274,  274,  274,  274,  265,  274,  274,  143,
678b8e80941Smrg      274,  274,  138,   94,   95,   96,  274,  274,    4,    0,
679b8e80941Smrg
680b8e80941Smrg        5,    0,    0,    0,    0,    0,    0,    0,  154,  274,
681b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  115,
682b8e80941Smrg      274,  117,  274,  274,  274,  274,  274,  274,  274,  274,
683b8e80941Smrg      274,  274,  274,  100,  274,  274,  274,  274,   80,  274,
684b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
685b8e80941Smrg      274,  274,    0,    0,    0,    0,    0,  274,  274,  274,
686b8e80941Smrg      126,  128,  274,  118,  274,  119,  274,  274,  274,  274,
687b8e80941Smrg      274,  101,  274,  274,   91,  274,  274,  274,  274,  274,
688b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
689b8e80941Smrg      137,  139,  274,  274,  274,  102,  274,  274,   97,    0,
690b8e80941Smrg
691b8e80941Smrg        0,    0,    0,  129,  130,  274,  274,  274,  145,  274,
692b8e80941Smrg      274,  146,  274,  274,  274,  274,  274,  274,  274,   75,
693b8e80941Smrg      274,  274,  274,  274,  240,  274,  241,  256,  274,  274,
694b8e80941Smrg      274,  140,  141,  274,  274,  274,  274,  274,  274,  274,
695b8e80941Smrg      274,    0,    0,    0,    0,  274,  274,  274,  274,  122,
696b8e80941Smrg      120,  274,  274,  274,  259,  261,  274,   81,  274,   82,
697b8e80941Smrg      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
698b8e80941Smrg      274,  260,  262,  274,    0,    0,    0,    0,    0,  133,
699b8e80941Smrg      131,  274,  274,   92,   93,  274,  274,  274,   83,  274,
700b8e80941Smrg      274,  274,   84,  274,  274,  274,  144,  142,   98,   99,
701b8e80941Smrg
702b8e80941Smrg      274,  274,    0,    0,    0,    0,    0,  274,  274,  274,
703b8e80941Smrg      274,  274,  274,  103,  274,  106,  274,  274,  274,  274,
704b8e80941Smrg        0,    0,    0,    0,    0,    0,  274,  274,  104,  107,
705b8e80941Smrg      274,  274,  274,  274,   85,  274,  105,  108,    0,    0,
706b8e80941Smrg        0,    7,    0,    0,    0,    0,  147,  148,  274,  274,
707b8e80941Smrg      274,  274,  110,    0,    0,    8,    0,    0,    0,    0,
708b8e80941Smrg      274,  274,  242,  274,    0,    0,    0,    0,    0,   11,
709b8e80941Smrg       86,   87,  274,    0,    0,    0,    9,    0,   12,  274,
710b8e80941Smrg        0,    0,   10,  109,    0,    0,    0,    0,    0,    0,
711b8e80941Smrg        0,    0,    0,   13,    0
712b8e80941Smrg
713b8e80941Smrg    } ;
714b8e80941Smrg
715b8e80941Smrgstatic const YY_CHAR yy_ec[256] =
716b8e80941Smrg    {   0,
717b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
718b8e80941Smrg        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
719b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
720b8e80941Smrg        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
721b8e80941Smrg       10,   11,   12,    1,   13,   14,   15,   16,   17,   18,
722b8e80941Smrg       19,   20,   21,   22,   21,   23,   23,   24,    1,   25,
723b8e80941Smrg       26,   27,    1,    1,   28,   29,   30,   31,   32,   33,
724b8e80941Smrg       34,   35,   35,   35,   35,   36,   37,   35,   38,   35,
725b8e80941Smrg       35,   39,   40,   41,   42,   35,   35,   43,   35,   35,
726b8e80941Smrg        1,    1,    1,   44,   45,    1,   46,   47,   48,   49,
727b8e80941Smrg
728b8e80941Smrg       50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
729b8e80941Smrg       60,   61,   35,   62,   63,   64,   65,   66,   67,   68,
730b8e80941Smrg       69,   70,    1,   71,    1,    1,    1,    1,    1,    1,
731b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
732b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
733b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
734b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
735b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
736b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
737b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
738b8e80941Smrg
739b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
740b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
741b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
742b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
743b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
744b8e80941Smrg        1,    1,    1,    1,    1
745b8e80941Smrg    } ;
746b8e80941Smrg
747b8e80941Smrgstatic const YY_CHAR yy_meta[72] =
748b8e80941Smrg    {   0,
749b8e80941Smrg        1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
750b8e80941Smrg        1,    1,    1,    4,    1,    5,    5,    5,    5,    5,
751b8e80941Smrg        5,    5,    6,    1,    1,    1,    1,    7,    7,    7,
752b8e80941Smrg        7,    8,    9,   10,   10,   11,   10,   10,   10,   10,
753b8e80941Smrg       10,   10,   12,    1,   10,    7,    7,    7,    7,    8,
754b8e80941Smrg        9,   10,   10,   10,   10,   10,   11,   10,   10,   10,
755b8e80941Smrg       10,   10,   10,   10,   10,   10,   10,   12,   10,   10,
756b8e80941Smrg        1
757b8e80941Smrg    } ;
758b8e80941Smrg
759b8e80941Smrgstatic const flex_int16_t yy_base[1110] =
760b8e80941Smrg    {   0,
761b8e80941Smrg        0,   70,   76,    0, 1543, 1542, 1544, 1547,   71, 1547,
762b8e80941Smrg     1517, 1516,  140, 1515,  137,  138,  136, 1514,  153,  208,
763b8e80941Smrg      135, 1513,  151,    0,  124,  117,  122,  133,  147,  141,
764b8e80941Smrg      188, 1478,  140,  198,  156,  158,  173, 1472,  197,  186,
765b8e80941Smrg      214,  213,  217,  191,  161,  206,  282,  267, 1547,  213,
766b8e80941Smrg     1547, 1521, 1547,  273, 1547,    0, 1547, 1547,  251, 1547,
767b8e80941Smrg     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,  318, 1547,
768b8e80941Smrg      360,  231,  271,  288, 1547, 1499,    0, 1477,    0, 1547,
769b8e80941Smrg     1497, 1475, 1505, 1547, 1547, 1547, 1504,    0, 1547, 1547,
770b8e80941Smrg     1465, 1470,  238, 1467, 1476, 1474, 1474, 1460, 1463, 1475,
771b8e80941Smrg
772b8e80941Smrg      260, 1469, 1456, 1472, 1452, 1466, 1452, 1449, 1449, 1455,
773b8e80941Smrg      255,  269, 1449, 1460, 1445, 1451, 1455, 1456, 1485,    0,
774b8e80941Smrg     1446, 1457,  292, 1456, 1451, 1431,  132, 1435, 1449, 1439,
775b8e80941Smrg      266, 1432,  268, 1445, 1447,  279, 1426, 1434,  285, 1421,
776b8e80941Smrg     1430,  298,  300, 1435, 1430, 1433, 1421, 1424, 1464,  153,
777b8e80941Smrg      184,  268, 1433, 1420, 1433,  305, 1426, 1425, 1547, 1547,
778b8e80941Smrg      361,  368,  370, 1547, 1410, 1423, 1414, 1425,  344,    0,
779b8e80941Smrg      368,    0,  382, 1547, 1441, 1422,  390,  432, 1547, 1439,
780b8e80941Smrg     1420,  440,  373,  428, 1547, 1547, 1416,    0, 1411, 1406,
781b8e80941Smrg     1410, 1420, 1414, 1416,  357, 1399, 1399, 1411, 1402,  349,
782b8e80941Smrg
783b8e80941Smrg     1413, 1410, 1393, 1409, 1407, 1404, 1395, 1402, 1388, 1386,
784b8e80941Smrg     1399, 1384, 1401,    0, 1398, 1385, 1393, 1390, 1394, 1375,
785b8e80941Smrg     1394, 1387, 1384, 1372, 1371,  392, 1389, 1376, 1385, 1372,
786b8e80941Smrg     1379, 1369,  419, 1375, 1378, 1368, 1376, 1364, 1368, 1359,
787b8e80941Smrg     1374, 1373, 1363, 1370,  355, 1353, 1372, 1355, 1353, 1352,
788b8e80941Smrg     1363, 1352, 1347, 1345, 1347, 1358, 1343, 1345, 1342, 1354,
789b8e80941Smrg     1353, 1336, 1355, 1336,  304, 1345, 1340, 1338, 1348, 1326,
790b8e80941Smrg      447, 1345, 1347, 1335, 1327, 1326, 1330, 1342, 1325,    0,
791b8e80941Smrg      455,  446, 1547,  488, 1547, 1353, 1334,  496,  487, 1547,
792b8e80941Smrg     1547, 1351, 1332, 1547, 1346, 1324, 1314, 1325, 1324,    0,
793b8e80941Smrg
794b8e80941Smrg     1321, 1326,  468,    0,    0, 1313, 1311, 1311, 1312, 1307,
795b8e80941Smrg     1316, 1304, 1322,  471, 1310,  476,    0,    0, 1304, 1315,
796b8e80941Smrg     1314, 1314,    0, 1298,  506,    0,    0, 1300,  509, 1310,
797b8e80941Smrg     1307, 1308, 1298, 1292, 1291, 1334, 1291, 1290, 1290,  512,
798b8e80941Smrg     1285,    0,    0, 1281, 1280, 1279, 1281, 1282, 1287, 1281,
799b8e80941Smrg     1277, 1291, 1286, 1286, 1284, 1283, 1276, 1270, 1272, 1271,
800b8e80941Smrg     1274, 1274, 1280, 1265, 1268, 1263, 1272, 1277, 1264, 1261,
801b8e80941Smrg     1274, 1264,    0,    0, 1271, 1269, 1266, 1295, 1256, 1256,
802b8e80941Smrg     1262, 1252, 1260,  515, 1257,    0,    0,    0,    0, 1246,
803b8e80941Smrg     1259, 1258, 1257, 1256, 1253, 1241,  529,  503, 1547, 1547,
804b8e80941Smrg
805b8e80941Smrg     1253, 1254, 1254,    0, 1238,    0,    0,    0, 1239,    0,
806b8e80941Smrg     1248, 1238,    0, 1237, 1238, 1232, 1225, 1224, 1223, 1240,
807b8e80941Smrg        0,    0,    0, 1230,    0, 1226,    0,    0,    0,    0,
808b8e80941Smrg        0,    0,    0,    0,    0, 1239, 1236,  538, 1235,    0,
809b8e80941Smrg        0, 1239, 1232, 1228, 1224,    0,    0,    0, 1216,  522,
810b8e80941Smrg      543,  546, 1221, 1217, 1223, 1213, 1211, 1225, 1209,    0,
811b8e80941Smrg     1209, 1223, 1211, 1207, 1214, 1208, 1220, 1215, 1215,    0,
812b8e80941Smrg     1212, 1209, 1213, 1196, 1194, 1197, 1204, 1210, 1205, 1206,
813b8e80941Smrg     1203, 1232, 1189,    0, 1191, 1192,    0,    0,    0,    0,
814b8e80941Smrg     1189, 1193,    0, 1186, 1186, 1242, 1185, 1188,    0, 1196,
815b8e80941Smrg
816b8e80941Smrg     1175,    0, 1185, 1179,    0, 1172, 1172, 1186,  551,  554,
817b8e80941Smrg      557,    0, 1188,    0,  560,  564, 1202, 1201, 1200, 1165,
818b8e80941Smrg     1164,    0, 1164, 1181, 1180, 1175,    0,    0,    0,    0,
819b8e80941Smrg        0,    0,    0,    0,    0,    0, 1163, 1177, 1163, 1160,
820b8e80941Smrg        0,    0, 1166,  378,    0, 1162, 1170, 1169,    0, 1161,
821b8e80941Smrg     1153,    0,    0,    0,    0,    0, 1150,    0,    0, 1149,
822b8e80941Smrg     1161,  566,  570, 1166, 1152, 1159, 1158, 1155, 1149, 1146,
823b8e80941Smrg     1141,  588, 1157, 1142, 1136, 1136, 1150, 1134, 1147,    0,
824b8e80941Smrg        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
825b8e80941Smrg     1139,    0,    0,    0, 1164, 1163, 1162, 1127, 1126,  440,
826b8e80941Smrg
827b8e80941Smrg      575,    0, 1139, 1142,    0, 1140, 1128, 1124,    0, 1137,
828b8e80941Smrg     1134, 1133, 1122,    0, 1121, 1111, 1129, 1114, 1117,  599,
829b8e80941Smrg     1122, 1125,    0,    0,    0,    0, 1143, 1142, 1141, 1106,
830b8e80941Smrg     1105, 1105,    0, 1119, 1105,    0, 1116, 1108, 1110,  589,
831b8e80941Smrg      617, 1161, 1103, 1107, 1110,    0,    0,    0,    0, 1131,
832b8e80941Smrg      585,    0, 1107, 1110, 1094, 1102, 1092, 1113, 1102, 1098,
833b8e80941Smrg     1099, 1099, 1098, 1083,  624, 1096,    0, 1097, 1085, 1084,
834b8e80941Smrg        0,    0,    0, 1080, 1110, 1109, 1108, 1073, 1072, 1068,
835b8e80941Smrg     1076,    0, 1106,  619,    0, 1082, 1085,    0,    0,  631,
836b8e80941Smrg        0, 1062, 1070,  649, 1547,  660,    0,  671,  657, 1547,
837b8e80941Smrg
838b8e80941Smrg     1070,    0, 1066, 1065, 1086, 1075, 1073, 1073, 1060, 1075,
839b8e80941Smrg     1058, 1091, 1070, 1071, 1066, 1087,    0,    0, 1083, 1082,
840b8e80941Smrg     1081, 1046, 1045,    0, 1045,    0,    0,    0,  441,  668,
841b8e80941Smrg     1069, 1056, 1059, 1035, 1048, 1035, 1034, 1055, 1044, 1041,
842b8e80941Smrg     1033, 1051, 1050, 1049, 1014, 1013,    0, 1017,  642,  709,
843b8e80941Smrg      481, 1031, 1020, 1008, 1019,  999, 1000,  996, 1028, 1007,
844b8e80941Smrg     1001, 1021, 1002,  987,  981,  931,  928,  942,  928,  927,
845b8e80941Smrg      960,  647,    0,  936,  939,  931,  922,  930,  920,  941,
846b8e80941Smrg      930,  926,  928,  926,  926,  925,    0,  911,  910,  943,
847b8e80941Smrg      922,  919,  940,  939,  676,    0,  913,  916, 1547,  496,
848b8e80941Smrg
849b8e80941Smrg     1547,  717,    0,  738,  930,  913,   10,  100,    0,  146,
850b8e80941Smrg      189,  225,  233,  264,  295,  297,  314,  328,  346,    0,
851b8e80941Smrg      356,    0,  371,  373,  381,  406,  442,  451,  471,  456,
852b8e80941Smrg      475,  497,  491,  530,  511,  549,  548,  547,  655,  536,
853b8e80941Smrg      555,  556,  559,  559,  563,  564,  565,  568,  606,  605,
854b8e80941Smrg      613,  648,  697,  667,  637,  649,  650,  645,  647,  656,
855b8e80941Smrg        0,    0,  659,  682,  656,  702,  697,  677,  699,  684,
856b8e80941Smrg      685,  720,  701,  700,  723,  702,  707,  713,  717,  702,
857b8e80941Smrg      701,  717,  703,  706,  707,  717,  712,  703,  704,  712,
858b8e80941Smrg        0,    0,  713,  714,  715,  750,  731,  730,  753,  746,
859b8e80941Smrg
860b8e80941Smrg      731,  726,  731,    0,    0,  740,  741,  735,    0,  736,
861b8e80941Smrg      721,    0,  722,  746,  747,  732,  731,  734,  735,    0,
862b8e80941Smrg      729,  739,  731,  739,  762,  743,    0,    0,  742,  759,
863b8e80941Smrg      760,    0,    0,  761,  762,  763,  764,  749,  748,  751,
864b8e80941Smrg      752,  813,  814,  763,  759,  750,  751,  775,  776,    0,
865b8e80941Smrg        0,  755,  756,  764,    0,    0,  765,  788,  762,  790,
866b8e80941Smrg      785,  779,  766,  788,  786,  779,  768,  769,  770,  771,
867b8e80941Smrg      779,    0,    0,  780,  841,  842,  843,  776,  795,    0,
868b8e80941Smrg        0,  799,  800,    0,    0,  804,  806,  800,    0,  801,
869b8e80941Smrg      786,  810,    0,  788,  798,  821,    0,    0,    0,    0,
870b8e80941Smrg
871b8e80941Smrg      814,  815,  803,  861,  813,  815,  864,  807,  808,  800,
872b8e80941Smrg      801,  825,  828,    0,  826,  836,  810,  846,  810,  811,
873b8e80941Smrg      815,  831,  881,  883,  884,  882,  820,  821,    0,    0,
874b8e80941Smrg      840,  841,  834,  843,    0,  857,    0,    0,  852,  897,
875b8e80941Smrg      898, 1547,  900,  899,  902,  854,    0,    0,  846,  850,
876b8e80941Smrg      844,  866,    0,  852,  913, 1547,  914,  866,  867,  917,
877b8e80941Smrg      853,  855,    0,  875,  872,  877,  927,  928,  929, 1547,
878b8e80941Smrg        0,    0,  872,  887,  933,  934, 1547,  938, 1547,  867,
879b8e80941Smrg      882,  943, 1547,    0,  882,  945,  947,  948,  949,  895,
880b8e80941Smrg      898,  955,  956, 1547, 1547,  995, 1003, 1011, 1020, 1024,
881b8e80941Smrg
882b8e80941Smrg     1033, 1041, 1048, 1055, 1062, 1072, 1080, 1088, 1096
883b8e80941Smrg    } ;
884b8e80941Smrg
885b8e80941Smrgstatic const flex_int16_t yy_def[1110] =
886b8e80941Smrg    {   0,
887b8e80941Smrg     1095,    1, 1095,    3, 1096, 1096, 1095, 1095, 1095, 1095,
888b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
889b8e80941Smrg     1095, 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1097,
890b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
891b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095,
892b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1098, 1095, 1095, 1095, 1095,
893b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
894b8e80941Smrg     1095,   19, 1099, 1095, 1095, 1095, 1100, 1095,   20, 1095,
895b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1095, 1095,
896b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
897b8e80941Smrg
898b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
899b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
900b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
901b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
902b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
903b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
904b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1101,
905b8e80941Smrg     1095, 1098, 1095, 1095, 1095, 1095,   71, 1095, 1095, 1095,
906b8e80941Smrg     1095, 1095, 1102, 1100, 1095, 1095, 1097, 1097, 1097, 1097,
907b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
908b8e80941Smrg
909b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
910b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
911b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
912b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
913b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
914b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
915b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
916b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1101,
917b8e80941Smrg     1095, 1103, 1095, 1095, 1095, 1095, 1095, 1095, 1104, 1095,
918b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
919b8e80941Smrg
920b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
921b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
922b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
923b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
924b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
925b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
926b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
927b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
928b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
929b8e80941Smrg     1097, 1097, 1095, 1095, 1095, 1095, 1095, 1105, 1095, 1095,
930b8e80941Smrg
931b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
932b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
933b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
934b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
935b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
936b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
937b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
938b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
939b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
940b8e80941Smrg     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1097, 1097,
941b8e80941Smrg
942b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
943b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
944b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
945b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
946b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
947b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
948b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
949b8e80941Smrg     1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097,
950b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
951b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
952b8e80941Smrg
953b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
954b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
955b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
956b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1106,
957b8e80941Smrg     1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
958b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
959b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
960b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
961b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
962b8e80941Smrg     1097, 1097, 1095, 1095, 1095, 1095, 1107, 1095, 1095, 1095,
963b8e80941Smrg
964b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
965b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
966b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
967b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
968b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1108, 1095,
969b8e80941Smrg     1107, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097,
970b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
971b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
972b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
973b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
974b8e80941Smrg
975b8e80941Smrg     1095, 1095, 1109, 1095, 1095, 1095, 1095, 1095, 1097, 1097,
976b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
977b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
978b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
979b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
980b8e80941Smrg     1097, 1097, 1109, 1095, 1095, 1095, 1095, 1097, 1097, 1097,
981b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
982b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
983b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
984b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095,
985b8e80941Smrg
986b8e80941Smrg     1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
987b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
988b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
989b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
990b8e80941Smrg     1097, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097,
991b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
992b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
993b8e80941Smrg     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097,
994b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
995b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
996b8e80941Smrg
997b8e80941Smrg     1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097,
998b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
999b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
1000b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
1001b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
1002b8e80941Smrg     1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1003b8e80941Smrg     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095,
1004b8e80941Smrg     1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1097,
1005b8e80941Smrg     1095, 1095, 1095, 1097, 1095, 1095, 1095, 1095, 1095, 1095,
1006b8e80941Smrg     1095, 1095, 1095, 1095,    0, 1095, 1095, 1095, 1095, 1095,
1007b8e80941Smrg
1008b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1009b8e80941Smrg    } ;
1010b8e80941Smrg
1011b8e80941Smrgstatic const flex_int16_t yy_nxt[1619] =
1012b8e80941Smrg    {   0,
1013b8e80941Smrg        8,    9,   10,    9,   11,    8,   12,   13,    8,    8,
1014b8e80941Smrg       14,   15,   16,   17,   18,   19,   20,   20,   20,   20,
1015b8e80941Smrg       20,   20,   20,    8,   21,   22,   23,   24,   24,   24,
1016b8e80941Smrg       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
1017b8e80941Smrg       24,   24,   24,   25,   24,   26,   27,   28,   29,   30,
1018b8e80941Smrg       31,   32,   33,   34,   24,   24,   35,   36,   37,   38,
1019b8e80941Smrg       39,   40,   41,   42,   43,   44,   45,   24,   24,   24,
1020b8e80941Smrg       46,   47,   59,  856,   59,   48,   49,   50,   51,   50,
1021b8e80941Smrg       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1022b8e80941Smrg       52,   53,   54,   54,   54,   54,   54,   54,   54,   55,
1023b8e80941Smrg
1024b8e80941Smrg       49,   49,   49,   56,   56,   56,   56,   56,   56,   56,
1025b8e80941Smrg       56,   56,   56,   56,   56,   56,   56,   56,   56,   49,
1026b8e80941Smrg       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
1027b8e80941Smrg       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
1028b8e80941Smrg       56,   56,   56,   56,   56,   56,   49,   62,   65,   89,
1029b8e80941Smrg       67,   69,   69,   69,   69,   69,   69,   69,   69,   83,
1030b8e80941Smrg       84,  857,   66,   68,   91,   63,   71,   90,   72,   72,
1031b8e80941Smrg       72,   72,   72,   72,   72,   73,   86,   87,   98,   92,
1032b8e80941Smrg       93,   94,   99,   95,   74,  116,   96,   97,   75,  100,
1033b8e80941Smrg      231,  858,  101,  117,   76,   77,  102,  107,  232,  108,
1034b8e80941Smrg
1035b8e80941Smrg      103,  126,   74,  128,  104,  118,  105,  129,  109,   75,
1036b8e80941Smrg      263,  264,  106,  157,  169,  127,  169,   78,  130,  119,
1037b8e80941Smrg       77,   71,  158,   79,   79,   79,   79,   79,   79,   79,
1038b8e80941Smrg       79,  159,  131,  110,  859,  136,  154,  265,  149,   74,
1039b8e80941Smrg      155,  111,  133,   80,  112,  137,  266,  113,  120,   81,
1040b8e80941Smrg      156,  121,   59,  114,   59,  122,  123,   74,  134,  138,
1041b8e80941Smrg      124,  135,  145,  125,   80,  146,  139,  140,  163,  164,
1042b8e80941Smrg      150,  141,   82, 1095,  147,  151,  160,  142,  143,  152,
1043b8e80941Smrg      144,  148,  153,  161,   71,   59,  860,  162,  171,  171,
1044b8e80941Smrg      171,  171,  171,  171,  171,  171,  861,  189, 1095,  182,
1045b8e80941Smrg
1046b8e80941Smrg      182,  190,   74,  183,  183,  183,  183,  183,  183,  183,
1047b8e80941Smrg      183,  210,  198,  267,  212,  239,  165,  199,  200,  236,
1048b8e80941Smrg       74,  268,  211,  166,  244,  862,  237,  167,  213,  240,
1049b8e80941Smrg      249,  241,  168,   69,   69,   69,   69,   69,   69,   69,
1050b8e80941Smrg       69,  245,  246,  253,  250,  169,  255,  169,  223,  173,
1051b8e80941Smrg      174,  224,  225,  175,  379,  226,  863,  227,  272,  254,
1052b8e80941Smrg      256,  273,  161,  380,   59,  864,  162,  173,  174,  163,
1053b8e80941Smrg      164,  163,  164,  865,  176,  177,  177,  177,  177,  177,
1054b8e80941Smrg      177,  177,  177,  171,  171,  171,  171,  171,  171,  171,
1055b8e80941Smrg      171,  178,  179,  281,  281,  180,  866,  282,  282,  282,
1056b8e80941Smrg
1057b8e80941Smrg      282,  282,  282,  282,  282,  291,  304,  867,  292,  178,
1058b8e80941Smrg      179,  310,  311,  336,  358,  868,  181,  165,  359,  165,
1059b8e80941Smrg      305,  284,  285,  291,  166,  286,  166,  614,  167,  293,
1060b8e80941Smrg      167,  615,  869,  168,  870,  168,  344,  345,  346,  284,
1061b8e80941Smrg      285,  337,  871,  288,  288,  872,  287,  289,  289,  289,
1062b8e80941Smrg      289,  289,  289,  289,  289,  183,  183,  183,  183,  183,
1063b8e80941Smrg      183,  183,  183,  294,  386,  387,  388,  655,  777,  295,
1064b8e80941Smrg      282,  282,  282,  282,  282,  282,  282,  282,  174,  656,
1065b8e80941Smrg      778,  175,  694,  695,  294,  406,  407,  408,  417,  418,
1066b8e80941Smrg      419,  873,  296,  421,  422,  423,  174,  800,  801,  397,
1067b8e80941Smrg
1068b8e80941Smrg      397,  874,  176,  398,  398,  398,  398,  398,  398,  398,
1069b8e80941Smrg      398,  289,  289,  289,  289,  289,  289,  289,  289,  179,
1070b8e80941Smrg      875,  876,  180,  429,  430,  431,  433,  434,  435,  446,
1071b8e80941Smrg      447,  448,  488,  489,  490,  285,  877,  179,  286,  528,
1072b8e80941Smrg      529,  530,  878,  181,  398,  398,  398,  398,  398,  398,
1073b8e80941Smrg      398,  398,  879,  285,  517,  518,  519,  880,  881,  287,
1074b8e80941Smrg      531,  532,  533,  534,  535,  536,  520,  521,  582,  583,
1075b8e80941Smrg      584,  585,  586,  587,  588,  589,  590,  592,  593,  594,
1076b8e80941Smrg      595,  596,  597,  624,  625,  626,  627,  628,  629,  572,
1077b8e80941Smrg      694,  695,  598,  599,  882,  883,  884,  887,  630,  631,
1078b8e80941Smrg
1079b8e80941Smrg      888,  889,  657,  640,  641,  641,  641,  641,  641,  641,
1080b8e80941Smrg      641,  658,  704,  659,  660,  675,  676,  677,  694,  695,
1081b8e80941Smrg      890,  705,  891,  706,  892,  893,  894,  678,  679,  895,
1082b8e80941Smrg      680,  697,  698,  698,  698,  698,  698,  698,  698,  698,
1083b8e80941Smrg      719,  720,  721,  800,  801,  896,  737,  742,  743,  744,
1084b8e80941Smrg      694,  695,  722,  723,  897,  738,  697,  739,  699,  745,
1085b8e80941Smrg      746,  694,  695,  898,  749,  750,  750,  750,  750,  750,
1086b8e80941Smrg      750,  750,  694,  695,  825,  696,  696,  696,  696,  696,
1087b8e80941Smrg      696,  696,  885,  826,  803,  827,  698,  698,  698,  698,
1088b8e80941Smrg      698,  698,  698,  698,  886,  779,  752,  899,  800,  801,
1089b8e80941Smrg
1090b8e80941Smrg      900,  901,  902,  848,  780,  753,  781,  782,  903,  803,
1091b8e80941Smrg      800,  801,  849,  904,  850,  905,  754,  906,  800,  801,
1092b8e80941Smrg      907,  908,  909,  755,  804,  804,  804,  804,  804,  804,
1093b8e80941Smrg      804,  804,  802,  802,  802,  802,  802,  802,  802,  800,
1094b8e80941Smrg      801,  910,  911,  912,  913,  914,  915,  916,  917,  918,
1095b8e80941Smrg      919,  920,  921,  804,  804,  804,  804,  804,  804,  804,
1096b8e80941Smrg      804,  922,  923,  924,  925,  926,  927,  928,  929,  930,
1097b8e80941Smrg      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
1098b8e80941Smrg      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
1099b8e80941Smrg      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
1100b8e80941Smrg
1101b8e80941Smrg      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
1102b8e80941Smrg      971,  972,  973,  974,  975,  976,  978,  979,  980,  981,
1103b8e80941Smrg      982,  983,  977,  984,  985,  986,  987,  988,  989,  990,
1104b8e80941Smrg      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
1105b8e80941Smrg     1001, 1002,  975,  976, 1004, 1006, 1007, 1008, 1009, 1010,
1106b8e80941Smrg      977, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
1107b8e80941Smrg     1020, 1021, 1004, 1022, 1024, 1025, 1027, 1028, 1029, 1030,
1108b8e80941Smrg     1031, 1023, 1026, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
1109b8e80941Smrg     1039, 1040, 1041, 1045, 1043, 1025, 1047, 1048, 1049, 1050,
1110b8e80941Smrg     1042, 1044, 1026, 1051, 1003, 1052, 1053, 1054, 1055, 1041,
1111b8e80941Smrg
1112b8e80941Smrg     1057, 1043, 1005, 1045, 1059, 1061, 1056, 1042, 1044, 1062,
1113b8e80941Smrg     1063, 1064, 1060, 1065, 1055, 1057, 1066, 1068, 1069, 1071,
1114b8e80941Smrg     1005, 1072, 1056, 1073, 1067, 1074, 1070, 1075, 1076, 1078,
1115b8e80941Smrg     1069, 1080, 1081, 1084, 1082, 1076, 1077, 1079, 1070, 1078,
1116b8e80941Smrg     1085, 1046, 1083, 1077, 1082, 1086, 1087, 1079, 1087, 1089,
1117b8e80941Smrg     1089, 1091, 1083, 1088, 1092, 1088, 1093, 1093, 1058,  855,
1118b8e80941Smrg      854, 1046,  852,  851, 1094, 1094,  847,  846,  845,  844,
1119b8e80941Smrg      843,  842,  841, 1058,  840,  839,  838,  837,  836,  835,
1120b8e80941Smrg      834,  833,  832,  831,  830,  829,  828,  824,  823,  822,
1121b8e80941Smrg      821,  820,  819, 1090, 1090,   57,   57,   57,   57,   57,
1122b8e80941Smrg
1123b8e80941Smrg       57,   57,   57,   57,   57,   57,   57,   88,   88,   88,
1124b8e80941Smrg       88,   88,   88,   88,   88,  172,  172,  172,  172,  172,
1125b8e80941Smrg      172,  172,  172,   73,   73,   73,  818,   73,  184,  184,
1126b8e80941Smrg      184,  184,  184,  280,  280,  817,  280,  280,  280,  280,
1127b8e80941Smrg      280,  280,  280,  280,  280,  183,  183,  816,  815,  183,
1128b8e80941Smrg      814,  183,  282,  282,  813,  812,  282,  811,  282,  289,
1129b8e80941Smrg      289,  810,  809,  289,  808,  289,  398,  398,  807,  806,
1130b8e80941Smrg      398,  805,  398,  696,  696,  799,  696,  798,  797,  796,
1131b8e80941Smrg      795,  794,  793,  696,  751,  751,  751,  751,  751,  802,
1132b8e80941Smrg      802,  792,  802,  791,  790,  789,  788,  787,  786,  802,
1133b8e80941Smrg
1134b8e80941Smrg      853,  853,  853,  853,  853,  785,  784,  783,  776,  775,
1135b8e80941Smrg      774,  773,  772,  771,  770,  769,  768,  767,  766,  765,
1136b8e80941Smrg      764,  763,  762,  761,  760,  759,  758,  757,  756,  748,
1137b8e80941Smrg      747,  741,  740,  736,  735,  734,  733,  732,  731,  730,
1138b8e80941Smrg      729,  728,  727,  726,  725,  724,  718,  717,  716,  715,
1139b8e80941Smrg      714,  713,  712,  711,  710,  709,  708,  707,  703,  702,
1140b8e80941Smrg      701,  700,  699,  693,  692,  691,  690,  689,  688,  687,
1141b8e80941Smrg      686,  685,  684,  683,  682,  681,  674,  673,  672,  671,
1142b8e80941Smrg      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
1143b8e80941Smrg      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
1144b8e80941Smrg
1145b8e80941Smrg      644,  643,  642,  639,  638,  637,  636,  635,  634,  633,
1146b8e80941Smrg      632,  623,  622,  621,  620,  619,  618,  617,  616,  613,
1147b8e80941Smrg      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
1148b8e80941Smrg      602,  601,  600,  591,  581,  580,  579,  578,  577,  576,
1149b8e80941Smrg      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
1150b8e80941Smrg      565,  564,  563,  562,  561,  560,  559,  558,  557,  556,
1151b8e80941Smrg      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
1152b8e80941Smrg      545,  544,  543,  542,  541,  540,  539,  538,  537,  527,
1153b8e80941Smrg      526,  525,  524,  523,  522,  516,  515,  514,  513,  512,
1154b8e80941Smrg      511,  510,  509,  508,  507,  506,  505,  504,  503,  502,
1155b8e80941Smrg
1156b8e80941Smrg      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
1157b8e80941Smrg      491,  487,  486,  485,  484,  483,  482,  481,  480,  479,
1158b8e80941Smrg      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
1159b8e80941Smrg      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
1160b8e80941Smrg      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
1161b8e80941Smrg      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
1162b8e80941Smrg      432,  428,  427,  426,  425,  424,  420,  416,  415,  414,
1163b8e80941Smrg      413,  412,  411,  410,  409,  405,  404,  403,  402,  401,
1164b8e80941Smrg      294,  294,  400,  400,  399,  399,  396,  395,  394,  393,
1165b8e80941Smrg      392,  391,  390,  389,  385,  384,  383,  382,  381,  378,
1166b8e80941Smrg
1167b8e80941Smrg      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
1168b8e80941Smrg      367,  366,  365,  364,  363,  362,  361,  360,  357,  356,
1169b8e80941Smrg      355,  354,  353,  352,  351,  350,  349,  348,  347,  343,
1170b8e80941Smrg      342,  341,  340,  339,  338,  335,  334,  333,  332,  331,
1171b8e80941Smrg      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
1172b8e80941Smrg      320,  319,  318,  317,  316,  315,  314,  313,  312,  309,
1173b8e80941Smrg      308,  307,  306,  303,  302,  301,  300,  299,  298,  297,
1174b8e80941Smrg      290,  290,  283,  283,  279,  278,  277,  276,  275,  274,
1175b8e80941Smrg      271,  270,  269,  262,  261,  260,  259,  258,  257,  252,
1176b8e80941Smrg      251,  248,  247,  243,  242,  238,  235,  234,  233,  230,
1177b8e80941Smrg
1178b8e80941Smrg      229,  228,  222,  221,  220,  219,  218,  217,  216,  215,
1179b8e80941Smrg      214,  209,  208,  207,  206,  205,  204,  203,  202,  201,
1180b8e80941Smrg      197,  196,  195,  194,  193,  192,  191,  188,  187,  186,
1181b8e80941Smrg      185,   80,   80,   75,   75,  170,  132,  115,   85,   70,
1182b8e80941Smrg       64,   61,   60, 1095,   58,   58,    7, 1095, 1095, 1095,
1183b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1184b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1185b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1186b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1187b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1188b8e80941Smrg
1189b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1190b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1191b8e80941Smrg    } ;
1192b8e80941Smrg
1193b8e80941Smrgstatic const flex_int16_t yy_chk[1619] =
1194b8e80941Smrg    {   0,
1195b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1196b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1197b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1198b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1199b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1200b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1201b8e80941Smrg        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1202b8e80941Smrg        1,    2,    9,  807,    9,    2,    3,    3,    3,    3,
1203b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1204b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1205b8e80941Smrg
1206b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1207b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1208b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1209b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1210b8e80941Smrg        3,    3,    3,    3,    3,    3,    3,   13,   15,   25,
1211b8e80941Smrg       16,   17,   17,   17,   17,   17,   17,   17,   17,   21,
1212b8e80941Smrg       21,  808,   15,   16,   26,   13,   19,   25,   19,   19,
1213b8e80941Smrg       19,   19,   19,   19,   19,   19,   23,   23,   28,   26,
1214b8e80941Smrg       26,   27,   28,   27,   19,   33,   27,   27,   19,   28,
1215b8e80941Smrg      127,  810,   28,   33,   19,   19,   29,   30,  127,   30,
1216b8e80941Smrg
1217b8e80941Smrg       29,   35,   19,   36,   29,   33,   29,   36,   30,   19,
1218b8e80941Smrg      150,  150,   29,   45,   50,   35,   50,   19,   37,   34,
1219b8e80941Smrg       19,   20,   45,   20,   20,   20,   20,   20,   20,   20,
1220b8e80941Smrg       20,   46,   37,   31,  811,   40,   44,  151,   43,   20,
1221b8e80941Smrg       44,   31,   39,   20,   31,   40,  151,   31,   34,   20,
1222b8e80941Smrg       44,   34,   59,   31,   59,   34,   34,   20,   39,   41,
1223b8e80941Smrg       34,   39,   42,   34,   20,   42,   41,   41,   48,   48,
1224b8e80941Smrg       43,   41,   20,   72,   42,   43,   46,   41,   41,   43,
1225b8e80941Smrg       41,   42,   43,   47,   73,   47,  812,   47,   54,   54,
1226b8e80941Smrg       54,   54,   54,   54,   54,   54,  813,   93,   72,   74,
1227b8e80941Smrg
1228b8e80941Smrg       74,   93,   73,   74,   74,   74,   74,   74,   74,   74,
1229b8e80941Smrg       74,  111,  101,  152,  112,  133,   48,  101,  101,  131,
1230b8e80941Smrg       73,  152,  111,   48,  136,  814,  131,   48,  112,  133,
1231b8e80941Smrg      139,  133,   48,   69,   69,   69,   69,   69,   69,   69,
1232b8e80941Smrg       69,  136,  136,  142,  139,  169,  143,  169,  123,   69,
1233b8e80941Smrg       69,  123,  123,   69,  265,  123,  815,  123,  156,  142,
1234b8e80941Smrg      143,  156,  161,  265,  161,  816,  161,   69,   69,  162,
1235b8e80941Smrg      162,  163,  163,  817,   69,   71,   71,   71,   71,   71,
1236b8e80941Smrg       71,   71,   71,  171,  171,  171,  171,  171,  171,  171,
1237b8e80941Smrg      171,   71,   71,  173,  173,   71,  818,  173,  173,  173,
1238b8e80941Smrg
1239b8e80941Smrg      173,  173,  173,  173,  173,  183,  195,  819,  183,   71,
1240b8e80941Smrg       71,  200,  200,  226,  245,  821,   71,  162,  245,  163,
1241b8e80941Smrg      195,  177,  177,  183,  162,  177,  163,  544,  162,  183,
1242b8e80941Smrg      163,  544,  823,  162,  824,  163,  233,  233,  233,  177,
1243b8e80941Smrg      177,  226,  825,  178,  178,  826,  177,  178,  178,  178,
1244b8e80941Smrg      178,  178,  178,  178,  178,  182,  182,  182,  182,  182,
1245b8e80941Smrg      182,  182,  182,  184,  271,  271,  271,  600,  729,  184,
1246b8e80941Smrg      281,  281,  281,  281,  281,  281,  281,  281,  282,  600,
1247b8e80941Smrg      729,  282,  751,  751,  184,  303,  303,  303,  314,  314,
1248b8e80941Smrg      314,  827,  184,  316,  316,  316,  282,  800,  800,  284,
1249b8e80941Smrg
1250b8e80941Smrg      284,  828,  282,  284,  284,  284,  284,  284,  284,  284,
1251b8e80941Smrg      284,  288,  288,  288,  288,  288,  288,  288,  288,  289,
1252b8e80941Smrg      829,  830,  289,  325,  325,  325,  329,  329,  329,  340,
1253b8e80941Smrg      340,  340,  384,  384,  384,  398,  831,  289,  398,  450,
1254b8e80941Smrg      450,  450,  832,  289,  397,  397,  397,  397,  397,  397,
1255b8e80941Smrg      397,  397,  833,  398,  438,  438,  438,  834,  835,  398,
1256b8e80941Smrg      451,  451,  451,  452,  452,  452,  438,  438,  509,  509,
1257b8e80941Smrg      509,  510,  510,  510,  511,  511,  511,  515,  515,  515,
1258b8e80941Smrg      516,  516,  516,  562,  562,  562,  563,  563,  563,  572,
1259b8e80941Smrg      640,  640,  516,  516,  836,  837,  838,  840,  563,  563,
1260b8e80941Smrg
1261b8e80941Smrg      841,  842,  601,  572,  572,  572,  572,  572,  572,  572,
1262b8e80941Smrg      572,  601,  651,  601,  601,  620,  620,  620,  641,  641,
1263b8e80941Smrg      843,  651,  844,  651,  845,  846,  847,  620,  620,  848,
1264b8e80941Smrg      620,  640,  641,  641,  641,  641,  641,  641,  641,  641,
1265b8e80941Smrg      665,  665,  665,  749,  749,  849,  684,  690,  690,  690,
1266b8e80941Smrg      694,  694,  665,  665,  850,  684,  640,  684,  699,  690,
1267b8e80941Smrg      690,  696,  696,  851,  694,  694,  694,  694,  694,  694,
1268b8e80941Smrg      694,  694,  698,  698,  772,  696,  696,  696,  696,  696,
1269b8e80941Smrg      696,  696,  839,  772,  749,  772,  698,  698,  698,  698,
1270b8e80941Smrg      698,  698,  698,  698,  839,  730,  699,  852,  853,  853,
1271b8e80941Smrg
1272b8e80941Smrg      854,  855,  856,  795,  730,  699,  730,  730,  857,  749,
1273b8e80941Smrg      750,  750,  795,  858,  795,  859,  699,  860,  802,  802,
1274b8e80941Smrg      863,  864,  865,  699,  750,  750,  750,  750,  750,  750,
1275b8e80941Smrg      750,  750,  802,  802,  802,  802,  802,  802,  802,  804,
1276b8e80941Smrg      804,  866,  867,  868,  869,  870,  871,  872,  873,  874,
1277b8e80941Smrg      875,  876,  877,  804,  804,  804,  804,  804,  804,  804,
1278b8e80941Smrg      804,  878,  879,  880,  881,  882,  883,  884,  885,  886,
1279b8e80941Smrg      887,  888,  889,  890,  893,  894,  895,  896,  897,  898,
1280b8e80941Smrg      899,  900,  901,  902,  903,  906,  907,  908,  910,  911,
1281b8e80941Smrg      913,  914,  915,  916,  917,  918,  919,  921,  922,  923,
1282b8e80941Smrg
1283b8e80941Smrg      924,  925,  926,  929,  930,  931,  934,  935,  936,  937,
1284b8e80941Smrg      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
1285b8e80941Smrg      948,  949,  943,  952,  953,  954,  957,  958,  959,  960,
1286b8e80941Smrg      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
1287b8e80941Smrg      971,  974,  975,  976,  977,  978,  979,  982,  983,  986,
1288b8e80941Smrg      976,  987,  988,  990,  991,  992,  994,  995,  996, 1001,
1289b8e80941Smrg     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
1290b8e80941Smrg     1012, 1005, 1007, 1013, 1015, 1016, 1017, 1018, 1019, 1020,
1291b8e80941Smrg     1021, 1022, 1023, 1026, 1024, 1025, 1027, 1028, 1031, 1032,
1292b8e80941Smrg     1023, 1024, 1025, 1033,  975, 1034, 1036, 1039, 1040, 1041,
1293b8e80941Smrg
1294b8e80941Smrg     1044, 1043,  977, 1045, 1046, 1049, 1040, 1041, 1043, 1050,
1295b8e80941Smrg     1051, 1052, 1046, 1054, 1055, 1057, 1058, 1059, 1060, 1061,
1296b8e80941Smrg     1004, 1062, 1055, 1064, 1058, 1065, 1060, 1066, 1067, 1068,
1297b8e80941Smrg     1069, 1073, 1074, 1080, 1075, 1076, 1067, 1068, 1069, 1078,
1298b8e80941Smrg     1081, 1026, 1075, 1076, 1082, 1085, 1086, 1078, 1087, 1088,
1299b8e80941Smrg     1089, 1090, 1082, 1086, 1091, 1087, 1092, 1093, 1044,  806,
1300b8e80941Smrg      805, 1045,  798,  797, 1092, 1093,  794,  793,  792,  791,
1301b8e80941Smrg      790,  789,  788, 1057,  786,  785,  784,  783,  782,  781,
1302b8e80941Smrg      780,  779,  778,  777,  776,  775,  774,  771,  770,  769,
1303b8e80941Smrg      768,  767,  766, 1088, 1089, 1096, 1096, 1096, 1096, 1096,
1304b8e80941Smrg
1305b8e80941Smrg     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1097,
1306b8e80941Smrg     1097, 1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1098,
1307b8e80941Smrg     1098, 1098, 1098, 1099, 1099, 1099,  765, 1099, 1100, 1100,
1308b8e80941Smrg     1100, 1100, 1100, 1101, 1101,  764, 1101, 1101, 1101, 1101,
1309b8e80941Smrg     1101, 1101, 1101, 1101, 1101, 1102, 1102,  763,  762, 1102,
1310b8e80941Smrg      761, 1102, 1103, 1103,  760,  759, 1103,  758, 1103, 1104,
1311b8e80941Smrg     1104,  757,  756, 1104,  755, 1104, 1105, 1105,  754,  753,
1312b8e80941Smrg     1105,  752, 1105, 1106, 1106,  748, 1106,  746,  745,  744,
1313b8e80941Smrg      743,  742,  741, 1106, 1107, 1107, 1107, 1107, 1107, 1108,
1314b8e80941Smrg     1108,  740, 1108,  739,  738,  737,  736,  735,  734, 1108,
1315b8e80941Smrg
1316b8e80941Smrg     1109, 1109, 1109, 1109, 1109,  733,  732,  731,  725,  723,
1317b8e80941Smrg      722,  721,  720,  719,  716,  715,  714,  713,  712,  711,
1318b8e80941Smrg      710,  709,  708,  707,  706,  705,  704,  703,  701,  693,
1319b8e80941Smrg      692,  687,  686,  683,  681,  680,  679,  678,  677,  676,
1320b8e80941Smrg      675,  674,  670,  669,  668,  666,  664,  663,  662,  661,
1321b8e80941Smrg      660,  659,  658,  657,  656,  655,  654,  653,  650,  645,
1322b8e80941Smrg      644,  643,  642,  639,  638,  637,  635,  634,  632,  631,
1323b8e80941Smrg      630,  629,  628,  627,  622,  621,  619,  618,  617,  616,
1324b8e80941Smrg      615,  613,  612,  611,  610,  608,  607,  606,  604,  603,
1325b8e80941Smrg      599,  598,  597,  596,  595,  591,  579,  578,  577,  576,
1326b8e80941Smrg
1327b8e80941Smrg      575,  574,  573,  571,  570,  569,  568,  567,  566,  565,
1328b8e80941Smrg      564,  561,  560,  557,  551,  550,  548,  547,  546,  543,
1329b8e80941Smrg      540,  539,  538,  537,  526,  525,  524,  523,  521,  520,
1330b8e80941Smrg      519,  518,  517,  513,  508,  507,  506,  504,  503,  501,
1331b8e80941Smrg      500,  498,  497,  496,  495,  494,  492,  491,  486,  485,
1332b8e80941Smrg      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
1333b8e80941Smrg      473,  472,  471,  469,  468,  467,  466,  465,  464,  463,
1334b8e80941Smrg      462,  461,  459,  458,  457,  456,  455,  454,  453,  449,
1335b8e80941Smrg      445,  444,  443,  442,  439,  437,  436,  426,  424,  420,
1336b8e80941Smrg      419,  418,  417,  416,  415,  414,  412,  411,  409,  405,
1337b8e80941Smrg
1338b8e80941Smrg      403,  402,  401,  396,  395,  394,  393,  392,  391,  390,
1339b8e80941Smrg      385,  383,  382,  381,  380,  379,  378,  377,  376,  375,
1340b8e80941Smrg      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
1341b8e80941Smrg      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
1342b8e80941Smrg      352,  351,  350,  349,  348,  347,  346,  345,  344,  341,
1343b8e80941Smrg      339,  338,  337,  336,  335,  334,  333,  332,  331,  330,
1344b8e80941Smrg      328,  324,  322,  321,  320,  319,  315,  313,  312,  311,
1345b8e80941Smrg      310,  309,  308,  307,  306,  302,  301,  299,  298,  297,
1346b8e80941Smrg      296,  295,  293,  292,  287,  286,  279,  278,  277,  276,
1347b8e80941Smrg      275,  274,  273,  272,  270,  269,  268,  267,  266,  264,
1348b8e80941Smrg
1349b8e80941Smrg      263,  262,  261,  260,  259,  258,  257,  256,  255,  254,
1350b8e80941Smrg      253,  252,  251,  250,  249,  248,  247,  246,  244,  243,
1351b8e80941Smrg      242,  241,  240,  239,  238,  237,  236,  235,  234,  232,
1352b8e80941Smrg      231,  230,  229,  228,  227,  225,  224,  223,  222,  221,
1353b8e80941Smrg      220,  219,  218,  217,  216,  215,  213,  212,  211,  210,
1354b8e80941Smrg      209,  208,  207,  206,  205,  204,  203,  202,  201,  199,
1355b8e80941Smrg      198,  197,  196,  194,  193,  192,  191,  190,  189,  187,
1356b8e80941Smrg      181,  180,  176,  175,  168,  167,  166,  165,  158,  157,
1357b8e80941Smrg      155,  154,  153,  149,  148,  147,  146,  145,  144,  141,
1358b8e80941Smrg      140,  138,  137,  135,  134,  132,  130,  129,  128,  126,
1359b8e80941Smrg
1360b8e80941Smrg      125,  124,  122,  121,  119,  118,  117,  116,  115,  114,
1361b8e80941Smrg      113,  110,  109,  108,  107,  106,  105,  104,  103,  102,
1362b8e80941Smrg      100,   99,   98,   97,   96,   95,   94,   92,   91,   87,
1363b8e80941Smrg       83,   82,   81,   78,   76,   52,   38,   32,   22,   18,
1364b8e80941Smrg       14,   12,   11,    7,    6,    5, 1095, 1095, 1095, 1095,
1365b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1366b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1367b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1368b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1369b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1370b8e80941Smrg
1371b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1372b8e80941Smrg     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1373b8e80941Smrg    } ;
1374b8e80941Smrg
1375b8e80941Smrg/* The intent behind this definition is that it'll catch
1376b8e80941Smrg * any uses of REJECT which flex missed.
1377b8e80941Smrg */
1378b8e80941Smrg#define REJECT reject_used_but_not_detected
1379b8e80941Smrg#define yymore() yymore_used_but_not_detected
1380b8e80941Smrg#define YY_MORE_ADJ 0
1381b8e80941Smrg#define YY_RESTORE_YY_MORE_OFFSET
1382b8e80941Smrg#line 1 "../src/compiler/glsl/glsl_lexer.ll"
1383b8e80941Smrg#line 2 "../src/compiler/glsl/glsl_lexer.ll"
1384b8e80941Smrg/*
1385b8e80941Smrg * Copyright © 2008, 2009 Intel Corporation
1386b8e80941Smrg *
1387b8e80941Smrg * Permission is hereby granted, free of charge, to any person obtaining a
1388b8e80941Smrg * copy of this software and associated documentation files (the "Software"),
1389b8e80941Smrg * to deal in the Software without restriction, including without limitation
1390b8e80941Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1391b8e80941Smrg * and/or sell copies of the Software, and to permit persons to whom the
1392b8e80941Smrg * Software is furnished to do so, subject to the following conditions:
1393b8e80941Smrg *
1394b8e80941Smrg * The above copyright notice and this permission notice (including the next
1395b8e80941Smrg * paragraph) shall be included in all copies or substantial portions of the
1396b8e80941Smrg * Software.
1397b8e80941Smrg *
1398b8e80941Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1399b8e80941Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1400b8e80941Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1401b8e80941Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1402b8e80941Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1403b8e80941Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1404b8e80941Smrg * DEALINGS IN THE SOFTWARE.
1405b8e80941Smrg */
1406b8e80941Smrg#include <ctype.h>
1407b8e80941Smrg#include <limits.h>
1408b8e80941Smrg#include "util/strtod.h"
1409b8e80941Smrg#include "ast.h"
1410b8e80941Smrg#include "glsl_parser_extras.h"
1411b8e80941Smrg#include "glsl_parser.h"
1412b8e80941Smrg#include "main/mtypes.h"
1413b8e80941Smrg
1414b8e80941Smrgstatic int classify_identifier(struct _mesa_glsl_parse_state *, const char *,
1415b8e80941Smrg			       unsigned name_len, YYSTYPE *output);
1416b8e80941Smrg
1417b8e80941Smrg#ifdef _MSC_VER
1418b8e80941Smrg#define YY_NO_UNISTD_H
1419b8e80941Smrg#endif
1420b8e80941Smrg
1421b8e80941Smrg#define YY_NO_INPUT
1422b8e80941Smrg#define YY_USER_ACTION						\
1423b8e80941Smrg   do {								\
1424b8e80941Smrg      yylloc->first_column = yycolumn + 1;			\
1425b8e80941Smrg      yylloc->first_line = yylloc->last_line = yylineno + 1;	\
1426b8e80941Smrg      yycolumn += yyleng;					\
1427b8e80941Smrg      yylloc->last_column = yycolumn + 1;			\
1428b8e80941Smrg   } while(0);
1429b8e80941Smrg
1430b8e80941Smrg#define YY_USER_INIT yylineno = 0; yycolumn = 0; yylloc->source = 0;
1431b8e80941Smrg
1432b8e80941Smrg/* A macro for handling reserved words and keywords across language versions.
1433b8e80941Smrg *
1434b8e80941Smrg * Certain words start out as identifiers, become reserved words in
1435b8e80941Smrg * later language revisions, and finally become language keywords.
1436b8e80941Smrg * This may happen at different times in desktop GLSL and GLSL ES.
1437b8e80941Smrg *
1438b8e80941Smrg * For example, consider the following lexer rule:
1439b8e80941Smrg * samplerBuffer       KEYWORD(130, 0, 140, 0, SAMPLERBUFFER)
1440b8e80941Smrg *
1441b8e80941Smrg * This means that "samplerBuffer" will be treated as:
1442b8e80941Smrg * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
1443b8e80941Smrg * - a reserved word - error                 ...in GLSL >= 1.30
1444b8e80941Smrg * - an identifier                           ...in GLSL <  1.30 or GLSL ES
1445b8e80941Smrg */
1446b8e80941Smrg#define KEYWORD(reserved_glsl, reserved_glsl_es,			\
1447b8e80941Smrg                allowed_glsl, allowed_glsl_es, token)			\
1448b8e80941Smrg   KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1449b8e80941Smrg                    allowed_glsl, allowed_glsl_es, false, token)
1450b8e80941Smrg
1451b8e80941Smrg/**
1452b8e80941Smrg * Like the KEYWORD macro, but the word is also treated as a keyword
1453b8e80941Smrg * if the given boolean expression is true.
1454b8e80941Smrg */
1455b8e80941Smrg#define KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,		\
1456b8e80941Smrg                         allowed_glsl, allowed_glsl_es,			\
1457b8e80941Smrg                         alt_expr, token)				\
1458b8e80941Smrg   do {									\
1459b8e80941Smrg      if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
1460b8e80941Smrg          || (alt_expr)) {						\
1461b8e80941Smrg	 return token;							\
1462b8e80941Smrg      } else if (yyextra->is_version(reserved_glsl,			\
1463b8e80941Smrg                                     reserved_glsl_es)) {		\
1464b8e80941Smrg	 _mesa_glsl_error(yylloc, yyextra,				\
1465b8e80941Smrg			  "illegal use of reserved word `%s'", yytext);	\
1466b8e80941Smrg	 return ERROR_TOK;						\
1467b8e80941Smrg      } else {								\
1468b8e80941Smrg	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1469b8e80941Smrg      }									\
1470b8e80941Smrg   } while (0)
1471b8e80941Smrg
1472b8e80941Smrg/**
1473b8e80941Smrg * Like KEYWORD_WITH_ALT, but used for built-in GLSL types
1474b8e80941Smrg */
1475b8e80941Smrg#define TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1476b8e80941Smrg		      allowed_glsl, allowed_glsl_es,			\
1477b8e80941Smrg		      alt_expr, gtype)					\
1478b8e80941Smrg   do {									\
1479b8e80941Smrg      if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
1480b8e80941Smrg          || (alt_expr)) {						\
1481b8e80941Smrg	 yylval->type = gtype; 						\
1482b8e80941Smrg	 return BASIC_TYPE_TOK;						\
1483b8e80941Smrg      } else if (yyextra->is_version(reserved_glsl,			\
1484b8e80941Smrg                                     reserved_glsl_es)) {		\
1485b8e80941Smrg	 _mesa_glsl_error(yylloc, yyextra,				\
1486b8e80941Smrg			  "illegal use of reserved word `%s'", yytext);	\
1487b8e80941Smrg	 return ERROR_TOK;						\
1488b8e80941Smrg      } else {								\
1489b8e80941Smrg	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1490b8e80941Smrg      }									\
1491b8e80941Smrg   } while (0)
1492b8e80941Smrg
1493b8e80941Smrg#define TYPE(reserved_glsl, reserved_glsl_es,				\
1494b8e80941Smrg             allowed_glsl, allowed_glsl_es,				\
1495b8e80941Smrg             gtype)							\
1496b8e80941Smrg   TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1497b8e80941Smrg                 allowed_glsl, allowed_glsl_es,				\
1498b8e80941Smrg                 false, gtype)
1499b8e80941Smrg
1500b8e80941Smrg/**
1501b8e80941Smrg * A macro for handling keywords that have been present in GLSL since
1502b8e80941Smrg * its origin, but were changed into reserved words in GLSL 3.00 ES.
1503b8e80941Smrg */
1504b8e80941Smrg#define DEPRECATED_ES_KEYWORD(token)					\
1505b8e80941Smrg   do {									\
1506b8e80941Smrg      if (yyextra->is_version(0, 300)) {				\
1507b8e80941Smrg	 _mesa_glsl_error(yylloc, yyextra,				\
1508b8e80941Smrg			  "illegal use of reserved word `%s'", yytext);	\
1509b8e80941Smrg	 return ERROR_TOK;						\
1510b8e80941Smrg      } else {								\
1511b8e80941Smrg         return token;							\
1512b8e80941Smrg      }									\
1513b8e80941Smrg   } while (0)
1514b8e80941Smrg
1515b8e80941Smrg/**
1516b8e80941Smrg * Like DEPRECATED_ES_KEYWORD, but for types
1517b8e80941Smrg */
1518b8e80941Smrg#define DEPRECATED_ES_TYPE_WITH_ALT(alt_expr, gtype)			\
1519b8e80941Smrg   do {									\
1520b8e80941Smrg      if (yyextra->is_version(0, 300)) {				\
1521b8e80941Smrg         _mesa_glsl_error(yylloc, yyextra,				\
1522b8e80941Smrg                          "illegal use of reserved word `%s'", yytext);	\
1523b8e80941Smrg         return ERROR_TOK;						\
1524b8e80941Smrg      } else if (alt_expr) {						\
1525b8e80941Smrg         yylval->type = gtype;						\
1526b8e80941Smrg         return BASIC_TYPE_TOK;						\
1527b8e80941Smrg      } else {								\
1528b8e80941Smrg         return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1529b8e80941Smrg      }									\
1530b8e80941Smrg   } while (0)
1531b8e80941Smrg
1532b8e80941Smrg#define DEPRECATED_ES_TYPE(gtype)					\
1533b8e80941Smrg   DEPRECATED_ES_TYPE_WITH_ALT(true, gtype)
1534b8e80941Smrg
1535b8e80941Smrgstatic int
1536b8e80941Smrgliteral_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
1537b8e80941Smrg		YYSTYPE *lval, YYLTYPE *lloc, int base)
1538b8e80941Smrg{
1539b8e80941Smrg   bool is_uint = (text[len - 1] == 'u' ||
1540b8e80941Smrg		   text[len - 1] == 'U');
1541b8e80941Smrg   bool is_long = (text[len - 1] == 'l' || text[len - 1] == 'L');
1542b8e80941Smrg   const char *digits = text;
1543b8e80941Smrg
1544b8e80941Smrg   if (is_long)
1545b8e80941Smrg      is_uint = (text[len - 2] == 'u' && text[len - 1] == 'l') ||
1546b8e80941Smrg                (text[len - 2] == 'U' && text[len - 1] == 'L');
1547b8e80941Smrg   /* Skip "0x" */
1548b8e80941Smrg   if (base == 16)
1549b8e80941Smrg      digits += 2;
1550b8e80941Smrg
1551b8e80941Smrg   unsigned long long value = strtoull(digits, NULL, base);
1552b8e80941Smrg
1553b8e80941Smrg   if (is_long)
1554b8e80941Smrg      lval->n64 = (int64_t)value;
1555b8e80941Smrg   else
1556b8e80941Smrg      lval->n = (int)value;
1557b8e80941Smrg
1558b8e80941Smrg   if (is_long && !is_uint && base == 10 && value > (uint64_t)LLONG_MAX + 1) {
1559b8e80941Smrg      /* Tries to catch unintentionally providing a negative value. */
1560b8e80941Smrg      _mesa_glsl_warning(lloc, state,
1561b8e80941Smrg                         "signed literal value `%s' is interpreted as %lld",
1562b8e80941Smrg                         text, lval->n64);
1563b8e80941Smrg   } else if (!is_long && value > UINT_MAX) {
1564b8e80941Smrg      /* Note that signed 0xffffffff is valid, not out of range! */
1565b8e80941Smrg      if (state->is_version(130, 300)) {
1566b8e80941Smrg	 _mesa_glsl_error(lloc, state,
1567b8e80941Smrg			  "literal value `%s' out of range", text);
1568b8e80941Smrg      } else {
1569b8e80941Smrg	 _mesa_glsl_warning(lloc, state,
1570b8e80941Smrg			    "literal value `%s' out of range", text);
1571b8e80941Smrg      }
1572b8e80941Smrg   } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) {
1573b8e80941Smrg      /* Tries to catch unintentionally providing a negative value.
1574b8e80941Smrg       * Note that -2147483648 is parsed as -(2147483648), so we don't
1575b8e80941Smrg       * want to warn for INT_MAX.
1576b8e80941Smrg       */
1577b8e80941Smrg      _mesa_glsl_warning(lloc, state,
1578b8e80941Smrg			 "signed literal value `%s' is interpreted as %d",
1579b8e80941Smrg			 text, lval->n);
1580b8e80941Smrg   }
1581b8e80941Smrg   if (is_long)
1582b8e80941Smrg      return is_uint ? UINT64CONSTANT : INT64CONSTANT;
1583b8e80941Smrg   else
1584b8e80941Smrg      return is_uint ? UINTCONSTANT : INTCONSTANT;
1585b8e80941Smrg}
1586b8e80941Smrg
1587b8e80941Smrg#define LITERAL_INTEGER(base) \
1588b8e80941Smrg   literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base)
1589b8e80941Smrg
1590b8e80941Smrg#line 1590 "src/compiler/glsl/glsl_lexer.cpp"
1591b8e80941Smrg#line 218 "../src/compiler/glsl/glsl_lexer.ll"
1592b8e80941Smrg	/* Note: When adding any start conditions to this list, you must also
1593b8e80941Smrg	 * update the "Internal compiler error" catch-all rule near the end of
1594b8e80941Smrg	 * this file. */
1595b8e80941Smrg
1596b8e80941Smrg#line 1596 "src/compiler/glsl/glsl_lexer.cpp"
1597b8e80941Smrg
1598b8e80941Smrg#define INITIAL 0
1599b8e80941Smrg#define PP 1
1600b8e80941Smrg#define PRAGMA 2
1601b8e80941Smrg
1602b8e80941Smrg#ifndef YY_NO_UNISTD_H
1603b8e80941Smrg/* Special case for "unistd.h", since it is non-ANSI. We include it way
1604b8e80941Smrg * down here because we want the user's section 1 to have been scanned first.
1605b8e80941Smrg * The user has a chance to override it with an option.
1606b8e80941Smrg */
1607b8e80941Smrg#include <unistd.h>
1608b8e80941Smrg#endif
1609b8e80941Smrg
1610b8e80941Smrg#define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
1611b8e80941Smrg
1612b8e80941Smrg/* Holds the entire state of the reentrant scanner. */
1613b8e80941Smrgstruct yyguts_t
1614b8e80941Smrg    {
1615b8e80941Smrg
1616b8e80941Smrg    /* User-defined. Not touched by flex. */
1617b8e80941Smrg    YY_EXTRA_TYPE yyextra_r;
1618b8e80941Smrg
1619b8e80941Smrg    /* The rest are the same as the globals declared in the non-reentrant scanner. */
1620b8e80941Smrg    FILE *yyin_r, *yyout_r;
1621b8e80941Smrg    size_t yy_buffer_stack_top; /**< index of top of stack. */
1622b8e80941Smrg    size_t yy_buffer_stack_max; /**< capacity of stack. */
1623b8e80941Smrg    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1624b8e80941Smrg    char yy_hold_char;
1625b8e80941Smrg    yy_size_t yy_n_chars;
1626b8e80941Smrg    yy_size_t yyleng_r;
1627b8e80941Smrg    char *yy_c_buf_p;
1628b8e80941Smrg    int yy_init;
1629b8e80941Smrg    int yy_start;
1630b8e80941Smrg    int yy_did_buffer_switch_on_eof;
1631b8e80941Smrg    int yy_start_stack_ptr;
1632b8e80941Smrg    int yy_start_stack_depth;
1633b8e80941Smrg    int *yy_start_stack;
1634b8e80941Smrg    yy_state_type yy_last_accepting_state;
1635b8e80941Smrg    char* yy_last_accepting_cpos;
1636b8e80941Smrg
1637b8e80941Smrg    int yylineno_r;
1638b8e80941Smrg    int yy_flex_debug_r;
1639b8e80941Smrg
1640b8e80941Smrg    char *yytext_r;
1641b8e80941Smrg    int yy_more_flag;
1642b8e80941Smrg    int yy_more_len;
1643b8e80941Smrg
1644b8e80941Smrg    YYSTYPE * yylval_r;
1645b8e80941Smrg
1646b8e80941Smrg    YYLTYPE * yylloc_r;
1647b8e80941Smrg
1648b8e80941Smrg    }; /* end struct yyguts_t */
1649b8e80941Smrg
1650b8e80941Smrgstatic int yy_init_globals ( yyscan_t yyscanner );
1651b8e80941Smrg
1652b8e80941Smrg    /* This must go here because YYSTYPE and YYLTYPE are included
1653b8e80941Smrg     * from bison output in section 1.*/
1654b8e80941Smrg    #    define yylval yyg->yylval_r
1655b8e80941Smrg
1656b8e80941Smrg    #    define yylloc yyg->yylloc_r
1657b8e80941Smrg
1658b8e80941Smrgint yylex_init (yyscan_t* scanner);
1659b8e80941Smrg
1660b8e80941Smrgint yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
1661b8e80941Smrg
1662b8e80941Smrg/* Accessor methods to globals.
1663b8e80941Smrg   These are made visible to non-reentrant scanners for convenience. */
1664b8e80941Smrg
1665b8e80941Smrgint yylex_destroy ( yyscan_t yyscanner );
1666b8e80941Smrg
1667b8e80941Smrgint yyget_debug ( yyscan_t yyscanner );
1668b8e80941Smrg
1669b8e80941Smrgvoid yyset_debug ( int debug_flag , yyscan_t yyscanner );
1670b8e80941Smrg
1671b8e80941SmrgYY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
1672b8e80941Smrg
1673b8e80941Smrgvoid yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
1674b8e80941Smrg
1675b8e80941SmrgFILE *yyget_in ( yyscan_t yyscanner );
1676b8e80941Smrg
1677b8e80941Smrgvoid yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
1678b8e80941Smrg
1679b8e80941SmrgFILE *yyget_out ( yyscan_t yyscanner );
1680b8e80941Smrg
1681b8e80941Smrgvoid yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
1682b8e80941Smrg
1683b8e80941Smrg			yy_size_t yyget_leng ( yyscan_t yyscanner );
1684b8e80941Smrg
1685b8e80941Smrgchar *yyget_text ( yyscan_t yyscanner );
1686b8e80941Smrg
1687b8e80941Smrgint yyget_lineno ( yyscan_t yyscanner );
1688b8e80941Smrg
1689b8e80941Smrgvoid yyset_lineno ( int _line_number , yyscan_t yyscanner );
1690b8e80941Smrg
1691b8e80941Smrgint yyget_column  ( yyscan_t yyscanner );
1692b8e80941Smrg
1693b8e80941Smrgvoid yyset_column ( int _column_no , yyscan_t yyscanner );
1694b8e80941Smrg
1695b8e80941SmrgYYSTYPE * yyget_lval ( yyscan_t yyscanner );
1696b8e80941Smrg
1697b8e80941Smrgvoid yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
1698b8e80941Smrg
1699b8e80941Smrg       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
1700b8e80941Smrg
1701b8e80941Smrg        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
1702b8e80941Smrg
1703b8e80941Smrg/* Macros after this point can all be overridden by user definitions in
1704b8e80941Smrg * section 1.
1705b8e80941Smrg */
1706b8e80941Smrg
1707b8e80941Smrg#ifndef YY_SKIP_YYWRAP
1708b8e80941Smrg#ifdef __cplusplus
1709b8e80941Smrgextern "C" int yywrap ( yyscan_t yyscanner );
1710b8e80941Smrg#else
1711b8e80941Smrgextern int yywrap ( yyscan_t yyscanner );
1712b8e80941Smrg#endif
1713b8e80941Smrg#endif
1714b8e80941Smrg
1715b8e80941Smrg#ifndef YY_NO_UNPUT
1716b8e80941Smrg
1717b8e80941Smrg#endif
1718b8e80941Smrg
1719b8e80941Smrg#ifndef yytext_ptr
1720b8e80941Smrgstatic void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
1721b8e80941Smrg#endif
1722b8e80941Smrg
1723b8e80941Smrg#ifdef YY_NEED_STRLEN
1724b8e80941Smrgstatic int yy_flex_strlen ( const char * , yyscan_t yyscanner);
1725b8e80941Smrg#endif
1726b8e80941Smrg
1727b8e80941Smrg#ifndef YY_NO_INPUT
1728b8e80941Smrg#ifdef __cplusplus
1729b8e80941Smrgstatic int yyinput ( yyscan_t yyscanner );
1730b8e80941Smrg#else
1731b8e80941Smrgstatic int input ( yyscan_t yyscanner );
1732b8e80941Smrg#endif
1733b8e80941Smrg
1734b8e80941Smrg#endif
1735b8e80941Smrg
1736b8e80941Smrg/* Amount of stuff to slurp up with each read. */
1737b8e80941Smrg#ifndef YY_READ_BUF_SIZE
1738b8e80941Smrg#ifdef __ia64__
1739b8e80941Smrg/* On IA-64, the buffer size is 16k, not 8k */
1740b8e80941Smrg#define YY_READ_BUF_SIZE 16384
1741b8e80941Smrg#else
1742b8e80941Smrg#define YY_READ_BUF_SIZE 8192
1743b8e80941Smrg#endif /* __ia64__ */
1744b8e80941Smrg#endif
1745b8e80941Smrg
1746b8e80941Smrg/* Copy whatever the last rule matched to the standard output. */
1747b8e80941Smrg#ifndef ECHO
1748b8e80941Smrg/* This used to be an fputs(), but since the string might contain NUL's,
1749b8e80941Smrg * we now use fwrite().
1750b8e80941Smrg */
1751b8e80941Smrg#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1752b8e80941Smrg#endif
1753b8e80941Smrg
1754b8e80941Smrg/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1755b8e80941Smrg * is returned in "result".
1756b8e80941Smrg */
1757b8e80941Smrg#ifndef YY_INPUT
1758b8e80941Smrg#define YY_INPUT(buf,result,max_size) \
1759b8e80941Smrg	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1760b8e80941Smrg		{ \
1761b8e80941Smrg		int c = '*'; \
1762b8e80941Smrg		yy_size_t n; \
1763b8e80941Smrg		for ( n = 0; n < max_size && \
1764b8e80941Smrg			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1765b8e80941Smrg			buf[n] = (char) c; \
1766b8e80941Smrg		if ( c == '\n' ) \
1767b8e80941Smrg			buf[n++] = (char) c; \
1768b8e80941Smrg		if ( c == EOF && ferror( yyin ) ) \
1769b8e80941Smrg			YY_FATAL_ERROR( "input in flex scanner failed" ); \
1770b8e80941Smrg		result = n; \
1771b8e80941Smrg		} \
1772b8e80941Smrg	else \
1773b8e80941Smrg		{ \
1774b8e80941Smrg		errno=0; \
1775b8e80941Smrg		while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1776b8e80941Smrg			{ \
1777b8e80941Smrg			if( errno != EINTR) \
1778b8e80941Smrg				{ \
1779b8e80941Smrg				YY_FATAL_ERROR( "input in flex scanner failed" ); \
1780b8e80941Smrg				break; \
1781b8e80941Smrg				} \
1782b8e80941Smrg			errno=0; \
1783b8e80941Smrg			clearerr(yyin); \
1784b8e80941Smrg			} \
1785b8e80941Smrg		}\
1786b8e80941Smrg\
1787b8e80941Smrg
1788b8e80941Smrg#endif
1789b8e80941Smrg
1790b8e80941Smrg/* No semi-colon after return; correct usage is to write "yyterminate();" -
1791b8e80941Smrg * we don't want an extra ';' after the "return" because that will cause
1792b8e80941Smrg * some compilers to complain about unreachable statements.
1793b8e80941Smrg */
1794b8e80941Smrg#ifndef yyterminate
1795b8e80941Smrg#define yyterminate() return YY_NULL
1796b8e80941Smrg#endif
1797b8e80941Smrg
1798b8e80941Smrg/* Number of entries by which start-condition stack grows. */
1799b8e80941Smrg#ifndef YY_START_STACK_INCR
1800b8e80941Smrg#define YY_START_STACK_INCR 25
1801b8e80941Smrg#endif
1802b8e80941Smrg
1803b8e80941Smrg/* Report a fatal error. */
1804b8e80941Smrg#ifndef YY_FATAL_ERROR
1805b8e80941Smrg#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1806b8e80941Smrg#endif
1807b8e80941Smrg
1808b8e80941Smrg/* end tables serialization structures and prototypes */
1809b8e80941Smrg
1810b8e80941Smrg/* Default declaration of generated scanner - a define so the user can
1811b8e80941Smrg * easily add parameters.
1812b8e80941Smrg */
1813b8e80941Smrg#ifndef YY_DECL
1814b8e80941Smrg#define YY_DECL_IS_OURS 1
1815b8e80941Smrg
1816b8e80941Smrgextern int yylex \
1817b8e80941Smrg               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
1818b8e80941Smrg
1819b8e80941Smrg#define YY_DECL int yylex \
1820b8e80941Smrg               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1821b8e80941Smrg#endif /* !YY_DECL */
1822b8e80941Smrg
1823b8e80941Smrg/* Code executed at the beginning of each rule, after yytext and yyleng
1824b8e80941Smrg * have been set up.
1825b8e80941Smrg */
1826b8e80941Smrg#ifndef YY_USER_ACTION
1827b8e80941Smrg#define YY_USER_ACTION
1828b8e80941Smrg#endif
1829b8e80941Smrg
1830b8e80941Smrg/* Code executed at the end of each rule. */
1831b8e80941Smrg#ifndef YY_BREAK
1832b8e80941Smrg#define YY_BREAK /*LINTED*/break;
1833b8e80941Smrg#endif
1834b8e80941Smrg
1835b8e80941Smrg#define YY_RULE_SETUP \
1836b8e80941Smrg	if ( yyleng > 0 ) \
1837b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1838b8e80941Smrg				(yytext[yyleng - 1] == '\n'); \
1839b8e80941Smrg	YY_USER_ACTION
1840b8e80941Smrg
1841b8e80941Smrg/** The main scanner function which does all the work.
1842b8e80941Smrg */
1843b8e80941SmrgYY_DECL
1844b8e80941Smrg{
1845b8e80941Smrg	yy_state_type yy_current_state;
1846b8e80941Smrg	char *yy_cp, *yy_bp;
1847b8e80941Smrg	int yy_act;
1848b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1849b8e80941Smrg
1850b8e80941Smrg    yylval = yylval_param;
1851b8e80941Smrg
1852b8e80941Smrg    yylloc = yylloc_param;
1853b8e80941Smrg
1854b8e80941Smrg	if ( !yyg->yy_init )
1855b8e80941Smrg		{
1856b8e80941Smrg		yyg->yy_init = 1;
1857b8e80941Smrg
1858b8e80941Smrg#ifdef YY_USER_INIT
1859b8e80941Smrg		YY_USER_INIT;
1860b8e80941Smrg#endif
1861b8e80941Smrg
1862b8e80941Smrg		if ( ! yyg->yy_start )
1863b8e80941Smrg			yyg->yy_start = 1;	/* first start state */
1864b8e80941Smrg
1865b8e80941Smrg		if ( ! yyin )
1866b8e80941Smrg			yyin = stdin;
1867b8e80941Smrg
1868b8e80941Smrg		if ( ! yyout )
1869b8e80941Smrg			yyout = stdout;
1870b8e80941Smrg
1871b8e80941Smrg		if ( ! YY_CURRENT_BUFFER ) {
1872b8e80941Smrg			yyensure_buffer_stack (yyscanner);
1873b8e80941Smrg			YY_CURRENT_BUFFER_LVALUE =
1874b8e80941Smrg				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
1875b8e80941Smrg		}
1876b8e80941Smrg
1877b8e80941Smrg		yy_load_buffer_state( yyscanner );
1878b8e80941Smrg		}
1879b8e80941Smrg
1880b8e80941Smrg	{
1881b8e80941Smrg#line 230 "../src/compiler/glsl/glsl_lexer.ll"
1882b8e80941Smrg
1883b8e80941Smrg
1884b8e80941Smrg#line 1884 "src/compiler/glsl/glsl_lexer.cpp"
1885b8e80941Smrg
1886b8e80941Smrg	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
1887b8e80941Smrg		{
1888b8e80941Smrg		yy_cp = yyg->yy_c_buf_p;
1889b8e80941Smrg
1890b8e80941Smrg		/* Support of yytext. */
1891b8e80941Smrg		*yy_cp = yyg->yy_hold_char;
1892b8e80941Smrg
1893b8e80941Smrg		/* yy_bp points to the position in yy_ch_buf of the start of
1894b8e80941Smrg		 * the current run.
1895b8e80941Smrg		 */
1896b8e80941Smrg		yy_bp = yy_cp;
1897b8e80941Smrg
1898b8e80941Smrg		yy_current_state = yyg->yy_start;
1899b8e80941Smrg		yy_current_state += YY_AT_BOL();
1900b8e80941Smrgyy_match:
1901b8e80941Smrg		do
1902b8e80941Smrg			{
1903b8e80941Smrg			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1904b8e80941Smrg			if ( yy_accept[yy_current_state] )
1905b8e80941Smrg				{
1906b8e80941Smrg				yyg->yy_last_accepting_state = yy_current_state;
1907b8e80941Smrg				yyg->yy_last_accepting_cpos = yy_cp;
1908b8e80941Smrg				}
1909b8e80941Smrg			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1910b8e80941Smrg				{
1911b8e80941Smrg				yy_current_state = (int) yy_def[yy_current_state];
1912b8e80941Smrg				if ( yy_current_state >= 1096 )
1913b8e80941Smrg					yy_c = yy_meta[yy_c];
1914b8e80941Smrg				}
1915b8e80941Smrg			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1916b8e80941Smrg			++yy_cp;
1917b8e80941Smrg			}
1918b8e80941Smrg		while ( yy_current_state != 1095 );
1919b8e80941Smrg		yy_cp = yyg->yy_last_accepting_cpos;
1920b8e80941Smrg		yy_current_state = yyg->yy_last_accepting_state;
1921b8e80941Smrg
1922b8e80941Smrgyy_find_action:
1923b8e80941Smrg		yy_act = yy_accept[yy_current_state];
1924b8e80941Smrg
1925b8e80941Smrg		YY_DO_BEFORE_ACTION;
1926b8e80941Smrg
1927b8e80941Smrgdo_action:	/* This label is used only to access EOF actions. */
1928b8e80941Smrg
1929b8e80941Smrg		switch ( yy_act )
1930b8e80941Smrg	{ /* beginning of action switch */
1931b8e80941Smrg			case 0: /* must back up */
1932b8e80941Smrg			/* undo the effects of YY_DO_BEFORE_ACTION */
1933b8e80941Smrg			*yy_cp = yyg->yy_hold_char;
1934b8e80941Smrg			yy_cp = yyg->yy_last_accepting_cpos;
1935b8e80941Smrg			yy_current_state = yyg->yy_last_accepting_state;
1936b8e80941Smrg			goto yy_find_action;
1937b8e80941Smrg
1938b8e80941Smrgcase 1:
1939b8e80941SmrgYY_RULE_SETUP
1940b8e80941Smrg#line 232 "../src/compiler/glsl/glsl_lexer.ll"
1941b8e80941Smrg;
1942b8e80941Smrg	YY_BREAK
1943b8e80941Smrg/* Preprocessor tokens. */
1944b8e80941Smrgcase 2:
1945b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1946b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1;
1947b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */
1948b8e80941SmrgYY_RULE_SETUP
1949b8e80941Smrg#line 235 "../src/compiler/glsl/glsl_lexer.ll"
1950b8e80941Smrg;
1951b8e80941Smrg	YY_BREAK
1952b8e80941Smrgcase 3:
1953b8e80941SmrgYY_RULE_SETUP
1954b8e80941Smrg#line 236 "../src/compiler/glsl/glsl_lexer.ll"
1955b8e80941Smrg{ BEGIN PP; return VERSION_TOK; }
1956b8e80941Smrg	YY_BREAK
1957b8e80941Smrgcase 4:
1958b8e80941SmrgYY_RULE_SETUP
1959b8e80941Smrg#line 237 "../src/compiler/glsl/glsl_lexer.ll"
1960b8e80941Smrg{ BEGIN PP; return EXTENSION; }
1961b8e80941Smrg	YY_BREAK
1962b8e80941Smrgcase 5:
1963b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1964b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1;
1965b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */
1966b8e80941SmrgYY_RULE_SETUP
1967b8e80941Smrg#line 238 "../src/compiler/glsl/glsl_lexer.ll"
1968b8e80941Smrg{
1969b8e80941Smrg				   /* Eat characters until the first digit is
1970b8e80941Smrg				    * encountered
1971b8e80941Smrg				    */
1972b8e80941Smrg				   char *ptr = yytext;
1973b8e80941Smrg				   while (!isdigit(*ptr))
1974b8e80941Smrg				      ptr++;
1975b8e80941Smrg
1976b8e80941Smrg				   /* Subtract one from the line number because
1977b8e80941Smrg				    * yylineno is zero-based instead of
1978b8e80941Smrg				    * one-based.
1979b8e80941Smrg				    */
1980b8e80941Smrg				   yylineno = strtol(ptr, &ptr, 0) - 1;
1981b8e80941Smrg
1982b8e80941Smrg                                   /* From GLSL 3.30 and GLSL ES on, after processing the
1983b8e80941Smrg                                    * line directive (including its new-line), the implementation
1984b8e80941Smrg                                    * will behave as if it is compiling at the line number passed
1985b8e80941Smrg                                    * as argument. It was line number + 1 in older specifications.
1986b8e80941Smrg                                    */
1987b8e80941Smrg                                   if (yyextra->is_version(330, 100))
1988b8e80941Smrg                                      yylineno--;
1989b8e80941Smrg
1990b8e80941Smrg				   yylloc->source = strtol(ptr, NULL, 0);
1991b8e80941Smrg				}
1992b8e80941Smrg	YY_BREAK
1993b8e80941Smrgcase 6:
1994b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1995b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1;
1996b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */
1997b8e80941SmrgYY_RULE_SETUP
1998b8e80941Smrg#line 262 "../src/compiler/glsl/glsl_lexer.ll"
1999b8e80941Smrg{
2000b8e80941Smrg				   /* Eat characters until the first digit is
2001b8e80941Smrg				    * encountered
2002b8e80941Smrg				    */
2003b8e80941Smrg				   char *ptr = yytext;
2004b8e80941Smrg				   while (!isdigit(*ptr))
2005b8e80941Smrg				      ptr++;
2006b8e80941Smrg
2007b8e80941Smrg				   /* Subtract one from the line number because
2008b8e80941Smrg				    * yylineno is zero-based instead of
2009b8e80941Smrg				    * one-based.
2010b8e80941Smrg				    */
2011b8e80941Smrg				   yylineno = strtol(ptr, &ptr, 0) - 1;
2012b8e80941Smrg
2013b8e80941Smrg                                   /* From GLSL 3.30 and GLSL ES on, after processing the
2014b8e80941Smrg                                    * line directive (including its new-line), the implementation
2015b8e80941Smrg                                    * will behave as if it is compiling at the line number passed
2016b8e80941Smrg                                    * as argument. It was line number + 1 in older specifications.
2017b8e80941Smrg                                    */
2018b8e80941Smrg                                   if (yyextra->is_version(330, 100))
2019b8e80941Smrg                                      yylineno--;
2020b8e80941Smrg				}
2021b8e80941Smrg	YY_BREAK
2022b8e80941Smrgcase 7:
2023b8e80941SmrgYY_RULE_SETUP
2024b8e80941Smrg#line 284 "../src/compiler/glsl/glsl_lexer.ll"
2025b8e80941Smrg{
2026b8e80941Smrg				  BEGIN PP;
2027b8e80941Smrg				  return PRAGMA_DEBUG_ON;
2028b8e80941Smrg				}
2029b8e80941Smrg	YY_BREAK
2030b8e80941Smrgcase 8:
2031b8e80941SmrgYY_RULE_SETUP
2032b8e80941Smrg#line 288 "../src/compiler/glsl/glsl_lexer.ll"
2033b8e80941Smrg{
2034b8e80941Smrg				  BEGIN PP;
2035b8e80941Smrg				  return PRAGMA_DEBUG_OFF;
2036b8e80941Smrg				}
2037b8e80941Smrg	YY_BREAK
2038b8e80941Smrgcase 9:
2039b8e80941SmrgYY_RULE_SETUP
2040b8e80941Smrg#line 292 "../src/compiler/glsl/glsl_lexer.ll"
2041b8e80941Smrg{
2042b8e80941Smrg				  BEGIN PP;
2043b8e80941Smrg				  return PRAGMA_OPTIMIZE_ON;
2044b8e80941Smrg				}
2045b8e80941Smrg	YY_BREAK
2046b8e80941Smrgcase 10:
2047b8e80941SmrgYY_RULE_SETUP
2048b8e80941Smrg#line 296 "../src/compiler/glsl/glsl_lexer.ll"
2049b8e80941Smrg{
2050b8e80941Smrg				  BEGIN PP;
2051b8e80941Smrg				  return PRAGMA_OPTIMIZE_OFF;
2052b8e80941Smrg				}
2053b8e80941Smrg	YY_BREAK
2054b8e80941Smrgcase 11:
2055b8e80941SmrgYY_RULE_SETUP
2056b8e80941Smrg#line 300 "../src/compiler/glsl/glsl_lexer.ll"
2057b8e80941Smrg{
2058b8e80941Smrg				  BEGIN PP;
2059b8e80941Smrg				  return PRAGMA_WARNING_ON;
2060b8e80941Smrg				}
2061b8e80941Smrg	YY_BREAK
2062b8e80941Smrgcase 12:
2063b8e80941SmrgYY_RULE_SETUP
2064b8e80941Smrg#line 304 "../src/compiler/glsl/glsl_lexer.ll"
2065b8e80941Smrg{
2066b8e80941Smrg				  BEGIN PP;
2067b8e80941Smrg				  return PRAGMA_WARNING_OFF;
2068b8e80941Smrg				}
2069b8e80941Smrg	YY_BREAK
2070b8e80941Smrgcase 13:
2071b8e80941SmrgYY_RULE_SETUP
2072b8e80941Smrg#line 308 "../src/compiler/glsl/glsl_lexer.ll"
2073b8e80941Smrg{
2074b8e80941Smrg				  BEGIN PP;
2075b8e80941Smrg				  return PRAGMA_INVARIANT_ALL;
2076b8e80941Smrg				}
2077b8e80941Smrg	YY_BREAK
2078b8e80941Smrgcase 14:
2079b8e80941SmrgYY_RULE_SETUP
2080b8e80941Smrg#line 312 "../src/compiler/glsl/glsl_lexer.ll"
2081b8e80941Smrg{ BEGIN PRAGMA; }
2082b8e80941Smrg	YY_BREAK
2083b8e80941Smrgcase 15:
2084b8e80941Smrg/* rule 15 can match eol */
2085b8e80941SmrgYY_RULE_SETUP
2086b8e80941Smrg#line 314 "../src/compiler/glsl/glsl_lexer.ll"
2087b8e80941Smrg{ BEGIN 0; yylineno++; yycolumn = 0; }
2088b8e80941Smrg	YY_BREAK
2089b8e80941Smrgcase 16:
2090b8e80941SmrgYY_RULE_SETUP
2091b8e80941Smrg#line 315 "../src/compiler/glsl/glsl_lexer.ll"
2092b8e80941Smrg{ }
2093b8e80941Smrg	YY_BREAK
2094b8e80941Smrgcase 17:
2095b8e80941SmrgYY_RULE_SETUP
2096b8e80941Smrg#line 317 "../src/compiler/glsl/glsl_lexer.ll"
2097b8e80941Smrg{ }
2098b8e80941Smrg	YY_BREAK
2099b8e80941Smrgcase 18:
2100b8e80941SmrgYY_RULE_SETUP
2101b8e80941Smrg#line 318 "../src/compiler/glsl/glsl_lexer.ll"
2102b8e80941Smrg{ }
2103b8e80941Smrg	YY_BREAK
2104b8e80941Smrgcase 19:
2105b8e80941SmrgYY_RULE_SETUP
2106b8e80941Smrg#line 319 "../src/compiler/glsl/glsl_lexer.ll"
2107b8e80941Smrgreturn COLON;
2108b8e80941Smrg	YY_BREAK
2109b8e80941Smrgcase 20:
2110b8e80941SmrgYY_RULE_SETUP
2111b8e80941Smrg#line 320 "../src/compiler/glsl/glsl_lexer.ll"
2112b8e80941Smrg{
2113b8e80941Smrg				   /* We're not doing linear_strdup here, to avoid an implicit call
2114b8e80941Smrg				    * on strlen() for the length of the string, as this is already
2115b8e80941Smrg				    * found by flex and stored in yyleng
2116b8e80941Smrg				    */
2117b8e80941Smrg                                    void *mem_ctx = yyextra->linalloc;
2118b8e80941Smrg                                    char *id = (char *) linear_alloc_child(mem_ctx, yyleng + 1);
2119b8e80941Smrg                                    memcpy(id, yytext, yyleng + 1);
2120b8e80941Smrg                                    yylval->identifier = id;
2121b8e80941Smrg				   return IDENTIFIER;
2122b8e80941Smrg				}
2123b8e80941Smrg	YY_BREAK
2124b8e80941Smrgcase 21:
2125b8e80941SmrgYY_RULE_SETUP
2126b8e80941Smrg#line 331 "../src/compiler/glsl/glsl_lexer.ll"
2127b8e80941Smrg{
2128b8e80941Smrg				    yylval->n = strtol(yytext, NULL, 10);
2129b8e80941Smrg				    return INTCONSTANT;
2130b8e80941Smrg				}
2131b8e80941Smrg	YY_BREAK
2132b8e80941Smrgcase 22:
2133b8e80941SmrgYY_RULE_SETUP
2134b8e80941Smrg#line 335 "../src/compiler/glsl/glsl_lexer.ll"
2135b8e80941Smrg{
2136b8e80941Smrg				    yylval->n = 0;
2137b8e80941Smrg				    return INTCONSTANT;
2138b8e80941Smrg				}
2139b8e80941Smrg	YY_BREAK
2140b8e80941Smrgcase 23:
2141b8e80941Smrg/* rule 23 can match eol */
2142b8e80941SmrgYY_RULE_SETUP
2143b8e80941Smrg#line 339 "../src/compiler/glsl/glsl_lexer.ll"
2144b8e80941Smrg{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
2145b8e80941Smrg	YY_BREAK
2146b8e80941Smrgcase 24:
2147b8e80941SmrgYY_RULE_SETUP
2148b8e80941Smrg#line 340 "../src/compiler/glsl/glsl_lexer.ll"
2149b8e80941Smrg{ return yytext[0]; }
2150b8e80941Smrg	YY_BREAK
2151b8e80941Smrgcase 25:
2152b8e80941Smrg/* rule 25 can match eol */
2153b8e80941SmrgYY_RULE_SETUP
2154b8e80941Smrg#line 342 "../src/compiler/glsl/glsl_lexer.ll"
2155b8e80941Smrg{ yylineno++; yycolumn = 0; }
2156b8e80941Smrg	YY_BREAK
2157b8e80941Smrgcase 26:
2158b8e80941SmrgYY_RULE_SETUP
2159b8e80941Smrg#line 344 "../src/compiler/glsl/glsl_lexer.ll"
2160b8e80941SmrgDEPRECATED_ES_KEYWORD(ATTRIBUTE);
2161b8e80941Smrg	YY_BREAK
2162b8e80941Smrgcase 27:
2163b8e80941SmrgYY_RULE_SETUP
2164b8e80941Smrg#line 345 "../src/compiler/glsl/glsl_lexer.ll"
2165b8e80941Smrgreturn CONST_TOK;
2166b8e80941Smrg	YY_BREAK
2167b8e80941Smrgcase 28:
2168b8e80941SmrgYY_RULE_SETUP
2169b8e80941Smrg#line 346 "../src/compiler/glsl/glsl_lexer.ll"
2170b8e80941Smrg{ yylval->type = glsl_type::bool_type; return BASIC_TYPE_TOK; }
2171b8e80941Smrg	YY_BREAK
2172b8e80941Smrgcase 29:
2173b8e80941SmrgYY_RULE_SETUP
2174b8e80941Smrg#line 347 "../src/compiler/glsl/glsl_lexer.ll"
2175b8e80941Smrg{ yylval->type = glsl_type::float_type; return BASIC_TYPE_TOK; }
2176b8e80941Smrg	YY_BREAK
2177b8e80941Smrgcase 30:
2178b8e80941SmrgYY_RULE_SETUP
2179b8e80941Smrg#line 348 "../src/compiler/glsl/glsl_lexer.ll"
2180b8e80941Smrg{ yylval->type = glsl_type::int_type; return BASIC_TYPE_TOK; }
2181b8e80941Smrg	YY_BREAK
2182b8e80941Smrgcase 31:
2183b8e80941SmrgYY_RULE_SETUP
2184b8e80941Smrg#line 349 "../src/compiler/glsl/glsl_lexer.ll"
2185b8e80941SmrgTYPE(130, 300, 130, 300, glsl_type::uint_type);
2186b8e80941Smrg	YY_BREAK
2187b8e80941Smrgcase 32:
2188b8e80941SmrgYY_RULE_SETUP
2189b8e80941Smrg#line 351 "../src/compiler/glsl/glsl_lexer.ll"
2190b8e80941Smrgreturn BREAK;
2191b8e80941Smrg	YY_BREAK
2192b8e80941Smrgcase 33:
2193b8e80941SmrgYY_RULE_SETUP
2194b8e80941Smrg#line 352 "../src/compiler/glsl/glsl_lexer.ll"
2195b8e80941Smrgreturn CONTINUE;
2196b8e80941Smrg	YY_BREAK
2197b8e80941Smrgcase 34:
2198b8e80941SmrgYY_RULE_SETUP
2199b8e80941Smrg#line 353 "../src/compiler/glsl/glsl_lexer.ll"
2200b8e80941Smrgreturn DO;
2201b8e80941Smrg	YY_BREAK
2202b8e80941Smrgcase 35:
2203b8e80941SmrgYY_RULE_SETUP
2204b8e80941Smrg#line 354 "../src/compiler/glsl/glsl_lexer.ll"
2205b8e80941Smrgreturn WHILE;
2206b8e80941Smrg	YY_BREAK
2207b8e80941Smrgcase 36:
2208b8e80941SmrgYY_RULE_SETUP
2209b8e80941Smrg#line 355 "../src/compiler/glsl/glsl_lexer.ll"
2210b8e80941Smrgreturn ELSE;
2211b8e80941Smrg	YY_BREAK
2212b8e80941Smrgcase 37:
2213b8e80941SmrgYY_RULE_SETUP
2214b8e80941Smrg#line 356 "../src/compiler/glsl/glsl_lexer.ll"
2215b8e80941Smrgreturn FOR;
2216b8e80941Smrg	YY_BREAK
2217b8e80941Smrgcase 38:
2218b8e80941SmrgYY_RULE_SETUP
2219b8e80941Smrg#line 357 "../src/compiler/glsl/glsl_lexer.ll"
2220b8e80941Smrgreturn IF;
2221b8e80941Smrg	YY_BREAK
2222b8e80941Smrgcase 39:
2223b8e80941SmrgYY_RULE_SETUP
2224b8e80941Smrg#line 358 "../src/compiler/glsl/glsl_lexer.ll"
2225b8e80941Smrgreturn DISCARD;
2226b8e80941Smrg	YY_BREAK
2227b8e80941Smrgcase 40:
2228b8e80941SmrgYY_RULE_SETUP
2229b8e80941Smrg#line 359 "../src/compiler/glsl/glsl_lexer.ll"
2230b8e80941Smrgreturn RETURN;
2231b8e80941Smrg	YY_BREAK
2232b8e80941Smrgcase 41:
2233b8e80941SmrgYY_RULE_SETUP
2234b8e80941Smrg#line 361 "../src/compiler/glsl/glsl_lexer.ll"
2235b8e80941Smrg{ yylval->type = glsl_type::bvec2_type; return BASIC_TYPE_TOK; }
2236b8e80941Smrg	YY_BREAK
2237b8e80941Smrgcase 42:
2238b8e80941SmrgYY_RULE_SETUP
2239b8e80941Smrg#line 362 "../src/compiler/glsl/glsl_lexer.ll"
2240b8e80941Smrg{ yylval->type = glsl_type::bvec3_type; return BASIC_TYPE_TOK; }
2241b8e80941Smrg	YY_BREAK
2242b8e80941Smrgcase 43:
2243b8e80941SmrgYY_RULE_SETUP
2244b8e80941Smrg#line 363 "../src/compiler/glsl/glsl_lexer.ll"
2245b8e80941Smrg{ yylval->type = glsl_type::bvec4_type; return BASIC_TYPE_TOK; }
2246b8e80941Smrg	YY_BREAK
2247b8e80941Smrgcase 44:
2248b8e80941SmrgYY_RULE_SETUP
2249b8e80941Smrg#line 364 "../src/compiler/glsl/glsl_lexer.ll"
2250b8e80941Smrg{ yylval->type = glsl_type::ivec2_type; return BASIC_TYPE_TOK; }
2251b8e80941Smrg	YY_BREAK
2252b8e80941Smrgcase 45:
2253b8e80941SmrgYY_RULE_SETUP
2254b8e80941Smrg#line 365 "../src/compiler/glsl/glsl_lexer.ll"
2255b8e80941Smrg{ yylval->type = glsl_type::ivec3_type; return BASIC_TYPE_TOK; }
2256b8e80941Smrg	YY_BREAK
2257b8e80941Smrgcase 46:
2258b8e80941SmrgYY_RULE_SETUP
2259b8e80941Smrg#line 366 "../src/compiler/glsl/glsl_lexer.ll"
2260b8e80941Smrg{ yylval->type = glsl_type::ivec4_type; return BASIC_TYPE_TOK; }
2261b8e80941Smrg	YY_BREAK
2262b8e80941Smrgcase 47:
2263b8e80941SmrgYY_RULE_SETUP
2264b8e80941Smrg#line 367 "../src/compiler/glsl/glsl_lexer.ll"
2265b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec2_type);
2266b8e80941Smrg	YY_BREAK
2267b8e80941Smrgcase 48:
2268b8e80941SmrgYY_RULE_SETUP
2269b8e80941Smrg#line 368 "../src/compiler/glsl/glsl_lexer.ll"
2270b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec3_type);
2271b8e80941Smrg	YY_BREAK
2272b8e80941Smrgcase 49:
2273b8e80941SmrgYY_RULE_SETUP
2274b8e80941Smrg#line 369 "../src/compiler/glsl/glsl_lexer.ll"
2275b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec4_type);
2276b8e80941Smrg	YY_BREAK
2277b8e80941Smrgcase 50:
2278b8e80941SmrgYY_RULE_SETUP
2279b8e80941Smrg#line 370 "../src/compiler/glsl/glsl_lexer.ll"
2280b8e80941Smrg{ yylval->type = glsl_type::vec2_type; return BASIC_TYPE_TOK; }
2281b8e80941Smrg	YY_BREAK
2282b8e80941Smrgcase 51:
2283b8e80941SmrgYY_RULE_SETUP
2284b8e80941Smrg#line 371 "../src/compiler/glsl/glsl_lexer.ll"
2285b8e80941Smrg{ yylval->type = glsl_type::vec3_type; return BASIC_TYPE_TOK; }
2286b8e80941Smrg	YY_BREAK
2287b8e80941Smrgcase 52:
2288b8e80941SmrgYY_RULE_SETUP
2289b8e80941Smrg#line 372 "../src/compiler/glsl/glsl_lexer.ll"
2290b8e80941Smrg{ yylval->type = glsl_type::vec4_type; return BASIC_TYPE_TOK; }
2291b8e80941Smrg	YY_BREAK
2292b8e80941Smrgcase 53:
2293b8e80941SmrgYY_RULE_SETUP
2294b8e80941Smrg#line 373 "../src/compiler/glsl/glsl_lexer.ll"
2295b8e80941Smrg{ yylval->type = glsl_type::mat2_type; return BASIC_TYPE_TOK; }
2296b8e80941Smrg	YY_BREAK
2297b8e80941Smrgcase 54:
2298b8e80941SmrgYY_RULE_SETUP
2299b8e80941Smrg#line 374 "../src/compiler/glsl/glsl_lexer.ll"
2300b8e80941Smrg{ yylval->type = glsl_type::mat3_type; return BASIC_TYPE_TOK; }
2301b8e80941Smrg	YY_BREAK
2302b8e80941Smrgcase 55:
2303b8e80941SmrgYY_RULE_SETUP
2304b8e80941Smrg#line 375 "../src/compiler/glsl/glsl_lexer.ll"
2305b8e80941Smrg{ yylval->type = glsl_type::mat4_type; return BASIC_TYPE_TOK; }
2306b8e80941Smrg	YY_BREAK
2307b8e80941Smrgcase 56:
2308b8e80941SmrgYY_RULE_SETUP
2309b8e80941Smrg#line 376 "../src/compiler/glsl/glsl_lexer.ll"
2310b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2_type);
2311b8e80941Smrg	YY_BREAK
2312b8e80941Smrgcase 57:
2313b8e80941SmrgYY_RULE_SETUP
2314b8e80941Smrg#line 377 "../src/compiler/glsl/glsl_lexer.ll"
2315b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2x3_type);
2316b8e80941Smrg	YY_BREAK
2317b8e80941Smrgcase 58:
2318b8e80941SmrgYY_RULE_SETUP
2319b8e80941Smrg#line 378 "../src/compiler/glsl/glsl_lexer.ll"
2320b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2x4_type);
2321b8e80941Smrg	YY_BREAK
2322b8e80941Smrgcase 59:
2323b8e80941SmrgYY_RULE_SETUP
2324b8e80941Smrg#line 379 "../src/compiler/glsl/glsl_lexer.ll"
2325b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3x2_type);
2326b8e80941Smrg	YY_BREAK
2327b8e80941Smrgcase 60:
2328b8e80941SmrgYY_RULE_SETUP
2329b8e80941Smrg#line 380 "../src/compiler/glsl/glsl_lexer.ll"
2330b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3_type);
2331b8e80941Smrg	YY_BREAK
2332b8e80941Smrgcase 61:
2333b8e80941SmrgYY_RULE_SETUP
2334b8e80941Smrg#line 381 "../src/compiler/glsl/glsl_lexer.ll"
2335b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3x4_type);
2336b8e80941Smrg	YY_BREAK
2337b8e80941Smrgcase 62:
2338b8e80941SmrgYY_RULE_SETUP
2339b8e80941Smrg#line 382 "../src/compiler/glsl/glsl_lexer.ll"
2340b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4x2_type);
2341b8e80941Smrg	YY_BREAK
2342b8e80941Smrgcase 63:
2343b8e80941SmrgYY_RULE_SETUP
2344b8e80941Smrg#line 383 "../src/compiler/glsl/glsl_lexer.ll"
2345b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4x3_type);
2346b8e80941Smrg	YY_BREAK
2347b8e80941Smrgcase 64:
2348b8e80941SmrgYY_RULE_SETUP
2349b8e80941Smrg#line 384 "../src/compiler/glsl/glsl_lexer.ll"
2350b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4_type);
2351b8e80941Smrg	YY_BREAK
2352b8e80941Smrgcase 65:
2353b8e80941SmrgYY_RULE_SETUP
2354b8e80941Smrg#line 386 "../src/compiler/glsl/glsl_lexer.ll"
2355b8e80941Smrgreturn IN_TOK;
2356b8e80941Smrg	YY_BREAK
2357b8e80941Smrgcase 66:
2358b8e80941SmrgYY_RULE_SETUP
2359b8e80941Smrg#line 387 "../src/compiler/glsl/glsl_lexer.ll"
2360b8e80941Smrgreturn OUT_TOK;
2361b8e80941Smrg	YY_BREAK
2362b8e80941Smrgcase 67:
2363b8e80941SmrgYY_RULE_SETUP
2364b8e80941Smrg#line 388 "../src/compiler/glsl/glsl_lexer.ll"
2365b8e80941Smrgreturn INOUT_TOK;
2366b8e80941Smrg	YY_BREAK
2367b8e80941Smrgcase 68:
2368b8e80941SmrgYY_RULE_SETUP
2369b8e80941Smrg#line 389 "../src/compiler/glsl/glsl_lexer.ll"
2370b8e80941Smrgreturn UNIFORM;
2371b8e80941Smrg	YY_BREAK
2372b8e80941Smrgcase 69:
2373b8e80941SmrgYY_RULE_SETUP
2374b8e80941Smrg#line 390 "../src/compiler/glsl/glsl_lexer.ll"
2375b8e80941SmrgKEYWORD_WITH_ALT(0, 0, 430, 310, yyextra->ARB_shader_storage_buffer_object_enable, BUFFER);
2376b8e80941Smrg	YY_BREAK
2377b8e80941Smrgcase 70:
2378b8e80941SmrgYY_RULE_SETUP
2379b8e80941Smrg#line 391 "../src/compiler/glsl/glsl_lexer.ll"
2380b8e80941SmrgDEPRECATED_ES_KEYWORD(VARYING);
2381b8e80941Smrg	YY_BREAK
2382b8e80941Smrgcase 71:
2383b8e80941SmrgYY_RULE_SETUP
2384b8e80941Smrg#line 392 "../src/compiler/glsl/glsl_lexer.ll"
2385b8e80941SmrgKEYWORD_WITH_ALT(120, 300, 120, 300, yyextra->EXT_gpu_shader4_enable, CENTROID);
2386b8e80941Smrg	YY_BREAK
2387b8e80941Smrgcase 72:
2388b8e80941SmrgYY_RULE_SETUP
2389b8e80941Smrg#line 393 "../src/compiler/glsl/glsl_lexer.ll"
2390b8e80941SmrgKEYWORD(120, 100, 120, 100, INVARIANT);
2391b8e80941Smrg	YY_BREAK
2392b8e80941Smrgcase 73:
2393b8e80941SmrgYY_RULE_SETUP
2394b8e80941Smrg#line 394 "../src/compiler/glsl/glsl_lexer.ll"
2395b8e80941SmrgKEYWORD_WITH_ALT(130, 100, 130, 300, yyextra->EXT_gpu_shader4_enable, FLAT);
2396b8e80941Smrg	YY_BREAK
2397b8e80941Smrgcase 74:
2398b8e80941SmrgYY_RULE_SETUP
2399b8e80941Smrg#line 395 "../src/compiler/glsl/glsl_lexer.ll"
2400b8e80941SmrgKEYWORD(130, 300, 130, 300, SMOOTH);
2401b8e80941Smrg	YY_BREAK
2402b8e80941Smrgcase 75:
2403b8e80941SmrgYY_RULE_SETUP
2404b8e80941Smrg#line 396 "../src/compiler/glsl/glsl_lexer.ll"
2405b8e80941SmrgKEYWORD_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable, NOPERSPECTIVE);
2406b8e80941Smrg	YY_BREAK
2407b8e80941Smrgcase 76:
2408b8e80941SmrgYY_RULE_SETUP
2409b8e80941Smrg#line 397 "../src/compiler/glsl/glsl_lexer.ll"
2410b8e80941SmrgKEYWORD_WITH_ALT(0, 300, 400, 320, yyextra->has_tessellation_shader(), PATCH);
2411b8e80941Smrg	YY_BREAK
2412b8e80941Smrgcase 77:
2413b8e80941SmrgYY_RULE_SETUP
2414b8e80941Smrg#line 399 "../src/compiler/glsl/glsl_lexer.ll"
2415b8e80941SmrgDEPRECATED_ES_TYPE(glsl_type::sampler1D_type);
2416b8e80941Smrg	YY_BREAK
2417b8e80941Smrgcase 78:
2418b8e80941SmrgYY_RULE_SETUP
2419b8e80941Smrg#line 400 "../src/compiler/glsl/glsl_lexer.ll"
2420b8e80941Smrg{ yylval->type = glsl_type::sampler2D_type; return BASIC_TYPE_TOK; }
2421b8e80941Smrg	YY_BREAK
2422b8e80941Smrgcase 79:
2423b8e80941SmrgYY_RULE_SETUP
2424b8e80941Smrg#line 401 "../src/compiler/glsl/glsl_lexer.ll"
2425b8e80941Smrg{ yylval->type = glsl_type::sampler3D_type; return BASIC_TYPE_TOK; }
2426b8e80941Smrg	YY_BREAK
2427b8e80941Smrgcase 80:
2428b8e80941SmrgYY_RULE_SETUP
2429b8e80941Smrg#line 402 "../src/compiler/glsl/glsl_lexer.ll"
2430b8e80941Smrg{ yylval->type = glsl_type::samplerCube_type; return BASIC_TYPE_TOK; }
2431b8e80941Smrg	YY_BREAK
2432b8e80941Smrgcase 81:
2433b8e80941SmrgYY_RULE_SETUP
2434b8e80941Smrg#line 403 "../src/compiler/glsl/glsl_lexer.ll"
2435b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArray_type);
2436b8e80941Smrg	YY_BREAK
2437b8e80941Smrgcase 82:
2438b8e80941SmrgYY_RULE_SETUP
2439b8e80941Smrg#line 404 "../src/compiler/glsl/glsl_lexer.ll"
2440b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArray_type);
2441b8e80941Smrg	YY_BREAK
2442b8e80941Smrgcase 83:
2443b8e80941SmrgYY_RULE_SETUP
2444b8e80941Smrg#line 405 "../src/compiler/glsl/glsl_lexer.ll"
2445b8e80941SmrgDEPRECATED_ES_TYPE(glsl_type::sampler1DShadow_type);
2446b8e80941Smrg	YY_BREAK
2447b8e80941Smrgcase 84:
2448b8e80941SmrgYY_RULE_SETUP
2449b8e80941Smrg#line 406 "../src/compiler/glsl/glsl_lexer.ll"
2450b8e80941Smrg{ yylval->type = glsl_type::sampler2DShadow_type; return BASIC_TYPE_TOK; }
2451b8e80941Smrg	YY_BREAK
2452b8e80941Smrgcase 85:
2453b8e80941SmrgYY_RULE_SETUP
2454b8e80941Smrg#line 407 "../src/compiler/glsl/glsl_lexer.ll"
2455b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::samplerCubeShadow_type);
2456b8e80941Smrg	YY_BREAK
2457b8e80941Smrgcase 86:
2458b8e80941SmrgYY_RULE_SETUP
2459b8e80941Smrg#line 408 "../src/compiler/glsl/glsl_lexer.ll"
2460b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArrayShadow_type);
2461b8e80941Smrg	YY_BREAK
2462b8e80941Smrgcase 87:
2463b8e80941SmrgYY_RULE_SETUP
2464b8e80941Smrg#line 409 "../src/compiler/glsl/glsl_lexer.ll"
2465b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArrayShadow_type);
2466b8e80941Smrg	YY_BREAK
2467b8e80941Smrgcase 88:
2468b8e80941SmrgYY_RULE_SETUP
2469b8e80941Smrg#line 410 "../src/compiler/glsl/glsl_lexer.ll"
2470b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler1D_type);
2471b8e80941Smrg	YY_BREAK
2472b8e80941Smrgcase 89:
2473b8e80941SmrgYY_RULE_SETUP
2474b8e80941Smrg#line 411 "../src/compiler/glsl/glsl_lexer.ll"
2475b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2D_type);
2476b8e80941Smrg	YY_BREAK
2477b8e80941Smrgcase 90:
2478b8e80941SmrgYY_RULE_SETUP
2479b8e80941Smrg#line 412 "../src/compiler/glsl/glsl_lexer.ll"
2480b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler3D_type);
2481b8e80941Smrg	YY_BREAK
2482b8e80941Smrgcase 91:
2483b8e80941SmrgYY_RULE_SETUP
2484b8e80941Smrg#line 413 "../src/compiler/glsl/glsl_lexer.ll"
2485b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isamplerCube_type);
2486b8e80941Smrg	YY_BREAK
2487b8e80941Smrgcase 92:
2488b8e80941SmrgYY_RULE_SETUP
2489b8e80941Smrg#line 414 "../src/compiler/glsl/glsl_lexer.ll"
2490b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler1DArray_type);
2491b8e80941Smrg	YY_BREAK
2492b8e80941Smrgcase 93:
2493b8e80941SmrgYY_RULE_SETUP
2494b8e80941Smrg#line 415 "../src/compiler/glsl/glsl_lexer.ll"
2495b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler2DArray_type);
2496b8e80941Smrg	YY_BREAK
2497b8e80941Smrgcase 94:
2498b8e80941SmrgYY_RULE_SETUP
2499b8e80941Smrg#line 416 "../src/compiler/glsl/glsl_lexer.ll"
2500b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler1D_type);
2501b8e80941Smrg	YY_BREAK
2502b8e80941Smrgcase 95:
2503b8e80941SmrgYY_RULE_SETUP
2504b8e80941Smrg#line 417 "../src/compiler/glsl/glsl_lexer.ll"
2505b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2D_type);
2506b8e80941Smrg	YY_BREAK
2507b8e80941Smrgcase 96:
2508b8e80941SmrgYY_RULE_SETUP
2509b8e80941Smrg#line 418 "../src/compiler/glsl/glsl_lexer.ll"
2510b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler3D_type);
2511b8e80941Smrg	YY_BREAK
2512b8e80941Smrgcase 97:
2513b8e80941SmrgYY_RULE_SETUP
2514b8e80941Smrg#line 419 "../src/compiler/glsl/glsl_lexer.ll"
2515b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usamplerCube_type);
2516b8e80941Smrg	YY_BREAK
2517b8e80941Smrgcase 98:
2518b8e80941SmrgYY_RULE_SETUP
2519b8e80941Smrg#line 420 "../src/compiler/glsl/glsl_lexer.ll"
2520b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler1DArray_type);
2521b8e80941Smrg	YY_BREAK
2522b8e80941Smrgcase 99:
2523b8e80941SmrgYY_RULE_SETUP
2524b8e80941Smrg#line 421 "../src/compiler/glsl/glsl_lexer.ll"
2525b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler2DArray_type);
2526b8e80941Smrg	YY_BREAK
2527b8e80941Smrg/* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */
2528b8e80941Smrg/* these are reserved but not defined in GLSL 3.00 */
2529b8e80941Smrg/* [iu]sampler2DMS are defined in GLSL ES 3.10 */
2530b8e80941Smrgcase 100:
2531b8e80941SmrgYY_RULE_SETUP
2532b8e80941Smrg#line 426 "../src/compiler/glsl/glsl_lexer.ll"
2533b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::sampler2DMS_type);
2534b8e80941Smrg	YY_BREAK
2535b8e80941Smrgcase 101:
2536b8e80941SmrgYY_RULE_SETUP
2537b8e80941Smrg#line 427 "../src/compiler/glsl/glsl_lexer.ll"
2538b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::isampler2DMS_type);
2539b8e80941Smrg	YY_BREAK
2540b8e80941Smrgcase 102:
2541b8e80941SmrgYY_RULE_SETUP
2542b8e80941Smrg#line 428 "../src/compiler/glsl/glsl_lexer.ll"
2543b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::usampler2DMS_type);
2544b8e80941Smrg	YY_BREAK
2545b8e80941Smrgcase 103:
2546b8e80941SmrgYY_RULE_SETUP
2547b8e80941Smrg#line 429 "../src/compiler/glsl/glsl_lexer.ll"
2548b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::sampler2DMSArray_type);
2549b8e80941Smrg	YY_BREAK
2550b8e80941Smrgcase 104:
2551b8e80941SmrgYY_RULE_SETUP
2552b8e80941Smrg#line 430 "../src/compiler/glsl/glsl_lexer.ll"
2553b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::isampler2DMSArray_type);
2554b8e80941Smrg	YY_BREAK
2555b8e80941Smrgcase 105:
2556b8e80941SmrgYY_RULE_SETUP
2557b8e80941Smrg#line 431 "../src/compiler/glsl/glsl_lexer.ll"
2558b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::usampler2DMSArray_type);
2559b8e80941Smrg	YY_BREAK
2560b8e80941Smrg/* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */
2561b8e80941Smrgcase 106:
2562b8e80941SmrgYY_RULE_SETUP
2563b8e80941Smrg#line 434 "../src/compiler/glsl/glsl_lexer.ll"
2564b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArray_type);
2565b8e80941Smrg	YY_BREAK
2566b8e80941Smrgcase 107:
2567b8e80941SmrgYY_RULE_SETUP
2568b8e80941Smrg#line 435 "../src/compiler/glsl/glsl_lexer.ll"
2569b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::isamplerCubeArray_type);
2570b8e80941Smrg	YY_BREAK
2571b8e80941Smrgcase 108:
2572b8e80941SmrgYY_RULE_SETUP
2573b8e80941Smrg#line 436 "../src/compiler/glsl/glsl_lexer.ll"
2574b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::usamplerCubeArray_type);
2575b8e80941Smrg	YY_BREAK
2576b8e80941Smrgcase 109:
2577b8e80941SmrgYY_RULE_SETUP
2578b8e80941Smrg#line 437 "../src/compiler/glsl/glsl_lexer.ll"
2579b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArrayShadow_type);
2580b8e80941Smrg	YY_BREAK
2581b8e80941Smrgcase 110:
2582b8e80941SmrgYY_RULE_SETUP
2583b8e80941Smrg#line 439 "../src/compiler/glsl/glsl_lexer.ll"
2584b8e80941Smrg{
2585b8e80941Smrg			  if (yyextra->OES_EGL_image_external_enable || yyextra->OES_EGL_image_external_essl3_enable) {
2586b8e80941Smrg			     yylval->type = glsl_type::samplerExternalOES_type;
2587b8e80941Smrg			     return BASIC_TYPE_TOK;
2588b8e80941Smrg			  } else
2589b8e80941Smrg			     return IDENTIFIER;
2590b8e80941Smrg		}
2591b8e80941Smrg	YY_BREAK
2592b8e80941Smrg/* keywords available with ARB_gpu_shader5 */
2593b8e80941Smrgcase 111:
2594b8e80941SmrgYY_RULE_SETUP
2595b8e80941Smrg#line 448 "../src/compiler/glsl/glsl_lexer.ll"
2596b8e80941SmrgKEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || yyextra->OES_gpu_shader5_enable, PRECISE);
2597b8e80941Smrg	YY_BREAK
2598b8e80941Smrg/* keywords available with ARB_shader_image_load_store */
2599b8e80941Smrgcase 112:
2600b8e80941SmrgYY_RULE_SETUP
2601b8e80941Smrg#line 451 "../src/compiler/glsl/glsl_lexer.ll"
2602b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1D_type);
2603b8e80941Smrg	YY_BREAK
2604b8e80941Smrgcase 113:
2605b8e80941SmrgYY_RULE_SETUP
2606b8e80941Smrg#line 452 "../src/compiler/glsl/glsl_lexer.ll"
2607b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2D_type);
2608b8e80941Smrg	YY_BREAK
2609b8e80941Smrgcase 114:
2610b8e80941SmrgYY_RULE_SETUP
2611b8e80941Smrg#line 453 "../src/compiler/glsl/glsl_lexer.ll"
2612b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image3D_type);
2613b8e80941Smrg	YY_BREAK
2614b8e80941Smrgcase 115:
2615b8e80941SmrgYY_RULE_SETUP
2616b8e80941Smrg#line 454 "../src/compiler/glsl/glsl_lexer.ll"
2617b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DRect_type);
2618b8e80941Smrg	YY_BREAK
2619b8e80941Smrgcase 116:
2620b8e80941SmrgYY_RULE_SETUP
2621b8e80941Smrg#line 455 "../src/compiler/glsl/glsl_lexer.ll"
2622b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::imageCube_type);
2623b8e80941Smrg	YY_BREAK
2624b8e80941Smrgcase 117:
2625b8e80941SmrgYY_RULE_SETUP
2626b8e80941Smrg#line 456 "../src/compiler/glsl/glsl_lexer.ll"
2627b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::imageBuffer_type);
2628b8e80941Smrg	YY_BREAK
2629b8e80941Smrgcase 118:
2630b8e80941SmrgYY_RULE_SETUP
2631b8e80941Smrg#line 457 "../src/compiler/glsl/glsl_lexer.ll"
2632b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1DArray_type);
2633b8e80941Smrg	YY_BREAK
2634b8e80941Smrgcase 119:
2635b8e80941SmrgYY_RULE_SETUP
2636b8e80941Smrg#line 458 "../src/compiler/glsl/glsl_lexer.ll"
2637b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DArray_type);
2638b8e80941Smrg	YY_BREAK
2639b8e80941Smrgcase 120:
2640b8e80941SmrgYY_RULE_SETUP
2641b8e80941Smrg#line 459 "../src/compiler/glsl/glsl_lexer.ll"
2642b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::imageCubeArray_type);
2643b8e80941Smrg	YY_BREAK
2644b8e80941Smrgcase 121:
2645b8e80941SmrgYY_RULE_SETUP
2646b8e80941Smrg#line 460 "../src/compiler/glsl/glsl_lexer.ll"
2647b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMS_type);
2648b8e80941Smrg	YY_BREAK
2649b8e80941Smrgcase 122:
2650b8e80941SmrgYY_RULE_SETUP
2651b8e80941Smrg#line 461 "../src/compiler/glsl/glsl_lexer.ll"
2652b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMSArray_type);
2653b8e80941Smrg	YY_BREAK
2654b8e80941Smrgcase 123:
2655b8e80941SmrgYY_RULE_SETUP
2656b8e80941Smrg#line 462 "../src/compiler/glsl/glsl_lexer.ll"
2657b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1D_type);
2658b8e80941Smrg	YY_BREAK
2659b8e80941Smrgcase 124:
2660b8e80941SmrgYY_RULE_SETUP
2661b8e80941Smrg#line 463 "../src/compiler/glsl/glsl_lexer.ll"
2662b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2D_type);
2663b8e80941Smrg	YY_BREAK
2664b8e80941Smrgcase 125:
2665b8e80941SmrgYY_RULE_SETUP
2666b8e80941Smrg#line 464 "../src/compiler/glsl/glsl_lexer.ll"
2667b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage3D_type);
2668b8e80941Smrg	YY_BREAK
2669b8e80941Smrgcase 126:
2670b8e80941SmrgYY_RULE_SETUP
2671b8e80941Smrg#line 465 "../src/compiler/glsl/glsl_lexer.ll"
2672b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DRect_type);
2673b8e80941Smrg	YY_BREAK
2674b8e80941Smrgcase 127:
2675b8e80941SmrgYY_RULE_SETUP
2676b8e80941Smrg#line 466 "../src/compiler/glsl/glsl_lexer.ll"
2677b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimageCube_type);
2678b8e80941Smrg	YY_BREAK
2679b8e80941Smrgcase 128:
2680b8e80941SmrgYY_RULE_SETUP
2681b8e80941Smrg#line 467 "../src/compiler/glsl/glsl_lexer.ll"
2682b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::iimageBuffer_type);
2683b8e80941Smrg	YY_BREAK
2684b8e80941Smrgcase 129:
2685b8e80941SmrgYY_RULE_SETUP
2686b8e80941Smrg#line 468 "../src/compiler/glsl/glsl_lexer.ll"
2687b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1DArray_type);
2688b8e80941Smrg	YY_BREAK
2689b8e80941Smrgcase 130:
2690b8e80941SmrgYY_RULE_SETUP
2691b8e80941Smrg#line 469 "../src/compiler/glsl/glsl_lexer.ll"
2692b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DArray_type);
2693b8e80941Smrg	YY_BREAK
2694b8e80941Smrgcase 131:
2695b8e80941SmrgYY_RULE_SETUP
2696b8e80941Smrg#line 470 "../src/compiler/glsl/glsl_lexer.ll"
2697b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::iimageCubeArray_type);
2698b8e80941Smrg	YY_BREAK
2699b8e80941Smrgcase 132:
2700b8e80941SmrgYY_RULE_SETUP
2701b8e80941Smrg#line 471 "../src/compiler/glsl/glsl_lexer.ll"
2702b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMS_type);
2703b8e80941Smrg	YY_BREAK
2704b8e80941Smrgcase 133:
2705b8e80941SmrgYY_RULE_SETUP
2706b8e80941Smrg#line 472 "../src/compiler/glsl/glsl_lexer.ll"
2707b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMSArray_type);
2708b8e80941Smrg	YY_BREAK
2709b8e80941Smrgcase 134:
2710b8e80941SmrgYY_RULE_SETUP
2711b8e80941Smrg#line 473 "../src/compiler/glsl/glsl_lexer.ll"
2712b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1D_type);
2713b8e80941Smrg	YY_BREAK
2714b8e80941Smrgcase 135:
2715b8e80941SmrgYY_RULE_SETUP
2716b8e80941Smrg#line 474 "../src/compiler/glsl/glsl_lexer.ll"
2717b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2D_type);
2718b8e80941Smrg	YY_BREAK
2719b8e80941Smrgcase 136:
2720b8e80941SmrgYY_RULE_SETUP
2721b8e80941Smrg#line 475 "../src/compiler/glsl/glsl_lexer.ll"
2722b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage3D_type);
2723b8e80941Smrg	YY_BREAK
2724b8e80941Smrgcase 137:
2725b8e80941SmrgYY_RULE_SETUP
2726b8e80941Smrg#line 476 "../src/compiler/glsl/glsl_lexer.ll"
2727b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DRect_type);
2728b8e80941Smrg	YY_BREAK
2729b8e80941Smrgcase 138:
2730b8e80941SmrgYY_RULE_SETUP
2731b8e80941Smrg#line 477 "../src/compiler/glsl/glsl_lexer.ll"
2732b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimageCube_type);
2733b8e80941Smrg	YY_BREAK
2734b8e80941Smrgcase 139:
2735b8e80941SmrgYY_RULE_SETUP
2736b8e80941Smrg#line 478 "../src/compiler/glsl/glsl_lexer.ll"
2737b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::uimageBuffer_type);
2738b8e80941Smrg	YY_BREAK
2739b8e80941Smrgcase 140:
2740b8e80941SmrgYY_RULE_SETUP
2741b8e80941Smrg#line 479 "../src/compiler/glsl/glsl_lexer.ll"
2742b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1DArray_type);
2743b8e80941Smrg	YY_BREAK
2744b8e80941Smrgcase 141:
2745b8e80941SmrgYY_RULE_SETUP
2746b8e80941Smrg#line 480 "../src/compiler/glsl/glsl_lexer.ll"
2747b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DArray_type);
2748b8e80941Smrg	YY_BREAK
2749b8e80941Smrgcase 142:
2750b8e80941SmrgYY_RULE_SETUP
2751b8e80941Smrg#line 481 "../src/compiler/glsl/glsl_lexer.ll"
2752b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::uimageCubeArray_type);
2753b8e80941Smrg	YY_BREAK
2754b8e80941Smrgcase 143:
2755b8e80941SmrgYY_RULE_SETUP
2756b8e80941Smrg#line 482 "../src/compiler/glsl/glsl_lexer.ll"
2757b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMS_type);
2758b8e80941Smrg	YY_BREAK
2759b8e80941Smrgcase 144:
2760b8e80941SmrgYY_RULE_SETUP
2761b8e80941Smrg#line 483 "../src/compiler/glsl/glsl_lexer.ll"
2762b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMSArray_type);
2763b8e80941Smrg	YY_BREAK
2764b8e80941Smrgcase 145:
2765b8e80941SmrgYY_RULE_SETUP
2766b8e80941Smrg#line 484 "../src/compiler/glsl/glsl_lexer.ll"
2767b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
2768b8e80941Smrg	YY_BREAK
2769b8e80941Smrgcase 146:
2770b8e80941SmrgYY_RULE_SETUP
2771b8e80941Smrg#line 485 "../src/compiler/glsl/glsl_lexer.ll"
2772b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
2773b8e80941Smrg	YY_BREAK
2774b8e80941Smrgcase 147:
2775b8e80941SmrgYY_RULE_SETUP
2776b8e80941Smrg#line 486 "../src/compiler/glsl/glsl_lexer.ll"
2777b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
2778b8e80941Smrg	YY_BREAK
2779b8e80941Smrgcase 148:
2780b8e80941SmrgYY_RULE_SETUP
2781b8e80941Smrg#line 487 "../src/compiler/glsl/glsl_lexer.ll"
2782b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
2783b8e80941Smrg	YY_BREAK
2784b8e80941Smrgcase 149:
2785b8e80941SmrgYY_RULE_SETUP
2786b8e80941Smrg#line 489 "../src/compiler/glsl/glsl_lexer.ll"
2787b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, COHERENT);
2788b8e80941Smrg	YY_BREAK
2789b8e80941Smrgcase 150:
2790b8e80941SmrgYY_RULE_SETUP
2791b8e80941Smrg#line 490 "../src/compiler/glsl/glsl_lexer.ll"
2792b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, VOLATILE);
2793b8e80941Smrg	YY_BREAK
2794b8e80941Smrgcase 151:
2795b8e80941SmrgYY_RULE_SETUP
2796b8e80941Smrg#line 491 "../src/compiler/glsl/glsl_lexer.ll"
2797b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, RESTRICT);
2798b8e80941Smrg	YY_BREAK
2799b8e80941Smrgcase 152:
2800b8e80941SmrgYY_RULE_SETUP
2801b8e80941Smrg#line 492 "../src/compiler/glsl/glsl_lexer.ll"
2802b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, READONLY);
2803b8e80941Smrg	YY_BREAK
2804b8e80941Smrgcase 153:
2805b8e80941SmrgYY_RULE_SETUP
2806b8e80941Smrg#line 493 "../src/compiler/glsl/glsl_lexer.ll"
2807b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, WRITEONLY);
2808b8e80941Smrg	YY_BREAK
2809b8e80941Smrgcase 154:
2810b8e80941SmrgYY_RULE_SETUP
2811b8e80941Smrg#line 495 "../src/compiler/glsl/glsl_lexer.ll"
2812b8e80941SmrgTYPE_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, glsl_type::atomic_uint_type);
2813b8e80941Smrg	YY_BREAK
2814b8e80941Smrgcase 155:
2815b8e80941SmrgYY_RULE_SETUP
2816b8e80941Smrg#line 497 "../src/compiler/glsl/glsl_lexer.ll"
2817b8e80941SmrgKEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED);
2818b8e80941Smrg	YY_BREAK
2819b8e80941Smrgcase 156:
2820b8e80941SmrgYY_RULE_SETUP
2821b8e80941Smrg#line 499 "../src/compiler/glsl/glsl_lexer.ll"
2822b8e80941Smrgreturn STRUCT;
2823b8e80941Smrg	YY_BREAK
2824b8e80941Smrgcase 157:
2825b8e80941SmrgYY_RULE_SETUP
2826b8e80941Smrg#line 500 "../src/compiler/glsl/glsl_lexer.ll"
2827b8e80941Smrgreturn VOID_TOK;
2828b8e80941Smrg	YY_BREAK
2829b8e80941Smrgcase 158:
2830b8e80941SmrgYY_RULE_SETUP
2831b8e80941Smrg#line 502 "../src/compiler/glsl/glsl_lexer.ll"
2832b8e80941Smrg{
2833b8e80941Smrg		  if ((yyextra->is_version(140, 300))
2834b8e80941Smrg		      || yyextra->ARB_bindless_texture_enable
2835b8e80941Smrg		      || yyextra->KHR_blend_equation_advanced_enable
2836b8e80941Smrg		      || yyextra->AMD_conservative_depth_enable
2837b8e80941Smrg		      || yyextra->ARB_conservative_depth_enable
2838b8e80941Smrg		      || yyextra->ARB_explicit_attrib_location_enable
2839b8e80941Smrg		      || yyextra->ARB_explicit_uniform_location_enable
2840b8e80941Smrg                      || yyextra->ARB_post_depth_coverage_enable
2841b8e80941Smrg                      || yyextra->has_separate_shader_objects()
2842b8e80941Smrg		      || yyextra->ARB_uniform_buffer_object_enable
2843b8e80941Smrg		      || yyextra->ARB_fragment_coord_conventions_enable
2844b8e80941Smrg                      || yyextra->ARB_shading_language_420pack_enable
2845b8e80941Smrg                      || yyextra->ARB_compute_shader_enable
2846b8e80941Smrg                      || yyextra->ARB_tessellation_shader_enable
2847b8e80941Smrg                      || yyextra->EXT_shader_framebuffer_fetch_non_coherent_enable) {
2848b8e80941Smrg		      return LAYOUT_TOK;
2849b8e80941Smrg		   } else {
2850b8e80941Smrg		      return classify_identifier(yyextra, yytext, yyleng, yylval);
2851b8e80941Smrg		   }
2852b8e80941Smrg		}
2853b8e80941Smrg	YY_BREAK
2854b8e80941Smrgcase 159:
2855b8e80941SmrgYY_RULE_SETUP
2856b8e80941Smrg#line 524 "../src/compiler/glsl/glsl_lexer.ll"
2857b8e80941Smrgreturn INC_OP;
2858b8e80941Smrg	YY_BREAK
2859b8e80941Smrgcase 160:
2860b8e80941SmrgYY_RULE_SETUP
2861b8e80941Smrg#line 525 "../src/compiler/glsl/glsl_lexer.ll"
2862b8e80941Smrgreturn DEC_OP;
2863b8e80941Smrg	YY_BREAK
2864b8e80941Smrgcase 161:
2865b8e80941SmrgYY_RULE_SETUP
2866b8e80941Smrg#line 526 "../src/compiler/glsl/glsl_lexer.ll"
2867b8e80941Smrgreturn LE_OP;
2868b8e80941Smrg	YY_BREAK
2869b8e80941Smrgcase 162:
2870b8e80941SmrgYY_RULE_SETUP
2871b8e80941Smrg#line 527 "../src/compiler/glsl/glsl_lexer.ll"
2872b8e80941Smrgreturn GE_OP;
2873b8e80941Smrg	YY_BREAK
2874b8e80941Smrgcase 163:
2875b8e80941SmrgYY_RULE_SETUP
2876b8e80941Smrg#line 528 "../src/compiler/glsl/glsl_lexer.ll"
2877b8e80941Smrgreturn EQ_OP;
2878b8e80941Smrg	YY_BREAK
2879b8e80941Smrgcase 164:
2880b8e80941SmrgYY_RULE_SETUP
2881b8e80941Smrg#line 529 "../src/compiler/glsl/glsl_lexer.ll"
2882b8e80941Smrgreturn NE_OP;
2883b8e80941Smrg	YY_BREAK
2884b8e80941Smrgcase 165:
2885b8e80941SmrgYY_RULE_SETUP
2886b8e80941Smrg#line 530 "../src/compiler/glsl/glsl_lexer.ll"
2887b8e80941Smrgreturn AND_OP;
2888b8e80941Smrg	YY_BREAK
2889b8e80941Smrgcase 166:
2890b8e80941SmrgYY_RULE_SETUP
2891b8e80941Smrg#line 531 "../src/compiler/glsl/glsl_lexer.ll"
2892b8e80941Smrgreturn OR_OP;
2893b8e80941Smrg	YY_BREAK
2894b8e80941Smrgcase 167:
2895b8e80941SmrgYY_RULE_SETUP
2896b8e80941Smrg#line 532 "../src/compiler/glsl/glsl_lexer.ll"
2897b8e80941Smrgreturn XOR_OP;
2898b8e80941Smrg	YY_BREAK
2899b8e80941Smrgcase 168:
2900b8e80941SmrgYY_RULE_SETUP
2901b8e80941Smrg#line 533 "../src/compiler/glsl/glsl_lexer.ll"
2902b8e80941Smrgreturn LEFT_OP;
2903b8e80941Smrg	YY_BREAK
2904b8e80941Smrgcase 169:
2905b8e80941SmrgYY_RULE_SETUP
2906b8e80941Smrg#line 534 "../src/compiler/glsl/glsl_lexer.ll"
2907b8e80941Smrgreturn RIGHT_OP;
2908b8e80941Smrg	YY_BREAK
2909b8e80941Smrgcase 170:
2910b8e80941SmrgYY_RULE_SETUP
2911b8e80941Smrg#line 536 "../src/compiler/glsl/glsl_lexer.ll"
2912b8e80941Smrgreturn MUL_ASSIGN;
2913b8e80941Smrg	YY_BREAK
2914b8e80941Smrgcase 171:
2915b8e80941SmrgYY_RULE_SETUP
2916b8e80941Smrg#line 537 "../src/compiler/glsl/glsl_lexer.ll"
2917b8e80941Smrgreturn DIV_ASSIGN;
2918b8e80941Smrg	YY_BREAK
2919b8e80941Smrgcase 172:
2920b8e80941SmrgYY_RULE_SETUP
2921b8e80941Smrg#line 538 "../src/compiler/glsl/glsl_lexer.ll"
2922b8e80941Smrgreturn ADD_ASSIGN;
2923b8e80941Smrg	YY_BREAK
2924b8e80941Smrgcase 173:
2925b8e80941SmrgYY_RULE_SETUP
2926b8e80941Smrg#line 539 "../src/compiler/glsl/glsl_lexer.ll"
2927b8e80941Smrgreturn MOD_ASSIGN;
2928b8e80941Smrg	YY_BREAK
2929b8e80941Smrgcase 174:
2930b8e80941SmrgYY_RULE_SETUP
2931b8e80941Smrg#line 540 "../src/compiler/glsl/glsl_lexer.ll"
2932b8e80941Smrgreturn LEFT_ASSIGN;
2933b8e80941Smrg	YY_BREAK
2934b8e80941Smrgcase 175:
2935b8e80941SmrgYY_RULE_SETUP
2936b8e80941Smrg#line 541 "../src/compiler/glsl/glsl_lexer.ll"
2937b8e80941Smrgreturn RIGHT_ASSIGN;
2938b8e80941Smrg	YY_BREAK
2939b8e80941Smrgcase 176:
2940b8e80941SmrgYY_RULE_SETUP
2941b8e80941Smrg#line 542 "../src/compiler/glsl/glsl_lexer.ll"
2942b8e80941Smrgreturn AND_ASSIGN;
2943b8e80941Smrg	YY_BREAK
2944b8e80941Smrgcase 177:
2945b8e80941SmrgYY_RULE_SETUP
2946b8e80941Smrg#line 543 "../src/compiler/glsl/glsl_lexer.ll"
2947b8e80941Smrgreturn XOR_ASSIGN;
2948b8e80941Smrg	YY_BREAK
2949b8e80941Smrgcase 178:
2950b8e80941SmrgYY_RULE_SETUP
2951b8e80941Smrg#line 544 "../src/compiler/glsl/glsl_lexer.ll"
2952b8e80941Smrgreturn OR_ASSIGN;
2953b8e80941Smrg	YY_BREAK
2954b8e80941Smrgcase 179:
2955b8e80941SmrgYY_RULE_SETUP
2956b8e80941Smrg#line 545 "../src/compiler/glsl/glsl_lexer.ll"
2957b8e80941Smrgreturn SUB_ASSIGN;
2958b8e80941Smrg	YY_BREAK
2959b8e80941Smrgcase 180:
2960b8e80941SmrgYY_RULE_SETUP
2961b8e80941Smrg#line 547 "../src/compiler/glsl/glsl_lexer.ll"
2962b8e80941Smrg{
2963b8e80941Smrg			    return LITERAL_INTEGER(10);
2964b8e80941Smrg			}
2965b8e80941Smrg	YY_BREAK
2966b8e80941Smrgcase 181:
2967b8e80941SmrgYY_RULE_SETUP
2968b8e80941Smrg#line 550 "../src/compiler/glsl/glsl_lexer.ll"
2969b8e80941Smrg{
2970b8e80941Smrg			    return LITERAL_INTEGER(16);
2971b8e80941Smrg			}
2972b8e80941Smrg	YY_BREAK
2973b8e80941Smrgcase 182:
2974b8e80941SmrgYY_RULE_SETUP
2975b8e80941Smrg#line 553 "../src/compiler/glsl/glsl_lexer.ll"
2976b8e80941Smrg{
2977b8e80941Smrg			    return LITERAL_INTEGER(8);
2978b8e80941Smrg			}
2979b8e80941Smrg	YY_BREAK
2980b8e80941Smrgcase 183:
2981b8e80941Smrg#line 558 "../src/compiler/glsl/glsl_lexer.ll"
2982b8e80941Smrgcase 184:
2983b8e80941Smrg#line 559 "../src/compiler/glsl/glsl_lexer.ll"
2984b8e80941Smrgcase 185:
2985b8e80941Smrg#line 560 "../src/compiler/glsl/glsl_lexer.ll"
2986b8e80941Smrgcase 186:
2987b8e80941SmrgYY_RULE_SETUP
2988b8e80941Smrg#line 560 "../src/compiler/glsl/glsl_lexer.ll"
2989b8e80941Smrg{
2990b8e80941Smrg			    struct _mesa_glsl_parse_state *state = yyextra;
2991b8e80941Smrg			    char suffix = yytext[strlen(yytext) - 1];
2992b8e80941Smrg			    if (!state->is_version(120, 300) &&
2993b8e80941Smrg			        (suffix == 'f' || suffix == 'F')) {
2994b8e80941Smrg			        _mesa_glsl_warning(yylloc, state,
2995b8e80941Smrg			                           "Float suffixes are invalid in GLSL 1.10");
2996b8e80941Smrg			    }
2997b8e80941Smrg			    yylval->real = _mesa_strtof(yytext, NULL);
2998b8e80941Smrg			    return FLOATCONSTANT;
2999b8e80941Smrg			}
3000b8e80941Smrg	YY_BREAK
3001b8e80941Smrgcase 187:
3002b8e80941Smrg#line 573 "../src/compiler/glsl/glsl_lexer.ll"
3003b8e80941Smrgcase 188:
3004b8e80941Smrg#line 574 "../src/compiler/glsl/glsl_lexer.ll"
3005b8e80941Smrgcase 189:
3006b8e80941Smrg#line 575 "../src/compiler/glsl/glsl_lexer.ll"
3007b8e80941Smrgcase 190:
3008b8e80941SmrgYY_RULE_SETUP
3009b8e80941Smrg#line 575 "../src/compiler/glsl/glsl_lexer.ll"
3010b8e80941Smrg{
3011b8e80941Smrg			    if (!yyextra->is_version(400, 0) &&
3012b8e80941Smrg			        !yyextra->ARB_gpu_shader_fp64_enable)
3013b8e80941Smrg			        return ERROR_TOK;
3014b8e80941Smrg			    yylval->dreal = _mesa_strtod(yytext, NULL);
3015b8e80941Smrg			    return DOUBLECONSTANT;
3016b8e80941Smrg			}
3017b8e80941Smrg	YY_BREAK
3018b8e80941Smrgcase 191:
3019b8e80941SmrgYY_RULE_SETUP
3020b8e80941Smrg#line 583 "../src/compiler/glsl/glsl_lexer.ll"
3021b8e80941Smrg{
3022b8e80941Smrg			    yylval->n = 1;
3023b8e80941Smrg			    return BOOLCONSTANT;
3024b8e80941Smrg			}
3025b8e80941Smrg	YY_BREAK
3026b8e80941Smrgcase 192:
3027b8e80941SmrgYY_RULE_SETUP
3028b8e80941Smrg#line 587 "../src/compiler/glsl/glsl_lexer.ll"
3029b8e80941Smrg{
3030b8e80941Smrg			    yylval->n = 0;
3031b8e80941Smrg			    return BOOLCONSTANT;
3032b8e80941Smrg			}
3033b8e80941Smrg	YY_BREAK
3034b8e80941Smrg/* Reserved words in GLSL 1.10. */
3035b8e80941Smrgcase 193:
3036b8e80941SmrgYY_RULE_SETUP
3037b8e80941Smrg#line 594 "../src/compiler/glsl/glsl_lexer.ll"
3038b8e80941SmrgKEYWORD(110, 100, 0, 0, ASM);
3039b8e80941Smrg	YY_BREAK
3040b8e80941Smrgcase 194:
3041b8e80941SmrgYY_RULE_SETUP
3042b8e80941Smrg#line 595 "../src/compiler/glsl/glsl_lexer.ll"
3043b8e80941SmrgKEYWORD(110, 100, 0, 0, CLASS);
3044b8e80941Smrg	YY_BREAK
3045b8e80941Smrgcase 195:
3046b8e80941SmrgYY_RULE_SETUP
3047b8e80941Smrg#line 596 "../src/compiler/glsl/glsl_lexer.ll"
3048b8e80941SmrgKEYWORD(110, 100, 0, 0, UNION);
3049b8e80941Smrg	YY_BREAK
3050b8e80941Smrgcase 196:
3051b8e80941SmrgYY_RULE_SETUP
3052b8e80941Smrg#line 597 "../src/compiler/glsl/glsl_lexer.ll"
3053b8e80941SmrgKEYWORD(110, 100, 0, 0, ENUM);
3054b8e80941Smrg	YY_BREAK
3055b8e80941Smrgcase 197:
3056b8e80941SmrgYY_RULE_SETUP
3057b8e80941Smrg#line 598 "../src/compiler/glsl/glsl_lexer.ll"
3058b8e80941SmrgKEYWORD(110, 100, 0, 0, TYPEDEF);
3059b8e80941Smrg	YY_BREAK
3060b8e80941Smrgcase 198:
3061b8e80941SmrgYY_RULE_SETUP
3062b8e80941Smrg#line 599 "../src/compiler/glsl/glsl_lexer.ll"
3063b8e80941SmrgKEYWORD(110, 100, 0, 0, TEMPLATE);
3064b8e80941Smrg	YY_BREAK
3065b8e80941Smrgcase 199:
3066b8e80941SmrgYY_RULE_SETUP
3067b8e80941Smrg#line 600 "../src/compiler/glsl/glsl_lexer.ll"
3068b8e80941SmrgKEYWORD(110, 100, 0, 0, THIS);
3069b8e80941Smrg	YY_BREAK
3070b8e80941Smrgcase 200:
3071b8e80941SmrgYY_RULE_SETUP
3072b8e80941Smrg#line 601 "../src/compiler/glsl/glsl_lexer.ll"
3073b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK);
3074b8e80941Smrg	YY_BREAK
3075b8e80941Smrgcase 201:
3076b8e80941SmrgYY_RULE_SETUP
3077b8e80941Smrg#line 602 "../src/compiler/glsl/glsl_lexer.ll"
3078b8e80941SmrgKEYWORD(110, 100, 0, 0, GOTO);
3079b8e80941Smrg	YY_BREAK
3080b8e80941Smrgcase 202:
3081b8e80941SmrgYY_RULE_SETUP
3082b8e80941Smrg#line 603 "../src/compiler/glsl/glsl_lexer.ll"
3083b8e80941SmrgKEYWORD(110, 100, 130, 300, SWITCH);
3084b8e80941Smrg	YY_BREAK
3085b8e80941Smrgcase 203:
3086b8e80941SmrgYY_RULE_SETUP
3087b8e80941Smrg#line 604 "../src/compiler/glsl/glsl_lexer.ll"
3088b8e80941SmrgKEYWORD(110, 100, 130, 300, DEFAULT);
3089b8e80941Smrg	YY_BREAK
3090b8e80941Smrgcase 204:
3091b8e80941SmrgYY_RULE_SETUP
3092b8e80941Smrg#line 605 "../src/compiler/glsl/glsl_lexer.ll"
3093b8e80941SmrgKEYWORD(110, 100, 0, 0, INLINE_TOK);
3094b8e80941Smrg	YY_BREAK
3095b8e80941Smrgcase 205:
3096b8e80941SmrgYY_RULE_SETUP
3097b8e80941Smrg#line 606 "../src/compiler/glsl/glsl_lexer.ll"
3098b8e80941SmrgKEYWORD(110, 100, 0, 0, NOINLINE);
3099b8e80941Smrg	YY_BREAK
3100b8e80941Smrgcase 206:
3101b8e80941SmrgYY_RULE_SETUP
3102b8e80941Smrg#line 607 "../src/compiler/glsl/glsl_lexer.ll"
3103b8e80941SmrgKEYWORD(110, 100, 0, 0, PUBLIC_TOK);
3104b8e80941Smrg	YY_BREAK
3105b8e80941Smrgcase 207:
3106b8e80941SmrgYY_RULE_SETUP
3107b8e80941Smrg#line 608 "../src/compiler/glsl/glsl_lexer.ll"
3108b8e80941SmrgKEYWORD(110, 100, 0, 0, STATIC);
3109b8e80941Smrg	YY_BREAK
3110b8e80941Smrgcase 208:
3111b8e80941SmrgYY_RULE_SETUP
3112b8e80941Smrg#line 609 "../src/compiler/glsl/glsl_lexer.ll"
3113b8e80941SmrgKEYWORD(110, 100, 0, 0, EXTERN);
3114b8e80941Smrg	YY_BREAK
3115b8e80941Smrgcase 209:
3116b8e80941SmrgYY_RULE_SETUP
3117b8e80941Smrg#line 610 "../src/compiler/glsl/glsl_lexer.ll"
3118b8e80941SmrgKEYWORD(110, 100, 0, 0, EXTERNAL);
3119b8e80941Smrg	YY_BREAK
3120b8e80941Smrgcase 210:
3121b8e80941SmrgYY_RULE_SETUP
3122b8e80941Smrg#line 611 "../src/compiler/glsl/glsl_lexer.ll"
3123b8e80941SmrgKEYWORD(110, 100, 0, 0, INTERFACE);
3124b8e80941Smrg	YY_BREAK
3125b8e80941Smrgcase 211:
3126b8e80941SmrgYY_RULE_SETUP
3127b8e80941Smrg#line 612 "../src/compiler/glsl/glsl_lexer.ll"
3128b8e80941SmrgKEYWORD(110, 100, 0, 0, LONG_TOK);
3129b8e80941Smrg	YY_BREAK
3130b8e80941Smrgcase 212:
3131b8e80941SmrgYY_RULE_SETUP
3132b8e80941Smrg#line 613 "../src/compiler/glsl/glsl_lexer.ll"
3133b8e80941SmrgKEYWORD(110, 100, 0, 0, SHORT_TOK);
3134b8e80941Smrg	YY_BREAK
3135b8e80941Smrgcase 213:
3136b8e80941SmrgYY_RULE_SETUP
3137b8e80941Smrg#line 614 "../src/compiler/glsl/glsl_lexer.ll"
3138b8e80941SmrgTYPE_WITH_ALT(130, 100, 130, 300, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::double_type);
3139b8e80941Smrg	YY_BREAK
3140b8e80941Smrgcase 214:
3141b8e80941SmrgYY_RULE_SETUP
3142b8e80941Smrg#line 615 "../src/compiler/glsl/glsl_lexer.ll"
3143b8e80941SmrgKEYWORD(110, 100, 0, 0, HALF);
3144b8e80941Smrg	YY_BREAK
3145b8e80941Smrgcase 215:
3146b8e80941SmrgYY_RULE_SETUP
3147b8e80941Smrg#line 616 "../src/compiler/glsl/glsl_lexer.ll"
3148b8e80941SmrgKEYWORD(110, 100, 0, 0, FIXED_TOK);
3149b8e80941Smrg	YY_BREAK
3150b8e80941Smrgcase 216:
3151b8e80941SmrgYY_RULE_SETUP
3152b8e80941Smrg#line 617 "../src/compiler/glsl/glsl_lexer.ll"
3153b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 0, 0, yyextra->EXT_gpu_shader4_enable, UNSIGNED);
3154b8e80941Smrg	YY_BREAK
3155b8e80941Smrgcase 217:
3156b8e80941SmrgYY_RULE_SETUP
3157b8e80941Smrg#line 618 "../src/compiler/glsl/glsl_lexer.ll"
3158b8e80941SmrgKEYWORD(110, 100, 0, 0, INPUT_TOK);
3159b8e80941Smrg	YY_BREAK
3160b8e80941Smrgcase 218:
3161b8e80941SmrgYY_RULE_SETUP
3162b8e80941Smrg#line 619 "../src/compiler/glsl/glsl_lexer.ll"
3163b8e80941SmrgKEYWORD(110, 100, 0, 0, OUTPUT);
3164b8e80941Smrg	YY_BREAK
3165b8e80941Smrgcase 219:
3166b8e80941SmrgYY_RULE_SETUP
3167b8e80941Smrg#line 620 "../src/compiler/glsl/glsl_lexer.ll"
3168b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC2);
3169b8e80941Smrg	YY_BREAK
3170b8e80941Smrgcase 220:
3171b8e80941SmrgYY_RULE_SETUP
3172b8e80941Smrg#line 621 "../src/compiler/glsl/glsl_lexer.ll"
3173b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC3);
3174b8e80941Smrg	YY_BREAK
3175b8e80941Smrgcase 221:
3176b8e80941SmrgYY_RULE_SETUP
3177b8e80941Smrg#line 622 "../src/compiler/glsl/glsl_lexer.ll"
3178b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC4);
3179b8e80941Smrg	YY_BREAK
3180b8e80941Smrgcase 222:
3181b8e80941SmrgYY_RULE_SETUP
3182b8e80941Smrg#line 623 "../src/compiler/glsl/glsl_lexer.ll"
3183b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec2_type);
3184b8e80941Smrg	YY_BREAK
3185b8e80941Smrgcase 223:
3186b8e80941SmrgYY_RULE_SETUP
3187b8e80941Smrg#line 624 "../src/compiler/glsl/glsl_lexer.ll"
3188b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec3_type);
3189b8e80941Smrg	YY_BREAK
3190b8e80941Smrgcase 224:
3191b8e80941SmrgYY_RULE_SETUP
3192b8e80941Smrg#line 625 "../src/compiler/glsl/glsl_lexer.ll"
3193b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec4_type);
3194b8e80941Smrg	YY_BREAK
3195b8e80941Smrgcase 225:
3196b8e80941SmrgYY_RULE_SETUP
3197b8e80941Smrg#line 626 "../src/compiler/glsl/glsl_lexer.ll"
3198b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
3199b8e80941Smrg	YY_BREAK
3200b8e80941Smrgcase 226:
3201b8e80941SmrgYY_RULE_SETUP
3202b8e80941Smrg#line 627 "../src/compiler/glsl/glsl_lexer.ll"
3203b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
3204b8e80941Smrg	YY_BREAK
3205b8e80941Smrgcase 227:
3206b8e80941SmrgYY_RULE_SETUP
3207b8e80941Smrg#line 628 "../src/compiler/glsl/glsl_lexer.ll"
3208b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
3209b8e80941Smrg	YY_BREAK
3210b8e80941Smrgcase 228:
3211b8e80941SmrgYY_RULE_SETUP
3212b8e80941Smrg#line 629 "../src/compiler/glsl/glsl_lexer.ll"
3213b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
3214b8e80941Smrg	YY_BREAK
3215b8e80941Smrgcase 229:
3216b8e80941SmrgYY_RULE_SETUP
3217b8e80941Smrg#line 630 "../src/compiler/glsl/glsl_lexer.ll"
3218b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x3_type);
3219b8e80941Smrg	YY_BREAK
3220b8e80941Smrgcase 230:
3221b8e80941SmrgYY_RULE_SETUP
3222b8e80941Smrg#line 631 "../src/compiler/glsl/glsl_lexer.ll"
3223b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x4_type);
3224b8e80941Smrg	YY_BREAK
3225b8e80941Smrgcase 231:
3226b8e80941SmrgYY_RULE_SETUP
3227b8e80941Smrg#line 632 "../src/compiler/glsl/glsl_lexer.ll"
3228b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x2_type);
3229b8e80941Smrg	YY_BREAK
3230b8e80941Smrgcase 232:
3231b8e80941SmrgYY_RULE_SETUP
3232b8e80941Smrg#line 633 "../src/compiler/glsl/glsl_lexer.ll"
3233b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
3234b8e80941Smrg	YY_BREAK
3235b8e80941Smrgcase 233:
3236b8e80941SmrgYY_RULE_SETUP
3237b8e80941Smrg#line 634 "../src/compiler/glsl/glsl_lexer.ll"
3238b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x4_type);
3239b8e80941Smrg	YY_BREAK
3240b8e80941Smrgcase 234:
3241b8e80941SmrgYY_RULE_SETUP
3242b8e80941Smrg#line 635 "../src/compiler/glsl/glsl_lexer.ll"
3243b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x2_type);
3244b8e80941Smrg	YY_BREAK
3245b8e80941Smrgcase 235:
3246b8e80941SmrgYY_RULE_SETUP
3247b8e80941Smrg#line 636 "../src/compiler/glsl/glsl_lexer.ll"
3248b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x3_type);
3249b8e80941Smrg	YY_BREAK
3250b8e80941Smrgcase 236:
3251b8e80941SmrgYY_RULE_SETUP
3252b8e80941Smrg#line 637 "../src/compiler/glsl/glsl_lexer.ll"
3253b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
3254b8e80941Smrg	YY_BREAK
3255b8e80941Smrgcase 237:
3256b8e80941SmrgYY_RULE_SETUP
3257b8e80941Smrg#line 638 "../src/compiler/glsl/glsl_lexer.ll"
3258b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC2);
3259b8e80941Smrg	YY_BREAK
3260b8e80941Smrgcase 238:
3261b8e80941SmrgYY_RULE_SETUP
3262b8e80941Smrg#line 639 "../src/compiler/glsl/glsl_lexer.ll"
3263b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC3);
3264b8e80941Smrg	YY_BREAK
3265b8e80941Smrgcase 239:
3266b8e80941SmrgYY_RULE_SETUP
3267b8e80941Smrg#line 640 "../src/compiler/glsl/glsl_lexer.ll"
3268b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC4);
3269b8e80941Smrg	YY_BREAK
3270b8e80941Smrgcase 240:
3271b8e80941SmrgYY_RULE_SETUP
3272b8e80941Smrg#line 641 "../src/compiler/glsl/glsl_lexer.ll"
3273b8e80941SmrgTYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRect_type);
3274b8e80941Smrg	YY_BREAK
3275b8e80941Smrgcase 241:
3276b8e80941SmrgYY_RULE_SETUP
3277b8e80941Smrg#line 642 "../src/compiler/glsl/glsl_lexer.ll"
3278b8e80941SmrgKEYWORD(110, 100, 0, 0, SAMPLER3DRECT);
3279b8e80941Smrg	YY_BREAK
3280b8e80941Smrgcase 242:
3281b8e80941SmrgYY_RULE_SETUP
3282b8e80941Smrg#line 643 "../src/compiler/glsl/glsl_lexer.ll"
3283b8e80941SmrgTYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRectShadow_type);
3284b8e80941Smrg	YY_BREAK
3285b8e80941Smrgcase 243:
3286b8e80941SmrgYY_RULE_SETUP
3287b8e80941Smrg#line 644 "../src/compiler/glsl/glsl_lexer.ll"
3288b8e80941SmrgKEYWORD(110, 100, 0, 0, SIZEOF);
3289b8e80941Smrg	YY_BREAK
3290b8e80941Smrgcase 244:
3291b8e80941SmrgYY_RULE_SETUP
3292b8e80941Smrg#line 645 "../src/compiler/glsl/glsl_lexer.ll"
3293b8e80941SmrgKEYWORD(110, 100, 0, 0, CAST);
3294b8e80941Smrg	YY_BREAK
3295b8e80941Smrgcase 245:
3296b8e80941SmrgYY_RULE_SETUP
3297b8e80941Smrg#line 646 "../src/compiler/glsl/glsl_lexer.ll"
3298b8e80941SmrgKEYWORD(110, 100, 0, 0, NAMESPACE);
3299b8e80941Smrg	YY_BREAK
3300b8e80941Smrgcase 246:
3301b8e80941SmrgYY_RULE_SETUP
3302b8e80941Smrg#line 647 "../src/compiler/glsl/glsl_lexer.ll"
3303b8e80941SmrgKEYWORD(110, 100, 0, 0, USING);
3304b8e80941Smrg	YY_BREAK
3305b8e80941Smrg/* Additional reserved words in GLSL 1.20. */
3306b8e80941Smrgcase 247:
3307b8e80941SmrgYY_RULE_SETUP
3308b8e80941Smrg#line 650 "../src/compiler/glsl/glsl_lexer.ll"
3309b8e80941SmrgKEYWORD(120, 100, 130, 100, LOWP);
3310b8e80941Smrg	YY_BREAK
3311b8e80941Smrgcase 248:
3312b8e80941SmrgYY_RULE_SETUP
3313b8e80941Smrg#line 651 "../src/compiler/glsl/glsl_lexer.ll"
3314b8e80941SmrgKEYWORD(120, 100, 130, 100, MEDIUMP);
3315b8e80941Smrg	YY_BREAK
3316b8e80941Smrgcase 249:
3317b8e80941SmrgYY_RULE_SETUP
3318b8e80941Smrg#line 652 "../src/compiler/glsl/glsl_lexer.ll"
3319b8e80941SmrgKEYWORD(120, 100, 130, 100, HIGHP);
3320b8e80941Smrg	YY_BREAK
3321b8e80941Smrgcase 250:
3322b8e80941SmrgYY_RULE_SETUP
3323b8e80941Smrg#line 653 "../src/compiler/glsl/glsl_lexer.ll"
3324b8e80941SmrgKEYWORD(120, 100, 130, 100, PRECISION);
3325b8e80941Smrg	YY_BREAK
3326b8e80941Smrg/* Additional reserved words in GLSL 1.30. */
3327b8e80941Smrgcase 251:
3328b8e80941SmrgYY_RULE_SETUP
3329b8e80941Smrg#line 656 "../src/compiler/glsl/glsl_lexer.ll"
3330b8e80941SmrgKEYWORD(130, 300, 130, 300, CASE);
3331b8e80941Smrg	YY_BREAK
3332b8e80941Smrgcase 252:
3333b8e80941SmrgYY_RULE_SETUP
3334b8e80941Smrg#line 657 "../src/compiler/glsl/glsl_lexer.ll"
3335b8e80941SmrgKEYWORD(130, 300, 0, 0, COMMON);
3336b8e80941Smrg	YY_BREAK
3337b8e80941Smrgcase 253:
3338b8e80941SmrgYY_RULE_SETUP
3339b8e80941Smrg#line 658 "../src/compiler/glsl/glsl_lexer.ll"
3340b8e80941SmrgKEYWORD(130, 300, 0, 0, PARTITION);
3341b8e80941Smrg	YY_BREAK
3342b8e80941Smrgcase 254:
3343b8e80941SmrgYY_RULE_SETUP
3344b8e80941Smrg#line 659 "../src/compiler/glsl/glsl_lexer.ll"
3345b8e80941SmrgKEYWORD(130, 300, 0, 0, ACTIVE);
3346b8e80941Smrg	YY_BREAK
3347b8e80941Smrgcase 255:
3348b8e80941SmrgYY_RULE_SETUP
3349b8e80941Smrg#line 660 "../src/compiler/glsl/glsl_lexer.ll"
3350b8e80941SmrgKEYWORD(130, 100, 0, 0, SUPERP);
3351b8e80941Smrg	YY_BREAK
3352b8e80941Smrgcase 256:
3353b8e80941SmrgYY_RULE_SETUP
3354b8e80941Smrg#line 661 "../src/compiler/glsl/glsl_lexer.ll"
3355b8e80941SmrgTYPE_WITH_ALT(130, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object), glsl_type::samplerBuffer_type);
3356b8e80941Smrg	YY_BREAK
3357b8e80941Smrgcase 257:
3358b8e80941SmrgYY_RULE_SETUP
3359b8e80941Smrg#line 662 "../src/compiler/glsl/glsl_lexer.ll"
3360b8e80941SmrgKEYWORD(130, 300, 0, 0, FILTER);
3361b8e80941Smrg	YY_BREAK
3362b8e80941Smrgcase 258:
3363b8e80941SmrgYY_RULE_SETUP
3364b8e80941Smrg#line 663 "../src/compiler/glsl/glsl_lexer.ll"
3365b8e80941SmrgKEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
3366b8e80941Smrg	YY_BREAK
3367b8e80941Smrg/* Additional reserved words in GLSL 1.40 */
3368b8e80941Smrgcase 259:
3369b8e80941SmrgYY_RULE_SETUP
3370b8e80941Smrg#line 666 "../src/compiler/glsl/glsl_lexer.ll"
3371b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2DRect_type);
3372b8e80941Smrg	YY_BREAK
3373b8e80941Smrgcase 260:
3374b8e80941SmrgYY_RULE_SETUP
3375b8e80941Smrg#line 667 "../src/compiler/glsl/glsl_lexer.ll"
3376b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2DRect_type);
3377b8e80941Smrg	YY_BREAK
3378b8e80941Smrgcase 261:
3379b8e80941SmrgYY_RULE_SETUP
3380b8e80941Smrg#line 668 "../src/compiler/glsl/glsl_lexer.ll"
3381b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::isamplerBuffer_type);
3382b8e80941Smrg	YY_BREAK
3383b8e80941Smrgcase 262:
3384b8e80941SmrgYY_RULE_SETUP
3385b8e80941Smrg#line 669 "../src/compiler/glsl/glsl_lexer.ll"
3386b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::usamplerBuffer_type);
3387b8e80941Smrg	YY_BREAK
3388b8e80941Smrg/* Additional reserved words in GLSL ES 3.00 */
3389b8e80941Smrgcase 263:
3390b8e80941SmrgYY_RULE_SETUP
3391b8e80941Smrg#line 672 "../src/compiler/glsl/glsl_lexer.ll"
3392b8e80941SmrgKEYWORD(420, 300, 0, 0, RESOURCE);
3393b8e80941Smrg	YY_BREAK
3394b8e80941Smrgcase 264:
3395b8e80941SmrgYY_RULE_SETUP
3396b8e80941Smrg#line 673 "../src/compiler/glsl/glsl_lexer.ll"
3397b8e80941SmrgKEYWORD_WITH_ALT(400, 300, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->OES_shader_multisample_interpolation_enable, SAMPLE);
3398b8e80941Smrg	YY_BREAK
3399b8e80941Smrgcase 265:
3400b8e80941SmrgYY_RULE_SETUP
3401b8e80941Smrg#line 674 "../src/compiler/glsl/glsl_lexer.ll"
3402b8e80941SmrgKEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_shader_subroutine_enable, SUBROUTINE);
3403b8e80941Smrg	YY_BREAK
3404b8e80941Smrg/* Additional words for ARB_gpu_shader_int64 */
3405b8e80941Smrgcase 266:
3406b8e80941SmrgYY_RULE_SETUP
3407b8e80941Smrg#line 677 "../src/compiler/glsl/glsl_lexer.ll"
3408b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::int64_t_type);
3409b8e80941Smrg	YY_BREAK
3410b8e80941Smrgcase 267:
3411b8e80941SmrgYY_RULE_SETUP
3412b8e80941Smrg#line 678 "../src/compiler/glsl/glsl_lexer.ll"
3413b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec2_type);
3414b8e80941Smrg	YY_BREAK
3415b8e80941Smrgcase 268:
3416b8e80941SmrgYY_RULE_SETUP
3417b8e80941Smrg#line 679 "../src/compiler/glsl/glsl_lexer.ll"
3418b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec3_type);
3419b8e80941Smrg	YY_BREAK
3420b8e80941Smrgcase 269:
3421b8e80941SmrgYY_RULE_SETUP
3422b8e80941Smrg#line 680 "../src/compiler/glsl/glsl_lexer.ll"
3423b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec4_type);
3424b8e80941Smrg	YY_BREAK
3425b8e80941Smrgcase 270:
3426b8e80941SmrgYY_RULE_SETUP
3427b8e80941Smrg#line 682 "../src/compiler/glsl/glsl_lexer.ll"
3428b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type);
3429b8e80941Smrg	YY_BREAK
3430b8e80941Smrgcase 271:
3431b8e80941SmrgYY_RULE_SETUP
3432b8e80941Smrg#line 683 "../src/compiler/glsl/glsl_lexer.ll"
3433b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec2_type);
3434b8e80941Smrg	YY_BREAK
3435b8e80941Smrgcase 272:
3436b8e80941SmrgYY_RULE_SETUP
3437b8e80941Smrg#line 684 "../src/compiler/glsl/glsl_lexer.ll"
3438b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec3_type);
3439b8e80941Smrg	YY_BREAK
3440b8e80941Smrgcase 273:
3441b8e80941SmrgYY_RULE_SETUP
3442b8e80941Smrg#line 685 "../src/compiler/glsl/glsl_lexer.ll"
3443b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec4_type);
3444b8e80941Smrg	YY_BREAK
3445b8e80941Smrgcase 274:
3446b8e80941SmrgYY_RULE_SETUP
3447b8e80941Smrg#line 687 "../src/compiler/glsl/glsl_lexer.ll"
3448b8e80941Smrg{
3449b8e80941Smrg			    struct _mesa_glsl_parse_state *state = yyextra;
3450b8e80941Smrg			    if (state->es_shader && yyleng > 1024) {
3451b8e80941Smrg			       _mesa_glsl_error(yylloc, state,
3452b8e80941Smrg			                        "Identifier `%s' exceeds 1024 characters",
3453b8e80941Smrg			                        yytext);
3454b8e80941Smrg			    }
3455b8e80941Smrg			    return classify_identifier(state, yytext, yyleng, yylval);
3456b8e80941Smrg			}
3457b8e80941Smrg	YY_BREAK
3458b8e80941Smrgcase 275:
3459b8e80941SmrgYY_RULE_SETUP
3460b8e80941Smrg#line 697 "../src/compiler/glsl/glsl_lexer.ll"
3461b8e80941Smrg{ struct _mesa_glsl_parse_state *state = yyextra;
3462b8e80941Smrg			  state->is_field = true;
3463b8e80941Smrg			  return DOT_TOK; }
3464b8e80941Smrg	YY_BREAK
3465b8e80941Smrgcase 276:
3466b8e80941SmrgYY_RULE_SETUP
3467b8e80941Smrg#line 701 "../src/compiler/glsl/glsl_lexer.ll"
3468b8e80941Smrg{ return yytext[0]; }
3469b8e80941Smrg	YY_BREAK
3470b8e80941Smrgcase 277:
3471b8e80941SmrgYY_RULE_SETUP
3472b8e80941Smrg#line 703 "../src/compiler/glsl/glsl_lexer.ll"
3473b8e80941SmrgYY_FATAL_ERROR( "flex scanner jammed" );
3474b8e80941Smrg	YY_BREAK
3475b8e80941Smrg#line 3475 "src/compiler/glsl/glsl_lexer.cpp"
3476b8e80941Smrgcase YY_STATE_EOF(INITIAL):
3477b8e80941Smrgcase YY_STATE_EOF(PP):
3478b8e80941Smrgcase YY_STATE_EOF(PRAGMA):
3479b8e80941Smrg	yyterminate();
3480b8e80941Smrg
3481b8e80941Smrg	case YY_END_OF_BUFFER:
3482b8e80941Smrg		{
3483b8e80941Smrg		/* Amount of text matched not including the EOB char. */
3484b8e80941Smrg		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
3485b8e80941Smrg
3486b8e80941Smrg		/* Undo the effects of YY_DO_BEFORE_ACTION. */
3487b8e80941Smrg		*yy_cp = yyg->yy_hold_char;
3488b8e80941Smrg		YY_RESTORE_YY_MORE_OFFSET
3489b8e80941Smrg
3490b8e80941Smrg		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3491b8e80941Smrg			{
3492b8e80941Smrg			/* We're scanning a new file or input source.  It's
3493b8e80941Smrg			 * possible that this happened because the user
3494b8e80941Smrg			 * just pointed yyin at a new source and called
3495b8e80941Smrg			 * yylex().  If so, then we have to assure
3496b8e80941Smrg			 * consistency between YY_CURRENT_BUFFER and our
3497b8e80941Smrg			 * globals.  Here is the right place to do so, because
3498b8e80941Smrg			 * this is the first action (other than possibly a
3499b8e80941Smrg			 * back-up) that will match for the new input source.
3500b8e80941Smrg			 */
3501b8e80941Smrg			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3502b8e80941Smrg			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3503b8e80941Smrg			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3504b8e80941Smrg			}
3505b8e80941Smrg
3506b8e80941Smrg		/* Note that here we test for yy_c_buf_p "<=" to the position
3507b8e80941Smrg		 * of the first EOB in the buffer, since yy_c_buf_p will
3508b8e80941Smrg		 * already have been incremented past the NUL character
3509b8e80941Smrg		 * (since all states make transitions on EOB to the
3510b8e80941Smrg		 * end-of-buffer state).  Contrast this with the test
3511b8e80941Smrg		 * in input().
3512b8e80941Smrg		 */
3513b8e80941Smrg		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
3514b8e80941Smrg			{ /* This was really a NUL. */
3515b8e80941Smrg			yy_state_type yy_next_state;
3516b8e80941Smrg
3517b8e80941Smrg			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
3518b8e80941Smrg
3519b8e80941Smrg			yy_current_state = yy_get_previous_state( yyscanner );
3520b8e80941Smrg
3521b8e80941Smrg			/* Okay, we're now positioned to make the NUL
3522b8e80941Smrg			 * transition.  We couldn't have
3523b8e80941Smrg			 * yy_get_previous_state() go ahead and do it
3524b8e80941Smrg			 * for us because it doesn't know how to deal
3525b8e80941Smrg			 * with the possibility of jamming (and we don't
3526b8e80941Smrg			 * want to build jamming into it because then it
3527b8e80941Smrg			 * will run more slowly).
3528b8e80941Smrg			 */
3529b8e80941Smrg
3530b8e80941Smrg			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
3531b8e80941Smrg
3532b8e80941Smrg			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3533b8e80941Smrg
3534b8e80941Smrg			if ( yy_next_state )
3535b8e80941Smrg				{
3536b8e80941Smrg				/* Consume the NUL. */
3537b8e80941Smrg				yy_cp = ++yyg->yy_c_buf_p;
3538b8e80941Smrg				yy_current_state = yy_next_state;
3539b8e80941Smrg				goto yy_match;
3540b8e80941Smrg				}
3541b8e80941Smrg
3542b8e80941Smrg			else
3543b8e80941Smrg				{
3544b8e80941Smrg				yy_cp = yyg->yy_last_accepting_cpos;
3545b8e80941Smrg				yy_current_state = yyg->yy_last_accepting_state;
3546b8e80941Smrg				goto yy_find_action;
3547b8e80941Smrg				}
3548b8e80941Smrg			}
3549b8e80941Smrg
3550b8e80941Smrg		else switch ( yy_get_next_buffer( yyscanner ) )
3551b8e80941Smrg			{
3552b8e80941Smrg			case EOB_ACT_END_OF_FILE:
3553b8e80941Smrg				{
3554b8e80941Smrg				yyg->yy_did_buffer_switch_on_eof = 0;
3555b8e80941Smrg
3556b8e80941Smrg				if ( yywrap( yyscanner ) )
3557b8e80941Smrg					{
3558b8e80941Smrg					/* Note: because we've taken care in
3559b8e80941Smrg					 * yy_get_next_buffer() to have set up
3560b8e80941Smrg					 * yytext, we can now set up
3561b8e80941Smrg					 * yy_c_buf_p so that if some total
3562b8e80941Smrg					 * hoser (like flex itself) wants to
3563b8e80941Smrg					 * call the scanner after we return the
3564b8e80941Smrg					 * YY_NULL, it'll still work - another
3565b8e80941Smrg					 * YY_NULL will get returned.
3566b8e80941Smrg					 */
3567b8e80941Smrg					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
3568b8e80941Smrg
3569b8e80941Smrg					yy_act = YY_STATE_EOF(YY_START);
3570b8e80941Smrg					goto do_action;
3571b8e80941Smrg					}
3572b8e80941Smrg
3573b8e80941Smrg				else
3574b8e80941Smrg					{
3575b8e80941Smrg					if ( ! yyg->yy_did_buffer_switch_on_eof )
3576b8e80941Smrg						YY_NEW_FILE;
3577b8e80941Smrg					}
3578b8e80941Smrg				break;
3579b8e80941Smrg				}
3580b8e80941Smrg
3581b8e80941Smrg			case EOB_ACT_CONTINUE_SCAN:
3582b8e80941Smrg				yyg->yy_c_buf_p =
3583b8e80941Smrg					yyg->yytext_ptr + yy_amount_of_matched_text;
3584b8e80941Smrg
3585b8e80941Smrg				yy_current_state = yy_get_previous_state( yyscanner );
3586b8e80941Smrg
3587b8e80941Smrg				yy_cp = yyg->yy_c_buf_p;
3588b8e80941Smrg				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3589b8e80941Smrg				goto yy_match;
3590b8e80941Smrg
3591b8e80941Smrg			case EOB_ACT_LAST_MATCH:
3592b8e80941Smrg				yyg->yy_c_buf_p =
3593b8e80941Smrg				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
3594b8e80941Smrg
3595b8e80941Smrg				yy_current_state = yy_get_previous_state( yyscanner );
3596b8e80941Smrg
3597b8e80941Smrg				yy_cp = yyg->yy_c_buf_p;
3598b8e80941Smrg				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3599b8e80941Smrg				goto yy_find_action;
3600b8e80941Smrg			}
3601b8e80941Smrg		break;
3602b8e80941Smrg		}
3603b8e80941Smrg
3604b8e80941Smrg	default:
3605b8e80941Smrg		YY_FATAL_ERROR(
3606b8e80941Smrg			"fatal flex scanner internal error--no action found" );
3607b8e80941Smrg	} /* end of action switch */
3608b8e80941Smrg		} /* end of scanning one token */
3609b8e80941Smrg	} /* end of user's declarations */
3610b8e80941Smrg} /* end of yylex */
3611b8e80941Smrg
3612b8e80941Smrg/* yy_get_next_buffer - try to read in a new buffer
3613b8e80941Smrg *
3614b8e80941Smrg * Returns a code representing an action:
3615b8e80941Smrg *	EOB_ACT_LAST_MATCH -
3616b8e80941Smrg *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3617b8e80941Smrg *	EOB_ACT_END_OF_FILE - end of file
3618b8e80941Smrg */
3619b8e80941Smrgstatic int yy_get_next_buffer (yyscan_t yyscanner)
3620b8e80941Smrg{
3621b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3622b8e80941Smrg	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3623b8e80941Smrg	char *source = yyg->yytext_ptr;
3624b8e80941Smrg	yy_size_t number_to_move, i;
3625b8e80941Smrg	int ret_val;
3626b8e80941Smrg
3627b8e80941Smrg	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
3628b8e80941Smrg		YY_FATAL_ERROR(
3629b8e80941Smrg		"fatal flex scanner internal error--end of buffer missed" );
3630b8e80941Smrg
3631b8e80941Smrg	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3632b8e80941Smrg		{ /* Don't try to fill the buffer, so this is an EOF. */
3633b8e80941Smrg		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
3634b8e80941Smrg			{
3635b8e80941Smrg			/* We matched a single character, the EOB, so
3636b8e80941Smrg			 * treat this as a final EOF.
3637b8e80941Smrg			 */
3638b8e80941Smrg			return EOB_ACT_END_OF_FILE;
3639b8e80941Smrg			}
3640b8e80941Smrg
3641b8e80941Smrg		else
3642b8e80941Smrg			{
3643b8e80941Smrg			/* We matched some text prior to the EOB, first
3644b8e80941Smrg			 * process it.
3645b8e80941Smrg			 */
3646b8e80941Smrg			return EOB_ACT_LAST_MATCH;
3647b8e80941Smrg			}
3648b8e80941Smrg		}
3649b8e80941Smrg
3650b8e80941Smrg	/* Try to read more data. */
3651b8e80941Smrg
3652b8e80941Smrg	/* First move last chars to start of buffer. */
3653b8e80941Smrg	number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
3654b8e80941Smrg
3655b8e80941Smrg	for ( i = 0; i < number_to_move; ++i )
3656b8e80941Smrg		*(dest++) = *(source++);
3657b8e80941Smrg
3658b8e80941Smrg	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3659b8e80941Smrg		/* don't do the read, it's not guaranteed to return an EOF,
3660b8e80941Smrg		 * just force an EOF
3661b8e80941Smrg		 */
3662b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
3663b8e80941Smrg
3664b8e80941Smrg	else
3665b8e80941Smrg		{
3666b8e80941Smrg			yy_size_t num_to_read =
3667b8e80941Smrg			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3668b8e80941Smrg
3669b8e80941Smrg		while ( num_to_read <= 0 )
3670b8e80941Smrg			{ /* Not enough room in the buffer - grow it. */
3671b8e80941Smrg
3672b8e80941Smrg			/* just a shorter name for the current buffer */
3673b8e80941Smrg			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
3674b8e80941Smrg
3675b8e80941Smrg			int yy_c_buf_p_offset =
3676b8e80941Smrg				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
3677b8e80941Smrg
3678b8e80941Smrg			if ( b->yy_is_our_buffer )
3679b8e80941Smrg				{
3680b8e80941Smrg				yy_size_t new_size = b->yy_buf_size * 2;
3681b8e80941Smrg
3682b8e80941Smrg				if ( new_size <= 0 )
3683b8e80941Smrg					b->yy_buf_size += b->yy_buf_size / 8;
3684b8e80941Smrg				else
3685b8e80941Smrg					b->yy_buf_size *= 2;
3686b8e80941Smrg
3687b8e80941Smrg				b->yy_ch_buf = (char *)
3688b8e80941Smrg					/* Include room in for 2 EOB chars. */
3689b8e80941Smrg					yyrealloc( (void *) b->yy_ch_buf,
3690b8e80941Smrg							 (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
3691b8e80941Smrg				}
3692b8e80941Smrg			else
3693b8e80941Smrg				/* Can't grow it, we don't own it. */
3694b8e80941Smrg				b->yy_ch_buf = NULL;
3695b8e80941Smrg
3696b8e80941Smrg			if ( ! b->yy_ch_buf )
3697b8e80941Smrg				YY_FATAL_ERROR(
3698b8e80941Smrg				"fatal error - scanner input buffer overflow" );
3699b8e80941Smrg
3700b8e80941Smrg			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3701b8e80941Smrg
3702b8e80941Smrg			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3703b8e80941Smrg						number_to_move - 1;
3704b8e80941Smrg
3705b8e80941Smrg			}
3706b8e80941Smrg
3707b8e80941Smrg		if ( num_to_read > YY_READ_BUF_SIZE )
3708b8e80941Smrg			num_to_read = YY_READ_BUF_SIZE;
3709b8e80941Smrg
3710b8e80941Smrg		/* Read in more data. */
3711b8e80941Smrg		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3712b8e80941Smrg			yyg->yy_n_chars, num_to_read );
3713b8e80941Smrg
3714b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3715b8e80941Smrg		}
3716b8e80941Smrg
3717b8e80941Smrg	if ( yyg->yy_n_chars == 0 )
3718b8e80941Smrg		{
3719b8e80941Smrg		if ( number_to_move == YY_MORE_ADJ )
3720b8e80941Smrg			{
3721b8e80941Smrg			ret_val = EOB_ACT_END_OF_FILE;
3722b8e80941Smrg			yyrestart( yyin  , yyscanner);
3723b8e80941Smrg			}
3724b8e80941Smrg
3725b8e80941Smrg		else
3726b8e80941Smrg			{
3727b8e80941Smrg			ret_val = EOB_ACT_LAST_MATCH;
3728b8e80941Smrg			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3729b8e80941Smrg				YY_BUFFER_EOF_PENDING;
3730b8e80941Smrg			}
3731b8e80941Smrg		}
3732b8e80941Smrg
3733b8e80941Smrg	else
3734b8e80941Smrg		ret_val = EOB_ACT_CONTINUE_SCAN;
3735b8e80941Smrg
3736b8e80941Smrg	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3737b8e80941Smrg		/* Extend the array by 50%, plus the number we really need. */
3738b8e80941Smrg		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
3739b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
3740b8e80941Smrg			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
3741b8e80941Smrg		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3742b8e80941Smrg			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3743b8e80941Smrg		/* "- 2" to take care of EOB's */
3744b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (yy_size_t) (new_size - 2);
3745b8e80941Smrg	}
3746b8e80941Smrg
3747b8e80941Smrg	yyg->yy_n_chars += number_to_move;
3748b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3749b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3750b8e80941Smrg
3751b8e80941Smrg	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3752b8e80941Smrg
3753b8e80941Smrg	return ret_val;
3754b8e80941Smrg}
3755b8e80941Smrg
3756b8e80941Smrg/* yy_get_previous_state - get the state just before the EOB char was reached */
3757b8e80941Smrg
3758b8e80941Smrg    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
3759b8e80941Smrg{
3760b8e80941Smrg	yy_state_type yy_current_state;
3761b8e80941Smrg	char *yy_cp;
3762b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3763b8e80941Smrg
3764b8e80941Smrg	yy_current_state = yyg->yy_start;
3765b8e80941Smrg	yy_current_state += YY_AT_BOL();
3766b8e80941Smrg
3767b8e80941Smrg	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
3768b8e80941Smrg		{
3769b8e80941Smrg		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3770b8e80941Smrg		if ( yy_accept[yy_current_state] )
3771b8e80941Smrg			{
3772b8e80941Smrg			yyg->yy_last_accepting_state = yy_current_state;
3773b8e80941Smrg			yyg->yy_last_accepting_cpos = yy_cp;
3774b8e80941Smrg			}
3775b8e80941Smrg		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3776b8e80941Smrg			{
3777b8e80941Smrg			yy_current_state = (int) yy_def[yy_current_state];
3778b8e80941Smrg			if ( yy_current_state >= 1096 )
3779b8e80941Smrg				yy_c = yy_meta[yy_c];
3780b8e80941Smrg			}
3781b8e80941Smrg		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3782b8e80941Smrg		}
3783b8e80941Smrg
3784b8e80941Smrg	return yy_current_state;
3785b8e80941Smrg}
3786b8e80941Smrg
3787b8e80941Smrg/* yy_try_NUL_trans - try to make a transition on the NUL character
3788b8e80941Smrg *
3789b8e80941Smrg * synopsis
3790b8e80941Smrg *	next_state = yy_try_NUL_trans( current_state );
3791b8e80941Smrg */
3792b8e80941Smrg    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
3793b8e80941Smrg{
3794b8e80941Smrg	int yy_is_jam;
3795b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
3796b8e80941Smrg	char *yy_cp = yyg->yy_c_buf_p;
3797b8e80941Smrg
3798b8e80941Smrg	YY_CHAR yy_c = 1;
3799b8e80941Smrg	if ( yy_accept[yy_current_state] )
3800b8e80941Smrg		{
3801b8e80941Smrg		yyg->yy_last_accepting_state = yy_current_state;
3802b8e80941Smrg		yyg->yy_last_accepting_cpos = yy_cp;
3803b8e80941Smrg		}
3804b8e80941Smrg	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3805b8e80941Smrg		{
3806b8e80941Smrg		yy_current_state = (int) yy_def[yy_current_state];
3807b8e80941Smrg		if ( yy_current_state >= 1096 )
3808b8e80941Smrg			yy_c = yy_meta[yy_c];
3809b8e80941Smrg		}
3810b8e80941Smrg	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3811b8e80941Smrg	yy_is_jam = (yy_current_state == 1095);
3812b8e80941Smrg
3813b8e80941Smrg	(void)yyg;
3814b8e80941Smrg	return yy_is_jam ? 0 : yy_current_state;
3815b8e80941Smrg}
3816b8e80941Smrg
3817b8e80941Smrg#ifndef YY_NO_UNPUT
3818b8e80941Smrg
3819b8e80941Smrg#endif
3820b8e80941Smrg
3821b8e80941Smrg#ifndef YY_NO_INPUT
3822b8e80941Smrg#ifdef __cplusplus
3823b8e80941Smrg    static int yyinput (yyscan_t yyscanner)
3824b8e80941Smrg#else
3825b8e80941Smrg    static int input  (yyscan_t yyscanner)
3826b8e80941Smrg#endif
3827b8e80941Smrg
3828b8e80941Smrg{
3829b8e80941Smrg	int c;
3830b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3831b8e80941Smrg
3832b8e80941Smrg	*yyg->yy_c_buf_p = yyg->yy_hold_char;
3833b8e80941Smrg
3834b8e80941Smrg	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3835b8e80941Smrg		{
3836b8e80941Smrg		/* yy_c_buf_p now points to the character we want to return.
3837b8e80941Smrg		 * If this occurs *before* the EOB characters, then it's a
3838b8e80941Smrg		 * valid NUL; if not, then we've hit the end of the buffer.
3839b8e80941Smrg		 */
3840b8e80941Smrg		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
3841b8e80941Smrg			/* This was really a NUL. */
3842b8e80941Smrg			*yyg->yy_c_buf_p = '\0';
3843b8e80941Smrg
3844b8e80941Smrg		else
3845b8e80941Smrg			{ /* need more input */
3846b8e80941Smrg			yy_size_t offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
3847b8e80941Smrg			++yyg->yy_c_buf_p;
3848b8e80941Smrg
3849b8e80941Smrg			switch ( yy_get_next_buffer( yyscanner ) )
3850b8e80941Smrg				{
3851b8e80941Smrg				case EOB_ACT_LAST_MATCH:
3852b8e80941Smrg					/* This happens because yy_g_n_b()
3853b8e80941Smrg					 * sees that we've accumulated a
3854b8e80941Smrg					 * token and flags that we need to
3855b8e80941Smrg					 * try matching the token before
3856b8e80941Smrg					 * proceeding.  But for input(),
3857b8e80941Smrg					 * there's no matching to consider.
3858b8e80941Smrg					 * So convert the EOB_ACT_LAST_MATCH
3859b8e80941Smrg					 * to EOB_ACT_END_OF_FILE.
3860b8e80941Smrg					 */
3861b8e80941Smrg
3862b8e80941Smrg					/* Reset buffer status. */
3863b8e80941Smrg					yyrestart( yyin , yyscanner);
3864b8e80941Smrg
3865b8e80941Smrg					/*FALLTHROUGH*/
3866b8e80941Smrg
3867b8e80941Smrg				case EOB_ACT_END_OF_FILE:
3868b8e80941Smrg					{
3869b8e80941Smrg					if ( yywrap( yyscanner ) )
3870b8e80941Smrg						return 0;
3871b8e80941Smrg
3872b8e80941Smrg					if ( ! yyg->yy_did_buffer_switch_on_eof )
3873b8e80941Smrg						YY_NEW_FILE;
3874b8e80941Smrg#ifdef __cplusplus
3875b8e80941Smrg					return yyinput(yyscanner);
3876b8e80941Smrg#else
3877b8e80941Smrg					return input(yyscanner);
3878b8e80941Smrg#endif
3879b8e80941Smrg					}
3880b8e80941Smrg
3881b8e80941Smrg				case EOB_ACT_CONTINUE_SCAN:
3882b8e80941Smrg					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
3883b8e80941Smrg					break;
3884b8e80941Smrg				}
3885b8e80941Smrg			}
3886b8e80941Smrg		}
3887b8e80941Smrg
3888b8e80941Smrg	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
3889b8e80941Smrg	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
3890b8e80941Smrg	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
3891b8e80941Smrg
3892b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3893b8e80941Smrg
3894b8e80941Smrg	return c;
3895b8e80941Smrg}
3896b8e80941Smrg#endif	/* ifndef YY_NO_INPUT */
3897b8e80941Smrg
3898b8e80941Smrg/** Immediately switch to a different input stream.
3899b8e80941Smrg * @param input_file A readable stream.
3900b8e80941Smrg * @param yyscanner The scanner object.
3901b8e80941Smrg * @note This function does not reset the start condition to @c INITIAL .
3902b8e80941Smrg */
3903b8e80941Smrg    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
3904b8e80941Smrg{
3905b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3906b8e80941Smrg
3907b8e80941Smrg	if ( ! YY_CURRENT_BUFFER ){
3908b8e80941Smrg        yyensure_buffer_stack (yyscanner);
3909b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE =
3910b8e80941Smrg            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
3911b8e80941Smrg	}
3912b8e80941Smrg
3913b8e80941Smrg	yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
3914b8e80941Smrg	yy_load_buffer_state( yyscanner );
3915b8e80941Smrg}
3916b8e80941Smrg
3917b8e80941Smrg/** Switch to a different input buffer.
3918b8e80941Smrg * @param new_buffer The new input buffer.
3919b8e80941Smrg * @param yyscanner The scanner object.
3920b8e80941Smrg */
3921b8e80941Smrg    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
3922b8e80941Smrg{
3923b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3924b8e80941Smrg
3925b8e80941Smrg	/* TODO. We should be able to replace this entire function body
3926b8e80941Smrg	 * with
3927b8e80941Smrg	 *		yypop_buffer_state();
3928b8e80941Smrg	 *		yypush_buffer_state(new_buffer);
3929b8e80941Smrg     */
3930b8e80941Smrg	yyensure_buffer_stack (yyscanner);
3931b8e80941Smrg	if ( YY_CURRENT_BUFFER == new_buffer )
3932b8e80941Smrg		return;
3933b8e80941Smrg
3934b8e80941Smrg	if ( YY_CURRENT_BUFFER )
3935b8e80941Smrg		{
3936b8e80941Smrg		/* Flush out information for old buffer. */
3937b8e80941Smrg		*yyg->yy_c_buf_p = yyg->yy_hold_char;
3938b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3939b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3940b8e80941Smrg		}
3941b8e80941Smrg
3942b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3943b8e80941Smrg	yy_load_buffer_state( yyscanner );
3944b8e80941Smrg
3945b8e80941Smrg	/* We don't actually know whether we did this switch during
3946b8e80941Smrg	 * EOF (yywrap()) processing, but the only time this flag
3947b8e80941Smrg	 * is looked at is after yywrap() is called, so it's safe
3948b8e80941Smrg	 * to go ahead and always set it.
3949b8e80941Smrg	 */
3950b8e80941Smrg	yyg->yy_did_buffer_switch_on_eof = 1;
3951b8e80941Smrg}
3952b8e80941Smrg
3953b8e80941Smrgstatic void yy_load_buffer_state  (yyscan_t yyscanner)
3954b8e80941Smrg{
3955b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3956b8e80941Smrg	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3957b8e80941Smrg	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3958b8e80941Smrg	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3959b8e80941Smrg	yyg->yy_hold_char = *yyg->yy_c_buf_p;
3960b8e80941Smrg}
3961b8e80941Smrg
3962b8e80941Smrg/** Allocate and initialize an input buffer state.
3963b8e80941Smrg * @param file A readable stream.
3964b8e80941Smrg * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3965b8e80941Smrg * @param yyscanner The scanner object.
3966b8e80941Smrg * @return the allocated buffer state.
3967b8e80941Smrg */
3968b8e80941Smrg    YY_BUFFER_STATE yy_create_buffer  (FILE * file, yy_size_t  size , yyscan_t yyscanner)
3969b8e80941Smrg{
3970b8e80941Smrg	YY_BUFFER_STATE b;
3971b8e80941Smrg
3972b8e80941Smrg	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
3973b8e80941Smrg	if ( ! b )
3974b8e80941Smrg		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3975b8e80941Smrg
3976b8e80941Smrg	b->yy_buf_size = size;
3977b8e80941Smrg
3978b8e80941Smrg	/* yy_ch_buf has to be 2 characters longer than the size given because
3979b8e80941Smrg	 * we need to put in 2 end-of-buffer characters.
3980b8e80941Smrg	 */
3981b8e80941Smrg	b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
3982b8e80941Smrg	if ( ! b->yy_ch_buf )
3983b8e80941Smrg		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3984b8e80941Smrg
3985b8e80941Smrg	b->yy_is_our_buffer = 1;
3986b8e80941Smrg
3987b8e80941Smrg	yy_init_buffer( b, file , yyscanner);
3988b8e80941Smrg
3989b8e80941Smrg	return b;
3990b8e80941Smrg}
3991b8e80941Smrg
3992b8e80941Smrg/** Destroy the buffer.
3993b8e80941Smrg * @param b a buffer created with yy_create_buffer()
3994b8e80941Smrg * @param yyscanner The scanner object.
3995b8e80941Smrg */
3996b8e80941Smrg    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
3997b8e80941Smrg{
3998b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3999b8e80941Smrg
4000b8e80941Smrg	if ( ! b )
4001b8e80941Smrg		return;
4002b8e80941Smrg
4003b8e80941Smrg	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4004b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4005b8e80941Smrg
4006b8e80941Smrg	if ( b->yy_is_our_buffer )
4007b8e80941Smrg		yyfree( (void *) b->yy_ch_buf , yyscanner );
4008b8e80941Smrg
4009b8e80941Smrg	yyfree( (void *) b , yyscanner );
4010b8e80941Smrg}
4011b8e80941Smrg
4012b8e80941Smrg/* Initializes or reinitializes a buffer.
4013b8e80941Smrg * This function is sometimes called more than once on the same buffer,
4014b8e80941Smrg * such as during a yyrestart() or at EOF.
4015b8e80941Smrg */
4016b8e80941Smrg    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
4017b8e80941Smrg
4018b8e80941Smrg{
4019b8e80941Smrg	int oerrno = errno;
4020b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4021b8e80941Smrg
4022b8e80941Smrg	yy_flush_buffer( b , yyscanner);
4023b8e80941Smrg
4024b8e80941Smrg	b->yy_input_file = file;
4025b8e80941Smrg	b->yy_fill_buffer = 1;
4026b8e80941Smrg
4027b8e80941Smrg    /* If b is the current buffer, then yy_init_buffer was _probably_
4028b8e80941Smrg     * called from yyrestart() or through yy_get_next_buffer.
4029b8e80941Smrg     * In that case, we don't want to reset the lineno or column.
4030b8e80941Smrg     */
4031b8e80941Smrg    if (b != YY_CURRENT_BUFFER){
4032b8e80941Smrg        b->yy_bs_lineno = 1;
4033b8e80941Smrg        b->yy_bs_column = 0;
4034b8e80941Smrg    }
4035b8e80941Smrg
4036b8e80941Smrg        b->yy_is_interactive = 0;
4037b8e80941Smrg
4038b8e80941Smrg	errno = oerrno;
4039b8e80941Smrg}
4040b8e80941Smrg
4041b8e80941Smrg/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4042b8e80941Smrg * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4043b8e80941Smrg * @param yyscanner The scanner object.
4044b8e80941Smrg */
4045b8e80941Smrg    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
4046b8e80941Smrg{
4047b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4048b8e80941Smrg	if ( ! b )
4049b8e80941Smrg		return;
4050b8e80941Smrg
4051b8e80941Smrg	b->yy_n_chars = 0;
4052b8e80941Smrg
4053b8e80941Smrg	/* We always need two end-of-buffer characters.  The first causes
4054b8e80941Smrg	 * a transition to the end-of-buffer state.  The second causes
4055b8e80941Smrg	 * a jam in that state.
4056b8e80941Smrg	 */
4057b8e80941Smrg	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4058b8e80941Smrg	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4059b8e80941Smrg
4060b8e80941Smrg	b->yy_buf_pos = &b->yy_ch_buf[0];
4061b8e80941Smrg
4062b8e80941Smrg	b->yy_at_bol = 1;
4063b8e80941Smrg	b->yy_buffer_status = YY_BUFFER_NEW;
4064b8e80941Smrg
4065b8e80941Smrg	if ( b == YY_CURRENT_BUFFER )
4066b8e80941Smrg		yy_load_buffer_state( yyscanner );
4067b8e80941Smrg}
4068b8e80941Smrg
4069b8e80941Smrg/** Pushes the new state onto the stack. The new state becomes
4070b8e80941Smrg *  the current state. This function will allocate the stack
4071b8e80941Smrg *  if necessary.
4072b8e80941Smrg *  @param new_buffer The new state.
4073b8e80941Smrg *  @param yyscanner The scanner object.
4074b8e80941Smrg */
4075b8e80941Smrgvoid yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4076b8e80941Smrg{
4077b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4078b8e80941Smrg	if (new_buffer == NULL)
4079b8e80941Smrg		return;
4080b8e80941Smrg
4081b8e80941Smrg	yyensure_buffer_stack(yyscanner);
4082b8e80941Smrg
4083b8e80941Smrg	/* This block is copied from yy_switch_to_buffer. */
4084b8e80941Smrg	if ( YY_CURRENT_BUFFER )
4085b8e80941Smrg		{
4086b8e80941Smrg		/* Flush out information for old buffer. */
4087b8e80941Smrg		*yyg->yy_c_buf_p = yyg->yy_hold_char;
4088b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4089b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4090b8e80941Smrg		}
4091b8e80941Smrg
4092b8e80941Smrg	/* Only push if top exists. Otherwise, replace top. */
4093b8e80941Smrg	if (YY_CURRENT_BUFFER)
4094b8e80941Smrg		yyg->yy_buffer_stack_top++;
4095b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE = new_buffer;
4096b8e80941Smrg
4097b8e80941Smrg	/* copied from yy_switch_to_buffer. */
4098b8e80941Smrg	yy_load_buffer_state( yyscanner );
4099b8e80941Smrg	yyg->yy_did_buffer_switch_on_eof = 1;
4100b8e80941Smrg}
4101b8e80941Smrg
4102b8e80941Smrg/** Removes and deletes the top of the stack, if present.
4103b8e80941Smrg *  The next element becomes the new top.
4104b8e80941Smrg *  @param yyscanner The scanner object.
4105b8e80941Smrg */
4106b8e80941Smrgvoid yypop_buffer_state (yyscan_t yyscanner)
4107b8e80941Smrg{
4108b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4109b8e80941Smrg	if (!YY_CURRENT_BUFFER)
4110b8e80941Smrg		return;
4111b8e80941Smrg
4112b8e80941Smrg	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
4113b8e80941Smrg	YY_CURRENT_BUFFER_LVALUE = NULL;
4114b8e80941Smrg	if (yyg->yy_buffer_stack_top > 0)
4115b8e80941Smrg		--yyg->yy_buffer_stack_top;
4116b8e80941Smrg
4117b8e80941Smrg	if (YY_CURRENT_BUFFER) {
4118b8e80941Smrg		yy_load_buffer_state( yyscanner );
4119b8e80941Smrg		yyg->yy_did_buffer_switch_on_eof = 1;
4120b8e80941Smrg	}
4121b8e80941Smrg}
4122b8e80941Smrg
4123b8e80941Smrg/* Allocates the stack if it does not exist.
4124b8e80941Smrg *  Guarantees space for at least one push.
4125b8e80941Smrg */
4126b8e80941Smrgstatic void yyensure_buffer_stack (yyscan_t yyscanner)
4127b8e80941Smrg{
4128b8e80941Smrg	yy_size_t num_to_alloc;
4129b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4130b8e80941Smrg
4131b8e80941Smrg	if (!yyg->yy_buffer_stack) {
4132b8e80941Smrg
4133b8e80941Smrg		/* First allocation is just for 2 elements, since we don't know if this
4134b8e80941Smrg		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4135b8e80941Smrg		 * immediate realloc on the next call.
4136b8e80941Smrg         */
4137b8e80941Smrg      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
4138b8e80941Smrg		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
4139b8e80941Smrg								(num_to_alloc * sizeof(struct yy_buffer_state*)
4140b8e80941Smrg								, yyscanner);
4141b8e80941Smrg		if ( ! yyg->yy_buffer_stack )
4142b8e80941Smrg			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4143b8e80941Smrg
4144b8e80941Smrg		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4145b8e80941Smrg
4146b8e80941Smrg		yyg->yy_buffer_stack_max = num_to_alloc;
4147b8e80941Smrg		yyg->yy_buffer_stack_top = 0;
4148b8e80941Smrg		return;
4149b8e80941Smrg	}
4150b8e80941Smrg
4151b8e80941Smrg	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4152b8e80941Smrg
4153b8e80941Smrg		/* Increase the buffer to prepare for a possible push. */
4154b8e80941Smrg		yy_size_t grow_size = 8 /* arbitrary grow size */;
4155b8e80941Smrg
4156b8e80941Smrg		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4157b8e80941Smrg		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
4158b8e80941Smrg								(yyg->yy_buffer_stack,
4159b8e80941Smrg								num_to_alloc * sizeof(struct yy_buffer_state*)
4160b8e80941Smrg								, yyscanner);
4161b8e80941Smrg		if ( ! yyg->yy_buffer_stack )
4162b8e80941Smrg			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4163b8e80941Smrg
4164b8e80941Smrg		/* zero only the new slots.*/
4165b8e80941Smrg		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4166b8e80941Smrg		yyg->yy_buffer_stack_max = num_to_alloc;
4167b8e80941Smrg	}
4168b8e80941Smrg}
4169b8e80941Smrg
4170b8e80941Smrg/** Setup the input buffer state to scan directly from a user-specified character buffer.
4171b8e80941Smrg * @param base the character buffer
4172b8e80941Smrg * @param size the size in bytes of the character buffer
4173b8e80941Smrg * @param yyscanner The scanner object.
4174b8e80941Smrg * @return the newly allocated buffer state object.
4175b8e80941Smrg */
4176b8e80941SmrgYY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
4177b8e80941Smrg{
4178b8e80941Smrg	YY_BUFFER_STATE b;
4179b8e80941Smrg
4180b8e80941Smrg	if ( size < 2 ||
4181b8e80941Smrg	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
4182b8e80941Smrg	     base[size-1] != YY_END_OF_BUFFER_CHAR )
4183b8e80941Smrg		/* They forgot to leave room for the EOB's. */
4184b8e80941Smrg		return NULL;
4185b8e80941Smrg
4186b8e80941Smrg	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
4187b8e80941Smrg	if ( ! b )
4188b8e80941Smrg		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4189b8e80941Smrg
4190b8e80941Smrg	b->yy_buf_size = (size - 2);	/* "- 2" to take care of EOB's */
4191b8e80941Smrg	b->yy_buf_pos = b->yy_ch_buf = base;
4192b8e80941Smrg	b->yy_is_our_buffer = 0;
4193b8e80941Smrg	b->yy_input_file = NULL;
4194b8e80941Smrg	b->yy_n_chars = b->yy_buf_size;
4195b8e80941Smrg	b->yy_is_interactive = 0;
4196b8e80941Smrg	b->yy_at_bol = 1;
4197b8e80941Smrg	b->yy_fill_buffer = 0;
4198b8e80941Smrg	b->yy_buffer_status = YY_BUFFER_NEW;
4199b8e80941Smrg
4200b8e80941Smrg	yy_switch_to_buffer( b , yyscanner );
4201b8e80941Smrg
4202b8e80941Smrg	return b;
4203b8e80941Smrg}
4204b8e80941Smrg
4205b8e80941Smrg/** Setup the input buffer state to scan a string. The next call to yylex() will
4206b8e80941Smrg * scan from a @e copy of @a str.
4207b8e80941Smrg * @param yystr a NUL-terminated string to scan
4208b8e80941Smrg * @param yyscanner The scanner object.
4209b8e80941Smrg * @return the newly allocated buffer state object.
4210b8e80941Smrg * @note If you want to scan bytes that may contain NUL values, then use
4211b8e80941Smrg *       yy_scan_bytes() instead.
4212b8e80941Smrg */
4213b8e80941SmrgYY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
4214b8e80941Smrg{
4215b8e80941Smrg
4216b8e80941Smrg	return yy_scan_bytes( yystr, strlen(yystr) , yyscanner);
4217b8e80941Smrg}
4218b8e80941Smrg
4219b8e80941Smrg/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4220b8e80941Smrg * scan from a @e copy of @a bytes.
4221b8e80941Smrg * @param yybytes the byte buffer to scan
4222b8e80941Smrg * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4223b8e80941Smrg * @param yyscanner The scanner object.
4224b8e80941Smrg * @return the newly allocated buffer state object.
4225b8e80941Smrg */
4226b8e80941SmrgYY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
4227b8e80941Smrg{
4228b8e80941Smrg	YY_BUFFER_STATE b;
4229b8e80941Smrg	char *buf;
4230b8e80941Smrg	yy_size_t n;
4231b8e80941Smrg	yy_size_t i;
4232b8e80941Smrg
4233b8e80941Smrg	/* Get memory for full buffer, including space for trailing EOB's. */
4234b8e80941Smrg	n = (yy_size_t) (_yybytes_len + 2);
4235b8e80941Smrg	buf = (char *) yyalloc( n , yyscanner );
4236b8e80941Smrg	if ( ! buf )
4237b8e80941Smrg		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4238b8e80941Smrg
4239b8e80941Smrg	for ( i = 0; i < _yybytes_len; ++i )
4240b8e80941Smrg		buf[i] = yybytes[i];
4241b8e80941Smrg
4242b8e80941Smrg	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4243b8e80941Smrg
4244b8e80941Smrg	b = yy_scan_buffer( buf, n , yyscanner);
4245b8e80941Smrg	if ( ! b )
4246b8e80941Smrg		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4247b8e80941Smrg
4248b8e80941Smrg	/* It's okay to grow etc. this buffer, and we should throw it
4249b8e80941Smrg	 * away when we're done.
4250b8e80941Smrg	 */
4251b8e80941Smrg	b->yy_is_our_buffer = 1;
4252b8e80941Smrg
4253b8e80941Smrg	return b;
4254b8e80941Smrg}
4255b8e80941Smrg
4256b8e80941Smrg#ifndef YY_EXIT_FAILURE
4257b8e80941Smrg#define YY_EXIT_FAILURE 2
4258b8e80941Smrg#endif
4259b8e80941Smrg
4260b8e80941Smrgstatic void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
4261b8e80941Smrg{
4262b8e80941Smrg	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4263b8e80941Smrg	(void)yyg;
4264b8e80941Smrg	fprintf( stderr, "%s\n", msg );
4265b8e80941Smrg	exit( YY_EXIT_FAILURE );
4266b8e80941Smrg}
4267b8e80941Smrg
4268b8e80941Smrg/* Redefine yyless() so it works in section 3 code. */
4269b8e80941Smrg
4270b8e80941Smrg#undef yyless
4271b8e80941Smrg#define yyless(n) \
4272b8e80941Smrg	do \
4273b8e80941Smrg		{ \
4274b8e80941Smrg		/* Undo effects of setting up yytext. */ \
4275b8e80941Smrg        int yyless_macro_arg = (n); \
4276b8e80941Smrg        YY_LESS_LINENO(yyless_macro_arg);\
4277b8e80941Smrg		yytext[yyleng] = yyg->yy_hold_char; \
4278b8e80941Smrg		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
4279b8e80941Smrg		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
4280b8e80941Smrg		*yyg->yy_c_buf_p = '\0'; \
4281b8e80941Smrg		yyleng = yyless_macro_arg; \
4282b8e80941Smrg		} \
4283b8e80941Smrg	while ( 0 )
4284b8e80941Smrg
4285b8e80941Smrg/* Accessor  methods (get/set functions) to struct members. */
4286b8e80941Smrg
4287b8e80941Smrg/** Get the user-defined data for this scanner.
4288b8e80941Smrg * @param yyscanner The scanner object.
4289b8e80941Smrg */
4290b8e80941SmrgYY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
4291b8e80941Smrg{
4292b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4293b8e80941Smrg    return yyextra;
4294b8e80941Smrg}
4295b8e80941Smrg
4296b8e80941Smrg/** Get the current line number.
4297b8e80941Smrg * @param yyscanner The scanner object.
4298b8e80941Smrg */
4299b8e80941Smrgint yyget_lineno  (yyscan_t yyscanner)
4300b8e80941Smrg{
4301b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4302b8e80941Smrg
4303b8e80941Smrg        if (! YY_CURRENT_BUFFER)
4304b8e80941Smrg            return 0;
4305b8e80941Smrg
4306b8e80941Smrg    return yylineno;
4307b8e80941Smrg}
4308b8e80941Smrg
4309b8e80941Smrg/** Get the current column number.
4310b8e80941Smrg * @param yyscanner The scanner object.
4311b8e80941Smrg */
4312b8e80941Smrgint yyget_column  (yyscan_t yyscanner)
4313b8e80941Smrg{
4314b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4315b8e80941Smrg
4316b8e80941Smrg        if (! YY_CURRENT_BUFFER)
4317b8e80941Smrg            return 0;
4318b8e80941Smrg
4319b8e80941Smrg    return yycolumn;
4320b8e80941Smrg}
4321b8e80941Smrg
4322b8e80941Smrg/** Get the input stream.
4323b8e80941Smrg * @param yyscanner The scanner object.
4324b8e80941Smrg */
4325b8e80941SmrgFILE *yyget_in  (yyscan_t yyscanner)
4326b8e80941Smrg{
4327b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4328b8e80941Smrg    return yyin;
4329b8e80941Smrg}
4330b8e80941Smrg
4331b8e80941Smrg/** Get the output stream.
4332b8e80941Smrg * @param yyscanner The scanner object.
4333b8e80941Smrg */
4334b8e80941SmrgFILE *yyget_out  (yyscan_t yyscanner)
4335b8e80941Smrg{
4336b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4337b8e80941Smrg    return yyout;
4338b8e80941Smrg}
4339b8e80941Smrg
4340b8e80941Smrg/** Get the length of the current token.
4341b8e80941Smrg * @param yyscanner The scanner object.
4342b8e80941Smrg */
4343b8e80941Smrgyy_size_t yyget_leng  (yyscan_t yyscanner)
4344b8e80941Smrg{
4345b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4346b8e80941Smrg    return yyleng;
4347b8e80941Smrg}
4348b8e80941Smrg
4349b8e80941Smrg/** Get the current token.
4350b8e80941Smrg * @param yyscanner The scanner object.
4351b8e80941Smrg */
4352b8e80941Smrg
4353b8e80941Smrgchar *yyget_text  (yyscan_t yyscanner)
4354b8e80941Smrg{
4355b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4356b8e80941Smrg    return yytext;
4357b8e80941Smrg}
4358b8e80941Smrg
4359b8e80941Smrg/** Set the user-defined data. This data is never touched by the scanner.
4360b8e80941Smrg * @param user_defined The data to be associated with this scanner.
4361b8e80941Smrg * @param yyscanner The scanner object.
4362b8e80941Smrg */
4363b8e80941Smrgvoid yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
4364b8e80941Smrg{
4365b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4366b8e80941Smrg    yyextra = user_defined ;
4367b8e80941Smrg}
4368b8e80941Smrg
4369b8e80941Smrg/** Set the current line number.
4370b8e80941Smrg * @param _line_number line number
4371b8e80941Smrg * @param yyscanner The scanner object.
4372b8e80941Smrg */
4373b8e80941Smrgvoid yyset_lineno (int  _line_number , yyscan_t yyscanner)
4374b8e80941Smrg{
4375b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4376b8e80941Smrg
4377b8e80941Smrg        /* lineno is only valid if an input buffer exists. */
4378b8e80941Smrg        if (! YY_CURRENT_BUFFER )
4379b8e80941Smrg           YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
4380b8e80941Smrg
4381b8e80941Smrg    yylineno = _line_number;
4382b8e80941Smrg}
4383b8e80941Smrg
4384b8e80941Smrg/** Set the current column.
4385b8e80941Smrg * @param _column_no column number
4386b8e80941Smrg * @param yyscanner The scanner object.
4387b8e80941Smrg */
4388b8e80941Smrgvoid yyset_column (int  _column_no , yyscan_t yyscanner)
4389b8e80941Smrg{
4390b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4391b8e80941Smrg
4392b8e80941Smrg        /* column is only valid if an input buffer exists. */
4393b8e80941Smrg        if (! YY_CURRENT_BUFFER )
4394b8e80941Smrg           YY_FATAL_ERROR( "yyset_column called with no buffer" );
4395b8e80941Smrg
4396b8e80941Smrg    yycolumn = _column_no;
4397b8e80941Smrg}
4398b8e80941Smrg
4399b8e80941Smrg/** Set the input stream. This does not discard the current
4400b8e80941Smrg * input buffer.
4401b8e80941Smrg * @param _in_str A readable stream.
4402b8e80941Smrg * @param yyscanner The scanner object.
4403b8e80941Smrg * @see yy_switch_to_buffer
4404b8e80941Smrg */
4405b8e80941Smrgvoid yyset_in (FILE *  _in_str , yyscan_t yyscanner)
4406b8e80941Smrg{
4407b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4408b8e80941Smrg    yyin = _in_str ;
4409b8e80941Smrg}
4410b8e80941Smrg
4411b8e80941Smrgvoid yyset_out (FILE *  _out_str , yyscan_t yyscanner)
4412b8e80941Smrg{
4413b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4414b8e80941Smrg    yyout = _out_str ;
4415b8e80941Smrg}
4416b8e80941Smrg
4417b8e80941Smrgint yyget_debug  (yyscan_t yyscanner)
4418b8e80941Smrg{
4419b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4420b8e80941Smrg    return yy_flex_debug;
4421b8e80941Smrg}
4422b8e80941Smrg
4423b8e80941Smrgvoid yyset_debug (int  _bdebug , yyscan_t yyscanner)
4424b8e80941Smrg{
4425b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4426b8e80941Smrg    yy_flex_debug = _bdebug ;
4427b8e80941Smrg}
4428b8e80941Smrg
4429b8e80941Smrg/* Accessor methods for yylval and yylloc */
4430b8e80941Smrg
4431b8e80941SmrgYYSTYPE * yyget_lval  (yyscan_t yyscanner)
4432b8e80941Smrg{
4433b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4434b8e80941Smrg    return yylval;
4435b8e80941Smrg}
4436b8e80941Smrg
4437b8e80941Smrgvoid yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
4438b8e80941Smrg{
4439b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4440b8e80941Smrg    yylval = yylval_param;
4441b8e80941Smrg}
4442b8e80941Smrg
4443b8e80941SmrgYYLTYPE *yyget_lloc  (yyscan_t yyscanner)
4444b8e80941Smrg{
4445b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4446b8e80941Smrg    return yylloc;
4447b8e80941Smrg}
4448b8e80941Smrg
4449b8e80941Smrgvoid yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
4450b8e80941Smrg{
4451b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4452b8e80941Smrg    yylloc = yylloc_param;
4453b8e80941Smrg}
4454b8e80941Smrg
4455b8e80941Smrg/* User-visible API */
4456b8e80941Smrg
4457b8e80941Smrg/* yylex_init is special because it creates the scanner itself, so it is
4458b8e80941Smrg * the ONLY reentrant function that doesn't take the scanner as the last argument.
4459b8e80941Smrg * That's why we explicitly handle the declaration, instead of using our macros.
4460b8e80941Smrg */
4461b8e80941Smrgint yylex_init(yyscan_t* ptr_yy_globals)
4462b8e80941Smrg{
4463b8e80941Smrg    if (ptr_yy_globals == NULL){
4464b8e80941Smrg        errno = EINVAL;
4465b8e80941Smrg        return 1;
4466b8e80941Smrg    }
4467b8e80941Smrg
4468b8e80941Smrg    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
4469b8e80941Smrg
4470b8e80941Smrg    if (*ptr_yy_globals == NULL){
4471b8e80941Smrg        errno = ENOMEM;
4472b8e80941Smrg        return 1;
4473b8e80941Smrg    }
4474b8e80941Smrg
4475b8e80941Smrg    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
4476b8e80941Smrg    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
4477b8e80941Smrg
4478b8e80941Smrg    return yy_init_globals ( *ptr_yy_globals );
4479b8e80941Smrg}
4480b8e80941Smrg
4481b8e80941Smrg/* yylex_init_extra has the same functionality as yylex_init, but follows the
4482b8e80941Smrg * convention of taking the scanner as the last argument. Note however, that
4483b8e80941Smrg * this is a *pointer* to a scanner, as it will be allocated by this call (and
4484b8e80941Smrg * is the reason, too, why this function also must handle its own declaration).
4485b8e80941Smrg * The user defined value in the first argument will be available to yyalloc in
4486b8e80941Smrg * the yyextra field.
4487b8e80941Smrg */
4488b8e80941Smrgint yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
4489b8e80941Smrg{
4490b8e80941Smrg    struct yyguts_t dummy_yyguts;
4491b8e80941Smrg
4492b8e80941Smrg    yyset_extra (yy_user_defined, &dummy_yyguts);
4493b8e80941Smrg
4494b8e80941Smrg    if (ptr_yy_globals == NULL){
4495b8e80941Smrg        errno = EINVAL;
4496b8e80941Smrg        return 1;
4497b8e80941Smrg    }
4498b8e80941Smrg
4499b8e80941Smrg    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
4500b8e80941Smrg
4501b8e80941Smrg    if (*ptr_yy_globals == NULL){
4502b8e80941Smrg        errno = ENOMEM;
4503b8e80941Smrg        return 1;
4504b8e80941Smrg    }
4505b8e80941Smrg
4506b8e80941Smrg    /* By setting to 0xAA, we expose bugs in
4507b8e80941Smrg    yy_init_globals. Leave at 0x00 for releases. */
4508b8e80941Smrg    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
4509b8e80941Smrg
4510b8e80941Smrg    yyset_extra (yy_user_defined, *ptr_yy_globals);
4511b8e80941Smrg
4512b8e80941Smrg    return yy_init_globals ( *ptr_yy_globals );
4513b8e80941Smrg}
4514b8e80941Smrg
4515b8e80941Smrgstatic int yy_init_globals (yyscan_t yyscanner)
4516b8e80941Smrg{
4517b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4518b8e80941Smrg    /* Initialization is the same as for the non-reentrant scanner.
4519b8e80941Smrg     * This function is called from yylex_destroy(), so don't allocate here.
4520b8e80941Smrg     */
4521b8e80941Smrg
4522b8e80941Smrg    yyg->yy_buffer_stack = NULL;
4523b8e80941Smrg    yyg->yy_buffer_stack_top = 0;
4524b8e80941Smrg    yyg->yy_buffer_stack_max = 0;
4525b8e80941Smrg    yyg->yy_c_buf_p = NULL;
4526b8e80941Smrg    yyg->yy_init = 0;
4527b8e80941Smrg    yyg->yy_start = 0;
4528b8e80941Smrg
4529b8e80941Smrg    yyg->yy_start_stack_ptr = 0;
4530b8e80941Smrg    yyg->yy_start_stack_depth = 0;
4531b8e80941Smrg    yyg->yy_start_stack =  NULL;
4532b8e80941Smrg
4533b8e80941Smrg/* Defined in main.c */
4534b8e80941Smrg#ifdef YY_STDINIT
4535b8e80941Smrg    yyin = stdin;
4536b8e80941Smrg    yyout = stdout;
4537b8e80941Smrg#else
4538b8e80941Smrg    yyin = NULL;
4539b8e80941Smrg    yyout = NULL;
4540b8e80941Smrg#endif
4541b8e80941Smrg
4542b8e80941Smrg    /* For future reference: Set errno on error, since we are called by
4543b8e80941Smrg     * yylex_init()
4544b8e80941Smrg     */
4545b8e80941Smrg    return 0;
4546b8e80941Smrg}
4547b8e80941Smrg
4548b8e80941Smrg/* yylex_destroy is for both reentrant and non-reentrant scanners. */
4549b8e80941Smrgint yylex_destroy  (yyscan_t yyscanner)
4550b8e80941Smrg{
4551b8e80941Smrg    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4552b8e80941Smrg
4553b8e80941Smrg    /* Pop the buffer stack, destroying each element. */
4554b8e80941Smrg	while(YY_CURRENT_BUFFER){
4555b8e80941Smrg		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
4556b8e80941Smrg		YY_CURRENT_BUFFER_LVALUE = NULL;
4557b8e80941Smrg		yypop_buffer_state(yyscanner);
4558b8e80941Smrg	}
4559b8e80941Smrg
4560b8e80941Smrg	/* Destroy the stack itself. */
4561b8e80941Smrg	yyfree(yyg->yy_buffer_stack , yyscanner);
4562b8e80941Smrg	yyg->yy_buffer_stack = NULL;
4563b8e80941Smrg
4564b8e80941Smrg    /* Destroy the start condition stack. */
4565b8e80941Smrg        yyfree( yyg->yy_start_stack , yyscanner );
4566b8e80941Smrg        yyg->yy_start_stack = NULL;
4567b8e80941Smrg
4568b8e80941Smrg    /* Reset the globals. This is important in a non-reentrant scanner so the next time
4569b8e80941Smrg     * yylex() is called, initialization will occur. */
4570b8e80941Smrg    yy_init_globals( yyscanner);
4571b8e80941Smrg
4572b8e80941Smrg    /* Destroy the main struct (reentrant only). */
4573b8e80941Smrg    yyfree ( yyscanner , yyscanner );
4574b8e80941Smrg    yyscanner = NULL;
4575b8e80941Smrg    return 0;
4576b8e80941Smrg}
4577b8e80941Smrg
4578b8e80941Smrg/*
4579b8e80941Smrg * Internal utility routines.
4580b8e80941Smrg */
4581b8e80941Smrg
4582b8e80941Smrg#ifndef yytext_ptr
4583b8e80941Smrgstatic void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
4584b8e80941Smrg{
4585b8e80941Smrg	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4586b8e80941Smrg	(void)yyg;
4587b8e80941Smrg
4588b8e80941Smrg	int i;
4589b8e80941Smrg	for ( i = 0; i < n; ++i )
4590b8e80941Smrg		s1[i] = s2[i];
4591b8e80941Smrg}
4592b8e80941Smrg#endif
4593b8e80941Smrg
4594b8e80941Smrg#ifdef YY_NEED_STRLEN
4595b8e80941Smrgstatic int yy_flex_strlen (const char * s , yyscan_t yyscanner)
4596b8e80941Smrg{
4597b8e80941Smrg	int n;
4598b8e80941Smrg	for ( n = 0; s[n]; ++n )
4599b8e80941Smrg		;
4600b8e80941Smrg
4601b8e80941Smrg	return n;
4602b8e80941Smrg}
4603b8e80941Smrg#endif
4604b8e80941Smrg
4605b8e80941Smrgvoid *yyalloc (yy_size_t  size , yyscan_t yyscanner)
4606b8e80941Smrg{
4607b8e80941Smrg	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4608b8e80941Smrg	(void)yyg;
4609b8e80941Smrg	return malloc(size);
4610b8e80941Smrg}
4611b8e80941Smrg
4612b8e80941Smrgvoid *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
4613b8e80941Smrg{
4614b8e80941Smrg	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4615b8e80941Smrg	(void)yyg;
4616b8e80941Smrg
4617b8e80941Smrg	/* The cast to (char *) in the following accommodates both
4618b8e80941Smrg	 * implementations that use char* generic pointers, and those
4619b8e80941Smrg	 * that use void* generic pointers.  It works with the latter
4620b8e80941Smrg	 * because both ANSI C and C++ allow castless assignment from
4621b8e80941Smrg	 * any pointer type to void*, and deal with argument conversions
4622b8e80941Smrg	 * as though doing an assignment.
4623b8e80941Smrg	 */
4624b8e80941Smrg	return realloc(ptr, size);
4625b8e80941Smrg}
4626b8e80941Smrg
4627b8e80941Smrgvoid yyfree (void * ptr , yyscan_t yyscanner)
4628b8e80941Smrg{
4629b8e80941Smrg	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4630b8e80941Smrg	(void)yyg;
4631b8e80941Smrg	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
4632b8e80941Smrg}
4633b8e80941Smrg
4634b8e80941Smrg#define YYTABLES_NAME "yytables"
4635b8e80941Smrg
4636b8e80941Smrg#line 703 "../src/compiler/glsl/glsl_lexer.ll"
4637b8e80941Smrg
4638b8e80941Smrg
4639b8e80941Smrgint
4640b8e80941Smrgclassify_identifier(struct _mesa_glsl_parse_state *state, const char *name,
4641b8e80941Smrg                    unsigned name_len, YYSTYPE *output)
4642b8e80941Smrg{
4643b8e80941Smrg   /* We're not doing linear_strdup here, to avoid an implicit call on
4644b8e80941Smrg    * strlen() for the length of the string, as this is already found by flex
4645b8e80941Smrg    * and stored in yyleng
4646b8e80941Smrg    */
4647b8e80941Smrg   char *id = (char *) linear_alloc_child(state->linalloc, name_len + 1);
4648b8e80941Smrg   memcpy(id, name, name_len + 1);
4649b8e80941Smrg   output->identifier = id;
4650b8e80941Smrg
4651b8e80941Smrg   if (state->is_field) {
4652b8e80941Smrg      state->is_field = false;
4653b8e80941Smrg      return FIELD_SELECTION;
4654b8e80941Smrg   }
4655b8e80941Smrg   if (state->symbols->get_variable(name) || state->symbols->get_function(name))
4656b8e80941Smrg      return IDENTIFIER;
4657b8e80941Smrg   else if (state->symbols->get_type(name))
4658b8e80941Smrg      return TYPE_IDENTIFIER;
4659b8e80941Smrg   else
4660b8e80941Smrg      return NEW_IDENTIFIER;
4661b8e80941Smrg}
4662b8e80941Smrg
4663b8e80941Smrgvoid
4664b8e80941Smrg_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
4665b8e80941Smrg{
4666b8e80941Smrg   yylex_init_extra(state, & state->scanner);
4667b8e80941Smrg   yy_scan_string(string, state->scanner);
4668b8e80941Smrg}
4669b8e80941Smrg
4670b8e80941Smrgvoid
4671b8e80941Smrg_mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
4672b8e80941Smrg{
4673b8e80941Smrg   yylex_destroy(state->scanner);
4674b8e80941Smrg}
4675b8e80941Smrg
4676