Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1901 serge 1
#line 2 "glcpp/glcpp-lex.c"
2
 
3
#line 4 "glcpp/glcpp-lex.c"
4
 
5
#define  YY_INT_ALIGNED short int
6
 
7
/* A lexical scanner generated by flex */
8
 
9
#define FLEX_SCANNER
10
#define YY_FLEX_MAJOR_VERSION 2
11
#define YY_FLEX_MINOR_VERSION 5
12
#define YY_FLEX_SUBMINOR_VERSION 35
13
#if YY_FLEX_SUBMINOR_VERSION > 0
14
#define FLEX_BETA
15
#endif
16
 
17
/* First, we deal with  platform-specific or compiler-specific issues. */
18
 
19
/* begin standard C headers. */
20
#include 
21
#include 
22
#include 
23
#include 
24
 
25
/* end standard C headers. */
26
 
27
/* flex integer type definitions */
28
 
29
#ifndef FLEXINT_H
30
#define FLEXINT_H
31
 
32
/* C99 systems have . Non-C99 systems may or may not. */
33
 
34
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35
 
36
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37
 * if you want the limit (max/min) macros for int types.
38
 */
39
#ifndef __STDC_LIMIT_MACROS
40
#define __STDC_LIMIT_MACROS 1
41
#endif
42
 
43
#include 
44
typedef int8_t flex_int8_t;
45
typedef uint8_t flex_uint8_t;
46
typedef int16_t flex_int16_t;
47
typedef uint16_t flex_uint16_t;
48
typedef int32_t flex_int32_t;
49
typedef uint32_t flex_uint32_t;
50
#else
51
typedef signed char flex_int8_t;
52
typedef short int flex_int16_t;
53
typedef int flex_int32_t;
54
typedef unsigned char flex_uint8_t;
55
typedef unsigned short int flex_uint16_t;
56
typedef unsigned int flex_uint32_t;
57
#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 glcpp_restart(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 glcpp_restart()), 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 glcpp_restart (FILE *input_file ,yyscan_t yyscanner );
281
void glcpp__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
282
YY_BUFFER_STATE glcpp__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
283
void glcpp__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
284
void glcpp__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
285
void glcpp_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
286
void glcpp_pop_buffer_state (yyscan_t yyscanner );
287
 
288
static void glcpp_ensure_buffer_stack (yyscan_t yyscanner );
289
static void glcpp__load_buffer_state (yyscan_t yyscanner );
290
static void glcpp__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
291
 
292
#define YY_FLUSH_BUFFER glcpp__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
293
 
294
YY_BUFFER_STATE glcpp__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
295
YY_BUFFER_STATE glcpp__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
296
YY_BUFFER_STATE glcpp__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
297
 
298
void *glcpp_alloc (yy_size_t ,yyscan_t yyscanner );
299
void *glcpp_realloc (void *,yy_size_t ,yyscan_t yyscanner );
300
void glcpp_free (void * ,yyscan_t yyscanner );
301
 
302
#define yy_new_buffer glcpp__create_buffer
303
 
