No need to keep this file in CVS, since it's automatically generated.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 12 Nov 2002 07:40:11 +0000 (07:40 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 12 Nov 2002 07:40:11 +0000 (07:40 +0000)
src/scan-gram.c [deleted file]

diff --git a/src/scan-gram.c b/src/scan-gram.c
deleted file mode 100644 (file)
index 74591b0..0000000
+++ /dev/null
@@ -1,3242 +0,0 @@
-#define yy_create_buffer gram__create_buffer
-#define yy_delete_buffer gram__delete_buffer
-#define yy_scan_buffer gram__scan_buffer
-#define yy_scan_string gram__scan_string
-#define yy_scan_bytes gram__scan_bytes
-#define yy_flex_debug gram__flex_debug
-#define yy_init_buffer gram__init_buffer
-#define yy_flush_buffer gram__flush_buffer
-#define yy_load_buffer_state gram__load_buffer_state
-#define yy_switch_to_buffer gram__switch_to_buffer
-#define yyin gram_in
-#define yyleng gram_leng
-#define yylex gram_lex
-#define yyout gram_out
-#define yyrestart gram_restart
-#define yytext gram_text
-
-#line 19 "scan-gram.c"
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header$
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-#include <errno.h>
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
-#endif
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- *     if ( condition_holds )
- *             yyless( 5 );
- *     else
- *             do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               *yy_cp = yy_hold_char; \
-               YY_RESTORE_YY_MORE_OFFSET \
-               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       yy_size_t yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-       };
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;                /* whether we need to initialize */
-static int yy_start = 0;       /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_is_interactive = is_interactive; \
-       }
-
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_at_bol = at_bol; \
-       }
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
-
-#define FLEX_DEBUG
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-
-#define FLEX_DEBUG
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       yytext_ptr = yy_bp; \
-       yyleng = (int) (yy_cp - yy_bp); \
-       yy_hold_char = *yy_cp; \
-       *yy_cp = '\0'; \
-       yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 104
-#define YY_END_OF_BUFFER 105
-static yyconst short int yy_accept[411] =
-    {   0,
-        0,    0,    0,    0,   61,   61,    0,    0,   87,   87,
-       82,   82,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  105,   53,   42,   42,   46,   53,   45,   40,
-       43,   53,   44,   38,   41,   53,   37,   50,   39,   53,
-       59,   59,   54,   55,   61,   60,   61,   57,   57,   85,
-       84,   88,   80,   79,   83,   63,   62,   78,   65,   64,
-       99,   90,   99,   99,   89,   93,   99,   99,   94,   96,
-      101,  102,   93,  103,   90,   89,   93,   42,   52,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   49,   43,   47,   48,
-
-       44,    0,    0,   59,   58,    0,   61,   61,   61,   61,
-       57,   56,   85,   86,   86,   86,   86,   80,   81,   81,
-       81,   81,   63,   77,   75,   66,   77,   68,   69,   70,
-       71,   72,   73,   77,   74,   77,   65,   99,   97,    0,
-       97,    0,   95,    0,   91,   92,    0,   94,   99,    0,
-       98,    0,   98,  101,  100,  103,   91,   92,  103,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   48,   51,    0,    0,
-        0,    0,   87,    0,    0,    0,    0,   82,    0,    0,
-
-        0,   66,    0,    0,   67,    0,    0,    0,    0,    0,
-        0,    0,  103,  103,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,    0,   66,    0,    0,
-        0,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   12,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   21,   35,   35,   35,   35,   35,   28,   35,   31,
-       35,   35,   34,    0,    0,    0,   35,    2,   35,   35,
-        6,   35,   35,   35,   35,   35,   35,   35,   14,   35,
-
-       35,   35,   18,   35,   35,   35,   35,   24,   35,   27,
-       29,   32,   35,    0,    0,   76,    1,    3,   35,   35,
-        8,   35,   35,   35,   35,   35,   35,   35,   35,   19,
-       35,   35,   35,   35,   35,   35,    0,    4,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   22,
-       35,   35,   35,   33,    0,   35,   35,   35,   35,   35,
-       35,   35,   35,   16,   17,   35,   35,   26,   35,    0,
-       35,   35,   35,   35,   35,   25,   13,   35,   35,   35,
-       35,    0,    0,    5,   35,   35,   35,   11,   35,   35,
-       35,   35,   36,   35,    9,   35,   15,   20,   23,   30,
-
-       35,   35,    7,   35,   35,   35,   35,   35,   10,    0
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    4,    1,    5,    6,    7,    8,    1,    9,    1,
-        1,   10,    1,   11,   12,   13,   14,   15,   15,   15,
-       15,   15,   15,   15,   15,   16,   16,   17,   18,   19,
-       20,   21,   22,   23,   24,   24,   24,   24,   24,   24,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   25,   13,   13,   13,   13,   13,
-       26,   27,   28,    1,   29,    1,   30,   31,   32,   33,
-
-       34,   35,   36,   37,   38,   13,   39,   40,   41,   42,
-       43,   44,   13,   45,   46,   47,   48,   49,   13,   50,
-       51,   13,   52,   53,   54,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[56] =
-    {   0,
-        1,    1,    2,    1,    3,    1,    4,    5,    6,    7,
-        1,    8,    9,    5,   10,   10,    1,    1,    4,    1,
-       11,    1,    4,   10,    9,   12,   13,   12,    9,   10,
-       10,   10,   10,   10,   10,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    4,    1,    4,   11
-    } ;
-
-static yyconst short int yy_base[449] =
-    {   0,
-        0,  896,   46,   47,   55,   58,  891,  890,   61,   64,
-       50,   70,   66,   75,   85,   86,  109,  159,   96,  122,
-      129,  144,  899,  903,   60,  104,  903,  206,  903,  903,
-        0,   89,   52,  903,  903,    0,  903,  903,  903,  858,
-        0,  106,  903,  903,  870,  903,  138,    0,  882,    0,
-      903,  142,    0,  903,  172,    0,  903,  254,    0,  903,
-        0,  903,  174,   88,  903,  169,   92,  144,  903,  903,
-        0,  841,  170,    0,    0,    0,  178,  198,  903,    0,
-      856,   26,   76,  855,  852,  128,  857,  161,  842,  164,
-      851,  100,  164,  846,  853,  856,  903,    0,  903,    0,
-
-      201,  864,  846,    0,  903,  218,  856,  263,  268,  855,
-        0,  903,    0,  903,  221,  854,  224,    0,  903,  230,
-      853,  258,    0,  903,  903,  864,    0,  903,  903,  903,
-      903,  903,  903,    0,  903,    0,    0,    0,  903,  258,
-      262,    0,  903,  284,  903,  903,  289,  903,  903,  303,
-      903,  267,  282,    0,  903,    0,    0,    0,  306,    0,
-      836,  280,  832,  831,  831,  272,  829,  160,  841,  827,
-      830,  288,  836,  822,  823,   91,  822,  830,  831,  834,
-      818,  823,  817,  822,  814,  826,    0,  903,  815,  316,
-      300,  321,  829,  329,  332,  828,  335,  827,  338,  341,
-
-      826,  837,    0,    0,    0,  830,  344,  328,  348,  343,
-      356,  346,  359,  354,  820,  801,  810,  800,  812,  802,
-      810,  809,  808,  829,  793,  827,  808,  801,  802,  795,
-      804,  788,  788,  785,  798,  787,  794,  790,  786,  780,
-      783,  789,  788,  778,  789,  787,  784,  903,    0,    0,
-      359,  772,  780,  773,  769,  781,  767,  779,  798,  776,
-      764,    0,  763,  759,  771,  355,  766,  757,  761,  753,
-      766,    0,  752,  357,  751,  763,  749,    0,  753,    0,
-      752,  750,    0,  788,    0,    0,  740,    0,  756,  741,
-        0,  360,  741,  743,  364,  756,  755,  746,    0,  739,
-
-      740,  735,    0,  733,  767,  744,  733,    0,  729,    0,
-      365,    0,  729,  313,    0,  903,    0,  728,  741,  723,
-        0,  726,  727,  724,  723,  724,  721,  731,  721,    0,
-      719,  717,  731,  717,  712,  724,  375,    0,  710,  722,
-      721,  706,  707,  722,  709,  716,  703,  716,  717,    0,
-      701,  688,  691,    0,  703,  659,  644,  648,  635,  646,
-      635,  624,  634,    0,    0,  623,  621,    0,  627,  625,
-      581,  578,  564,  538,  528,    0,    0,  527,  525,  518,
-      507,  533,  526,    0,  349,  338,  339,    0,  335,  342,
-      337,  346,  903,  310,    0,  274,    0,    0,    0,    0,
-
-      282,  366,    0,  278,  256,  240,  241,  222,    0,  903,
-      395,  408,  421,  434,  447,  460,  473,  486,  499,  512,
-      517,  527,  540,  553,  566,  579,  590,  603,  614,  627,
-      639,  652,  664,  677,  690,  696,  706,  254,  219,  208,
-      719,  196,  193,  167,  144,  142,   55,  732
-    } ;
-
-static yyconst short int yy_def[449] =
-    {   0,
-      410,    1,  411,  411,  412,  412,  413,  413,  414,  414,
-      415,  415,  416,  416,  417,  417,  418,  418,  419,  419,
-      420,  420,  410,  410,  410,  410,  410,  410,  410,  410,
-      421,  410,  410,  410,  410,  422,  410,  410,  410,  410,
-      423,  410,  410,  410,  424,  410,  424,  425,  410,  426,
-      410,  427,  428,  410,  429,  430,  410,  431,  432,  410,
-      433,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      434,  410,  410,  435,  435,  435,  435,  410,  410,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  410,  421,  410,  437,
-
-      410,  422,  410,  423,  410,  410,  424,  424,  424,  424,
-      425,  410,  426,  410,  410,  410,  410,  428,  410,  410,
-      410,  410,  430,  410,  410,  410,  438,  410,  410,  410,
-      410,  410,  410,  439,  410,  440,  432,  433,  410,  410,
-      410,  441,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  434,  410,  435,  435,  435,  435,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  437,  410,  410,  410,
-      410,  410,  410,  410,  410,  427,  410,  410,  410,  410,
-
-      429,  410,  442,  443,  440,  441,  410,  410,  410,  410,
-      410,  410,  435,  435,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  410,  410,  444,  445,
-      410,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  410,  446,  447,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  410,  439,  410,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  410,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  410,  436,  436,  436,  436,  436,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  448,
-      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-      436,  448,  410,  436,  436,  436,  436,  436,  436,  436,
-      436,  436,  410,  436,  436,  436,  436,  436,  436,  436,
-
-      436,  436,  436,  436,  436,  436,  436,  436,  436,    0,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410
-    } ;
-
-static yyconst short int yy_nxt[959] =
-    {   0,
-       24,   25,   26,   25,   27,   24,   24,   28,   29,   24,
-       30,   24,   31,   32,   33,   33,   34,   35,   36,   37,
-       24,   24,   24,   31,   31,   24,   24,   24,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   38,   39,   24,   24,   42,   42,   46,   54,  162,
-       46,   78,   78,   78,  316,   51,  101,  101,   51,  163,
-       57,   43,   43,   44,   44,   43,   55,   44,   54,   57,
-       43,   47,   44,   43,   47,   44,   43,   52,   44,   43,
-       52,   44,   58,   60,   60,   43,   55,   44,   99,  148,
-
-       62,   58,  100,   72,   65,   78,   78,   78,  143,   73,
-      149,   58,   58,   62,  144,   63,   64,   65,  150,  105,
-      164,   43,   66,   44,  235,  165,   62,   67,  236,   72,
-       65,   68,  106,   75,   43,   73,   44,   76,  179,  109,
-      110,  109,   77,  115,  116,  115,  180,   43,   75,   44,
-      151,  315,   76,  286,   43,  152,   44,   77,  153,  153,
-       69,  168,   70,   62,  108,   63,   64,   65,  117,   43,
-      169,   44,   66,  120,  121,  120,  285,   67,  145,  145,
-      139,   68,  146,  146,   43,  140,   44,  157,  141,  141,
-      171,  158,  142,  175,  225,  147,  147,  181,  122,   78,
-
-       78,   78,  250,  172,  159,  249,  182,  173,  176,  226,
-       69,  177,   70,   79,  183,  101,  101,  205,   80,  190,
-      191,  190,  192,  193,  192,  195,  196,  195,  204,   80,
-       80,  197,  198,  197,   80,   80,   81,   80,   82,   83,
-       84,   85,   80,   80,   80,   86,   87,   88,   89,   90,
-       91,   92,   93,   94,   95,   80,   96,   97,  125,  200,
-      201,  200,  125,  203,  109,  110,  109,  409,  126,  109,
-      110,  109,  141,  141,  408,  125,  141,  141,  127,  407,
-      125,  153,  153,  128,  129,  207,  208,  207,  130,  108,
-      209,  210,  209,  406,  108,  131,  153,  153,  132,  230,
-
-      133,  134,  135,  136,  211,  212,  211,  213,  214,  213,
-      216,  222,  405,  105,  217,  403,  230,  190,  191,  190,
-      402,  223,  192,  193,  192,  218,  106,  337,  337,  231,
-      192,  193,  192,  195,  196,  195,  197,  198,  197,  197,
-      198,  197,  200,  201,  200,  207,  208,  207,  143,  209,
-      210,  209,  145,  148,  144,  401,  146,  211,  212,  211,
-      213,  214,  213,  157,  149,  139,  300,  158,  307,  147,
-      140,  320,  150,  141,  141,  323,  335,  404,  355,  400,
-      159,  399,  398,  300,  397,  307,  396,  395,  320,  337,
-      337,  394,  323,  335,  404,   41,   41,   41,   41,   41,
-
-       41,   41,   41,   41,   41,   41,   41,   41,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   53,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   71,
-
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   98,   98,  102,  393,  102,
-      102,  102,  102,  102,  102,  102,  102,  383,  102,  102,
-      104,  104,  104,  104,  104,  104,  392,  104,  104,  104,
-      104,  391,  104,  107,  390,  107,  107,  107,  107,  107,
-      107,  107,  107,  107,  389,  107,  111,  111,  111,  111,
-      111,  111,  388,  111,  111,  111,  111,  111,  111,  113,
-      113,  387,  113,  113,  113,  113,  113,  113,  113,  113,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-
-      114,  386,  114,  118,  118,  118,  118,  118,  385,  118,
-      118,  118,  118,  118,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  384,  119,  123,  123,  383,
-      123,  123,  123,  123,  123,  123,  123,  123,  123,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  137,  137,  137,  137,  137,  381,  137,  137,
-      137,  137,  137,  137,  138,  138,  380,  379,  378,  377,
-      138,  138,  138,  138,  138,  376,  138,  154,  154,  375,
-      154,  374,  373,  154,  154,  154,  154,  154,  372,  154,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  371,  156,  160,  160,  160,  187,  370,  187,  187,
-      187,  187,  187,  187,  187,  187,  187,  187,  187,  206,
-      369,  206,  206,  206,  206,  206,  206,  206,  206,  368,
-      206,  206,  382,  382,  382,  382,  382,  382,  382,  382,
-      382,  382,  382,  382,  382,  367,  366,  365,  364,  363,
-      362,  361,  360,  359,  358,  357,  356,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  336,  334,  333,  332,  331,  330,
-      329,  328,  327,  326,  325,  324,  322,  321,  319,  318,
-      317,  314,  313,  312,  311,  310,  309,  308,  306,  305,
-
-      304,  303,  302,  301,  299,  298,  297,  296,  295,  294,
-      293,  292,  291,  290,  289,  288,  287,  284,  283,  282,
-      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
-      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
-      261,  260,  259,  258,  257,  256,  255,  254,  253,  252,
-      251,  248,  122,  199,  117,  194,  247,  246,  245,  244,
-      243,  242,  241,  240,  239,  238,  237,  234,  233,  232,
-      229,  228,  227,  224,  221,  220,  219,  215,  202,  199,
-      194,  108,  108,  189,  188,  186,  185,  184,  178,  174,
-      170,  167,  166,  161,  155,  112,  108,  103,  410,   49,
-
-       49,   40,   23,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410
-    } ;
-
-static yyconst short int yy_chk[959] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    3,    4,    5,   11,   82,
-        6,   25,   25,   25,  447,    9,   33,   33,   10,   82,
-       13,    3,    4,    3,    4,   11,   11,   11,   12,   14,
-        5,    5,    5,    6,    6,    6,    9,    9,    9,   10,
-       10,   10,   13,   15,   16,   12,   12,   12,   32,   67,
-
-       19,   14,   32,   19,   19,   26,   26,   26,   64,   19,
-       67,   15,   16,   17,   64,   17,   17,   17,   67,   42,
-       83,   19,   17,   19,  176,   83,   20,   17,  176,   20,
-       20,   17,   42,   21,   17,   20,   17,   21,   92,   47,
-       47,   47,   21,   52,   52,   52,   92,   20,   22,   20,
-       68,  446,   22,  445,   21,   68,   21,   22,   68,   68,
-       17,   86,   17,   18,   47,   18,   18,   18,   52,   22,
-       86,   22,   18,   55,   55,   55,  444,   18,   66,   73,
-       63,   18,   66,   73,   18,   63,   18,   77,   63,   63,
-       88,   77,   63,   90,  168,   66,   73,   93,   55,   78,
-
-       78,   78,  443,   88,   77,  442,   93,   88,   90,  168,
-       18,   90,   18,   28,   93,  101,  101,  440,   28,  106,
-      106,  106,  115,  115,  115,  117,  117,  117,  439,   28,
-       28,  120,  120,  120,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   58,  122,
-      122,  122,   58,  438,  108,  108,  108,  408,   58,  109,
-      109,  109,  140,  140,  407,   58,  141,  141,   58,  406,
-       58,  152,  152,   58,   58,  144,  144,  144,   58,  108,
-      147,  147,  147,  405,  109,   58,  153,  153,   58,  172,
-
-       58,   58,   58,   58,  150,  150,  150,  159,  159,  159,
-      162,  166,  404,  191,  162,  401,  172,  190,  190,  190,
-      396,  166,  192,  192,  192,  162,  191,  314,  314,  172,
-      194,  194,  194,  195,  195,  195,  197,  197,  197,  199,
-      199,  199,  200,  200,  200,  207,  207,  207,  208,  209,
-      209,  209,  210,  212,  208,  394,  210,  211,  211,  211,
-      213,  213,  213,  214,  212,  251,  266,  214,  274,  210,
-      251,  292,  212,  251,  251,  295,  311,  402,  337,  392,
-      214,  391,  390,  266,  389,  274,  387,  386,  292,  337,
-      337,  385,  295,  311,  402,  411,  411,  411,  411,  411,
-
-      411,  411,  411,  411,  411,  411,  411,  411,  412,  412,
-      412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
-      412,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  414,  414,  414,  414,  414,  414,
-      414,  414,  414,  414,  414,  414,  414,  415,  415,  415,
-      415,  415,  415,  415,  415,  415,  415,  415,  415,  415,
-      416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416,  417,  417,  417,  417,  417,  417,  417,
-      417,  417,  417,  417,  417,  417,  418,  418,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  419,
-
-      419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
-      419,  419,  420,  420,  420,  420,  420,  420,  420,  420,
-      420,  420,  420,  420,  420,  421,  421,  422,  383,  422,
-      422,  422,  422,  422,  422,  422,  422,  382,  422,  422,
-      423,  423,  423,  423,  423,  423,  381,  423,  423,  423,
-      423,  380,  423,  424,  379,  424,  424,  424,  424,  424,
-      424,  424,  424,  424,  378,  424,  425,  425,  425,  425,
-      425,  425,  375,  425,  425,  425,  425,  425,  425,  426,
-      426,  374,  426,  426,  426,  426,  426,  426,  426,  426,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-
-      427,  373,  427,  428,  428,  428,  428,  428,  372,  428,
-      428,  428,  428,  428,  429,  429,  429,  429,  429,  429,
-      429,  429,  429,  429,  429,  371,  429,  430,  430,  370,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  431,
-      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
-      431,  431,  432,  432,  432,  432,  432,  369,  432,  432,
-      432,  432,  432,  432,  433,  433,  367,  366,  363,  362,
-      433,  433,  433,  433,  433,  361,  433,  434,  434,  360,
-      434,  359,  358,  434,  434,  434,  434,  434,  357,  434,
-      435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
-
-      435,  356,  435,  436,  436,  436,  437,  355,  437,  437,
-      437,  437,  437,  437,  437,  437,  437,  437,  437,  441,
-      353,  441,  441,  441,  441,  441,  441,  441,  441,  352,
-      441,  441,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  351,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  339,  336,  335,  334,
-      333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
-      322,  320,  319,  318,  313,  309,  307,  306,  305,  304,
-      302,  301,  300,  298,  297,  296,  294,  293,  290,  289,
-      287,  284,  282,  281,  279,  277,  276,  275,  273,  271,
-
-      270,  269,  268,  267,  265,  264,  263,  261,  260,  259,
-      258,  257,  256,  255,  254,  253,  252,  247,  246,  245,
-      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
-      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
-      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
-      206,  202,  201,  198,  196,  193,  189,  186,  185,  184,
-      183,  182,  181,  180,  179,  178,  177,  175,  174,  173,
-      171,  170,  169,  167,  165,  164,  163,  161,  126,  121,
-      116,  110,  107,  103,  102,   96,   95,   94,   91,   89,
-       87,   85,   84,   81,   72,   49,   45,   40,   23,    8,
-
-        7,    2,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int yy_flex_debug;
-int yy_flex_debug = 1;
-
-static yyconst short int yy_rule_linenum[104] =
-    {   0,
-      231,  232,  233,  234,  235,  236,  237,  238,  239,  240,
-      241,  242,  243,  244,  245,  246,  247,  248,  249,  250,
-      251,  252,  253,  254,  255,  256,  257,  258,  259,  260,
-      261,  262,  263,  264,  266,  271,  273,  274,  275,  276,
-      277,  279,  281,  287,  301,  304,  307,  308,  311,  314,
-      317,  325,  331,  346,  347,  357,  362,  377,  378,  393,
-      394,  406,  416,  435,  451,  470,  482,  496,  497,  498,
-      499,  500,  501,  502,  503,  504,  515,  521,  532,  538,
-      539,  540,  542,  559,  565,  566,  567,  569,  586,  589,
-      592,  593,  596,  607,  608,  609,  622,  624,  629,  648,
-
-      655,  656,  675
-    } ;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "scan-gram.l"
-#define INITIAL 0
-/* Bison Grammar Scanner                             -*- C -*-
-   Copyright (C) 2002 Free Software Foundation, Inc.
-
-   This file is part of Bison, the GNU Compiler Compiler.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307  USA
-*/
-#define YY_NO_UNPUT 1
-#define YY_NEVER_INTERACTIVE 1
-#define YY_STACK_USED 1
-#line 26 "scan-gram.l"
-#include "system.h"
-#include "mbswidth.h"
-#include "complain.h"
-#include "quote.h"
-#include "getargs.h"
-#include "gram.h"
-#include "reader.h"
-
-/* Each time we match a string, move the end cursor to its end. */
-#define YY_USER_INIT                           \
-do {                                           \
-  LOCATION_RESET (*yylloc);                    \
-  yylloc->file = infile;                       \
-   /* This is only to avoid GCC warnings. */   \
-  if (yycontrol) {;};                          \
-} while (0)
-
-#define YY_USER_ACTION  extend_location (yylloc, yytext, yyleng);
-#define YY_STEP         LOCATION_STEP (*yylloc)
-
-#define YY_INPUT(buf, result, size) ((result) = no_cr_read (yyin, buf, size))
-
-
-/* Read bytes from FP into buffer BUF of size SIZE.  Return the
-   number of bytes read.  Remove '\r' from input, treating \r\n
-   and isolated \r as \n.  */
-
-static size_t
-no_cr_read (FILE *fp, char *buf, size_t size)
-{
-  size_t s = fread (buf, 1, size, fp);
-  if (s)
-    {
-      char *w = memchr (buf, '\r', s);
-      if (w)
-       {
-         char const *r = ++w;
-         char const *lim = buf + s;
-
-         for (;;)
-           {
-             /* Found an '\r'.  Treat it like '\n', but ignore any
-                '\n' that immediately follows.  */
-             w[-1] = '\n';
-             if (r == lim)
-               {
-                 int ch = getc (fp);
-                 if (ch != '\n' && ungetc (ch, fp) != ch)
-                   break;
-               }
-             else if (*r == '\n')
-               r++;
-
-             /* Copy until the next '\r'.  */
-             do
-               {
-                 if (r == lim)
-                   return w - buf;
-               }
-             while ((*w++ = *r++) != '\r');
-           }
-
-         return w - buf;
-       }
-    }
-
-  return s;
-}
-
-
-/* Extend *LOC to account for token TOKEN of size SIZE.  */
-
-static void
-extend_location (location_t *loc, char const *token, int size)
-{
-  int line = loc->last_line;
-  int column = loc->last_column;
-  char const *p0 = token;
-  char const *p = token;
-  char const *lim = token + size;
-
-  for (p = token; p < lim; p++)
-    switch (*p)
-      {
-      case '\r':
-       /* \r shouldn't survive no_cr_read.  */
-       abort ();
-
-      case '\n':
-       line++;
-       column = 1;
-       p0 = p + 1;
-       break;
-
-      case '\t':
-       column += mbsnwidth (p0, p - p0, 0);
-       column += 8 - ((column - 1) & 7);
-       p0 = p + 1;
-       break;
-      }
-
-  loc->last_line = line;
-  loc->last_column = column + mbsnwidth (p0, p - p0, 0);
-}
-
-
-/* Report an unexpected end of file at LOC.  A token or comment began
-   with TOKEN_START, but an end of file was encountered and the
-   expected TOKEN_END was missing.  */
-
-static void
-unexpected_end_of_file (location_t loc,
-                       char const *token_start, char const *token_end)
-{
-  complain_at (loc, _("unexpected end of file in `%s ... %s'"),
-              token_start, token_end);
-}
-
-
-
-/* STRING_OBSTACK -- Used to store all the characters that we need to
-   keep (to construct ID, STRINGS etc.).  Use the following macros to
-   use it.
-
-   Use YY_OBS_GROW to append what has just been matched, and
-   YY_OBS_FINISH to end the string (it puts the ending 0).
-   YY_OBS_FINISH also stores this string in LAST_STRING, which can be
-   used, and which is used by YY_OBS_FREE to free the last string.  */
-
-static struct obstack string_obstack;
-char *last_string;
-
-#define YY_OBS_GROW   \
-  obstack_grow (&string_obstack, yytext, yyleng)
-
-#define YY_OBS_FINISH                                  \
-  do {                                                 \
-    obstack_1grow (&string_obstack, '\0');             \
-    last_string = obstack_finish (&string_obstack);    \
-  } while (0)
-
-#define YY_OBS_FREE                                            \
-  do {                                                         \
-    obstack_free (&string_obstack, last_string);               \
-  } while (0)
-
-void
-scanner_last_string_free (void)
-{
-  YY_OBS_FREE;
-}
-
-
-static int percent_percent_count = 0;
-
-/* Within well-formed rules, RULE_LENGTH is the number of values in
-   the current rule so far, which says where to find `$0' with respect
-   to the top of the stack.  It is not the same as the rule->length in
-   the case of mid rule actions.
-
-   Outside of well-formed rules, RULE_LENGTH has an undefined value.  */
-static int rule_length;
-
-static void handle_dollar (braced_code_t code_kind,
-                          char *cp, location_t location);
-static void handle_at (braced_code_t code_kind,
-                      char *cp, location_t location);
-static void handle_syncline (char *args, location_t *location);
-static int convert_ucn_to_byte (char const *hex_text);
-
-#define SC_COMMENT 1
-#define SC_LINE_COMMENT 2
-#define SC_YACC_COMMENT 3
-
-#define SC_STRING 4
-#define SC_CHARACTER 5
-
-#define SC_ESCAPED_STRING 6
-#define SC_ESCAPED_CHARACTER 7
-
-#define SC_BRACED_CODE 8
-#define SC_PROLOGUE 9
-#define SC_EPILOGUE 10
-
-/* POSIX says that a tag must be both an id and a C union member, but
-   historically almost any character is allowed in a tag.  We disallow
-   NUL and newline, as this simplifies our implementation.  */
-/* Zero or more instances of backslash-newline.  Following GCC, allow
-   white space between the backslash and the newline.  */
-#line 975 "scan-gram.c"
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( yy_current_buffer->yy_is_interactive ) \
-               { \
-               int c = '*', n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else \
-               { \
-               errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-       if ( yyleng > 0 ) \
-               yy_current_buffer->yy_at_bol = \
-                               (yytext[yyleng - 1] == '\n'); \
-       YY_USER_ACTION
-
-YY_DECL
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
-
-#line 216 "scan-gram.l"
-
-
-  int braces_level IF_LINT (= 0);
-
-  /* At each yylex invocation, mark the current position as the
-     start of the next token.  */
-  YY_STEP;
-
-
-
-  /*----------------------------.
-  | Scanning Bison directives.  |
-  `----------------------------*/
-#line 1154 "scan-gram.c"
-
-       if ( yy_init )
-               {
-               yy_init = 0;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! yy_start )
-                       yy_start = 1;   /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! yy_current_buffer )
-                       yy_current_buffer =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
-
-               yy_load_buffer_state();
-               }
-
-       while ( 1 )             /* loops until end-of-file is reached */
-               {
-               yy_cp = yy_c_buf_p;
-
-               /* Support of yytext. */
-               *yy_cp = yy_hold_char;
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = yy_start;
-               yy_current_state += YY_AT_BOL();
-yy_match:
-               do
-                       {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-                       if ( yy_accept[yy_current_state] )
-                               {
-                               yy_last_accepting_state = yy_current_state;
-                               yy_last_accepting_cpos = yy_cp;
-                               }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 411 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-                       ++yy_cp;
-                       }
-               while ( yy_base[yy_current_state] != 903 );
-
-yy_find_action:
-               yy_act = yy_accept[yy_current_state];
-               if ( yy_act == 0 )
-                       { /* have to back up */
-                       yy_cp = yy_last_accepting_cpos;
-                       yy_current_state = yy_last_accepting_state;
-                       yy_act = yy_accept[yy_current_state];
-                       }
-
-               YY_DO_BEFORE_ACTION;
-
-
-do_action:     /* This label is used only to access EOF actions. */
-
-               if ( yy_flex_debug )
-                       {
-                       if ( yy_act == 0 )
-                               fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 104 )
-                               fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
-                                        yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 104 )
-                               fprintf( stderr, "--accepting default rule (\"%s\")\n",
-                                        yytext );
-                       else if ( yy_act == 105 )
-                               fprintf( stderr, "--(end of buffer or a NUL)\n" );
-                       else
-                               fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
-                       }
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-                       case 0: /* must back up */
-                       /* undo the effects of YY_DO_BEFORE_ACTION */
-                       *yy_cp = yy_hold_char;
-                       yy_cp = yy_last_accepting_cpos;
-                       yy_current_state = yy_last_accepting_state;
-                       goto yy_find_action;
-
-
-
-case 1:
-YY_RULE_SETUP
-#line 231 "scan-gram.l"
-return PERCENT_NONASSOC;
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 232 "scan-gram.l"
-return PERCENT_DEBUG;
-       YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 233 "scan-gram.l"
-return PERCENT_DEFINE;
-       YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 234 "scan-gram.l"
-return PERCENT_DEFINES;
-       YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 235 "scan-gram.l"
-return PERCENT_DESTRUCTOR;
-       YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 236 "scan-gram.l"
-return PERCENT_DPREC;
-       YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 237 "scan-gram.l"
-return PERCENT_ERROR_VERBOSE;
-       YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 238 "scan-gram.l"
-return PERCENT_EXPECT;
-       YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 239 "scan-gram.l"
-return PERCENT_FILE_PREFIX;
-       YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 240 "scan-gram.l"
-return PERCENT_YACC;
-       YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 241 "scan-gram.l"
-return PERCENT_GLR_PARSER;
-       YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 242 "scan-gram.l"
-return PERCENT_LEFT;
-       YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 243 "scan-gram.l"
-return PERCENT_LOCATIONS;
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 244 "scan-gram.l"
-return PERCENT_MERGE;
-       YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 245 "scan-gram.l"
-return PERCENT_NAME_PREFIX;
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 246 "scan-gram.l"
-return PERCENT_NO_LINES;
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 247 "scan-gram.l"
-return PERCENT_NONASSOC;
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 248 "scan-gram.l"
-return PERCENT_NTERM;
-       YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 249 "scan-gram.l"
-return PERCENT_OUTPUT;
-       YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 250 "scan-gram.l"
-return PERCENT_PARSE_PARAM;
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 251 "scan-gram.l"
-rule_length--; return PERCENT_PREC;
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 252 "scan-gram.l"
-return PERCENT_PRINTER;
-       YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 253 "scan-gram.l"
-return PERCENT_PURE_PARSER;
-       YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 254 "scan-gram.l"
-return PERCENT_RIGHT;
-       YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 255 "scan-gram.l"
-return PERCENT_LEX_PARAM;
-       YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 256 "scan-gram.l"
-return PERCENT_SKELETON;
-       YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 257 "scan-gram.l"
-return PERCENT_START;
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 258 "scan-gram.l"
-return PERCENT_TOKEN;
-       YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 259 "scan-gram.l"
-return PERCENT_TOKEN;
-       YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 260 "scan-gram.l"
-return PERCENT_TOKEN_TABLE;
-       YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 261 "scan-gram.l"
-return PERCENT_TYPE;
-       YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 262 "scan-gram.l"
-return PERCENT_UNION;
-       YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 263 "scan-gram.l"
-return PERCENT_VERBOSE;
-       YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 264 "scan-gram.l"
-return PERCENT_YACC;
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 266 "scan-gram.l"
-{
-    complain_at (*yylloc, _("invalid directive: %s"), quote (yytext));
-    YY_STEP;
-  }
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 271 "scan-gram.l"
-handle_syncline (yytext + strlen ("#line "), yylloc); YY_STEP;
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 273 "scan-gram.l"
-return EQUAL;
-       YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 274 "scan-gram.l"
-rule_length = 0; return COLON;
-       YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 275 "scan-gram.l"
-rule_length = 0; return PIPE;
-       YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 276 "scan-gram.l"
-return COMMA;
-       YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 277 "scan-gram.l"
-return SEMICOLON;
-       YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 279 "scan-gram.l"
-YY_STEP;
-       YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 281 "scan-gram.l"
-{
-    yylval->symbol = symbol_get (yytext, *yylloc);
-    rule_length++;
-    return ID;
-  }
-       YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 287 "scan-gram.l"
-{
-    unsigned long num;
-    errno = 0;
-    num = strtoul (yytext, 0, 10);
-    if (INT_MAX < num || errno)
-      {
-       complain_at (*yylloc, _("integer out of range: %s"), quote (yytext));
-       num = INT_MAX;
-      }
-    yylval->integer = num;
-    return INT;
-  }
-       YY_BREAK
-/* Characters.  We don't check there is only one.  */
-case 45:
-YY_RULE_SETUP
-#line 301 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_ESCAPED_CHARACTER);
-       YY_BREAK
-/* Strings. */
-case 46:
-YY_RULE_SETUP
-#line 304 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_ESCAPED_STRING);
-       YY_BREAK
-/* Comments. */
-case 47:
-YY_RULE_SETUP
-#line 307 "scan-gram.l"
-BEGIN SC_YACC_COMMENT;
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 308 "scan-gram.l"
-YY_STEP;
-       YY_BREAK
-/* Prologue. */
-case 49:
-YY_RULE_SETUP
-#line 311 "scan-gram.l"
-yy_push_state (SC_PROLOGUE);
-       YY_BREAK
-/* Code in between braces.  */
-case 50:
-YY_RULE_SETUP
-#line 314 "scan-gram.l"
-YY_OBS_GROW; braces_level = 0; yy_push_state (SC_BRACED_CODE);
-       YY_BREAK
-/* A type. */
-case 51:
-YY_RULE_SETUP
-#line 317 "scan-gram.l"
-{
-    obstack_grow (&string_obstack, yytext + 1, yyleng - 2);
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    return TYPE;
-  }
-       YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 325 "scan-gram.l"
-{
-    if (++percent_percent_count == 2)
-      yy_push_state (SC_EPILOGUE);
-    return PERCENT_PERCENT;
-  }
-       YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 331 "scan-gram.l"
-{
-    complain_at (*yylloc, _("invalid character: %s"), quote (yytext));
-    YY_STEP;
-  }
-       YY_BREAK
-
-/*-------------------------------------------------------------------.
-  | Whatever the start condition (but those which correspond to        |
-  | entities `swallowed' by Bison: SC_YACC_COMMENT, SC_ESCAPED_STRING, |
-  | and SC_ESCAPED_CHARACTER), no M4 character must escape as is.      |
-  `-------------------------------------------------------------------*/
-
-
-case 54:
-YY_RULE_SETUP
-#line 346 "scan-gram.l"
-obstack_sgrow (&string_obstack, "@<:@");
-       YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 347 "scan-gram.l"
-obstack_sgrow (&string_obstack, "@:>@");
-       YY_BREAK
-
-/*---------------------------------------------------------------.
-  | Scanning a Yacc comment.  The initial `/ *' is already eaten.  |
-  `---------------------------------------------------------------*/
-
-
-case 56:
-YY_RULE_SETUP
-#line 357 "scan-gram.l"
-{
-    YY_STEP;
-    BEGIN INITIAL;
-  }
-       YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 362 "scan-gram.l"
-;
-       YY_BREAK
-case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 364 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "/*", "*/");
-    BEGIN INITIAL;
-  }
-       YY_BREAK
-
-/*------------------------------------------------------------.
-  | Scanning a C comment.  The initial `/ *' is already eaten.  |
-  `------------------------------------------------------------*/
-
-
-case 58:
-YY_RULE_SETUP
-#line 377 "scan-gram.l"
-YY_OBS_GROW; yy_pop_state ();
-       YY_BREAK
-case 59:
-YY_RULE_SETUP
-#line 378 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_COMMENT):
-#line 380 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "/*", "*/");
-    yy_pop_state ();
-  }
-       YY_BREAK
-
-/*--------------------------------------------------------------.
-  | Scanning a line comment.  The initial `//' is already eaten.  |
-  `--------------------------------------------------------------*/
-
-
-case 60:
-YY_RULE_SETUP
-#line 393 "scan-gram.l"
-YY_OBS_GROW; yy_pop_state ();
-       YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 394 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 395 "scan-gram.l"
-yy_pop_state ();
-       YY_BREAK
-
-/*----------------------------------------------------------------.
-  | Scanning a C string, including its escapes.  The initial `"' is |
-  | already eaten.                                                  |
-  `----------------------------------------------------------------*/
-
-
-case 62:
-YY_RULE_SETUP
-#line 406 "scan-gram.l"
-{
-    assert (yy_top_state () == INITIAL);
-    YY_OBS_GROW;
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    yy_pop_state ();
-    rule_length++;
-    return STRING;
-  }
-       YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 416 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 418 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "\"", "\"");
-    assert (yy_top_state () == INITIAL);
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    yy_pop_state ();
-    return STRING;
-  }
-       YY_BREAK
-
-/*---------------------------------------------------------------.
-  | Scanning a C character, decoding its escapes.  The initial "'" |
-  | is already eaten.                                              |
-  `---------------------------------------------------------------*/
-
-
-case 64:
-YY_RULE_SETUP
-#line 435 "scan-gram.l"
-{
-    YY_OBS_GROW;
-    assert (yy_top_state () == INITIAL);
-    {
-      YY_OBS_FINISH;
-      yylval->symbol = symbol_get (last_string, *yylloc);
-      symbol_class_set (yylval->symbol, token_sym, *yylloc);
-      symbol_user_token_number_set (yylval->symbol,
-                                   (unsigned char) last_string[1], *yylloc);
-      YY_OBS_FREE;
-      yy_pop_state ();
-      rule_length++;
-      return ID;
-    }
-  }
-       YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 451 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 453 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "'", "'");
-    assert (yy_top_state () == INITIAL);
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    yy_pop_state ();
-    return CHARACTER;
-  }
-       YY_BREAK
-
-/*----------------------------.
-  | Decode escaped characters.  |
-  `----------------------------*/
-
-
-case 66:
-YY_RULE_SETUP
-#line 470 "scan-gram.l"
-{
-    unsigned long c = strtoul (yytext + 1, 0, 8);
-    if (UCHAR_MAX < c)
-      {
-       complain_at (*yylloc, _("invalid escape sequence: %s"),
-                    quote (yytext));
-       YY_STEP;
-      }
-    else
-      obstack_1grow (&string_obstack, c);
-  }
-       YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 482 "scan-gram.l"
-{
-    unsigned long c;
-    errno = 0;
-    c = strtoul (yytext + 2, 0, 16);
-    if (UCHAR_MAX < c || errno)
-      {
-       complain_at (*yylloc, _("invalid escape sequence: %s"),
-                    quote (yytext));
-       YY_STEP;
-      }
-    else
-      obstack_1grow (&string_obstack, c);
-  }
-       YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 496 "scan-gram.l"
-obstack_1grow (&string_obstack, '\a');
-       YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 497 "scan-gram.l"
-obstack_1grow (&string_obstack, '\b');
-       YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 498 "scan-gram.l"
-obstack_1grow (&string_obstack, '\f');
-       YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 499 "scan-gram.l"
-obstack_1grow (&string_obstack, '\n');
-       YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 500 "scan-gram.l"
-obstack_1grow (&string_obstack, '\r');
-       YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 501 "scan-gram.l"
-obstack_1grow (&string_obstack, '\t');
-       YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 502 "scan-gram.l"
-obstack_1grow (&string_obstack, '\v');
-       YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 503 "scan-gram.l"
-obstack_1grow (&string_obstack, yytext[1]);
-       YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 504 "scan-gram.l"
-{
-    int c = convert_ucn_to_byte (yytext);
-    if (c < 0)
-      {
-       complain_at (*yylloc, _("invalid escape sequence: %s"),
-                    quote (yytext));
-       YY_STEP;
-      }
-    else
-      obstack_1grow (&string_obstack, c);
-  }
-       YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 515 "scan-gram.l"
-{
-    complain_at (*yylloc, _("unrecognized escape sequence: %s"),
-                quote (yytext));
-    YY_OBS_GROW;
-  }
-       YY_BREAK
-/* FLex wants this rule, in case of a `\<<EOF>>'. */
-case 78:
-YY_RULE_SETUP
-#line 521 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-
-/*----------------------------------------------------------.
-  | Scanning a C character without decoding its escapes.  The |
-  | initial "'" is already eaten.                             |
-  `----------------------------------------------------------*/
-
-
-case 79:
-YY_RULE_SETUP
-#line 532 "scan-gram.l"
-{
-    YY_OBS_GROW;
-    assert (yy_top_state () != INITIAL);
-    yy_pop_state ();
-  }
-       YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 538 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case 81:
-YY_RULE_SETUP
-#line 539 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 540 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-/* Needed for `\<<EOF>>', `\\<<newline>>[', and `\\<<newline>>]'.  */
-case 83:
-YY_RULE_SETUP
-#line 542 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_CHARACTER):
-#line 544 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "'", "'");
-    assert (yy_top_state () != INITIAL);
-    yy_pop_state ();
-  }
-       YY_BREAK
-
-/*----------------------------------------------------------------.
-  | Scanning a C string, without decoding its escapes.  The initial |
-  | `"' is already eaten.                                           |
-  `----------------------------------------------------------------*/
-
-
-case 84:
-YY_RULE_SETUP
-#line 559 "scan-gram.l"
-{
-    assert (yy_top_state () != INITIAL);
-    YY_OBS_GROW;
-    yy_pop_state ();
-  }
-       YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 565 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 566 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 567 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-/* Needed for `\<<EOF>>', `\\<<newline>>[', and `\\<<newline>>]'.  */
-case 88:
-YY_RULE_SETUP
-#line 569 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_STRING):
-#line 571 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "\"", "\"");
-    assert (yy_top_state () != INITIAL);
-    yy_pop_state ();
-  }
-       YY_BREAK
-
-/*---------------------------------------------------.
-  | Strings, comments etc. can be found in user code.  |
-  `---------------------------------------------------*/
-
-
-/* Characters.  We don't check there is only one.  */
-case 89:
-YY_RULE_SETUP
-#line 586 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_CHARACTER);
-       YY_BREAK
-/* Strings. */
-case 90:
-YY_RULE_SETUP
-#line 589 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_STRING);
-       YY_BREAK
-/* Comments. */
-case 91:
-YY_RULE_SETUP
-#line 592 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_COMMENT);
-       YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 593 "scan-gram.l"
-YY_OBS_GROW; yy_push_state (SC_LINE_COMMENT);
-       YY_BREAK
-/* Not comments. */
-case 93:
-YY_RULE_SETUP
-#line 596 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-
-/*---------------------------------------------------------------.
-  | Scanning some code in braces (%union and actions). The initial |
-  | "{" is already eaten.                                          |
-  `---------------------------------------------------------------*/
-
-
-case 94:
-YY_RULE_SETUP
-#line 607 "scan-gram.l"
-YY_OBS_GROW; braces_level++;
-       YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 608 "scan-gram.l"
-YY_OBS_GROW; braces_level--;
-       YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 609 "scan-gram.l"
-{
-    YY_OBS_GROW;
-    braces_level--;
-    if (braces_level < 0)
-      {
-       yy_pop_state ();
-       YY_OBS_FINISH;
-       yylval->string = last_string;
-       rule_length++;
-       return BRACED_CODE;
-      }
-  }
-       YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 622 "scan-gram.l"
-{ handle_dollar (current_braced_code,
-                                                  yytext, *yylloc); }
-       YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 624 "scan-gram.l"
-{ handle_at (current_braced_code,
-                                              yytext, *yylloc); }
-       YY_BREAK
-/* `"<"{splice}"<"' tokenizes `<<%' correctly (as `<<' `%') rather
-     than incorrrectly (as `<' `<%').  */
-case 99:
-YY_RULE_SETUP
-#line 629 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_BRACED_CODE):
-#line 631 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "{", "}");
-    yy_pop_state ();
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    return BRACED_CODE;
-  }
-       YY_BREAK
-
-/*--------------------------------------------------------------.
-  | Scanning some prologue: from "%{" (already scanned) to "%}".  |
-  `--------------------------------------------------------------*/
-
-
-case 100:
-YY_RULE_SETUP
-#line 648 "scan-gram.l"
-{
-    yy_pop_state ();
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    return PROLOGUE;
-  }
-       YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 655 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 656 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_PROLOGUE):
-#line 658 "scan-gram.l"
-{
-    unexpected_end_of_file (*yylloc, "%{", "%}");
-    yy_pop_state ();
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    return PROLOGUE;
-  }
-       YY_BREAK
-
-/*---------------------------------------------------------------.
-  | Scanning the epilogue (everything after the second "%%", which |
-  | has already been eaten).                                       |
-  `---------------------------------------------------------------*/
-
-
-case 103:
-YY_RULE_SETUP
-#line 675 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-case YY_STATE_EOF(SC_EPILOGUE):
-#line 677 "scan-gram.l"
-{
-    yy_pop_state ();
-    YY_OBS_FINISH;
-    yylval->string = last_string;
-    return EPILOGUE;
-  }
-       YY_BREAK
-
-case 104:
-YY_RULE_SETUP
-#line 686 "scan-gram.l"
-YY_FATAL_ERROR( "flex scanner jammed" );
-       YY_BREAK
-#line 2079 "scan-gram.c"
-case YY_STATE_EOF(INITIAL):
-       yyterminate();
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = yy_hold_char;
-               YY_RESTORE_YY_MORE_OFFSET
-
-               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between yy_current_buffer and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       yy_n_chars = yy_current_buffer->yy_n_chars;
-                       yy_current_buffer->yy_input_file = yyin;
-                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state();
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-                       yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++yy_c_buf_p;
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = yy_c_buf_p;
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer() )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               yy_did_buffer_switch_on_eof = 0;
-
-                               if ( yywrap() )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               yy_c_buf_p =
-                                       yytext_ptr + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               yy_c_buf_p =
-                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-       } /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-       {
-       register char *dest = yy_current_buffer->yy_ch_buf;
-       register char *source = yytext_ptr;
-       register int number_to_move, i;
-       int ret_val;
-
-       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( yy_current_buffer->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a single character, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-       else
-               {
-               int num_to_read =
-                       yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-                       YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = yy_current_buffer;
-
-                       int yy_c_buf_p_offset =
-                               (int) (yy_c_buf_p - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yy_flex_realloc( (void *) b->yy_ch_buf,
-                                                        b->yy_buf_size + 2 );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = yy_current_buffer->yy_buf_size -
-                                               number_to_move - 1;
-#endif
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-                       yy_n_chars, num_to_read );
-
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       if ( yy_n_chars == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin );
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       yy_current_buffer->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       yy_n_chars += number_to_move;
-       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-       return ret_val;
-       }
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
-
-       yy_current_state = yy_start;
-       yy_current_state += YY_AT_BOL();
-
-       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-               {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 55);
-               if ( yy_accept[yy_current_state] )
-                       {
-                       yy_last_accepting_state = yy_current_state;
-                       yy_last_accepting_cpos = yy_cp;
-                       }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 411 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-               }
-
-       return yy_current_state;
-       }
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-       {
-       register int yy_is_jam;
-       register char *yy_cp = yy_c_buf_p;
-
-       register YY_CHAR yy_c = 55;
-       if ( yy_accept[yy_current_state] )
-               {
-               yy_last_accepting_state = yy_current_state;
-               yy_last_accepting_cpos = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 411 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 410);
-
-       return yy_is_jam ? 0 : yy_current_state;
-       }
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-       {
-       register char *yy_cp = yy_c_buf_p;
-
-       /* undo effects of setting up yytext */
-       *yy_cp = yy_hold_char;
-
-       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               register int number_to_move = yy_n_chars + 2;
-               register char *dest = &yy_current_buffer->yy_ch_buf[
-                                       yy_current_buffer->yy_buf_size + 2];
-               register char *source =
-                               &yy_current_buffer->yy_ch_buf[number_to_move];
-
-               while ( source > yy_current_buffer->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               yy_current_buffer->yy_n_chars =
-                       yy_n_chars = yy_current_buffer->yy_buf_size;
-
-               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-
-       yytext_ptr = yy_bp;
-       yy_hold_char = *yy_cp;
-       yy_c_buf_p = yy_cp;
-       }
-#endif /* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-       {
-       int c;
-
-       *yy_c_buf_p = yy_hold_char;
-
-       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       /* This was really a NUL. */
-                       *yy_c_buf_p = '\0';
-
-               else
-                       { /* need more input */
-                       int offset = yy_c_buf_p - yytext_ptr;
-                       ++yy_c_buf_p;
-
-                       switch ( yy_get_next_buffer() )
-                               {
-                               case EOB_ACT_LAST_MATCH:
-                                       /* This happens because yy_g_n_b()
-                                        * sees that we've accumulated a
-                                        * token and flags that we need to
-                                        * try matching the token before
-                                        * proceeding.  But for input(),
-                                        * there's no matching to consider.
-                                        * So convert the EOB_ACT_LAST_MATCH
-                                        * to EOB_ACT_END_OF_FILE.
-                                        */
-
-                                       /* Reset buffer status. */
-                                       yyrestart( yyin );
-
-                                       /* fall through */
-
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap() )
-                                               return EOF;
-
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput();
-#else
-                                       return input();
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       yy_c_buf_p = yytext_ptr + offset;
-                                       break;
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
-       *yy_c_buf_p = '\0';     /* preserve yytext */
-       yy_hold_char = *++yy_c_buf_p;
-
-       yy_current_buffer->yy_at_bol = (c == '\n');
-
-       return c;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-       {
-       if ( ! yy_current_buffer )
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-       yy_init_buffer( yy_current_buffer, input_file );
-       yy_load_buffer_state();
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-       {
-       if ( yy_current_buffer == new_buffer )
-               return;
-
-       if ( yy_current_buffer )
-               {
-               /* Flush out information for old buffer. */
-               *yy_c_buf_p = yy_hold_char;
-               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       yy_current_buffer = new_buffer;
-       yy_load_buffer_state();
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       yy_did_buffer_switch_on_eof = 1;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-       {
-       yy_n_chars = yy_current_buffer->yy_n_chars;
-       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-       yyin = yy_current_buffer->yy_input_file;
-       yy_hold_char = *yy_c_buf_p;
-       }
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer( b, file );
-
-       return b;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-       {
-       if ( ! b )
-               return;
-
-       if ( b == yy_current_buffer )
-               yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yy_flex_free( (void *) b->yy_ch_buf );
-
-       yy_flex_free( (void *) b );
-       }
-
-
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-       {
-       yy_flush_buffer( b );
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-       b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-       b->yy_is_interactive = 0;
-#else
-       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-       {
-       if ( ! b )
-               return;
-
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == yy_current_buffer )
-               yy_load_buffer_state();
-       }
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return 0;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer( b );
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-       {
-       int len;
-       for ( len = 0; yy_str[len]; ++len )
-               ;
-
-       return yy_scan_bytes( yy_str, len );
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-       {
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = len + 2;
-       buf = (char *) yy_flex_alloc( n );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < len; ++i )
-               buf[i] = bytes[i];
-
-       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer( buf, n );
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-       {
-       if ( yy_start_stack_ptr >= yy_start_stack_depth )
-               {
-               yy_size_t new_size;
-
-               yy_start_stack_depth += YY_START_STACK_INCR;
-               new_size = yy_start_stack_depth * sizeof( int );
-
-               if ( ! yy_start_stack )
-                       yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-               else
-                       yy_start_stack = (int *) yy_flex_realloc(
-                                       (void *) yy_start_stack, new_size );
-
-               if ( ! yy_start_stack )
-                       YY_FATAL_ERROR(
-                       "out of memory expanding start-condition stack" );
-               }
-
-       yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-       BEGIN(new_state);
-       }
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-       {
-       if ( --yy_start_stack_ptr < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN(yy_start_stack[yy_start_stack_ptr]);
-       }
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-       {
-       return yy_start_stack[yy_start_stack_ptr - 1];
-       }
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-       {
-       (void) fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-       }
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               yytext[yyleng] = yy_hold_char; \
-               yy_c_buf_p = yytext + n; \
-               yy_hold_char = *yy_c_buf_p; \
-               *yy_c_buf_p = '\0'; \
-               yyleng = n; \
-               } \
-       while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-       {
-       register int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-       }
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-       {
-       register int n;
-       for ( n = 0; s[n]; ++n )
-               ;
-
-       return n;
-       }
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-       {
-       return (void *) malloc( size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-       {
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return (void *) realloc( (char *) ptr, size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-       {
-       free( ptr );
-       }
-
-#if YY_MAIN
-int main()
-       {
-       yylex();
-       return 0;
-       }
-#endif
-#line 686 "scan-gram.l"
-
-
-/*------------------------------------------------------------------.
-| TEXT is pointing to a wannabee semantic value (i.e., a `$').      |
-|                                                                   |
-| Possible inputs: $[<TYPENAME>]($|integer)                         |
-|                                                                   |
-| Output to the STRING_OBSTACK a reference to this semantic value.  |
-`------------------------------------------------------------------*/
-
-static inline void
-handle_action_dollar (char *text, location_t location)
-{
-  const char *type_name = NULL;
-  char *cp = text + 1;
-
-  /* Get the type name if explicit. */
-  if (*cp == '<')
-    {
-      type_name = ++cp;
-      while (*cp != '>')
-       ++cp;
-      *cp = '\0';
-      ++cp;
-    }
-
-  if (*cp == '$')
-    {
-      if (!type_name)
-       type_name = symbol_list_n_type_name_get (current_rule, location, 0);
-      if (!type_name && typed)
-       complain_at (location, _("$$ of `%s' has no declared type"),
-                    current_rule->sym->tag);
-      if (!type_name)
-       type_name = "";
-      obstack_fgrow1 (&string_obstack,
-                     "]b4_lhs_value([%s])[", type_name);
-    }
-  else
-    {
-      long num;
-      errno = 0;
-      num = strtol (cp, 0, 10);
-
-      if (INT_MIN <= num && num <= rule_length && ! errno)
-       {
-         int n = num;
-         if (!type_name && n > 0)
-           type_name = symbol_list_n_type_name_get (current_rule, location,
-                                                    n);
-         if (!type_name && typed)
-           complain_at (location, _("$%d of `%s' has no declared type"),
-                     n, current_rule->sym->tag);
-         if (!type_name)
-           type_name = "";
-         obstack_fgrow3 (&string_obstack,
-                         "]b4_rhs_value([%d], [%d], [%s])[",
-                         rule_length, n, type_name);
-       }
-      else
-       complain_at (location, _("integer out of range: %s"), quote (text));
-    }
-}
-
-
-/*---------------------------------------------------------------.
-| TEXT is expected to be $$ in some code associated to a symbol: |
-| destructor or printer.                                         |
-`---------------------------------------------------------------*/
-
-static inline void
-handle_symbol_code_dollar (char *text, location_t location)
-{
-  char *cp = text + 1;
-  if (*cp == '$')
-    obstack_sgrow (&string_obstack, "]b4_dollar_dollar[");
-  else
-    complain_at (location, _("invalid value: %s"), quote (text));
-}
-
-
-/*-----------------------------------------------------------------.
-| Dispatch onto handle_action_dollar, or handle_destructor_dollar, |
-| depending upon CODE_KIND.                                        |
-`-----------------------------------------------------------------*/
-
-static void
-handle_dollar (braced_code_t braced_code_kind,
-              char *text, location_t location)
-{
-  switch (braced_code_kind)
-    {
-    case action_braced_code:
-      handle_action_dollar (text, location);
-      break;
-
-    case destructor_braced_code:
-    case printer_braced_code:
-      handle_symbol_code_dollar (text, location);
-      break;
-    }
-}
-
-
-/*------------------------------------------------------.
-| TEXT is a location token (i.e., a `@...').  Output to |
-| STRING_OBSTACK a reference to this location.          |
-`------------------------------------------------------*/
-
-static inline void
-handle_action_at (char *text, location_t location)
-{
-  char *cp = text + 1;
-  locations_flag = 1;
-
-  if (*cp == '$')
-    {
-      obstack_sgrow (&string_obstack, "]b4_lhs_location[");
-    }
-  else
-    {
-      long num;
-      errno = 0;
-      num = strtol (cp, 0, 10);
-
-      if (INT_MIN <= num && num <= rule_length && ! errno)
-       {
-         int n = num;
-         obstack_fgrow2 (&string_obstack, "]b4_rhs_location([%d], [%d])[",
-                         rule_length, n);
-       }
-      else
-       complain_at (location, _("integer out of range: %s"), quote (text));
-    }
-}
-
-
-/*---------------------------------------------------------------.
-| TEXT is expected to be @$ in some code associated to a symbol: |
-| destructor or printer.                                         |
-`---------------------------------------------------------------*/
-
-static inline void
-handle_symbol_code_at (char *text, location_t location)
-{
-  char *cp = text + 1;
-  if (*cp == '$')
-    obstack_sgrow (&string_obstack, "]b4_at_dollar[");
-  else
-    complain_at (location, _("invalid value: %s"), quote (text));
-}
-
-
-/*-------------------------------------------------------------------.
-| Dispatch onto handle_action_at, or handle_destructor_at, depending |
-| upon CODE_KIND.                                                    |
-`-------------------------------------------------------------------*/
-
-static void
-handle_at (braced_code_t braced_code_kind,
-          char *text, location_t location)
-{
-  switch (braced_code_kind)
-    {
-    case action_braced_code:
-      handle_action_at (text, location);
-      break;
-
-    case destructor_braced_code:
-    case printer_braced_code:
-      handle_symbol_code_at (text, location);
-      break;
-    }
-}
-
-
-/*------------------------------------------------------------------.
-| Convert universal character name UCN to a single-byte character,  |
-| and return that character.  Return -1 if UCN does not correspond  |
-| to a single-byte character.                                      |
-`------------------------------------------------------------------*/
-
-static int
-convert_ucn_to_byte (char const *ucn)
-{
-  unsigned long code = strtoul (ucn + 2, 0, 16);
-
-  /* FIXME: Currently we assume Unicode-compatible unibyte characters
-     on ASCII hosts (i.e., Latin-1 on hosts with 8-bit bytes).  On
-     non-ASCII hosts we support only the portable C character set.
-     These limitations should be removed once we add support for
-     multibyte characters.  */
-
-  if (UCHAR_MAX < code)
-    return -1;
-
-#if ! ('$' == 0x24 && '@' == 0x40 && '`' == 0x60 && '~' == 0x7e)
-  {
-    /* A non-ASCII host.  Use CODE to index into a table of the C
-       basic execution character set, which is guaranteed to exist on
-       all Standard C platforms.  This table also includes '$', '@',
-       and '`', which are not in the basic execution character set but
-       which are unibyte characters on all the platforms that we know
-       about.  */
-    static signed char const table[] =
-      {
-       '\0',   -1,   -1,   -1,   -1,   -1,   -1, '\a',
-       '\b', '\t', '\n', '\v', '\f', '\r',   -1,   -1,
-         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        ' ',  '!',  '"',  '#',  '$',  '%',  '&', '\'',
-        '(',  ')',  '*',  '+',  ',',  '-',  '.',  '/',
-        '0',  '1',  '2',  '3',  '4',  '5',  '6',  '7',
-        '8',  '9',  ':',  ';',  '<',  '=',  '>',  '?',
-        '@',  'A',  'B',  'C',  'D',  'E',  'F',  'G',
-        'H',  'I',  'J',  'K',  'L',  'M',  'N',  'O',
-        'P',  'Q',  'R',  'S',  'T',  'U',  'V',  'W',
-        'X',  'Y',  'Z',  '[', '\\',  ']',  '^',  '_',
-        '`',  'a',  'b',  'c',  'd',  'e',  'f',  'g',
-        'h',  'i',  'j',  'k',  'l',  'm',  'n',  'o',
-        'p',  'q',  'r',  's',  't',  'u',  'v',  'w',
-        'x',  'y',  'z',  '{',  '|',  '}',  '~'
-      };
-
-    code = code < sizeof table ? table[code] : -1;
-  }
-#endif
-
-  return code;
-}
-
-
-/*----------------------------------------------------------------.
-| Handle `#line INT "FILE"'.  ARGS has already skipped `#line '.  |
-`----------------------------------------------------------------*/
-
-static void
-handle_syncline (char *args, location_t *location)
-{
-  int lineno = strtol (args, &args, 10);
-  const char *file = NULL;
-  file = strchr (args, '"') + 1;
-  *strchr (file, '"') = 0;
-  /* FIXME: Leaking...  Can't free, as some locations are still
-     pointing to the old file name.  */
-  infile = xstrdup (file);
-  location->file = infile;
-  location->last_line = lineno;
-}
-
-/*-------------------------.
-| Initialize the scanner.  |
-`-------------------------*/
-
-void
-scanner_initialize (void)
-{
-  obstack_init (&string_obstack);
-}
-
-
-/*-----------------------------------------------.
-| Free all the memory allocated to the scanner.  |
-`-----------------------------------------------*/
-
-void
-scanner_free (void)
-{
-  obstack_free (&string_obstack, 0);
-  /* Reclaim Flex's buffers.  */
-  yy_delete_buffer (YY_CURRENT_BUFFER);
-}