Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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