304
#define yy_set_interactive(is_interactive) \
305
	{ \
306
	if ( ! YY_CURRENT_BUFFER ){ \
307
        glcpp_ensure_buffer_stack (yyscanner); \
308
		YY_CURRENT_BUFFER_LVALUE =    \
309
            glcpp__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
        glcpp_ensure_buffer_stack (yyscanner); \
318
		YY_CURRENT_BUFFER_LVALUE =    \
319
            glcpp__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 glcpp_wrap(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 43
353
#define YY_END_OF_BUFFER 44
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_acclist[137] =
362
    {   0,
363
        3,    3,   44,   39,   43,   40,   43,   41,   43,   43,
364
       38,   43,   43,   38,   43,   38,   43,   38,   43,   25,
365
       39,   43,   24,   39,   43,   38,   43,   38,   43,   38,
366
       43,   37,   39,   43,   37,   39,   43,   38,   43,   40,
367
       43,   23,   43,   43,    3,   43,    4,   43,    5,   43,
368
       42,   43,   39,   18,   40,   32,   35,   33,    2,    1,
369
       25,   39,   25,   39,   39,   24,   39,   24,   39,   27,
370
       29,   31,   30,   28,   37,   39,   37,   39,   34,   40,
371
       23,   23,    3,    4,    5,    6,    5,    7,    1,   26,
372
       39,   37,   39,16398,   26,   39,   37,   39,   18,   37,
373
 
374
       39,16399,16400, 8206,   18, 8206,   37,   39, 8207,   18,
375
     8208,   18,16401,   19,16396,   22,   36,   37,   39,   21,
376
     8209,   18,   19, 8204,   18,16397,16404, 8205,   18,   11,
377
       18,    9,    8, 8212,   10,   18
378
    } ;
379
 
380
static yyconst flex_int16_t yy_accept[164] =
381
    {   0,
382
        1,    1,    1,    1,    1,    2,    3,    3,    3,    4,
383
        6,    8,   10,   11,   13,   14,   16,   18,   20,   23,
384
       26,   28,   30,   32,   35,   38,   40,   42,   44,   45,
385
       47,   49,   51,   53,   54,   54,   55,   56,   57,   58,
386
       59,   60,   61,   63,   65,   66,   68,   70,   71,   72,
387
       73,   74,   75,   77,   79,   80,   81,   82,   83,   83,
388
       83,   83,   83,   83,   83,   83,   84,   85,   86,   87,
389
       88,   89,   90,   92,   94,   94,   94,   94,   94,   94,
390
       95,   95,   95,   95,   95,   97,   99,   99,   99,   99,
391
       99,   99,   99,   99,  100,  100,  100,  100,  100,  100,
392
 
393
      100,  102,  102,  103,  104,  104,  104,  104,  104,  106,
394
      106,  107,  107,  107,  107,  107,  107,  107,  109,  109,
395
      109,  111,  111,  113,  114,  115,  115,  116,  116,  116,
396
      116,  117,  117,  120,  121,  121,  123,  124,  124,  124,
397
      126,  127,  127,  127,  127,  128,  128,  128,  130,  130,
398
      132,  132,  133,  134,  134,  134,  134,  135,  135,  135,
399
      137,  137,  137
400
    } ;
401
 
402
static yyconst flex_int32_t yy_ec[256] =
403
    {   0,
404
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
405
        4,    4,    4,    1,    1,    1,    1,    1,    1,    1,
406
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
407
        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
408
        7,   10,    7,    7,    7,    7,   11,   12,   13,   13,
409
       13,   13,   13,   13,   13,   14,   14,    1,    7,   15,
410
       16,   17,    1,    1,   18,   18,   18,   18,   18,   18,
411
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
412
       19,   19,   19,   19,   20,   19,   19,   21,   19,   19,
413
        7,    1,    7,    7,   19,    1,   22,   18,   18,   23,
414
 
415
       24,   25,   26,   19,   27,   19,   19,   28,   29,   30,
416
       31,   32,   19,   33,   34,   35,   36,   37,   19,   38,
417
       19,   19,    7,   39,    7,    7,    1,    1,    1,    1,
418
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
419
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
420
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
421
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
422
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
423
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
424
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
425
 
426
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
427
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
428
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
429
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
430
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
431
        1,    1,    1,    1,    1
432
    } ;
433
 
434
static yyconst flex_int32_t yy_meta[40] =
435
    {   0,
436
        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
437
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
438
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
439
        1,    1,    1,    1,    1,    1,    1,    1,    1
440
    } ;
441
 
442
static yyconst flex_int16_t yy_base[182] =
443
    {   0,
444
        0,   38,    0,    0,   38,   39,  499,  498,  500,   48,
445
       43,  552,  496,   44,   63,  495,   59,   65,   87,  125,
446
       58,   67,   68,  164,  203,   40,   75,  241,  552,  494,
447
      552,  140,  552,  140,  493,  552,  144,  492,  491,  487,
448
      486,  485,  156,  179,  267,    0,  209,  472,  471,  470,
449
      469,  468,  446,  124,  466,  153,  462,  458,  154,  198,
450
      159,  155,  183,  160,  193,  460,  552,  222,  552,  227,
451
      552,  459,  204,  161,  231,  232,  238,  243,  236,  303,
452
      245,  180,  247,  249,  281,   56,  257,  271,  248,  259,
453
      252,  264,  455,  454,  297,  299,  312,  313,  320,  294,
454
 
455
      407,  295,  427,  426,  321,  296,  324,  425,  552,  424,
456
      552,  327,  329,  195,  328,  331,  332,  230,  334,  378,
457
      552,  377,  552,  371,  370,  335,  365,  337,  358,  342,
458
      360,  344,  326,  255,  340,  552,  260,  338,  246,  552,
459
      197,  364,  192,  352,  382,  348,  186,  552,  420,  552,
460
      423,  184,  141,  437,  421,  447,   79,  476,  346,  552,
461
      453,  552,  515,  517,  519,  521,  523,  525,   71,  527,
462
      529,  531,  533,  535,  537,  539,  541,  543,  545,  547,
463
      549
464
    } ;
465
 
466
static yyconst flex_int16_t yy_def[182] =
467
    {   0,
468
      162,    1,  163,  163,  164,  164,  165,  165,  162,  166,
469
      167,  162,  167,  167,  167,  167,  167,  167,  162,  166,
470
      167,  167,  167,  168,  168,  167,  167,  167,  162,  169,
471
      162,  170,  162,   20,  167,  162,  167,  167,  167,  167,
472
      167,  171,   19,   20,   20,   20,   20,  167,  167,  167,
473
      167,  167,   25,   25,  167,  167,   28,   28,  167,  167,
474
      167,  167,  167,  167,  167,  169,  162,  170,  162,  170,
475
      162,  171,   45,   25,  167,  167,  167,  167,  167,  167,
476
      167,  167,  167,  167,   20,   25,  167,  167,  167,  167,
477
      167,  167,  172,  173,  167,  167,  167,  167,  167,  167,
478
 
479
       25,  167,  174,  175,  167,  167,  167,  172,  162,  173,
480
      162,  167,  167,  167,  167,  167,  167,   25,  167,  174,
481
      162,  175,  162,  176,  177,  167,  178,  167,  167,  167,
482
      167,  167,   25,  167,  176,  162,  177,  167,  178,  162,
483
      179,  167,  180,  167,  162,  167,  179,  162,  167,  162,
484
      167,  180,  167,  181,  167,  167,  167,  181,  167,  162,
485
      167,    0,  162,  162,  162,  162,  162,  162,  162,  162,
486
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
487
      162
488
    } ;
489
 
490
static yyconst flex_int16_t yy_nxt[592] =
491
    {   0,
492
       10,   11,   12,   13,   14,   15,   16,   17,   16,   16,
493
       18,   19,   20,   20,   21,   22,   23,   24,   24,   24,
494
       24,   24,   25,   24,   24,   24,   24,   24,   24,   24,
495
       24,   24,   24,   24,   24,   24,   24,   24,   26,   27,
496
       31,   31,   36,   28,   37,   36,   36,   32,   32,   35,
497
       36,   35,   35,   35,   35,   35,   35,   35,   35,   38,
498
       36,   36,   35,   35,   35,   36,   40,   36,   39,   36,
499
       36,   66,   48,   49,   41,   42,   56,   36,   55,   53,
500
       57,   36,   50,   51,   52,  101,   35,   34,   35,   36,
501
       35,   35,   35,   35,   35,   35,   35,   35,   43,   43,
502
 
503
       34,   35,   35,   35,   34,   34,   44,   45,   34,   34,
504
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
505
       34,   34,   44,   34,   45,   35,   35,   36,   35,   35,
506
       35,   35,   35,   35,   35,   35,   46,   46,   46,   35,
507
       35,   35,   69,   36,   47,   37,   36,   53,   74,   70,
508
       71,   34,   34,   34,   56,   36,   36,   36,   57,   34,
509
       47,   36,   36,   35,   34,   35,   36,   35,   35,   35,
510
       35,   35,   35,   35,   35,   34,   34,   75,   35,   35,
511
       35,   81,   36,   80,   53,   36,   36,   86,  148,   83,
512
       34,   34,   34,   34,   36,   36,  129,   36,   34,  148,
513
 
514
       36,   98,   35,   34,   35,   36,   35,   35,   35,   35,
515
       35,   35,   35,   35,   34,   82,   84,   35,   35,   35,
516
       34,   34,   34,   85,   69,   76,   54,   77,   34,   69,
517
       78,  162,  162,   36,   36,   79,   70,   71,   36,   85,
518
       36,   35,   58,   36,   34,   36,   39,   36,  140,   36,
519
       36,   36,  133,   53,   36,   87,  145,   36,   88,   36,
520
       90,   36,   36,   59,   60,   89,   36,   61,   62,   99,
521
       92,  104,   63,   36,   97,   91,   64,   65,   73,   73,
522
       73,  100,  106,  102,   73,  105,   34,  107,   73,   73,
523
       73,   73,   34,   34,   34,  103,   36,   36,   36,   36,
524
 
525
       34,   36,   34,   93,   93,   94,   93,   93,   93,   93,
526
       93,   93,   93,   93,   36,   36,   34,   93,   93,   93,
527
      112,  113,   36,   36,  119,   95,   36,  117,  125,   36,
528
       36,   36,   96,   36,   36,  114,   36,   36,  115,   36,
529
       36,   93,  136,  116,   36,  124,   36,  159,  160,   53,
530
       36,  127,  128,  126,   36,  131,  130,  134,  132,  129,
531
       36,  141,   36,  143,  146,  149,  150,  140,  138,  142,
532
      142,  142,   36,  136,  144,  151,  151,  151,  155,  123,
533
      121,  153,   35,  145,   36,   35,   35,   35,   35,   35,
534
       35,   35,   35,   35,   35,   35,   35,   35,   35,  154,
535
 
536
      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
537
      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
538
       35,  149,  150,   36,  149,  150,  111,  109,  123,  121,
539
      118,  156,  156,  156,  151,  151,  151,   35,   35,   36,
540
       35,   35,   35,   35,   35,  157,   35,   35,  159,  160,
541
      143,   35,   35,   35,  159,  160,  111,  109,  161,  161,
542
      161,   36,   67,   35,  161,  161,  161,   35,   36,   53,
543
       36,   36,   36,   36,   36,   35,   35,   35,   36,   35,
544
       35,   35,   35,   35,  157,   35,   35,   36,   36,   36,
545
       35,   35,   35,   36,   36,   36,   67,   36,   36,  162,
546
 
547
       29,   29,  162,  162,  162,  162,  162,  162,  162,  162,
548
      162,  162,  162,  162,   35,   29,   29,   30,   30,   33,
549
       33,   34,   34,   35,   35,   53,   53,   68,   68,   72,
550
       72,  108,  108,  110,  110,  120,  120,  122,  122,  135,
551
      135,  137,  137,  139,  139,  147,  147,  152,  152,  158,
552
      158,    9,  162,  162,  162,  162,  162,  162,  162,  162,
553
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
554
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
555
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
556
      162
557
 
558
    } ;
559
 
560
static yyconst flex_int16_t yy_chk[592] =
561
    {   0,
562
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
563
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
564
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
565
        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
566
        5,    6,   26,    2,   11,   11,   14,    5,    6,   10,
567
       10,   10,   10,   10,   10,   10,   10,   10,   10,   14,
568
       21,   17,   10,   10,   10,   15,   17,   18,   15,   22,
569
       23,  169,   21,   21,   18,   18,   27,   27,   26,   86,
570
       27,  157,   22,   23,   23,   86,   10,   19,   19,   19,
571
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
572
 
573
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
574
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
575
       19,   19,   19,   19,   19,   19,   20,   20,   20,   20,
576
       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
577
       20,   20,   32,  153,   20,   37,   37,   54,   54,   32,
578
       32,   34,   34,   34,   56,   56,   59,   62,   56,   34,
579
       20,   61,   64,   20,   24,   24,   24,   24,   24,   24,
580
       24,   24,   24,   24,   24,   34,   43,   59,   24,   24,
581
       24,   62,   82,   61,   74,   63,  152,   74,  147,   64,
582
       44,   44,   44,   43,  143,   65,  114,  114,   44,  141,
583
 
584
       60,   82,   24,   25,   25,   25,   25,   25,   25,   25,
585
       25,   25,   25,   25,   44,   63,   65,   25,   25,   25,
586
       47,   47,   47,   73,   68,   60,   25,   60,   47,   70,
587
       60,   68,   68,   75,   76,   60,   70,   70,   79,   73,
588
       77,   25,   28,   28,   47,   78,   28,   81,  139,   83,
589
       89,   84,  118,  118,   91,   75,  134,  134,   76,   87,
590
       77,   90,  137,   28,   28,   76,   92,   28,   28,   83,
591
       79,   89,   28,   88,   81,   78,   28,   28,   45,   45,
592
       45,   84,   91,   87,   45,   90,   45,   92,   45,   45,
593
       45,   45,   85,   85,   85,   88,  100,  102,  106,   95,
594
 
595
       85,   96,   45,   80,   80,   80,   80,   80,   80,   80,
596
       80,   80,   80,   80,   97,   98,   85,   80,   80,   80,
597
       95,   96,   99,  105,  102,   80,  107,  100,  106,  112,
598
      115,  113,   80,  116,  117,   97,  119,  126,   98,  128,
599
      138,   80,  135,   99,  130,  105,  132,  159,  159,  133,
600
      146,  112,  113,  107,  144,  116,  115,  119,  117,  129,
601
      129,  128,  131,  130,  138,  142,  142,  127,  126,  129,
602
      129,  129,  125,  124,  132,  142,  142,  142,  146,  122,
603
      120,  144,  145,  145,  145,  145,  145,  145,  145,  145,
604
      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
605
 
606
      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
607
      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
608
      145,  149,  149,  155,  151,  151,  110,  108,  104,  103,
609
      101,  149,  149,  149,  151,  151,  151,  154,  154,  154,
610
      154,  154,  154,  154,  154,  154,  154,  154,  156,  156,
611
      155,  154,  154,  154,  161,  161,   94,   93,  156,  156,
612
      156,   72,   66,   58,  161,  161,  161,   57,   55,   53,
613
       52,   51,   50,   49,   48,  154,  158,  158,  158,  158,
614
      158,  158,  158,  158,  158,  158,  158,   42,   41,   40,
615
      158,  158,  158,   39,   38,   35,   30,   16,   13,    9,
616
 
617
        8,    7,    0,    0,    0,    0,    0,    0,    0,    0,
618
        0,    0,    0,    0,  158,  163,  163,  164,  164,  165,
619
      165,  166,  166,  167,  167,  168,  168,  170,  170,  171,
620
      171,  172,  172,  173,  173,  174,  174,  175,  175,  176,
621
      176,  177,  177,  178,  178,  179,  179,  180,  180,  181,
622
      181,  162,  162,  162,  162,  162,  162,  162,  162,  162,
623
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
624
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
625
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
626
      162
627
 
628
    } ;
629
 
630
#define YY_TRAILING_MASK 0x2000
631
#define YY_TRAILING_HEAD_MASK 0x4000
632
#define REJECT \
633
{ \
634
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \
635
yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \
636
yyg->yy_lp = yyg->yy_full_lp; /* restore orig. accepting pos. */ \
637
yyg->yy_state_ptr = yyg->yy_full_state; /* restore orig. state */ \
638
yy_current_state = *yyg->yy_state_ptr; /* restore curr. state */ \
639
++yyg->yy_lp; \
640
goto find_rule; \
641
}
642
 
643
#define yymore() yymore_used_but_not_detected
644
#define YY_MORE_ADJ 0
645
#define YY_RESTORE_YY_MORE_OFFSET
646
#line 1 "glcpp/glcpp-lex.l"
647
#line 2 "glcpp/glcpp-lex.l"
648
/*
649
 * Copyright © 2010 Intel Corporation
650
 *
651
 * Permission is hereby granted, free of charge, to any person obtaining a
652
 * copy of this software and associated documentation files (the "Software"),
653
 * to deal in the Software without restriction, including without limitation
654
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
655
 * and/or sell copies of the Software, and to permit persons to whom the
656
 * Software is furnished to do so, subject to the following conditions:
657
 *
658
 * The above copyright notice and this permission notice (including the next
659
 * paragraph) shall be included in all copies or substantial portions of the
660
 * Software.
661
 *
662
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
663
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
664
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
665
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
666
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
667
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
668
 * DEALINGS IN THE SOFTWARE.
669
 */
670
 
671
#include 
672
#include 
673
#include 
674
 
675
#include "glcpp.h"
676
#include "glcpp-parse.h"
677
 
678
/* Flex annoyingly generates some functions without making them
679
 * static. Let's declare them here. */
680
int glcpp_get_column  (yyscan_t yyscanner);
681
void glcpp_set_column (int  column_no , yyscan_t yyscanner);
682
 
683
#define YY_NO_INPUT
684
 
685
#define YY_USER_ACTION                                          \
686
   do {                                                         \
687
      yylloc->first_column = yycolumn + 1;                      \
688
      yylloc->first_line = yylineno;                            \
689
      yycolumn += yyleng;                                       \
690
   } while(0);
691
 
692
#define YY_USER_INIT			\
693
	do {				\
694
		yylineno = 1;		\
695
		yycolumn = 1;		\
696
		yylloc->source = 0;	\
697
	} while(0)
698
 
699
#line 700 "glcpp/glcpp-lex.c"
700
 
701
#define INITIAL 0
702
#define DONE 1
703
#define COMMENT 2
704
#define UNREACHABLE 3
705
 
706
#define YY_EXTRA_TYPE glcpp_parser_t *
707
 
708
/* Holds the entire state of the reentrant scanner. */
709
struct yyguts_t
710
    {
711
 
712
    /* User-defined. Not touched by flex. */
713
    YY_EXTRA_TYPE yyextra_r;
714
 
715
    /* The rest are the same as the globals declared in the non-reentrant scanner. */
716
    FILE *yyin_r, *yyout_r;
717
    size_t yy_buffer_stack_top; /**< index of top of stack. */
718
    size_t yy_buffer_stack_max; /**< capacity of stack. */
719
    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
720
    char yy_hold_char;
721
    int yy_n_chars;
722
    int yyleng_r;
723
    char *yy_c_buf_p;
724
    int yy_init;
725
    int yy_start;
726
    int yy_did_buffer_switch_on_eof;
727
    int yy_start_stack_ptr;
728
    int yy_start_stack_depth;
729
    int *yy_start_stack;
730
    yy_state_type yy_last_accepting_state;
731
    char* yy_last_accepting_cpos;
732
 
733
    int yylineno_r;
734
    int yy_flex_debug_r;
735
 
736
    yy_state_type *yy_state_buf;
737
    yy_state_type *yy_state_ptr;
738
    char *yy_full_match;
739
    int yy_lp;
740
 
741
    /* These are only needed for trailing context rules,
742
     * but there's no conditional variable for that yet. */
743
    int yy_looking_for_trail_begin;
744
    int yy_full_lp;
745
    int *yy_full_state;
746
 
747
    char *yytext_r;
748
    int yy_more_flag;
749
    int yy_more_len;
750
 
751
    YYSTYPE * yylval_r;
752
 
753
    YYLTYPE * yylloc_r;
754
 
755
    }; /* end struct yyguts_t */
756
 
757
static int yy_init_globals (yyscan_t yyscanner );
758
 
759
    /* This must go here because YYSTYPE and YYLTYPE are included
760
     * from bison output in section 1.*/
761
    #    define yylval yyg->yylval_r
762
 
763
    #    define yylloc yyg->yylloc_r
764
 
765
int glcpp_lex_init (yyscan_t* scanner);
766
 
767
int glcpp_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
768
 
769
/* Accessor methods to globals.
770
   These are made visible to non-reentrant scanners for convenience. */
771
 
772
int glcpp_lex_destroy (yyscan_t yyscanner );
773
 
774
int glcpp_get_debug (yyscan_t yyscanner );
775
 
776
void glcpp_set_debug (int debug_flag ,yyscan_t yyscanner );
777
 
778
YY_EXTRA_TYPE glcpp_get_extra (yyscan_t yyscanner );
779
 
780
void glcpp_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
781
 
782
FILE *glcpp_get_in (yyscan_t yyscanner );
783
 
784
void glcpp_set_in  (FILE * in_str ,yyscan_t yyscanner );
785
 
786
FILE *glcpp_get_out (yyscan_t yyscanner );
787
 
788
void glcpp_set_out  (FILE * out_str ,yyscan_t yyscanner );
789
 
790
int glcpp_get_leng (yyscan_t yyscanner );
791
 
792
char *glcpp_get_text (yyscan_t yyscanner );
793
 
794
int glcpp_get_lineno (yyscan_t yyscanner );
795
 
796
void glcpp_set_lineno (int line_number ,yyscan_t yyscanner );
797
 
798
int glcpp_get_column  (yyscan_t yyscanner );
799
 
800
void glcpp_set_column (int column_no ,yyscan_t yyscanner );
801
 
802
YYSTYPE * glcpp_get_lval (yyscan_t yyscanner );
803
 
804
void glcpp_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
805
 
806
       YYLTYPE *glcpp_get_lloc (yyscan_t yyscanner );
807
 
808
        void glcpp_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
809
 
810
/* Macros after this point can all be overridden by user definitions in
811
 * section 1.
812
 */
813
 
814
#ifndef YY_SKIP_YYWRAP
815
#ifdef __cplusplus
816
extern "C" int glcpp_wrap (yyscan_t yyscanner );
817
#else
818
extern int glcpp_wrap (yyscan_t yyscanner );
819
#endif
820
#endif
821
 
822
    static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
823
 
824
#ifndef yytext_ptr
825
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
826
#endif
827
 
828
#ifdef YY_NEED_STRLEN
829
static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
830
#endif
831
 
832
#ifndef YY_NO_INPUT
833
 
834
#ifdef __cplusplus
835
static int yyinput (yyscan_t yyscanner );
836
#else
837
static int input (yyscan_t yyscanner );
838
#endif
839
 
840
#endif
841
 
842
    static void yy_push_state (int new_state ,yyscan_t yyscanner);
843
 
844
    static void yy_pop_state (yyscan_t yyscanner );
845
 
846
    static int yy_top_state (yyscan_t yyscanner );
847
 
848
/* Amount of stuff to slurp up with each read. */
849
#ifndef YY_READ_BUF_SIZE
850
#define YY_READ_BUF_SIZE 8192
851
#endif
852
 
853
/* Copy whatever the last rule matched to the standard output. */
854
#ifndef ECHO
855
/* This used to be an fputs(), but since the string might contain NUL's,
856
 * we now use fwrite().
857
 */
858
#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
859
#endif
860
 
861
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
862
 * is returned in "result".
863
 */
864
#ifndef YY_INPUT
865
#define YY_INPUT(buf,result,max_size) \
866
	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
867
		{ \
868
		int c = '*'; \
869
		unsigned n; \
870
		for ( n = 0; n < max_size && \
871
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
872
			buf[n] = (char) c; \
873
		if ( c == '\n' ) \
874
			buf[n++] = (char) c; \
875
		if ( c == EOF && ferror( yyin ) ) \
876
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
877
		result = n; \
878
		} \
879
	else \
880
		{ \
881
		errno=0; \
882
		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
883
			{ \
884
			if( errno != EINTR) \
885
				{ \
886
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
887
				break; \
888
				} \
889
			errno=0; \
890
			clearerr(yyin); \
891
			} \
892
		}\
893
\
894
 
895
#endif
896
 
897
/* No semi-colon after return; correct usage is to write "yyterminate();" -
898
 * we don't want an extra ';' after the "return" because that will cause
899
 * some compilers to complain about unreachable statements.
900
 */
901
#ifndef yyterminate
902
#define yyterminate() return YY_NULL
903
#endif
904
 
905
/* Number of entries by which start-condition stack grows. */
906
#ifndef YY_START_STACK_INCR
907
#define YY_START_STACK_INCR 25
908
#endif
909
 
910
/* Report a fatal error. */
911
#ifndef YY_FATAL_ERROR
912
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
913
#endif
914
 
915
/* end tables serialization structures and prototypes */
916
 
917
/* Default declaration of generated scanner - a define so the user can
918
 * easily add parameters.
919
 */
920
#ifndef YY_DECL
921
#define YY_DECL_IS_OURS 1
922
 
923
extern int glcpp_lex \
924
               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
925
 
926
#define YY_DECL int glcpp_lex \
927
               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
928
#endif /* !YY_DECL */
929
 
930
/* Code executed at the beginning of each rule, after yytext and yyleng
931
 * have been set up.
932
 */
933
#ifndef YY_USER_ACTION
934
#define YY_USER_ACTION
935
#endif
936
 
937
/* Code executed at the end of each rule. */
938
#ifndef YY_BREAK
939
#define YY_BREAK break;
940
#endif
941
 
942
#define YY_RULE_SETUP \
943
	if ( yyleng > 0 ) \
944
		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
945
				(yytext[yyleng - 1] == '\n'); \
946
	YY_USER_ACTION
947
 
948
/** The main scanner function which does all the work.
949
 */
950
YY_DECL
951
{
952
	register yy_state_type yy_current_state;
953
	register char *yy_cp, *yy_bp;
954
	register int yy_act;
955
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
956
 
957
#line 76 "glcpp/glcpp-lex.l"
958
 
959
 
960
	/* Single-line comments */
961
#line 962 "glcpp/glcpp-lex.c"
962
 
963
    yylval = yylval_param;
964
 
965
    yylloc = yylloc_param;
966
 
967
	if ( !yyg->yy_init )
968
		{
969
		yyg->yy_init = 1;
970
 
971
#ifdef YY_USER_INIT
972
		YY_USER_INIT;
973
#endif
974
 
975
        /* Create the reject buffer large enough to save one state per allowed character. */
976
        if ( ! yyg->yy_state_buf )
977
            yyg->yy_state_buf = (yy_state_type *)glcpp_alloc(YY_STATE_BUF_SIZE  ,yyscanner);
978
            if ( ! yyg->yy_state_buf )
979
                YY_FATAL_ERROR( "out of dynamic memory in glcpp_lex()" );
980
 
981
		if ( ! yyg->yy_start )
982
			yyg->yy_start = 1;	/* first start state */
983
 
984
		if ( ! yyin )
985
			yyin = stdin;
986
 
987
		if ( ! yyout )
988
			yyout = stdout;
989
 
990
		if ( ! YY_CURRENT_BUFFER ) {
991
			glcpp_ensure_buffer_stack (yyscanner);
992
			YY_CURRENT_BUFFER_LVALUE =
993
				glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
994
		}
995
 
996
		glcpp__load_buffer_state(yyscanner );
997
		}
998
 
999
	while ( 1 )		/* loops until end-of-file is reached */
1000
		{
1001
		yy_cp = yyg->yy_c_buf_p;
1002
 
1003
		/* Support of yytext. */
1004
		*yy_cp = yyg->yy_hold_char;
1005
 
1006
		/* yy_bp points to the position in yy_ch_buf of the start of
1007
		 * the current run.
1008
		 */
1009
		yy_bp = yy_cp;
1010
 
1011
		yy_current_state = yyg->yy_start;
1012
		yy_current_state += YY_AT_BOL();
1013
 
1014
		yyg->yy_state_ptr = yyg->yy_state_buf;
1015
		*yyg->yy_state_ptr++ = yy_current_state;
1016
 
1017
yy_match:
1018
		do
1019
			{
1020
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1021
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1022
				{
1023
				yy_current_state = (int) yy_def[yy_current_state];
1024
				if ( yy_current_state >= 163 )
1025
					yy_c = yy_meta[(unsigned int) yy_c];
1026
				}
1027
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1028
			*yyg->yy_state_ptr++ = yy_current_state;
1029
			++yy_cp;
1030
			}
1031
		while ( yy_current_state != 162 );
1032
 
1033
yy_find_action:
1034
		yy_current_state = *--yyg->yy_state_ptr;
1035
		yyg->yy_lp = yy_accept[yy_current_state];
1036
find_rule: /* we branch to this label when backing up */
1037
		for ( ; ; ) /* until we find what rule we matched */
1038
			{
1039
			if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] )
1040
				{
1041
				yy_act = yy_acclist[yyg->yy_lp];
1042
				if ( yy_act & YY_TRAILING_HEAD_MASK ||
1043
				     yyg->yy_looking_for_trail_begin )
1044
					{
1045
					if ( yy_act == yyg->yy_looking_for_trail_begin )
1046
						{
1047
						yyg->yy_looking_for_trail_begin = 0;
1048
						yy_act &= ~YY_TRAILING_HEAD_MASK;
1049
						break;
1050
						}
1051
					}
1052
				else if ( yy_act & YY_TRAILING_MASK )
1053
					{
1054
					yyg->yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
1055
					yyg->yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
1056
					yyg->yy_full_match = yy_cp;
1057
					yyg->yy_full_state = yyg->yy_state_ptr;
1058
					yyg->yy_full_lp = yyg->yy_lp;
1059
					}
1060
				else
1061
					{
1062
					yyg->yy_full_match = yy_cp;
1063
					yyg->yy_full_state = yyg->yy_state_ptr;
1064
					yyg->yy_full_lp = yyg->yy_lp;
1065
					break;
1066
					}
1067
				++yyg->yy_lp;
1068
				goto find_rule;
1069
				}
1070
			--yy_cp;
1071
			yy_current_state = *--yyg->yy_state_ptr;
1072
			yyg->yy_lp = yy_accept[yy_current_state];
1073
			}
1074
 
1075
		YY_DO_BEFORE_ACTION;
1076
 
1077
do_action:	/* This label is used only to access EOF actions. */
1078
 
1079
		switch ( yy_act )
1080
	{ /* beginning of action switch */
1081
case 1:
1082
YY_RULE_SETUP
1083
#line 79 "glcpp/glcpp-lex.l"
1084
{
1085
}
1086
	YY_BREAK
1087
/* Multi-line comments */
1088
case 2:
1089
YY_RULE_SETUP
1090
#line 83 "glcpp/glcpp-lex.l"
1091
{ yy_push_state(COMMENT, yyscanner); }
1092
	YY_BREAK
1093
case 3:
1094
YY_RULE_SETUP
1095
#line 84 "glcpp/glcpp-lex.l"
1096
 
1097
	YY_BREAK
1098
case 4:
1099
/* rule 4 can match eol */
1100
YY_RULE_SETUP
1101
#line 85 "glcpp/glcpp-lex.l"
1102
{ yylineno++; yycolumn = 0; return NEWLINE; }
1103
	YY_BREAK
1104
case 5:
1105
YY_RULE_SETUP
1106
#line 86 "glcpp/glcpp-lex.l"
1107
 
1108
	YY_BREAK
1109
case 6:
1110
/* rule 6 can match eol */
1111
YY_RULE_SETUP
1112
#line 87 "glcpp/glcpp-lex.l"
1113
{ yylineno++; yycolumn = 0; return NEWLINE; }
1114
	YY_BREAK
1115
case 7:
1116
YY_RULE_SETUP
1117
#line 88 "glcpp/glcpp-lex.l"
1118
{
1119
	yy_pop_state(yyscanner);
1120
	if (yyextra->space_tokens)
1121
		return SPACE;
1122
}
1123
	YY_BREAK
1124
case 8:
1125
YY_RULE_SETUP
1126
#line 94 "glcpp/glcpp-lex.l"
1127
{
1128
	yylval->str = ralloc_strdup (yyextra, yytext);
1129
	yyextra->space_tokens = 0;
1130
	return HASH_VERSION;
1131
}
1132
	YY_BREAK
1133
/* glcpp doesn't handle #extension, #version, or #pragma directives.
1134
	 * Simply pass them through to the main compiler's lexer/parser. */
1135
case 9:
1136
YY_RULE_SETUP
1137
#line 102 "glcpp/glcpp-lex.l"
1138
{
1139
	yylval->str = ralloc_strdup (yyextra, yytext);
1140
	yylineno++;
1141
	yycolumn = 0;
1142
	return OTHER;
1143
}
1144
	YY_BREAK
1145
case 10:
1146
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1147
yyg->yy_c_buf_p = yy_cp -= 1;
1148
YY_DO_BEFORE_ACTION; /* set up yytext again */
1149
YY_RULE_SETUP
1150
#line 109 "glcpp/glcpp-lex.l"
1151
{
1152
	/* Eat characters until the first digit is
1153
	 * encountered
1154
	 */
1155
	char *ptr = yytext;
1156
	while (!isdigit(*ptr))
1157
		ptr++;
1158
 
1159
	/* Subtract one from the line number because
1160
	 * yylineno is zero-based instead of
1161
	 * one-based.
1162
	 */
1163
	yylineno = strtol(ptr, &ptr, 0) - 1;
1164
	yylloc->source = strtol(ptr, NULL, 0);
1165
}
1166
	YY_BREAK
1167
case 11:
1168
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1169
yyg->yy_c_buf_p = yy_cp -= 1;
1170
YY_DO_BEFORE_ACTION; /* set up yytext again */
1171
YY_RULE_SETUP
1172
#line 125 "glcpp/glcpp-lex.l"
1173
{
1174
	/* Eat characters until the first digit is
1175
	 * encountered
1176
	 */
1177
	char *ptr = yytext;
1178
	while (!isdigit(*ptr))
1179
		ptr++;
1180
 
1181
	/* Subtract one from the line number because
1182
	 * yylineno is zero-based instead of
1183
	 * one-based.
1184
	 */
1185
	yylineno = strtol(ptr, &ptr, 0) - 1;
1186
}
1187
	YY_BREAK
1188
case 12:
1189
/* rule 12 can match eol */
1190
YY_RULE_SETUP
1191
#line 140 "glcpp/glcpp-lex.l"
1192
{
1193
	yyextra->lexing_if = 1;
1194
	yyextra->space_tokens = 0;
1195
	return HASH_IFDEF;
1196
}
1197
	YY_BREAK
1198
case 13:
1199
/* rule 13 can match eol */
1200
YY_RULE_SETUP
1201
#line 146 "glcpp/glcpp-lex.l"
1202
{
1203
	yyextra->lexing_if = 1;
1204
	yyextra->space_tokens = 0;
1205
	return HASH_IFNDEF;
1206
}
1207
	YY_BREAK
1208
case 14:
1209
/* rule 14 can match eol */
1210
YY_RULE_SETUP
1211
#line 152 "glcpp/glcpp-lex.l"
1212
{
1213
	yyextra->lexing_if = 1;
1214
	yyextra->space_tokens = 0;
1215
	return HASH_IF;
1216
}
1217
	YY_BREAK
1218
case 15:
1219
/* rule 15 can match eol */
1220
YY_RULE_SETUP
1221
#line 158 "glcpp/glcpp-lex.l"
1222
{
1223
	yyextra->lexing_if = 1;
1224
	yyextra->space_tokens = 0;
1225
	return HASH_ELIF;
1226
}
1227
	YY_BREAK
1228
case 16:
1229
/* rule 16 can match eol */
1230
YY_RULE_SETUP
1231
#line 164 "glcpp/glcpp-lex.l"
1232
{
1233
	yyextra->space_tokens = 0;
1234
	return HASH_ELSE;
1235
}
1236
	YY_BREAK
1237
case 17:
1238
/* rule 17 can match eol */
1239
YY_RULE_SETUP
1240
#line 169 "glcpp/glcpp-lex.l"
1241
{
1242
	yyextra->space_tokens = 0;
1243
	return HASH_ENDIF;
1244
}
1245
	YY_BREAK
1246
/* When skipping (due to an #if 0 or similar) consume anything
1247
	 * up to a newline. We do this with less priority than any
1248
	 * #if-related directive (#if, #elif, #else, #endif), but with
1249
	 * more priority than any other directive or token to avoid
1250
	 * any side-effects from skipped content.
1251
	 *
1252
	 * We use the lexing_if flag to avoid skipping any part of an
1253
	 * if conditional expression. */
1254
case 18:
1255
/* rule 18 can match eol */
1256
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1257
yyg->yy_c_buf_p = yy_cp -= 1;
1258
YY_DO_BEFORE_ACTION; /* set up yytext again */
1259
YY_RULE_SETUP
1260
#line 182 "glcpp/glcpp-lex.l"
1261
{
1262
	/* Since this rule always matches, YY_USER_ACTION gets called for it,
1263
	 * wrongly incrementing yycolumn.  We undo that effect here. */
1264
	yycolumn -= yyleng;
1265
	if (yyextra->lexing_if ||
1266
	    yyextra->skip_stack == NULL ||
1267
	    yyextra->skip_stack->type == SKIP_NO_SKIP)
1268
	{
1269
		REJECT;
1270
	}
1271
}
1272
	YY_BREAK
1273
case 19:
1274
YY_RULE_SETUP
1275
#line 194 "glcpp/glcpp-lex.l"
1276
{
1277
	char *p;
1278
	for (p = yytext; !isalpha(p[0]); p++); /* skip "  #   " */
1279
	p += 5; /* skip "error" */
1280
	glcpp_error(yylloc, yyextra, "#error%s", p);
1281
}
1282
	YY_BREAK
1283
case 20:
1284
YY_RULE_SETUP
1285
#line 201 "glcpp/glcpp-lex.l"
1286
{
1287
	yyextra->space_tokens = 0;
1288
	return HASH_DEFINE_FUNC;
1289
}
1290
	YY_BREAK
1291
case 21:
1292
YY_RULE_SETUP
1293
#line 206 "glcpp/glcpp-lex.l"
1294
{
1295
	yyextra->space_tokens = 0;
1296
	return HASH_DEFINE_OBJ;
1297
}
1298
	YY_BREAK
1299
case 22:
1300
YY_RULE_SETUP
1301
#line 211 "glcpp/glcpp-lex.l"
1302
{
1303
	yyextra->space_tokens = 0;
1304
	return HASH_UNDEF;
1305
}
1306
	YY_BREAK
1307
case 23:
1308
YY_RULE_SETUP
1309
#line 216 "glcpp/glcpp-lex.l"
1310
{
1311
	yyextra->space_tokens = 0;
1312
	return HASH;
1313
}
1314
	YY_BREAK
1315
case 24:
1316
YY_RULE_SETUP
1317
#line 221 "glcpp/glcpp-lex.l"
1318
{
1319
	yylval->str = ralloc_strdup (yyextra, yytext);
1320
	return INTEGER_STRING;
1321
}
1322
	YY_BREAK
1323
case 25:
1324
YY_RULE_SETUP
1325
#line 226 "glcpp/glcpp-lex.l"
1326
{
1327
	yylval->str = ralloc_strdup (yyextra, yytext);
1328
	return INTEGER_STRING;
1329
}
1330
	YY_BREAK
1331
case 26:
1332
YY_RULE_SETUP
1333
#line 231 "glcpp/glcpp-lex.l"
1334
{
1335
	yylval->str = ralloc_strdup (yyextra, yytext);
1336
	return INTEGER_STRING;
1337
}
1338
	YY_BREAK
1339
case 27:
1340
YY_RULE_SETUP
1341
#line 236 "glcpp/glcpp-lex.l"
1342
{
1343
	return LEFT_SHIFT;
1344
}
1345
	YY_BREAK
1346
case 28:
1347
YY_RULE_SETUP
1348
#line 240 "glcpp/glcpp-lex.l"
1349
{
1350
	return RIGHT_SHIFT;
1351
}
1352
	YY_BREAK
1353
case 29:
1354
YY_RULE_SETUP
1355
#line 244 "glcpp/glcpp-lex.l"
1356
{
1357
	return LESS_OR_EQUAL;
1358
}
1359
	YY_BREAK
1360
case 30:
1361
YY_RULE_SETUP
1362
#line 248 "glcpp/glcpp-lex.l"
1363
{
1364
	return GREATER_OR_EQUAL;
1365
}
1366
	YY_BREAK
1367
case 31:
1368
YY_RULE_SETUP
1369
#line 252 "glcpp/glcpp-lex.l"
1370
{
1371
	return EQUAL;
1372
}
1373
	YY_BREAK
1374
case 32:
1375
YY_RULE_SETUP
1376
#line 256 "glcpp/glcpp-lex.l"
1377
{
1378
	return NOT_EQUAL;
1379
}
1380
	YY_BREAK
1381
case 33:
1382
YY_RULE_SETUP
1383
#line 260 "glcpp/glcpp-lex.l"
1384
{
1385
	return AND;
1386
}
1387
	YY_BREAK
1388
case 34:
1389
YY_RULE_SETUP
1390
#line 264 "glcpp/glcpp-lex.l"
1391
{
1392
	return OR;
1393
}
1394
	YY_BREAK
1395
case 35:
1396
YY_RULE_SETUP
1397
#line 268 "glcpp/glcpp-lex.l"
1398
{
1399
	return PASTE;
1400
}
1401
	YY_BREAK
1402
case 36:
1403
YY_RULE_SETUP
1404
#line 272 "glcpp/glcpp-lex.l"
1405
{
1406
	return DEFINED;
1407
}
1408
	YY_BREAK
1409
case 37:
1410
YY_RULE_SETUP
1411
#line 276 "glcpp/glcpp-lex.l"
1412
{
1413
	yylval->str = ralloc_strdup (yyextra, yytext);
1414
	return IDENTIFIER;
1415
}
1416
	YY_BREAK
1417
case 38:
1418
YY_RULE_SETUP
1419
#line 281 "glcpp/glcpp-lex.l"
1420
{
1421
	return yytext[0];
1422
}
1423
	YY_BREAK
1424
case 39:
1425
YY_RULE_SETUP
1426
#line 285 "glcpp/glcpp-lex.l"
1427
{
1428
	yylval->str = ralloc_strdup (yyextra, yytext);
1429
	return OTHER;
1430
}
1431
	YY_BREAK
1432
case 40:
1433
YY_RULE_SETUP
1434
#line 290 "glcpp/glcpp-lex.l"
1435
{
1436
	if (yyextra->space_tokens) {
1437
		return SPACE;
1438
	}
1439
}
1440
	YY_BREAK
1441
case 41:
1442
/* rule 41 can match eol */
1443
YY_RULE_SETUP
1444
#line 296 "glcpp/glcpp-lex.l"
1445
{
1446
	yyextra->lexing_if = 0;
1447
	yylineno++;
1448
	yycolumn = 0;
1449
	return NEWLINE;
1450
}
1451
	YY_BREAK
1452
/* Handle missing newline at EOF. */
1453
case YY_STATE_EOF(INITIAL):
1454
#line 304 "glcpp/glcpp-lex.l"
1455
{
1456
	BEGIN DONE; /* Don't keep matching this rule forever. */
1457
	yyextra->lexing_if = 0;
1458
	return NEWLINE;
1459
}
1460
	YY_BREAK
1461
/* We don't actually use the UNREACHABLE start condition. We
1462
	only have this action here so that we can pretend to call some
1463
	generated functions, (to avoid "defined but not used"
1464
	warnings. */
1465
case 42:
1466
YY_RULE_SETUP
1467
#line 314 "glcpp/glcpp-lex.l"
1468
{
1469
	unput('.');
1470
	yy_top_state(yyextra);
1471
}
1472
	YY_BREAK
1473
case 43:
1474
YY_RULE_SETUP
1475
#line 319 "glcpp/glcpp-lex.l"
1476
ECHO;
1477
	YY_BREAK
1478
#line 1479 "glcpp/glcpp-lex.c"
1479
			case YY_STATE_EOF(DONE):
1480
			case YY_STATE_EOF(COMMENT):
1481
			case YY_STATE_EOF(UNREACHABLE):
1482
				yyterminate();
1483
 
1484
	case YY_END_OF_BUFFER:
1485
		{
1486
		/* Amount of text matched not including the EOB char. */
1487
		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1488
 
1489
		/* Undo the effects of YY_DO_BEFORE_ACTION. */
1490
		*yy_cp = yyg->yy_hold_char;
1491
		YY_RESTORE_YY_MORE_OFFSET
1492
 
1493
		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1494
			{
1495
			/* We're scanning a new file or input source.  It's
1496
			 * possible that this happened because the user
1497
			 * just pointed yyin at a new source and called
1498
			 * glcpp_lex().  If so, then we have to assure
1499
			 * consistency between YY_CURRENT_BUFFER and our
1500
			 * globals.  Here is the right place to do so, because
1501
			 * this is the first action (other than possibly a
1502
			 * back-up) that will match for the new input source.
1503
			 */
1504
			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1505
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1506
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1507
			}
1508
 
1509
		/* Note that here we test for yy_c_buf_p "<=" to the position
1510
		 * of the first EOB in the buffer, since yy_c_buf_p will
1511
		 * already have been incremented past the NUL character
1512
		 * (since all states make transitions on EOB to the
1513
		 * end-of-buffer state).  Contrast this with the test
1514
		 * in input().
1515
		 */
1516
		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1517
			{ /* This was really a NUL. */
1518
			yy_state_type yy_next_state;
1519
 
1520
			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1521
 
1522
			yy_current_state = yy_get_previous_state( yyscanner );
1523
 
1524
			/* Okay, we're now positioned to make the NUL
1525
			 * transition.  We couldn't have
1526
			 * yy_get_previous_state() go ahead and do it
1527
			 * for us because it doesn't know how to deal
1528
			 * with the possibility of jamming (and we don't
1529
			 * want to build jamming into it because then it
1530
			 * will run more slowly).
1531
			 */
1532
 
1533
			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1534
 
1535
			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1536
 
1537
			if ( yy_next_state )
1538
				{
1539
				/* Consume the NUL. */
1540
				yy_cp = ++yyg->yy_c_buf_p;
1541
				yy_current_state = yy_next_state;
1542
				goto yy_match;
1543
				}
1544
 
1545
			else
1546
				{
1547
				yy_cp = yyg->yy_c_buf_p;
1548
				goto yy_find_action;
1549
				}
1550
			}
1551
 
1552
		else switch ( yy_get_next_buffer( yyscanner ) )
1553
			{
1554
			case EOB_ACT_END_OF_FILE:
1555
				{
1556
				yyg->yy_did_buffer_switch_on_eof = 0;
1557
 
1558
				if ( glcpp_wrap(yyscanner ) )
1559
					{
1560
					/* Note: because we've taken care in
1561
					 * yy_get_next_buffer() to have set up
1562
					 * yytext, we can now set up
1563
					 * yy_c_buf_p so that if some total
1564
					 * hoser (like flex itself) wants to
1565
					 * call the scanner after we return the
1566
					 * YY_NULL, it'll still work - another
1567
					 * YY_NULL will get returned.
1568
					 */
1569
					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1570
 
1571
					yy_act = YY_STATE_EOF(YY_START);
1572
					goto do_action;
1573
					}
1574
 
1575
				else
1576
					{
1577
					if ( ! yyg->yy_did_buffer_switch_on_eof )
1578
						YY_NEW_FILE;
1579
					}
1580
				break;
1581
				}
1582
 
1583
			case EOB_ACT_CONTINUE_SCAN:
1584
				yyg->yy_c_buf_p =
1585
					yyg->yytext_ptr + yy_amount_of_matched_text;
1586
 
1587
				yy_current_state = yy_get_previous_state( yyscanner );
1588
 
1589
				yy_cp = yyg->yy_c_buf_p;
1590
				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1591
				goto yy_match;
1592
 
1593
			case EOB_ACT_LAST_MATCH:
1594
				yyg->yy_c_buf_p =
1595
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1596
 
1597
				yy_current_state = yy_get_previous_state( yyscanner );
1598
 
1599
				yy_cp = yyg->yy_c_buf_p;
1600
				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1601
				goto yy_find_action;
1602
			}
1603
		break;
1604
		}
1605
 
1606
	default:
1607
		YY_FATAL_ERROR(
1608
			"fatal flex scanner internal error--no action found" );
1609
	} /* end of action switch */
1610
		} /* end of scanning one token */
1611
} /* end of glcpp_lex */
1612
 
1613
/* yy_get_next_buffer - try to read in a new buffer
1614
 *
1615
 * Returns a code representing an action:
1616
 *	EOB_ACT_LAST_MATCH -
1617
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1618
 *	EOB_ACT_END_OF_FILE - end of file
1619
 */
1620
static int yy_get_next_buffer (yyscan_t yyscanner)
1621
{
1622
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1623
	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1624
	register char *source = yyg->yytext_ptr;
1625
	register int number_to_move, i;
1626
	int ret_val;
1627
 
1628
	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1629
		YY_FATAL_ERROR(
1630
		"fatal flex scanner internal error--end of buffer missed" );
1631
 
1632
	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1633
		{ /* Don't try to fill the buffer, so this is an EOF. */
1634
		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1635
			{
1636
			/* We matched a single character, the EOB, so
1637
			 * treat this as a final EOF.
1638
			 */
1639
			return EOB_ACT_END_OF_FILE;
1640
			}
1641
 
1642
		else
1643
			{
1644
			/* We matched some text prior to the EOB, first
1645
			 * process it.
1646
			 */
1647
			return EOB_ACT_LAST_MATCH;
1648
			}
1649
		}
1650
 
1651
	/* Try to read more data. */
1652
 
1653
	/* First move last chars to start of buffer. */
1654
	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1655
 
1656
	for ( i = 0; i < number_to_move; ++i )
1657
		*(dest++) = *(source++);
1658
 
1659
	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1660
		/* don't do the read, it's not guaranteed to return an EOF,
1661
		 * just force an EOF
1662
		 */
1663
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1664
 
1665
	else
1666
		{
1667
			int num_to_read =
1668
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1669
 
1670
		while ( num_to_read <= 0 )
1671
			{ /* Not enough room in the buffer - grow it. */
1672
 
1673
			YY_FATAL_ERROR(
1674
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1675
 
1676
			}
1677
 
1678
		if ( num_to_read > YY_READ_BUF_SIZE )
1679
			num_to_read = YY_READ_BUF_SIZE;
1680
 
1681
		/* Read in more data. */
1682
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1683
			yyg->yy_n_chars, (size_t) num_to_read );
1684
 
1685
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1686
		}
1687
 
1688
	if ( yyg->yy_n_chars == 0 )
1689
		{
1690
		if ( number_to_move == YY_MORE_ADJ )
1691
			{
1692
			ret_val = EOB_ACT_END_OF_FILE;
1693
			glcpp_restart(yyin  ,yyscanner);
1694
			}
1695
 
1696
		else
1697
			{
1698
			ret_val = EOB_ACT_LAST_MATCH;
1699
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1700
				YY_BUFFER_EOF_PENDING;
1701
			}
1702
		}
1703
 
1704
	else
1705
		ret_val = EOB_ACT_CONTINUE_SCAN;
1706
 
1707
	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1708
		/* Extend the array by 50%, plus the number we really need. */
1709
		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1710
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) glcpp_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
1711
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1712
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1713
	}
1714
 
1715
	yyg->yy_n_chars += number_to_move;
1716
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1717
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1718
 
1719
	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1720
 
1721
	return ret_val;
1722
}
1723
 
