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