Home | History | Annotate | Download | only in src
      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>
     87 typedef int8_t flex_int8_t;
     88 typedef uint8_t flex_uint8_t;
     89 typedef int16_t flex_int16_t;
     90 typedef uint16_t flex_uint16_t;
     91 typedef int32_t flex_int32_t;
     92 typedef uint32_t flex_uint32_t;
     93 #else
     94 typedef signed char flex_int8_t;
     95 typedef short int flex_int16_t;
     96 typedef int flex_int32_t;
     97 typedef unsigned char flex_uint8_t;
     98 typedef unsigned short int flex_uint16_t;
     99 typedef 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
    215 typedef struct yy_buffer_state *YY_BUFFER_STATE;
    216 #endif
    217 
    218 #ifndef YY_TYPEDEF_YY_SIZE_T
    219 #define YY_TYPEDEF_YY_SIZE_T
    220 typedef size_t yy_size_t;
    221 #endif
    222 
    223 /* %if-not-reentrant */
    224 extern yy_size_t gram_leng;
    225 /* %endif */
    226 
    227 /* %if-c-only */
    228 /* %if-not-reentrant */
    229 extern 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
    257 struct 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. */
    331 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
    332 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
    333 static 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. */
    360 static char yy_hold_char;
    361 static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
    362 yy_size_t gram_leng;
    363 
    364 /* Points to current character in buffer. */
    365 static char *yy_c_buf_p = (char *) 0;
    366 static int yy_init = 0;		/* whether we need to initialize */
    367 static 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  */
    372 static int yy_did_buffer_switch_on_eof;
    373 /* %ok-for-header */
    374 
    375 /* %endif */
    376 
    377 void gram_restart (FILE *input_file  );
    378 void gram__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
    379 YY_BUFFER_STATE gram__create_buffer (FILE *file,int size  );
    380 void gram__delete_buffer (YY_BUFFER_STATE b  );
    381 void gram__flush_buffer (YY_BUFFER_STATE b  );
    382 void gram_push_buffer_state (YY_BUFFER_STATE new_buffer  );
    383 void gram_pop_buffer_state (void );
    384 
    385 static void gram_ensure_buffer_stack (void );
    386 static void gram__load_buffer_state (void );
    387 static void gram__init_buffer (YY_BUFFER_STATE b,FILE *file  );
    388 
    389 #define YY_FLUSH_BUFFER gram__flush_buffer(YY_CURRENT_BUFFER )
    390 
    391 YY_BUFFER_STATE gram__scan_buffer (char *base,yy_size_t size  );
    392 YY_BUFFER_STATE gram__scan_string (yyconst char *yy_str  );
    393 YY_BUFFER_STATE gram__scan_bytes (yyconst char *bytes,yy_size_t len  );
    394 
    395 /* %endif */
    396 
    397 void *gram_alloc (yy_size_t  );
    398 void *gram_realloc (void *,yy_size_t  );
    399 void 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 
    433 typedef unsigned char YY_CHAR;
    434 
    435 FILE *gram_in = (FILE *) 0, *gram_out = (FILE *) 0;
    436 
    437 typedef int yy_state_type;
    438 
    439 extern int gram_lineno;
    440 
    441 int gram_lineno = 1;
    442 
    443 extern char *gram_text;
    444 #define yytext_ptr gram_text
    445 
    446 /* %if-c-only Standard (non-C++) definition */
    447 
    448 static yy_state_type yy_get_previous_state (void );
    449 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
    450 static int yy_get_next_buffer (void );
    451 static 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. */
    472 struct yy_trans_info
    473 	{
    474 	flex_int32_t yy_verify;
    475 	flex_int32_t yy_nxt;
    476 	};
    477 static 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 
    534 static 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 
    566 static 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 
    576 static 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 
    636 static 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 
    696 static 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 
    806 static 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 
    916 static yy_state_type yy_last_accepting_state;
    917 static char *yy_last_accepting_cpos;
    918 
    919 extern int gram__flex_debug;
    920 int gram__flex_debug = 1;
    921 
    922 static 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
    945 char *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.  */
    994 static boundary scanner_cursor;
    995 
    996 #define YY_USER_ACTION  location_compute (loc, &scanner_cursor, gram_text, gram_leng);
    997 
    998 static 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.  */
   1008 static char *last_string;
   1009 
   1010 /* Bracketed identifier. */
   1011 static uniqstr bracketed_id_str = 0;
   1012 static location bracketed_id_loc;
   1013 static boundary bracketed_id_start;
   1014 static int bracketed_id_context_state = 0;
   1015 
   1016 void
   1017 gram_scanner_last_string_free (void)
   1018 {
   1019   STRING_FREE;
   1020 }
   1021 
   1022 static void handle_syncline (char *, location);
   1023 static unsigned long int scan_integer (char const *p, int base, location loc);
   1024 static int convert_ucn_to_byte (char const *hex_text);
   1025 static void unexpected_eof (boundary, char const *);
   1026 static 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
   1033 to 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 
   1088 static 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 
   1098 int gram_lex_destroy (void );
   1099 
   1100 int gram_get_debug (void );
   1101 
   1102 void gram_set_debug (int debug_flag  );
   1103 
   1104 YY_EXTRA_TYPE gram_get_extra (void );
   1105 
   1106 void gram_set_extra (YY_EXTRA_TYPE user_defined  );
   1107 
   1108 FILE *gram_get_in (void );
   1109 
   1110 void gram_set_in  (FILE * in_str  );
   1111 
   1112 FILE *gram_get_out (void );
   1113 
   1114 void gram_set_out  (FILE * out_str  );
   1115 
   1116 yy_size_t gram_get_leng (void );
   1117 
   1118 char *gram_get_text (void );
   1119 
   1120 int gram_get_lineno (void );
   1121 
   1122 void 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
   1133 extern "C" int gram_wrap (void );
   1134 #else
   1135 extern 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
   1146 static void yy_flex_strncpy (char *,yyconst char *,int );
   1147 #endif
   1148 
   1149 #ifdef YY_NEED_STRLEN
   1150 static 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
   1158 static int yyinput (void );
   1159 #else
   1160 static 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 
   1269 extern 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  */
   1300 YY_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();
   1386 yy_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 
   1408 yy_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 
   1416 do_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.  */
   1446 case 1:
   1447 YY_RULE_SETUP
   1448 #line 149 "scan-gram.l"
   1449 warn_at (*loc, _("stray ',' treated as white space"));
   1450 	YY_BREAK
   1451 case 2:
   1452 /* rule 2 can match eol */
   1453 #line 151 "scan-gram.l"
   1454 case 3:
   1455 /* rule 3 can match eol */
   1456 YY_RULE_SETUP
   1457 #line 151 "scan-gram.l"
   1458 continue;
   1459 	YY_BREAK
   1460 case 4:
   1461 YY_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.  */
   1471 case 5:
   1472 /* rule 5 can match eol */
   1473 YY_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 
   1490 case 6:
   1491 YY_RULE_SETUP
   1492 #line 178 "scan-gram.l"
   1493 return PERCENT_NONASSOC;
   1494 	YY_BREAK
   1495 case 7:
   1496 YY_RULE_SETUP
   1497 #line 179 "scan-gram.l"
   1498 return PERCENT_CODE;
   1499 	YY_BREAK
   1500 case 8:
   1501 YY_RULE_SETUP
   1502 #line 180 "scan-gram.l"
   1503 return PERCENT_DEBUG;
   1504 	YY_BREAK
   1505 case 9:
   1506 YY_RULE_SETUP
   1507 #line 181 "scan-gram.l"
   1508 return PERCENT_DEFAULT_PREC;
   1509 	YY_BREAK
   1510 case 10:
   1511 YY_RULE_SETUP
   1512 #line 182 "scan-gram.l"
   1513 return PERCENT_DEFINE;
   1514 	YY_BREAK
   1515 case 11:
   1516 YY_RULE_SETUP
   1517 #line 183 "scan-gram.l"
   1518 return PERCENT_DEFINES;
   1519 	YY_BREAK
   1520 case 12:
   1521 YY_RULE_SETUP
   1522 #line 184 "scan-gram.l"
   1523 return PERCENT_DESTRUCTOR;
   1524 	YY_BREAK
   1525 case 13:
   1526 YY_RULE_SETUP
   1527 #line 185 "scan-gram.l"
   1528 return PERCENT_DPREC;
   1529 	YY_BREAK
   1530 case 14:
   1531 YY_RULE_SETUP
   1532 #line 186 "scan-gram.l"
   1533 return PERCENT_ERROR_VERBOSE;
   1534 	YY_BREAK
   1535 case 15:
   1536 YY_RULE_SETUP
   1537 #line 187 "scan-gram.l"
   1538 return PERCENT_EXPECT;
   1539 	YY_BREAK
   1540 case 16:
   1541 YY_RULE_SETUP
   1542 #line 188 "scan-gram.l"
   1543 return PERCENT_EXPECT_RR;
   1544 	YY_BREAK
   1545 case 17:
   1546 YY_RULE_SETUP
   1547 #line 189 "scan-gram.l"
   1548 return PERCENT_FILE_PREFIX;
   1549 	YY_BREAK
   1550 case 18:
   1551 YY_RULE_SETUP
   1552 #line 190 "scan-gram.l"
   1553 return PERCENT_YACC;
   1554 	YY_BREAK
   1555 case 19:
   1556 YY_RULE_SETUP
   1557 #line 191 "scan-gram.l"
   1558 return PERCENT_INITIAL_ACTION;
   1559 	YY_BREAK
   1560 case 20:
   1561 YY_RULE_SETUP
   1562 #line 192 "scan-gram.l"
   1563 return PERCENT_GLR_PARSER;
   1564 	YY_BREAK
   1565 case 21:
   1566 YY_RULE_SETUP
   1567 #line 193 "scan-gram.l"
   1568 return PERCENT_LANGUAGE;
   1569 	YY_BREAK
   1570 case 22:
   1571 YY_RULE_SETUP
   1572 #line 194 "scan-gram.l"
   1573 return PERCENT_LEFT;
   1574 	YY_BREAK
   1575 case 23:
   1576 YY_RULE_SETUP
   1577 #line 195 "scan-gram.l"
   1578 return PERCENT_LEX_PARAM;
   1579 	YY_BREAK
   1580 case 24:
   1581 YY_RULE_SETUP
   1582 #line 196 "scan-gram.l"
   1583 return PERCENT_LOCATIONS;
   1584 	YY_BREAK
   1585 case 25:
   1586 YY_RULE_SETUP
   1587 #line 197 "scan-gram.l"
   1588 return PERCENT_MERGE;
   1589 	YY_BREAK
   1590 case 26:
   1591 YY_RULE_SETUP
   1592 #line 198 "scan-gram.l"
   1593 return PERCENT_NAME_PREFIX;
   1594 	YY_BREAK
   1595 case 27:
   1596 YY_RULE_SETUP
   1597 #line 199 "scan-gram.l"
   1598 return PERCENT_NO_DEFAULT_PREC;
   1599 	YY_BREAK
   1600 case 28:
   1601 YY_RULE_SETUP
   1602 #line 200 "scan-gram.l"
   1603 return PERCENT_NO_LINES;
   1604 	YY_BREAK
   1605 case 29:
   1606 YY_RULE_SETUP
   1607 #line 201 "scan-gram.l"
   1608 return PERCENT_NONASSOC;
   1609 	YY_BREAK
   1610 case 30:
   1611 YY_RULE_SETUP
   1612 #line 202 "scan-gram.l"
   1613 return PERCENT_NONDETERMINISTIC_PARSER;
   1614 	YY_BREAK
   1615 case 31:
   1616 YY_RULE_SETUP
   1617 #line 203 "scan-gram.l"
   1618 return PERCENT_NTERM;
   1619 	YY_BREAK
   1620 case 32:
   1621 YY_RULE_SETUP
   1622 #line 204 "scan-gram.l"
   1623 return PERCENT_OUTPUT;
   1624 	YY_BREAK
   1625 case 33:
   1626 YY_RULE_SETUP
   1627 #line 205 "scan-gram.l"
   1628 return PERCENT_PARSE_PARAM;
   1629 	YY_BREAK
   1630 case 34:
   1631 YY_RULE_SETUP
   1632 #line 206 "scan-gram.l"
   1633 return PERCENT_PREC;
   1634 	YY_BREAK
   1635 case 35:
   1636 YY_RULE_SETUP
   1637 #line 207 "scan-gram.l"
   1638 return PERCENT_PRINTER;
   1639 	YY_BREAK
   1640 case 36:
   1641 YY_RULE_SETUP
   1642 #line 208 "scan-gram.l"
   1643 return PERCENT_PURE_PARSER;
   1644 	YY_BREAK
   1645 case 37:
   1646 YY_RULE_SETUP
   1647 #line 209 "scan-gram.l"
   1648 return PERCENT_REQUIRE;
   1649 	YY_BREAK
   1650 case 38:
   1651 YY_RULE_SETUP
   1652 #line 210 "scan-gram.l"
   1653 return PERCENT_RIGHT;
   1654 	YY_BREAK
   1655 case 39:
   1656 YY_RULE_SETUP
   1657 #line 211 "scan-gram.l"
   1658 return PERCENT_SKELETON;
   1659 	YY_BREAK
   1660 case 40:
   1661 YY_RULE_SETUP
   1662 #line 212 "scan-gram.l"
   1663 return PERCENT_START;
   1664 	YY_BREAK
   1665 case 41:
   1666 YY_RULE_SETUP
   1667 #line 213 "scan-gram.l"
   1668 return PERCENT_TOKEN;
   1669 	YY_BREAK
   1670 case 42:
   1671 YY_RULE_SETUP
   1672 #line 214 "scan-gram.l"
   1673 return PERCENT_TOKEN;
   1674 	YY_BREAK
   1675 case 43:
   1676 YY_RULE_SETUP
   1677 #line 215 "scan-gram.l"
   1678 return PERCENT_TOKEN_TABLE;
   1679 	YY_BREAK
   1680 case 44:
   1681 YY_RULE_SETUP
   1682 #line 216 "scan-gram.l"
   1683 return PERCENT_TYPE;
   1684 	YY_BREAK
   1685 case 45:
   1686 YY_RULE_SETUP
   1687 #line 217 "scan-gram.l"
   1688 return PERCENT_UNION;
   1689 	YY_BREAK
   1690 case 46:
   1691 YY_RULE_SETUP
   1692 #line 218 "scan-gram.l"
   1693 return PERCENT_VERBOSE;
   1694 	YY_BREAK
   1695 case 47:
   1696 YY_RULE_SETUP
   1697 #line 219 "scan-gram.l"
   1698 return PERCENT_YACC;
   1699 	YY_BREAK
   1700 case 48:
   1701 /* rule 48 can match eol */
   1702 YY_RULE_SETUP
   1703 #line 221 "scan-gram.l"
   1704 {
   1705     complain_at (*loc, _("invalid directive: %s"), quote (gram_text));
   1706   }
   1707 	YY_BREAK
   1708 case 49:
   1709 YY_RULE_SETUP
   1710 #line 225 "scan-gram.l"
   1711 return EQUAL;
   1712 	YY_BREAK
   1713 case 50:
   1714 YY_RULE_SETUP
   1715 #line 226 "scan-gram.l"
   1716 return PIPE;
   1717 	YY_BREAK
   1718 case 51:
   1719 YY_RULE_SETUP
   1720 #line 227 "scan-gram.l"
   1721 return SEMICOLON;
   1722 	YY_BREAK
   1723 case 52:
   1724 YY_RULE_SETUP
   1725 #line 228 "scan-gram.l"
   1726 return TYPE_TAG_ANY;
   1727 	YY_BREAK
   1728 case 53:
   1729 YY_RULE_SETUP
   1730 #line 229 "scan-gram.l"
   1731 return TYPE_TAG_NONE;
   1732 	YY_BREAK
   1733 case 54:
   1734 YY_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
   1743 case 55:
   1744 YY_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
   1751 case 56:
   1752 YY_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".  */
   1761 case 57:
   1762 YY_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.  */
   1769 case 58:
   1770 YY_RULE_SETUP
   1771 #line 254 "scan-gram.l"
   1772 token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER;
   1773 	YY_BREAK
   1774 /* Strings. */
   1775 case 59:
   1776 YY_RULE_SETUP
   1777 #line 257 "scan-gram.l"
   1778 token_start = loc->start; BEGIN SC_ESCAPED_STRING;
   1779 	YY_BREAK
   1780 /* Prologue. */
   1781 case 60:
   1782 YY_RULE_SETUP
   1783 #line 260 "scan-gram.l"
   1784 code_start = loc->start; BEGIN SC_PROLOGUE;
   1785 	YY_BREAK
   1786 /* Code in between braces.  */
   1787 case 61:
   1788 YY_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. */
   1798 case 62:
   1799 YY_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
   1809 case 63:
   1810 YY_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
   1819 case 64:
   1820 YY_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
   1829 case 65:
   1830 YY_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
   1838 case 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 
   1851 case 66:
   1852 YY_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
   1870 case 67:
   1871 YY_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
   1879 case 68:
   1880 YY_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
   1889 case 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 
   1903 case 69:
   1904 YY_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
   1919 case 70:
   1920 YY_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
   1938 case 71:
   1939 YY_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
   1948 case 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 
   1958 case 72:
   1959 YY_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 
   1976 case 73:
   1977 YY_RULE_SETUP
   1978 #line 411 "scan-gram.l"
   1979 BEGIN context_state;
   1980 	YY_BREAK
   1981 case 74:
   1982 /* rule 74 can match eol */
   1983 YY_RULE_SETUP
   1984 #line 412 "scan-gram.l"
   1985 continue;
   1986 	YY_BREAK
   1987 case YY_STATE_EOF(SC_YACC_COMMENT):
   1988 #line 413 "scan-gram.l"
   1989 unexpected_eof (token_start, "*/"); BEGIN context_state;
   1990 	YY_BREAK
   1991 
   1992 /*------------------------------------------------------------.
   1993   | Scanning a C comment.  The initial '/ *' is already eaten.  |
   1994   `------------------------------------------------------------*/
   1995 
   1996 
   1997 case 75:
   1998 /* rule 75 can match eol */
   1999 YY_RULE_SETUP
   2000 #line 423 "scan-gram.l"
   2001 STRING_GROW; BEGIN context_state;
   2002 	YY_BREAK
   2003 case YY_STATE_EOF(SC_COMMENT):
   2004 #line 424 "scan-gram.l"
   2005 unexpected_eof (token_start, "*/"); BEGIN context_state;
   2006 	YY_BREAK
   2007 
   2008 /*--------------------------------------------------------------.
   2009   | Scanning a line comment.  The initial '//' is already eaten.  |
   2010   `--------------------------------------------------------------*/
   2011 
   2012 
   2013 case 76:
   2014 /* rule 76 can match eol */
   2015 YY_RULE_SETUP
   2016 #line 434 "scan-gram.l"
   2017 STRING_GROW; BEGIN context_state;
   2018 	YY_BREAK
   2019 case 77:
   2020 /* rule 77 can match eol */
   2021 YY_RULE_SETUP
   2022 #line 435 "scan-gram.l"
   2023 STRING_GROW;
   2024 	YY_BREAK
   2025 case YY_STATE_EOF(SC_LINE_COMMENT):
   2026 #line 436 "scan-gram.l"
   2027 BEGIN 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 
   2036 case 78:
   2037 /* rule 78 can match eol */
   2038 YY_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
   2050 case 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 
   2068 case 79:
   2069 /* rule 79 can match eol */
   2070 YY_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
   2094 case 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 
   2120 case 80:
   2121 YY_RULE_SETUP
   2122 #line 518 "scan-gram.l"
   2123 complain_at (*loc, _("invalid null character"));
   2124 	YY_BREAK
   2125 
   2126 /*----------------------------.
   2127   | Decode escaped characters.  |
   2128   `----------------------------*/
   2129 
   2130 
   2131 case 81:
   2132 YY_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
   2143 case 82:
   2144 YY_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
   2156 case 83:
   2157 YY_RULE_SETUP
   2158 #line 547 "scan-gram.l"
   2159 obstack_1grow (&obstack_for_string, '\a');
   2160 	YY_BREAK
   2161 case 84:
   2162 YY_RULE_SETUP
   2163 #line 548 "scan-gram.l"
   2164 obstack_1grow (&obstack_for_string, '\b');
   2165 	YY_BREAK
   2166 case 85:
   2167 YY_RULE_SETUP
   2168 #line 549 "scan-gram.l"
   2169 obstack_1grow (&obstack_for_string, '\f');
   2170 	YY_BREAK
   2171 case 86:
   2172 YY_RULE_SETUP
   2173 #line 550 "scan-gram.l"
   2174 obstack_1grow (&obstack_for_string, '\n');
   2175 	YY_BREAK
   2176 case 87:
   2177 YY_RULE_SETUP
   2178 #line 551 "scan-gram.l"
   2179 obstack_1grow (&obstack_for_string, '\r');
   2180 	YY_BREAK
   2181 case 88:
   2182 YY_RULE_SETUP
   2183 #line 552 "scan-gram.l"
   2184 obstack_1grow (&obstack_for_string, '\t');
   2185 	YY_BREAK
   2186 case 89:
   2187 YY_RULE_SETUP
   2188 #line 553 "scan-gram.l"
   2189 obstack_1grow (&obstack_for_string, '\v');
   2190 	YY_BREAK
   2191 /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
   2192 case 90:
   2193 YY_RULE_SETUP
   2194 #line 556 "scan-gram.l"
   2195 obstack_1grow (&obstack_for_string, gram_text[1]);
   2196 	YY_BREAK
   2197 case 91:
   2198 YY_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
   2209 case 92:
   2210 /* rule 92 can match eol */
   2211 YY_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 
   2229 case 93:
   2230 /* rule 93 can match eol */
   2231 YY_RULE_SETUP
   2232 #line 583 "scan-gram.l"
   2233 STRING_GROW;
   2234 	YY_BREAK
   2235 
   2236 
   2237 
   2238 case 94:
   2239 YY_RULE_SETUP
   2240 #line 588 "scan-gram.l"
   2241 STRING_GROW; BEGIN context_state;
   2242 	YY_BREAK
   2243 case 95:
   2244 /* rule 95 can match eol */
   2245 YY_RULE_SETUP
   2246 #line 589 "scan-gram.l"
   2247 unexpected_newline (token_start, "'"); BEGIN context_state;
   2248 	YY_BREAK
   2249 case YY_STATE_EOF(SC_CHARACTER):
   2250 #line 590 "scan-gram.l"
   2251 unexpected_eof (token_start, "'"); BEGIN context_state;
   2252 	YY_BREAK
   2253 
   2254 
   2255 
   2256 case 96:
   2257 YY_RULE_SETUP
   2258 #line 595 "scan-gram.l"
   2259 STRING_GROW; BEGIN context_state;
   2260 	YY_BREAK
   2261 case 97:
   2262 /* rule 97 can match eol */
   2263 YY_RULE_SETUP
   2264 #line 596 "scan-gram.l"
   2265 unexpected_newline (token_start, "\""); BEGIN context_state;
   2266 	YY_BREAK
   2267 case YY_STATE_EOF(SC_STRING):
   2268 #line 597 "scan-gram.l"
   2269 unexpected_eof (token_start, "\""); BEGIN context_state;
   2270 	YY_BREAK
   2271 
   2272 /*---------------------------------------------------.
   2273   | Strings, comments etc. can be found in user code.  |
   2274   `---------------------------------------------------*/
   2275 
   2276 
   2277 case 98:
   2278 YY_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
   2287 case 99:
   2288 YY_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
   2297 case 100:
   2298 /* rule 100 can match eol */
   2299 YY_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
   2308 case 101:
   2309 /* rule 101 can match eol */
   2310 YY_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 
   2325 case 102:
   2326 /* rule 102 can match eol */
   2327 YY_RULE_SETUP
   2328 #line 641 "scan-gram.l"
   2329 STRING_GROW; braces_level++;
   2330 	YY_BREAK
   2331 case 103:
   2332 /* rule 103 can match eol */
   2333 YY_RULE_SETUP
   2334 #line 642 "scan-gram.l"
   2335 STRING_GROW; braces_level--;
   2336 	YY_BREAK
   2337 case 104:
   2338 YY_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 '<' '<%').  */
   2356 case 105:
   2357 /* rule 105 can match eol */
   2358 YY_RULE_SETUP
   2359 #line 659 "scan-gram.l"
   2360 STRING_GROW;
   2361 	YY_BREAK
   2362 case 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 
   2379 case 106:
   2380 YY_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
   2390 case 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 
   2408 case 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   `-----------------------------------------------------*/
   2422 case 107:
   2423 #line 719 "scan-gram.l"
   2424 case 108:
   2425 /* rule 108 can match eol */
   2426 YY_RULE_SETUP
   2427 #line 719 "scan-gram.l"
   2428 STRING_GROW;
   2429 	YY_BREAK
   2430 case 109:
   2431 YY_RULE_SETUP
   2432 #line 721 "scan-gram.l"
   2433 YY_FATAL_ERROR( "flex scanner jammed" );
   2434 	YY_BREAK
   2435 #line 2436 "scan-gram.c"
   2436 case 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 */
   2586 static 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 */
   2941 static 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 */
   3085 void 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 */
   3121 void 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 */
   3146 static 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  */
   3200 YY_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  */
   3239 YY_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  */
   3254 YY_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 */
   3290 static 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  */
   3325 int gram_get_lineno  (void)
   3326 {
   3327 
   3328     return gram_lineno;
   3329 }
   3330 
   3331 /** Get the input stream.
   3332  *
   3333  */
   3334 FILE *gram_get_in  (void)
   3335 {
   3336         return gram_in;
   3337 }
   3338 
   3339 /** Get the output stream.
   3340  *
   3341  */
   3342 FILE *gram_get_out  (void)
   3343 {
   3344         return gram_out;
   3345 }
   3346 
   3347 /** Get the length of the current token.
   3348  *
   3349  */
   3350 yy_size_t gram_get_leng  (void)
   3351 {
   3352         return gram_leng;
   3353 }
   3354 
   3355 /** Get the current token.
   3356  *
   3357  */
   3358 
   3359 char *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  */
   3371 void 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  */
   3383 void gram_set_in (FILE *  in_str )
   3384 {
   3385         gram_in = in_str ;
   3386 }
   3387 
   3388 void gram_set_out (FILE *  out_str )
   3389 {
   3390         gram_out = out_str ;
   3391 }
   3392 
   3393 int gram_get_debug  (void)
   3394 {
   3395         return gram__flex_debug;
   3396 }
   3397 
   3398 void 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 */
   3411 static 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. */
   3442 int 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
   3471 static 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
   3480 static 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 
   3490 void *gram_alloc (yy_size_t  size )
   3491 {
   3492 	return (void *) malloc( size );
   3493 }
   3494 
   3495 void *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 
   3507 void 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 
   3527 static size_t
   3528 no_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 
   3575 static unsigned long int
   3576 scan_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 
   3597 static int
   3598 convert_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 
   3652 static void
   3653 handle_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 
   3679 static void
   3680 unexpected_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 
   3698 static void
   3699 unexpected_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 
   3709 static void
   3710 unexpected_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 
   3720 void
   3721 gram_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 
   3731 void
   3732 gram_scanner_free (void)
   3733 {
   3734   obstack_free (&obstack_for_string, 0);
   3735   /* Reclaim Flex's buffers.  */
   3736   gram_lex_destroy ();
   3737 }
   3738 
   3739