1724
/* yy_get_previous_state - get the state just before the EOB char was reached */
1725
 
1726
    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1727
{
1728
	register yy_state_type yy_current_state;
1729
	register char *yy_cp;
1730
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1731
 
1732
	yy_current_state = yyg->yy_start;
1733
	yy_current_state += YY_AT_BOL();
1734
 
1735
	yyg->yy_state_ptr = yyg->yy_state_buf;
1736
	*yyg->yy_state_ptr++ = yy_current_state;
1737
 
1738
	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1739
		{
1740
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1741
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1742
			{
1743
			yy_current_state = (int) yy_def[yy_current_state];
1744
			if ( yy_current_state >= 163 )
1745
				yy_c = yy_meta[(unsigned int) yy_c];
1746
			}
1747
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1748
		*yyg->yy_state_ptr++ = yy_current_state;
1749
		}
1750
 
1751
	return yy_current_state;
1752
}
1753
 
1754
/* yy_try_NUL_trans - try to make a transition on the NUL character
1755
 *
1756
 * synopsis
1757
 *	next_state = yy_try_NUL_trans( current_state );
1758
 */
1759
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
1760
{
1761
	register int yy_is_jam;
1762
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
1763
 
1764
	register YY_CHAR yy_c = 1;
1765
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1766
		{
1767
		yy_current_state = (int) yy_def[yy_current_state];
1768
		if ( yy_current_state >= 163 )
1769
			yy_c = yy_meta[(unsigned int) yy_c];
1770
		}
1771
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1772
	yy_is_jam = (yy_current_state == 162);
1773
	if ( ! yy_is_jam )
1774
		*yyg->yy_state_ptr++ = yy_current_state;
1775
 
1776
	return yy_is_jam ? 0 : yy_current_state;
1777
}
1778
 
