~ubuntu-branches/ubuntu/precise/mesa/precise-updates

« back to all changes in this revision

Viewing changes to src/mesa/program/lex.yy.c

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2011-08-04 16:25:08 UTC
  • mfrom: (1.2.37 upstream)
  • Revision ID: james.westby@ubuntu.com-20110804162508-kujg82moxerjg1kk
Tags: 7.11-0ubuntu1
* Fake merge from Debian experimental, updating previous changelog entries.
  New upstream release fixes infrequent X crash (LP: #800778).
  Remaining Ubuntu changes:
 - debian/control
    + Drop lesstif-dev from Build-Depends; it's in Universe.
    + Comment out GLw libs since it depends on lesstif-dev.
    + Drop i686 swx11 libgl package.
    + Add libdrm-dev to mesa-common-dev Depends.
    + Drop libwayland-dev from Build-Depends; it's in Universe.
    + Update Breaks for Ubuntu versions
    + Enable llvm on armel as well as i386 and amd64
  - debian/rules
    + Use --disable-glw for swx11 targets too.
    + Don't enable motif for swx11 targets.
    + Use lzma compression for binary debs to save CD space.
    + Drop unloved mach64 driver.
    + Use --enable-shared-dricore to claw back CD space.
    + Enable llvmpipe software rasteriser.
    + Enable llvm on armel as well as i386 and amd64
  - debian/patches
    + 100_no_abi_tag.patch
    + 101_ubuntu_hidden_glname.patch
    + 103_savage-expose_fbmodes_with_nonzero_alpha.patch
  - rules, libgl1-mesa-{glx,dev,swx11,swx11-dev}.install.in,
    libgl1-mesa-{glx,swx11}.{postinst,prerm}.in, libgl1-mesa-dev.links.in:
    Install libGL.so* in /usr/lib/mesa to allow things to work with
    alternatives.
  - debian/not-installed:
    + Drop i686 files; we don't build 686-optimised packages in the first
      place.
  - debian/gbp.conf
    + Point at Ubuntu branch to make git-buildpackage less narky.
  - 113_fix_tls.diff: Fix crashes in unrelated code due to TLS usage.
  - debian/patches/111_export_searchdirs_in_dripc.diff:
    + Add drisearchdirs variable to dri.pc so the Xserver can pick up the
      alternate DRI driver dirs.
  - debian/patches/115_llvm_dynamic_linking.diff
    + Dynamically link DRI drivers to libllvm.  Saves ~6MiB per DRI driver.
  - debian/patches/116_use_shared_galliumcore.diff:
  - debian/libgl1-mesa-dri.install.in:
    + Link gallium DRI drivers against shared gallium routines to save CD
      space.
* debian/rules:
* debian/libgl1-mesa-dri-experimental.install.{i386,amd64}.in
  - Explicitly install i915g only when it has been built, matching what is
    done with r300g.
* debian/rules:
* debian/control:
* debian/libegl1-mesa{,-dev}.install.in:
* debian/libegl1-mesa.symbols:
  - Enable the Wayland EGL backend.
* debian/rules:
* debian/libegl1-mesa.{postinst,prerm,install}.in:
* debian/libegl1-mesa-dev.{install,links}.in:
* debian/libgles{1,2}-mesa.install.in:
* debian/libgles{1,2}-mesa-dev.links.in:
* debian/libopenvg1-mesa{,-dev}.install.in:
* debian/libopenvg1-mesa-dev.links.in:
  - Use alternatives for libEGL to match the handling of libGL.
    libEGL (and associated GL|ES and OpenVG libraries) now live in
    /usr/lib/$MULTIARCH/mesa-egl.  (LP: #812639)
* debian/patches/118_fix_24bpp_software_rendering.diff:
  - Cherry pick upstream patch from master fixing graphical corruption when
    using a 24bpp framebuffer and software rendering. (LP: #810339)
* debian/rules:
* debian/clean:
  - Generate xmlpool pot file and clean up other po files for
    pkgbinarymangler's benefit (LP: #410264).
* debian/patches/119_r600g_gnome_shell_rendering_fix.diff:
  - Cherry pick upstream commit fixing rendering corruption in gnome-shell
    (and therefore likely Unity as well).

Show diffs side-by-side

added added

removed removed

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