1779
    static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
1780
{
1781
	register char *yy_cp;
1782
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1783
 
1784
    yy_cp = yyg->yy_c_buf_p;
1785
 
1786
	/* undo effects of setting up yytext */
1787
	*yy_cp = yyg->yy_hold_char;
1788
 
1789
	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1790
		{ /* need to shift things up to make room */
1791
		/* +2 for EOB chars. */
1792
		register int number_to_move = yyg->yy_n_chars + 2;
1793
		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1794
					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1795
		register char *source =
1796
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1797
 
1798
		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1799
			*--dest = *--source;
1800
 
1801
		yy_cp += (int) (dest - source);
1802
		yy_bp += (int) (dest - source);
1803
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1804
			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1805
 
1806
		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1807
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
1808
		}
1809
 
1810
	*--yy_cp = (char) c;
1811
 
1812
	yyg->yytext_ptr = yy_bp;
1813
	yyg->yy_hold_char = *yy_cp;
1814
	yyg->yy_c_buf_p = yy_cp;
1815
}
1816
 
1817
#ifndef YY_NO_INPUT
1818
#ifdef __cplusplus
1819
    static int yyinput (yyscan_t yyscanner)
1820
#else
1821
    static int input  (yyscan_t yyscanner)
1822
#endif
1823
 
1824
{
1825
	int c;
1826
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1827
 
1828
	*yyg->yy_c_buf_p = yyg->yy_hold_char;
1829
 
1830
	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1831
		{
1832
		/* yy_c_buf_p now points to the character we want to return.
1833
		 * If this occurs *before* the EOB characters, then it's a
1834
		 * valid NUL; if not, then we've hit the end of the buffer.
1835
		 */
1836
		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1837
			/* This was really a NUL. */
1838
			*yyg->yy_c_buf_p = '\0';
1839
 
1840
		else
1841
			{ /* need more input */
1842
			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
1843
			++yyg->yy_c_buf_p;
1844
 
1845
			switch ( yy_get_next_buffer( yyscanner ) )
1846
				{
1847
				case EOB_ACT_LAST_MATCH:
1848
					/* This happens because yy_g_n_b()
1849
					 * sees that we've accumulated a
1850
					 * token and flags that we need to
1851
					 * try matching the token before
1852
					 * proceeding.  But for input(),
1853
					 * there's no matching to consider.
1854
					 * So convert the EOB_ACT_LAST_MATCH
1855
					 * to EOB_ACT_END_OF_FILE.
1856
					 */
1857
 
1858
					/* Reset buffer status. */
1859
					glcpp_restart(yyin ,yyscanner);
1860
 
1861
					/*FALLTHROUGH*/
1862
 
1863
				case EOB_ACT_END_OF_FILE:
1864
					{
1865
					if ( glcpp_wrap(yyscanner ) )
1866
						return EOF;
1867
 
1868
					if ( ! yyg->yy_did_buffer_switch_on_eof )
1869
						YY_NEW_FILE;
1870
#ifdef __cplusplus
1871
					return yyinput(yyscanner);
1872
#else
1873
					return input(yyscanner);
1874
#endif
1875
					}
1876
 
1877
				case EOB_ACT_CONTINUE_SCAN:
1878
					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
1879
					break;
1880
				}
1881
			}
1882
		}
1883
 
1884
	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
1885
	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
1886
	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
1887
 
1888
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
1889
 
1890
	return c;
1891
}
1892
#endif	/* ifndef YY_NO_INPUT */
1893
 
1894
/** Immediately switch to a different input stream.
1895
 * @param input_file A readable stream.
1896
 * @param yyscanner The scanner object.
1897
 * @note This function does not reset the start condition to @c INITIAL .
1898
 */
1899
    void glcpp_restart  (FILE * input_file , yyscan_t yyscanner)
1900
{
1901
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1902
 
1903
	if ( ! YY_CURRENT_BUFFER ){
1904
        glcpp_ensure_buffer_stack (yyscanner);
1905
		YY_CURRENT_BUFFER_LVALUE =
1906
            glcpp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1907
	}
1908
 
1909
	glcpp__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
1910
	glcpp__load_buffer_state(yyscanner );
1911
}
1912
 
1913
/** Switch to a different input buffer.
1914
 * @param new_buffer The new input buffer.
1915
 * @param yyscanner The scanner object.
1916
 */
1917
    void glcpp__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
1918
{
1919
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1920
 
1921
	/* TODO. We should be able to replace this entire function body
1922
	 * with
1923
	 *		glcpp_pop_buffer_state();
1924
	 *		glcpp_push_buffer_state(new_buffer);
1925
     */
1926
	glcpp_ensure_buffer_stack (yyscanner);
1927
	if ( YY_CURRENT_BUFFER == new_buffer )
1928
		return;
1929
 
1930
	if ( YY_CURRENT_BUFFER )
1931
		{
1932
		/* Flush out information for old buffer. */
1933
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1934
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1935
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1936
		}
1937
 
1938
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
1939
	glcpp__load_buffer_state(yyscanner );
1940
 
1941
	/* We don't actually know whether we did this switch during
1942
	 * EOF (glcpp_wrap()) processing, but the only time this flag
1943
	 * is looked at is after glcpp_wrap() is called, so it's safe
1944
	 * to go ahead and always set it.
1945
	 */
1946
	yyg->yy_did_buffer_switch_on_eof = 1;
1947
}
1948
 
1949
static void glcpp__load_buffer_state  (yyscan_t yyscanner)
1950
{
1951
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1952
	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1953
	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1954
	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1955
	yyg->yy_hold_char = *yyg->yy_c_buf_p;
1956
}
1957
 
1958
/** Allocate and initialize an input buffer state.
1959
 * @param file A readable stream.
1960
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1961
 * @param yyscanner The scanner object.
1962
 * @return the allocated buffer state.
1963
 */
1964
    YY_BUFFER_STATE glcpp__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
1965
{
1966
	YY_BUFFER_STATE b;
1967
 
1968
	b = (YY_BUFFER_STATE) glcpp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1969
	if ( ! b )
1970
		YY_FATAL_ERROR( "out of dynamic memory in glcpp__create_buffer()" );
1971
 
1972
	b->yy_buf_size = size;
1973
 
1974
	/* yy_ch_buf has to be 2 characters longer than the size given because
1975
	 * we need to put in 2 end-of-buffer characters.
1976
	 */
1977
	b->yy_ch_buf = (char *) glcpp_alloc(b->yy_buf_size + 2 ,yyscanner );
1978
	if ( ! b->yy_ch_buf )
1979
		YY_FATAL_ERROR( "out of dynamic memory in glcpp__create_buffer()" );
1980
 
1981
	b->yy_is_our_buffer = 1;
1982
 
1983
	glcpp__init_buffer(b,file ,yyscanner);
1984
 
1985
	return b;
1986
}
1987
 
1988
/** Destroy the buffer.
1989
 * @param b a buffer created with glcpp__create_buffer()
1990
 * @param yyscanner The scanner object.
1991
 */
1992
    void glcpp__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1993
{
1994
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1995
 
1996
	if ( ! b )
1997
		return;
1998
 
1999
	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2000
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2001
 
2002
	if ( b->yy_is_our_buffer )
2003
		glcpp_free((void *) b->yy_ch_buf ,yyscanner );
2004
 
2005
	glcpp_free((void *) b ,yyscanner );
2006
}
2007
 
2008
/* Initializes or reinitializes a buffer.
2009
 * This function is sometimes called more than once on the same buffer,
2010
 * such as during a glcpp_restart() or at EOF.
2011
 */
2012
    static void glcpp__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2013
 
2014
{
2015
	int oerrno = errno;
2016
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2017
 
2018
	glcpp__flush_buffer(b ,yyscanner);
2019
 
2020
	b->yy_input_file = file;
2021
	b->yy_fill_buffer = 1;
2022
 
2023
    /* If b is the current buffer, then glcpp__init_buffer was _probably_
2024
     * called from glcpp_restart() or through yy_get_next_buffer.
2025
     * In that case, we don't want to reset the lineno or column.
2026
     */
2027
    if (b != YY_CURRENT_BUFFER){
2028
        b->yy_bs_lineno = 1;
2029
        b->yy_bs_column = 0;
2030
    }
2031
 
2032
        b->yy_is_interactive = 0;
2033
 
2034
	errno = oerrno;
2035
}
2036
 
2037
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2038
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2039
 * @param yyscanner The scanner object.
2040
 */
2041
    void glcpp__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2042
{
2043
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2044
	if ( ! b )
2045
		return;
2046
 
2047
	b->yy_n_chars = 0;
2048
 
2049
	/* We always need two end-of-buffer characters.  The first causes
2050
	 * a transition to the end-of-buffer state.  The second causes
2051
	 * a jam in that state.
2052
	 */
2053
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2054
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2055
 
2056
	b->yy_buf_pos = &b->yy_ch_buf[0];
2057
 
2058
	b->yy_at_bol = 1;
2059
	b->yy_buffer_status = YY_BUFFER_NEW;
2060
 
2061
	if ( b == YY_CURRENT_BUFFER )
2062
		glcpp__load_buffer_state(yyscanner );
2063
}
2064
 
2065
/** Pushes the new state onto the stack. The new state becomes
2066
 *  the current state. This function will allocate the stack
2067
 *  if necessary.
2068
 *  @param new_buffer The new state.
2069
 *  @param yyscanner The scanner object.
2070
 */
2071
void glcpp_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2072
{
2073
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2074
	if (new_buffer == NULL)
2075
		return;
2076
 
2077
	glcpp_ensure_buffer_stack(yyscanner);
2078
 
2079
	/* This block is copied from glcpp__switch_to_buffer. */
2080
	if ( YY_CURRENT_BUFFER )
2081
		{
2082
		/* Flush out information for old buffer. */
2083
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
2084
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2085
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2086
		}
2087
 
2088
	/* Only push if top exists. Otherwise, replace top. */
2089
	if (YY_CURRENT_BUFFER)
2090
		yyg->yy_buffer_stack_top++;
2091
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
2092
 
2093
	/* copied from glcpp__switch_to_buffer. */
2094
	glcpp__load_buffer_state(yyscanner );
2095
	yyg->yy_did_buffer_switch_on_eof = 1;
2096
}
2097
 
2098
/** Removes and deletes the top of the stack, if present.
2099
 *  The next element becomes the new top.
2100
 *  @param yyscanner The scanner object.
2101
 */
2102
void glcpp_pop_buffer_state (yyscan_t yyscanner)
2103
{
2104
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2105
	if (!YY_CURRENT_BUFFER)
2106
		return;
2107
 
2108
	glcpp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2109
	YY_CURRENT_BUFFER_LVALUE = NULL;
2110
	if (yyg->yy_buffer_stack_top > 0)
2111
		--yyg->yy_buffer_stack_top;
2112
 
2113
	if (YY_CURRENT_BUFFER) {
2114
		glcpp__load_buffer_state(yyscanner );
2115
		yyg->yy_did_buffer_switch_on_eof = 1;
2116
	}
2117
}
2118
 
2119
/* Allocates the stack if it does not exist.
2120
 *  Guarantees space for at least one push.
2121
 */
2122
static void glcpp_ensure_buffer_stack (yyscan_t yyscanner)
2123
{
2124
	int num_to_alloc;
2125
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2126
 
2127
	if (!yyg->yy_buffer_stack) {
2128
 
2129
		/* First allocation is just for 2 elements, since we don't know if this
2130
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2131
		 * immediate realloc on the next call.
2132
         */
2133
		num_to_alloc = 1;
2134
		yyg->yy_buffer_stack = (struct yy_buffer_state**)glcpp_alloc
2135
								(num_to_alloc * sizeof(struct yy_buffer_state*)
2136
								, yyscanner);
2137
		if ( ! yyg->yy_buffer_stack )
2138
			YY_FATAL_ERROR( "out of dynamic memory in glcpp_ensure_buffer_stack()" );
2139
 
2140
		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2141
 
2142
		yyg->yy_buffer_stack_max = num_to_alloc;
2143
		yyg->yy_buffer_stack_top = 0;
2144
		return;
2145
	}
2146
 
2147
	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2148
 
2149
		/* Increase the buffer to prepare for a possible push. */
2150
		int grow_size = 8 /* arbitrary grow size */;
2151
 
2152
		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2153
		yyg->yy_buffer_stack = (struct yy_buffer_state**)glcpp_realloc
2154
								(yyg->yy_buffer_stack,
2155
								num_to_alloc * sizeof(struct yy_buffer_state*)
2156
								, yyscanner);
2157
		if ( ! yyg->yy_buffer_stack )
2158
			YY_FATAL_ERROR( "out of dynamic memory in glcpp_ensure_buffer_stack()" );
2159
 
2160
		/* zero only the new slots.*/
2161
		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2162
		yyg->yy_buffer_stack_max = num_to_alloc;
2163
	}
2164
}
2165
 
2166
/** Setup the input buffer state to scan directly from a user-specified character buffer.
2167
 * @param base the character buffer
2168
 * @param size the size in bytes of the character buffer
2169
 * @param yyscanner The scanner object.
2170
 * @return the newly allocated buffer state object.
2171
 */
2172
YY_BUFFER_STATE glcpp__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2173
{
2174
	YY_BUFFER_STATE b;
2175
 
2176
	if ( size < 2 ||
2177
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
2178
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
2179
		/* They forgot to leave room for the EOB's. */
2180
		return 0;
2181
 
2182
	b = (YY_BUFFER_STATE) glcpp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2183
	if ( ! b )
2184
		YY_FATAL_ERROR( "out of dynamic memory in glcpp__scan_buffer()" );
2185
 
2186
	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
2187
	b->yy_buf_pos = b->yy_ch_buf = base;
2188
	b->yy_is_our_buffer = 0;
2189
	b->yy_input_file = 0;
2190
	b->yy_n_chars = b->yy_buf_size;
2191
	b->yy_is_interactive = 0;
2192
	b->yy_at_bol = 1;
2193
	b->yy_fill_buffer = 0;
2194
	b->yy_buffer_status = YY_BUFFER_NEW;
2195
 
2196
	glcpp__switch_to_buffer(b ,yyscanner );
2197
 
2198
	return b;
2199
}
2200
 
2201
/** Setup the input buffer state to scan a string. The next call to glcpp_lex() will
2202
 * scan from a @e copy of @a str.
2203
 * @param yystr a NUL-terminated string to scan
2204
 * @param yyscanner The scanner object.
2205
 * @return the newly allocated buffer state object.
2206
 * @note If you want to scan bytes that may contain NUL values, then use
2207
 *       glcpp__scan_bytes() instead.
2208
 */
2209
YY_BUFFER_STATE glcpp__scan_string (yyconst char * yystr , yyscan_t yyscanner)
2210
{
2211
 
2212
	return glcpp__scan_bytes(yystr,strlen(yystr) ,yyscanner);
2213
}
2214
 
2215
/** Setup the input buffer state to scan the given bytes. The next call to glcpp_lex() will
2216
 * scan from a @e copy of @a bytes.
2217
 * @param bytes the byte buffer to scan
2218
 * @param len the number of bytes in the buffer pointed to by @a bytes.
2219
 * @param yyscanner The scanner object.
2220
 * @return the newly allocated buffer state object.
2221
 */
2222
YY_BUFFER_STATE glcpp__scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
2223
{
2224
	YY_BUFFER_STATE b;
2225
	char *buf;
2226
	yy_size_t n;
2227
	int i;
2228
 
2229
	/* Get memory for full buffer, including space for trailing EOB's. */
2230
	n = _yybytes_len + 2;
2231
	buf = (char *) glcpp_alloc(n ,yyscanner );
2232
	if ( ! buf )
2233
		YY_FATAL_ERROR( "out of dynamic memory in glcpp__scan_bytes()" );
2234
 
2235
	for ( i = 0; i < _yybytes_len; ++i )
2236
		buf[i] = yybytes[i];
2237
 
2238
	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2239
 
2240
	b = glcpp__scan_buffer(buf,n ,yyscanner);
2241
	if ( ! b )
2242
		YY_FATAL_ERROR( "bad buffer in glcpp__scan_bytes()" );
2243
 
2244
	/* It's okay to grow etc. this buffer, and we should throw it
2245
	 * away when we're done.
2246
	 */
2247
	b->yy_is_our_buffer = 1;
2248
 
2249
	return b;
2250
}
2251
 
2252
    static void yy_push_state (int  new_state , yyscan_t yyscanner)
2253
{
2254
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2255
	if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
2256
		{
2257
		yy_size_t new_size;
2258
 
2259
		yyg->yy_start_stack_depth += YY_START_STACK_INCR;
2260
		new_size = yyg->yy_start_stack_depth * sizeof( int );
2261
 
2262
		if ( ! yyg->yy_start_stack )
2263
			yyg->yy_start_stack = (int *) glcpp_alloc(new_size ,yyscanner );
2264
 
2265
		else
2266
			yyg->yy_start_stack = (int *) glcpp_realloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
2267
 
2268
		if ( ! yyg->yy_start_stack )
2269
			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
2270
		}
2271
 
2272
	yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
2273
 
2274
	BEGIN(new_state);
2275
}
2276
 
2277
    static void yy_pop_state  (yyscan_t yyscanner)
2278
{
2279
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2280
	if ( --yyg->yy_start_stack_ptr < 0 )
2281
		YY_FATAL_ERROR( "start-condition stack underflow" );
2282
 
2283
	BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
2284
}
2285
 
2286
    static int yy_top_state  (yyscan_t yyscanner)
2287
{
2288
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2289
	return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
2290
}
2291
 
2292
#ifndef YY_EXIT_FAILURE
2293
#define YY_EXIT_FAILURE 2
2294
#endif
2295
 
2296
static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2297
{
2298
    	(void) fprintf( stderr, "%s\n", msg );
2299
	exit( YY_EXIT_FAILURE );
2300
}
2301
 
2302
/* Redefine yyless() so it works in section 3 code. */
2303
 
2304
#undef yyless
2305
#define yyless(n) \
2306
	do \
2307
		{ \
2308
		/* Undo effects of setting up yytext. */ \
2309
        int yyless_macro_arg = (n); \
2310
        YY_LESS_LINENO(yyless_macro_arg);\
2311
		yytext[yyleng] = yyg->yy_hold_char; \
2312
		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2313
		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2314
		*yyg->yy_c_buf_p = '\0'; \
2315
		yyleng = yyless_macro_arg; \
2316
		} \
2317
	while ( 0 )
2318
 
2319
/* Accessor  methods (get/set functions) to struct members. */
2320
 
2321
/** Get the user-defined data for this scanner.
2322
 * @param yyscanner The scanner object.
2323
 */
2324
YY_EXTRA_TYPE glcpp_get_extra  (yyscan_t yyscanner)
2325
{
2326
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2327
    return yyextra;
2328
}
2329
 
2330
/** Get the current line number.
2331
 * @param yyscanner The scanner object.
2332
 */
2333
int glcpp_get_lineno  (yyscan_t yyscanner)
2334
{
2335
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2336
 
2337
        if (! YY_CURRENT_BUFFER)
2338
            return 0;
2339
 
2340
    return yylineno;
2341
}
2342
 
2343
/** Get the current column number.
2344
 * @param yyscanner The scanner object.
2345
 */
2346
int glcpp_get_column  (yyscan_t yyscanner)
2347
{
2348
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2349
 
2350
        if (! YY_CURRENT_BUFFER)
2351
            return 0;
2352
 
2353
    return yycolumn;
2354
}
2355
 
2356
/** Get the input stream.
2357
 * @param yyscanner The scanner object.
2358
 */
2359
FILE *glcpp_get_in  (yyscan_t yyscanner)
2360
{
2361
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2362
    return yyin;
2363
}
2364
 
2365
/** Get the output stream.
2366
 * @param yyscanner The scanner object.
2367
 */
2368
FILE *glcpp_get_out  (yyscan_t yyscanner)
2369
{
2370
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2371
    return yyout;
2372
}
2373
 
2374
/** Get the length of the current token.
2375
 * @param yyscanner The scanner object.
2376
 */
2377
int glcpp_get_leng  (yyscan_t yyscanner)
2378
{
2379
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2380
    return yyleng;
2381
}
2382
 
2383
/** Get the current token.
2384
 * @param yyscanner The scanner object.
2385
 */
2386
 
2387
char *glcpp_get_text  (yyscan_t yyscanner)
2388
{
2389
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2390
    return yytext;
2391
}
2392
 
2393
/** Set the user-defined data. This data is never touched by the scanner.
2394
 * @param user_defined The data to be associated with this scanner.
2395
 * @param yyscanner The scanner object.
2396
 */
2397
void glcpp_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2398
{
2399
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2400
    yyextra = user_defined ;
2401
}
2402
 
2403
/** Set the current line number.
2404
 * @param line_number
2405
 * @param yyscanner The scanner object.
2406
 */
2407
void glcpp_set_lineno (int  line_number , yyscan_t yyscanner)
2408
{
2409
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2410
 
2411
        /* lineno is only valid if an input buffer exists. */
2412
        if (! YY_CURRENT_BUFFER )
2413
           yy_fatal_error( "glcpp_set_lineno called with no buffer" , yyscanner);
2414
 
2415
    yylineno = line_number;
2416
}
2417
 
2418
/** Set the current column.
2419
 * @param line_number
2420
 * @param yyscanner The scanner object.
2421
 */
2422
void glcpp_set_column (int  column_no , yyscan_t yyscanner)
2423
{
2424
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2425
 
2426
        /* column is only valid if an input buffer exists. */
2427
        if (! YY_CURRENT_BUFFER )
2428
           yy_fatal_error( "glcpp_set_column called with no buffer" , yyscanner);
2429
 
2430
    yycolumn = column_no;
2431
}
2432
 
2433
/** Set the input stream. This does not discard the current
2434
 * input buffer.
2435
 * @param in_str A readable stream.
2436
 * @param yyscanner The scanner object.
2437
 * @see glcpp__switch_to_buffer
2438
 */
2439
void glcpp_set_in (FILE *  in_str , yyscan_t yyscanner)
2440
{
2441
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2442
    yyin = in_str ;
2443
}
2444
 
2445
void glcpp_set_out (FILE *  out_str , yyscan_t yyscanner)
2446
{
2447
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2448
    yyout = out_str ;
2449
}
2450
 
2451
int glcpp_get_debug  (yyscan_t yyscanner)
2452
{
2453
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2454
    return yy_flex_debug;
2455
}
2456
 
2457
void glcpp_set_debug (int  bdebug , yyscan_t yyscanner)
2458
{
2459
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2460
    yy_flex_debug = bdebug ;
2461
}
2462
 
2463
/* Accessor methods for yylval and yylloc */
2464
 
2465
YYSTYPE * glcpp_get_lval  (yyscan_t yyscanner)
2466
{
2467
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2468
    return yylval;
2469
}
2470
 
2471
void glcpp_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2472
{
2473
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2474
    yylval = yylval_param;
2475
}
2476
 
2477
YYLTYPE *glcpp_get_lloc  (yyscan_t yyscanner)
2478
{
2479
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2480
    return yylloc;
2481
}
2482
 
2483
void glcpp_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2484
{
2485
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2486
    yylloc = yylloc_param;
2487
}
2488
 
2489
/* User-visible API */
2490
 
2491
/* glcpp_lex_init is special because it creates the scanner itself, so it is
2492
 * the ONLY reentrant function that doesn't take the scanner as the last argument.
2493
 * That's why we explicitly handle the declaration, instead of using our macros.
2494
 */
2495
 
2496
int glcpp_lex_init(yyscan_t* ptr_yy_globals)
2497
 
2498
{
2499
    if (ptr_yy_globals == NULL){
2500
        errno = EINVAL;
2501
        return 1;
2502
    }
2503
 
2504
    *ptr_yy_globals = (yyscan_t) glcpp_alloc ( sizeof( struct yyguts_t ), NULL );
2505
 
2506
    if (*ptr_yy_globals == NULL){
2507
        errno = ENOMEM;
2508
        return 1;
2509
    }
2510
 
2511
    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2512
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2513
 
2514
    return yy_init_globals ( *ptr_yy_globals );
2515
}
2516
 
2517
/* glcpp_lex_init_extra has the same functionality as glcpp_lex_init, but follows the
2518
 * convention of taking the scanner as the last argument. Note however, that
2519
 * this is a *pointer* to a scanner, as it will be allocated by this call (and
2520
 * is the reason, too, why this function also must handle its own declaration).
2521
 * The user defined value in the first argument will be available to glcpp_alloc in
2522
 * the yyextra field.
2523
 */
2524
 
2525
int glcpp_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
2526
 
2527
{
2528
    struct yyguts_t dummy_yyguts;
2529
 
2530
    glcpp_set_extra (yy_user_defined, &dummy_yyguts);
2531
 
2532
    if (ptr_yy_globals == NULL){
2533
        errno = EINVAL;
2534
        return 1;
2535
    }
2536
 
2537
    *ptr_yy_globals = (yyscan_t) glcpp_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2538
 
2539
    if (*ptr_yy_globals == NULL){
2540
        errno = ENOMEM;
2541
        return 1;
2542
    }
2543
 
2544
    /* By setting to 0xAA, we expose bugs in
2545
    yy_init_globals. Leave at 0x00 for releases. */
2546
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2547
 
2548
    glcpp_set_extra (yy_user_defined, *ptr_yy_globals);
2549
 
2550
    return yy_init_globals ( *ptr_yy_globals );
2551
}
2552
 
2553
static int yy_init_globals (yyscan_t yyscanner)
2554
{
2555
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2556
    /* Initialization is the same as for the non-reentrant scanner.
2557
     * This function is called from glcpp_lex_destroy(), so don't allocate here.
2558
     */
2559
 
2560
    yyg->yy_buffer_stack = 0;
2561
    yyg->yy_buffer_stack_top = 0;
2562
    yyg->yy_buffer_stack_max = 0;
2563
    yyg->yy_c_buf_p = (char *) 0;
2564
    yyg->yy_init = 0;
2565
    yyg->yy_start = 0;
2566
 
2567
    yyg->yy_start_stack_ptr = 0;
2568
    yyg->yy_start_stack_depth = 0;
2569
    yyg->yy_start_stack =  NULL;
2570
 
2571
    yyg->yy_state_buf = 0;
2572
    yyg->yy_state_ptr = 0;
2573
    yyg->yy_full_match = 0;
2574
    yyg->yy_lp = 0;
2575
 
2576
/* Defined in main.c */
2577
#ifdef YY_STDINIT
2578
    yyin = stdin;
2579
    yyout = stdout;
2580
#else
2581
    yyin = (FILE *) 0;
2582
    yyout = (FILE *) 0;
2583
#endif
2584
 
2585
    /* For future reference: Set errno on error, since we are called by
2586
     * glcpp_lex_init()
2587
     */
2588
    return 0;
2589
}
2590
 
2591
/* glcpp_lex_destroy is for both reentrant and non-reentrant scanners. */
2592
int glcpp_lex_destroy  (yyscan_t yyscanner)
2593
{
2594
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2595
 
2596
    /* Pop the buffer stack, destroying each element. */
2597
	while(YY_CURRENT_BUFFER){
2598
		glcpp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2599
		YY_CURRENT_BUFFER_LVALUE = NULL;
2600
		glcpp_pop_buffer_state(yyscanner);
2601
	}
2602
 
2603
	/* Destroy the stack itself. */
2604
	glcpp_free(yyg->yy_buffer_stack ,yyscanner);
2605
	yyg->yy_buffer_stack = NULL;
2606
 
2607
    /* Destroy the start condition stack. */
2608
        glcpp_free(yyg->yy_start_stack ,yyscanner );
2609
        yyg->yy_start_stack = NULL;
2610
 
2611
    glcpp_free ( yyg->yy_state_buf , yyscanner);
2612
    yyg->yy_state_buf  = NULL;
2613
 
2614
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
2615
     * glcpp_lex() is called, initialization will occur. */
2616
    yy_init_globals( yyscanner);
2617
 
2618
    /* Destroy the main struct (reentrant only). */
2619
    glcpp_free ( yyscanner , yyscanner );
2620
    yyscanner = NULL;
2621
    return 0;
2622
}
2623
 
2624
/*
2625
 * Internal utility routines.
2626
 */
2627
 
2628
#ifndef yytext_ptr
2629
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2630
{
2631
	register int i;
2632
	for ( i = 0; i < n; ++i )
2633
		s1[i] = s2[i];
2634
}
2635
#endif
2636
 
2637
#ifdef YY_NEED_STRLEN
2638
static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2639
{
2640
	register int n;
2641
	for ( n = 0; s[n]; ++n )
2642
		;
2643
 
2644
	return n;
2645
}
2646
#endif
2647
 
2648
void *glcpp_alloc (yy_size_t  size , yyscan_t yyscanner)
2649
{
2650
	return (void *) malloc( size );
2651
}
2652
 
2653
void *glcpp_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2654
{
2655
	/* The cast to (char *) in the following accommodates both
2656
	 * implementations that use char* generic pointers, and those
2657
	 * that use void* generic pointers.  It works with the latter
2658
	 * because both ANSI C and C++ allow castless assignment from
2659
	 * any pointer type to void*, and deal with argument conversions
2660
	 * as though doing an assignment.
2661
	 */
2662
	return (void *) realloc( (char *) ptr, size );
2663
}
2664
 
2665
void glcpp_free (void * ptr , yyscan_t yyscanner)
2666
{
2667
	free( (char *) ptr );	/* see glcpp_realloc() for (char *) cast */
2668
}
2669
 
2670
#define YYTABLES_NAME "yytables"
2671
 
2672
#line 319 "glcpp/glcpp-lex.l"
2673
 
2674
 
2675
 
2676
void
2677
glcpp_lex_set_source_string(glcpp_parser_t *parser, const char *shader)
2678
{
2679
	glcpp__scan_string(shader,parser->scanner);
2680
}
2681