Modified flex-2.6.4 to output XML to stderr showing token values and boundaries
authorNick Downing <downing.nick@gmail.com>
Tue, 12 Jun 2018 00:29:05 +0000 (10:29 +1000)
committerNick Downing <downing.nick@gmail.com>
Tue, 12 Jun 2018 00:29:05 +0000 (10:29 +1000)
src/scan.c
src/scan.c.patch [new file with mode: 0644]
src/scan.l

index 619c998..d72aed8 100644 (file)
@@ -1,4 +1,3 @@
-#line 1 "scan.c"
 
 #line 3 "scan.c"
 
@@ -8,8 +7,8 @@
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -84,48 +83,60 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
-
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
-/* begin standard C++ headers. */
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+#else  /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
 #else
-#define yynoreturn
+#define yyconst
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+/* 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) ((YY_CHAR) (c))
+#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_NEW_FILE yyrestart(yyin  )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -150,11 +161,6 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 extern int yyleng;
 
 extern FILE *yyin, *yyout;
@@ -162,9 +168,8 @@ extern FILE *yyin, *yyout;
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -179,7 +184,22 @@ extern FILE *yyin, *yyout;
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )
+
+#if 1
+#define unput(c) \
+ do { \
+  dump(yytext, yy_c_buf_p - yytext, stderr); \
+  yyunput(c, (yytext_ptr)); \
+  yytext = yy_c_buf_p; \
+ } while (0)
+#else
 #define unput(c) yyunput( c, (yytext_ptr)  )
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
@@ -193,7 +213,7 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       int yy_buf_size;
+       yy_size_t yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
@@ -221,7 +241,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-
+    
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -249,7 +269,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -260,6 +280,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
@@ -271,7 +292,7 @@ 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 = NULL;
+static char *yy_c_buf_p = (char *) 0;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
@@ -280,78 +301,83 @@ static int yy_start = 0;  /* start state number */
  */
 static int yy_did_buffer_switch_on_eof;
 
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
 
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
 
 #define yy_new_buffer yy_create_buffer
+
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
         yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
+
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
         yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
-typedef flex_uint8_t YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 
 typedef int yy_state_type;
 
 extern int yylineno;
+
 int yylineno = 1;
 
 extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
 #define yytext_ptr yytext
 
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (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); \
+       (yytext_ptr) -= (yy_more_len); \
+       yyleng = (size_t) (yy_cp - (yytext_ptr)); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
+
 #define YY_NUM_RULES 253
 #define YY_END_OF_BUFFER 254
 /* This struct is not used in this scanner,
@@ -361,7 +387,7 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1114] =
+static yyconst flex_int16_t yy_accept[1114] =
     {   0,
         0,    0,    0,    0,    0,    0,  246,  246,   40,   40,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -488,7 +514,7 @@ static const flex_int16_t yy_accept[1114] =
        80,   59,    0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         4,    4,    5,    1,    1,    1,    1,    1,    1,    1,
@@ -520,7 +546,7 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[85] =
+static yyconst flex_int32_t yy_meta[85] =
     {   0,
         1,    1,    2,    1,    3,    4,    1,    1,    5,    6,
         1,    7,    8,    9,    1,   10,    1,   11,   12,   12,
@@ -533,7 +559,7 @@ static const YY_CHAR yy_meta[85] =
        15,   20,    1,   21
     } ;
 
-static const flex_int16_t yy_base[1221] =
+static yyconst flex_int16_t yy_base[1221] =
     {   0,
         0,   84,  167,  250,  171,  184,  135,  142,  220,  231,
       196,  200,  334,    0, 3627, 3625,  211,  416,  203,  212,
@@ -671,7 +697,7 @@ static const flex_int16_t yy_base[1221] =
      4346, 4367, 3028, 4379, 4398, 4419, 4432, 4447, 4468, 4489
     } ;
 
-static const flex_int16_t yy_def[1221] =
+static yyconst flex_int16_t yy_def[1221] =
     {   0,
      1113, 1113, 1114, 1114, 1115, 1116, 1117, 1117, 1118, 1118,
      1119, 1119, 1113,   13, 1120, 1120, 1121, 1121, 1122, 1122,
@@ -809,7 +835,7 @@ static const flex_int16_t yy_def[1221] =
      1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113
     } ;
 
-static const flex_int16_t yy_nxt[4596] =
+static yyconst flex_int16_t yy_nxt[4596] =
     {   0,
        56,   57,   58,   56,   59,   56,   56,   56,   56,   56,
        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
@@ -1319,7 +1345,7 @@ static const flex_int16_t yy_nxt[4596] =
 
     } ;
 
-static const flex_int16_t yy_chk[4596] =
+static yyconst flex_int16_t yy_chk[4596] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1839,8 +1865,10 @@ int yy_flex_debug = 0;
  * 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
+static int yy_more_flag = 0;
+static int yy_more_len = 0;
+#define yymore() ((yy_more_flag) = 1)
+#define YY_MORE_ADJ (yy_more_len)
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "scan.l"
@@ -1963,9 +1991,16 @@ extern const char *escaped_qstart, *escaped_qend;
     if (!indented_code) line_directive_out(NULL, 0);\
 } while (0)
 
-#line 1966 "scan.c"
 
-#line 1968 "scan.c"
+
+
+
+
+
+
+
+
+#line 1995 "scan.c"
 
 #define INITIAL 0
 #define SECT2 1
@@ -2007,36 +2042,36 @@ extern const char *escaped_qstart, *escaped_qend;
 #define YY_EXTRA_TYPE void *
 #endif
 
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( void );
+int yylex_destroy (void );
 
-int yyget_debug ( void );
+int yyget_debug (void );
 
-void yyset_debug ( int debug_flag  );
+void yyset_debug (int debug_flag  );
 
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE yyget_extra (void );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
 
-FILE *yyget_in ( void );
+FILE *yyget_in (void );
 
-void yyset_in  ( FILE * _in_str  );
+void yyset_in  (FILE * in_str  );
 
-FILE *yyget_out ( void );
+FILE *yyget_out (void );
 
-void yyset_out  ( FILE * _out_str  );
+void yyset_out  (FILE * out_str  );
 
-                       int yyget_leng ( void );
+int yyget_leng (void );
 
-char *yyget_text ( void );
+char *yyget_text (void );
 
-int yyget_lineno ( void );
+int yyget_lineno (void );
 
-void yyset_lineno ( int _line_number  );
+void yyset_lineno (int line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -2044,31 +2079,28 @@ void yyset_lineno ( int _line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int yywrap (void );
 #else
-extern int yywrap ( void );
+extern int yywrap (void );
 #endif
 #endif
 
-#ifndef YY_NO_UNPUT
-    
-    static void yyunput ( int c, char *buf_ptr  );
+    static void yyunput (int c,char *buf_ptr  );
     
-#endif
-
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
+
 #ifdef __cplusplus
-static int yyinput ( void );
+static int yyinput (void );
 #else
-static int input ( void );
+static int input (void );
 #endif
 
 #endif
@@ -2077,9 +2109,9 @@ static int input ( void );
         static int yy_start_stack_depth = 0;
         static int *yy_start_stack = NULL;
     
-    static void yy_push_state ( int _new_state );
+    static void yy_push_state (int new_state );
     
-    static void yy_pop_state ( void );
+    static void yy_pop_state (void );
     
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
@@ -2096,7 +2128,7 @@ static int input ( void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -2107,7 +2139,7 @@ static int input ( void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -2120,7 +2152,7 @@ static int input ( void );
        else \
                { \
                errno=0; \
-               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -2175,7 +2207,7 @@ extern int yylex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
+#define YY_BREAK break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -2186,12 +2218,57 @@ extern int yylex (void);
 
 /** The main scanner function which does all the work.
  */
-YY_DECL
+static int real_yylex();
+static void dump(const char *p, size_t n, FILE *stream) {
+ size_t i;
+ for (i = 0; i < n; ++i)
+  switch (p[i]) {
+  case '<':
+   fputs("&lt;", stream);
+   break;
+  case '>':
+   fputs("&gt;", stream);
+   break;
+  case '&':
+   fputs("&amp;", stream);
+   break;
+  default:
+   fputc(p[i], stream);
+   break;
+  }
+}
+ YY_DECL
+ {
+ int result = real_yylex();
+ size_t n = strlen(yytext);
+ if (n) {
+  fprintf(stderr, "<token value=\"%d\">", result);
+  dump(yytext, n, stderr);
+  fputs("</token>", stderr);
+ }
+ else
+  fprintf(stderr, "<token value=\"%d\" />", result);
+ return result;
+}
+static int real_yylex()
 {
-       yy_state_type yy_current_state;
-       char *yy_cp, *yy_bp;
-       int yy_act;
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
     
+#line 158 "scan.l"
+
+       static int bracelevel, didadef, indented_code;
+       static int doing_rule_action = false;
+       static int option_sense;
+
+       int doing_codeblock = false;
+       int brace_depth=0, brace_start_line=0;
+       char nmdef[MAXLINE];
+
+
+#line 2230 "scan.c"
+
        if ( !(yy_init) )
                {
                (yy_init) = 1;
@@ -2212,29 +2289,20 @@ YY_DECL
                if ( ! YY_CURRENT_BUFFER ) {
                        yyensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
+                               yy_create_buffer(yyin,YY_BUF_SIZE );
                }
 
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
                }
 
-       {
-#line 158 "scan.l"
-
-#line 160 "scan.l"
-       static int bracelevel, didadef, indented_code;
-       static int doing_rule_action = false;
-       static int option_sense;
-
-       int doing_codeblock = false;
-       int brace_depth=0, brace_start_line=0;
-       char nmdef[MAXLINE];
-
-
-#line 2234 "scan.c"
-
-       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
+       while ( 1 )             /* loops until end-of-file is reached */
                {
+               (yy_more_len) = 0;
+               if ( (yy_more_flag) )
+                       {
+                       (yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
+                       (yy_more_flag) = 0;
+                       }
                yy_cp = (yy_c_buf_p);
 
                /* Support of yytext. */
@@ -2250,7 +2318,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+                       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;
@@ -2260,9 +2328,9 @@ yy_match:
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
                                if ( yy_current_state >= 1114 )
-                                       yy_c = yy_meta[yy_c];
+                                       yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
                while ( yy_base[yy_current_state] != 4511 );
@@ -2291,39 +2359,39 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 170 "scan.l"
+#line 169 "scan.l"
 START_CODEBLOCK(true);
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 171 "scan.l"
+#line 170 "scan.l"
 add_action("/*[""["); yy_push_state( COMMENT );
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 172 "scan.l"
+#line 171 "scan.l"
 yy_push_state( LINEDIR );
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 173 "scan.l"
+#line 172 "scan.l"
 return SCDECL;
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 174 "scan.l"
+#line 173 "scan.l"
 return XSCDECL;
        YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 175 "scan.l"
+#line 174 "scan.l"
 START_CODEBLOCK(false);
        YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 176 "scan.l"
+#line 175 "scan.l"
 {
                 brace_start_line = linenum;
                 ++linenum;
@@ -2334,17 +2402,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 184 "scan.l"
+#line 183 "scan.l"
 synerr( _("malformed '%top' directive") );
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 186 "scan.l"
+#line 185 "scan.l"
 /* discard */
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 188 "scan.l"
+#line 187 "scan.l"
 {
                        sectnum = 2;
                        bracelevel = 0;
@@ -2357,42 +2425,42 @@ YY_RULE_SETUP
 case 11:
 /* rule 11 can match eol */
 YY_RULE_SETUP
-#line 197 "scan.l"
+#line 196 "scan.l"
 yytext_is_array = false; ++linenum;
        YY_BREAK
 case 12:
 /* rule 12 can match eol */
 YY_RULE_SETUP
-#line 198 "scan.l"
+#line 197 "scan.l"
 yytext_is_array = true; ++linenum;
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 200 "scan.l"
+#line 199 "scan.l"
 BEGIN(OPTION); return TOK_OPTION;
        YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 202 "scan.l"
+#line 201 "scan.l"
 ++linenum; /* ignore */
        YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 203 "scan.l"
+#line 202 "scan.l"
 ++linenum;     /* ignore */
        YY_BREAK
 /* xgettext: no-c-format */
 case 16:
 /* rule 16 can match eol */
 YY_RULE_SETUP
-#line 206 "scan.l"
+#line 205 "scan.l"
 synerr( _( "unrecognized '%' directive" ) );
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 208 "scan.l"
+#line 207 "scan.l"
 {
                        if(yyleng < MAXLINE)
                         {
@@ -2410,51 +2478,51 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 223 "scan.l"
+#line 222 "scan.l"
 RETURNNAME;
        YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-#line 224 "scan.l"
+#line 223 "scan.l"
 ++linenum; /* allows blank lines in section 1 */
        YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 225 "scan.l"
+#line 224 "scan.l"
 ACTION_ECHO; ++linenum; /* maybe end of comment line */
        YY_BREAK
 
 /* */
 case 21:
 YY_RULE_SETUP
-#line 230 "scan.l"
+#line 229 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 231 "scan.l"
+#line 230 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-#line 233 "scan.l"
+#line 232 "scan.l"
 ++linenum; ACTION_ECHO;
        YY_BREAK
 
 
 case 24:
 YY_RULE_SETUP
-#line 236 "scan.l"
+#line 235 "scan.l"
 add_action("*/]""]"); yy_pop_state();
        YY_BREAK
 
 
 case 25:
 YY_RULE_SETUP
-#line 239 "scan.l"
+#line 238 "scan.l"
 ACTION_ECHO; yy_pop_state();
        YY_BREAK
 
@@ -2462,41 +2530,41 @@ ACTION_ECHO; yy_pop_state();
 /* This is the same as COMMENT, but is discarded rather than output. */
 case 26:
 YY_RULE_SETUP
-#line 244 "scan.l"
+#line 243 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 245 "scan.l"
+#line 244 "scan.l"
 ;
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 246 "scan.l"
+#line 245 "scan.l"
 ;
        YY_BREAK
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-#line 247 "scan.l"
+#line 246 "scan.l"
 ++linenum;
        YY_BREAK
 
 
 case 30:
 YY_RULE_SETUP
-#line 251 "scan.l"
+#line 250 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 252 "scan.l"
+#line 251 "scan.l"
 ;
        YY_BREAK
 case 32:
 /* rule 32 can match eol */
 YY_RULE_SETUP
-#line 253 "scan.l"
+#line 252 "scan.l"
 ++linenum;
        YY_BREAK
 
@@ -2504,17 +2572,17 @@ YY_RULE_SETUP
 case 33:
 /* rule 33 can match eol */
 YY_RULE_SETUP
-#line 257 "scan.l"
+#line 256 "scan.l"
 yy_pop_state();
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 258 "scan.l"
+#line 257 "scan.l"
 linenum = myctoi( yytext );
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 260 "scan.l"
+#line 259 "scan.l"
 {
                        free(infilename);
                        infilename = xstrdup(yytext + 1);
@@ -2523,19 +2591,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 265 "scan.l"
+#line 264 "scan.l"
 /* ignore spurious characters */
        YY_BREAK
 
 
 case 37:
 YY_RULE_SETUP
-#line 268 "scan.l"
+#line 267 "scan.l"
 ACTION_ECHO_QSTART;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 269 "scan.l"
+#line 268 "scan.l"
 ACTION_ECHO_QEND;
        YY_BREAK
 
@@ -2543,23 +2611,23 @@ ACTION_ECHO_QEND;
 case 39:
 /* rule 39 can match eol */
 YY_RULE_SETUP
-#line 273 "scan.l"
+#line 272 "scan.l"
 ++linenum; END_CODEBLOCK;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 274 "scan.l"
+#line 273 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 275 "scan.l"
+#line 274 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 42:
 /* rule 42 can match eol */
 YY_RULE_SETUP
-#line 276 "scan.l"
+#line 275 "scan.l"
 {
                        ++linenum;
                        ACTION_ECHO;
@@ -2570,7 +2638,7 @@ YY_RULE_SETUP
 
 case 43:
 YY_RULE_SETUP
-#line 284 "scan.l"
+#line 283 "scan.l"
 {
                 if( --brace_depth == 0){
                     /* TODO: Matched. */
@@ -2581,7 +2649,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 292 "scan.l"
+#line 291 "scan.l"
 {
                 brace_depth++;
                 buf_strnappend(&top_buf, yytext, yyleng);
@@ -2590,7 +2658,7 @@ YY_RULE_SETUP
 case 45:
 /* rule 45 can match eol */
 YY_RULE_SETUP
-#line 297 "scan.l"
+#line 296 "scan.l"
 {
                 ++linenum;
                 buf_strnappend(&top_buf, yytext, yyleng);
@@ -2598,23 +2666,23 @@ YY_RULE_SETUP
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 302 "scan.l"
+#line 301 "scan.l"
 buf_strnappend(&top_buf, escaped_qstart, (int) strlen(escaped_qstart));
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 303 "scan.l"
+#line 302 "scan.l"
 buf_strnappend(&top_buf, escaped_qend, (int) strlen(escaped_qend));
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 304 "scan.l"
+#line 303 "scan.l"
 {
        buf_strnappend(&top_buf, yytext, yyleng);
     }
        YY_BREAK
 case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE):
-#line 308 "scan.l"
+#line 307 "scan.l"
 {
                 linenum = brace_start_line;
                 synerr(_("Unmatched '{'"));
@@ -2625,12 +2693,12 @@ case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE):
 
 case 49:
 YY_RULE_SETUP
-#line 317 "scan.l"
+#line 316 "scan.l"
 /* separates name and definition */
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 319 "scan.l"
+#line 318 "scan.l"
 {
                        if(yyleng < MAXLINE)
                         {
@@ -2656,7 +2724,7 @@ YY_RULE_SETUP
 case 51:
 /* rule 51 can match eol */
 YY_RULE_SETUP
-#line 341 "scan.l"
+#line 340 "scan.l"
 {
                        if ( ! didadef )
                                synerr( _( "incomplete name definition" ) );
@@ -2669,42 +2737,42 @@ YY_RULE_SETUP
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-#line 351 "scan.l"
+#line 350 "scan.l"
 ++linenum; BEGIN(INITIAL);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 352 "scan.l"
+#line 351 "scan.l"
 option_sense = true;
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 354 "scan.l"
+#line 353 "scan.l"
 return '=';
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 356 "scan.l"
+#line 355 "scan.l"
 option_sense = ! option_sense;
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 358 "scan.l"
+#line 357 "scan.l"
 csize = option_sense ? 128 : 256;
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 359 "scan.l"
+#line 358 "scan.l"
 csize = option_sense ? 256 : 128;
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 361 "scan.l"
+#line 360 "scan.l"
 long_align = option_sense;
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 362 "scan.l"
+#line 361 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_ALWAYS_INTERACTIVE", option_sense );
             interactive = option_sense;
@@ -2712,64 +2780,64 @@ YY_RULE_SETUP
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 366 "scan.l"
+#line 365 "scan.l"
 yytext_is_array = option_sense;
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 367 "scan.l"
+#line 366 "scan.l"
 backing_up_report = option_sense;
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 368 "scan.l"
+#line 367 "scan.l"
 interactive = ! option_sense;
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 369 "scan.l"
+#line 368 "scan.l"
 bison_bridge_lval = option_sense;
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 370 "scan.l"
+#line 369 "scan.l"
 { if((bison_bridge_lloc = option_sense))
                             bison_bridge_lval = true;
                      }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 373 "scan.l"
+#line 372 "scan.l"
 C_plus_plus = option_sense;
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 374 "scan.l"
+#line 373 "scan.l"
 sf_set_case_ins(!option_sense);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 375 "scan.l"
+#line 374 "scan.l"
 sf_set_case_ins(option_sense);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 376 "scan.l"
+#line 375 "scan.l"
 ddebug = option_sense;
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 377 "scan.l"
+#line 376 "scan.l"
 spprdflt = ! option_sense;
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 378 "scan.l"
+#line 377 "scan.l"
 useecs = option_sense;
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 379 "scan.l"
+#line 378 "scan.l"
 {
                        useecs = usemecs = false;
                        use_read = fullspd = true;
@@ -2777,7 +2845,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 383 "scan.l"
+#line 382 "scan.l"
 {
                        useecs = usemecs = false;
                        use_read = fulltbl = true;
@@ -2785,32 +2853,32 @@ YY_RULE_SETUP
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 387 "scan.l"
+#line 386 "scan.l"
 ACTION_IFDEF("YY_NO_INPUT", ! option_sense);
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 388 "scan.l"
+#line 387 "scan.l"
 interactive = option_sense;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 389 "scan.l"
+#line 388 "scan.l"
 lex_compat = option_sense;
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 390 "scan.l"
+#line 389 "scan.l"
 posix_compat = option_sense;
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 391 "scan.l"
+#line 390 "scan.l"
 gen_line_dirs = option_sense;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 392 "scan.l"
+#line 391 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_MAIN", option_sense);
             /* Override yywrap */
@@ -2820,12 +2888,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 398 "scan.l"
+#line 397 "scan.l"
 usemecs = option_sense;
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 399 "scan.l"
+#line 398 "scan.l"
 {
                        ACTION_M4_IFDEF( "M4""_YY_NEVER_INTERACTIVE", option_sense );
             interactive = !option_sense;
@@ -2833,237 +2901,237 @@ YY_RULE_SETUP
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 403 "scan.l"
+#line 402 "scan.l"
 performance_report += option_sense ? 1 : -1;
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 404 "scan.l"
+#line 403 "scan.l"
 yytext_is_array = ! option_sense;
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 405 "scan.l"
+#line 404 "scan.l"
 use_read = option_sense;
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 406 "scan.l"
+#line 405 "scan.l"
 reentrant = option_sense;
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 407 "scan.l"
+#line 406 "scan.l"
 reject_really_used = option_sense;
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 408 "scan.l"
+#line 407 "scan.l"
 ACTION_M4_IFDEF( "M4""_YY_STACK_USED", option_sense );
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 409 "scan.l"
+#line 408 "scan.l"
 do_stdinit = option_sense;
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 410 "scan.l"
+#line 409 "scan.l"
 use_stdout = option_sense;
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 411 "scan.l"
+#line 410 "scan.l"
 ACTION_IFDEF("YY_NO_UNISTD_H", ! option_sense);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 412 "scan.l"
+#line 411 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_UNPUT", ! option_sense);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 413 "scan.l"
+#line 412 "scan.l"
 printstats = option_sense;
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 414 "scan.l"
+#line 413 "scan.l"
 nowarn = ! option_sense;
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 415 "scan.l"
+#line 414 "scan.l"
 do_yylineno = option_sense; ACTION_M4_IFDEF("M4""_YY_USE_LINENO", option_sense);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 416 "scan.l"
+#line 415 "scan.l"
 yymore_really_used = option_sense;
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 417 "scan.l"
+#line 416 "scan.l"
 do_yywrap = option_sense;
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 419 "scan.l"
+#line 418 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_PUSH_STATE", ! option_sense);
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 420 "scan.l"
+#line 419 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_POP_STATE", ! option_sense);
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 421 "scan.l"
+#line 420 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_TOP_STATE", ! option_sense);
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 423 "scan.l"
+#line 422 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BUFFER", ! option_sense);
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 424 "scan.l"
+#line 423 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BYTES", ! option_sense);
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 425 "scan.l"
+#line 424 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SCAN_STRING", ! option_sense);
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 427 "scan.l"
+#line 426 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_ALLOC", ! option_sense);
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 428 "scan.l"
+#line 427 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_REALLOC", ! option_sense);
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 429 "scan.l"
+#line 428 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_FLEX_FREE", ! option_sense);
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 431 "scan.l"
+#line 430 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_DEBUG", ! option_sense);
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 432 "scan.l"
+#line 431 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_DEBUG", ! option_sense);
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 433 "scan.l"
+#line 432 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_EXTRA", ! option_sense);
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 434 "scan.l"
+#line 433 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_EXTRA", ! option_sense);
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 435 "scan.l"
+#line 434 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LENG", ! option_sense);
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 436 "scan.l"
+#line 435 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_TEXT", ! option_sense);
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 437 "scan.l"
+#line 436 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LINENO", ! option_sense);
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 438 "scan.l"
+#line 437 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LINENO", ! option_sense);
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 439 "scan.l"
+#line 438 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_IN", ! option_sense);
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 440 "scan.l"
+#line 439 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_IN", ! option_sense);
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 441 "scan.l"
+#line 440 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_OUT", ! option_sense);
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 442 "scan.l"
+#line 441 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_OUT", ! option_sense);
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 443 "scan.l"
+#line 442 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LVAL", ! option_sense);
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 444 "scan.l"
+#line 443 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LVAL", ! option_sense);
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 445 "scan.l"
+#line 444 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense);
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 446 "scan.l"
+#line 445 "scan.l"
 ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense);
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 448 "scan.l"
+#line 447 "scan.l"
 return TOK_EXTRA_TYPE;
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 449 "scan.l"
+#line 448 "scan.l"
 return TOK_OUTFILE;
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 450 "scan.l"
+#line 449 "scan.l"
 return TOK_PREFIX;
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 451 "scan.l"
+#line 450 "scan.l"
 return TOK_YYCLASS;
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 452 "scan.l"
+#line 451 "scan.l"
 return TOK_HEADER_FILE;
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 453 "scan.l"
+#line 452 "scan.l"
 return TOK_TABLES_FILE;
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 454 "scan.l"
+#line 453 "scan.l"
 {
                     tablesverify = option_sense;
                     if(!tablesext && option_sense)
@@ -3072,7 +3140,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 461 "scan.l"
+#line 460 "scan.l"
 {
                        if(yyleng-1 < MAXLINE)
                         {
@@ -3089,7 +3157,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 475 "scan.l"
+#line 474 "scan.l"
 {
                        format_synerr( _( "unrecognized %%option: %s" ),
                                yytext );
@@ -3100,28 +3168,28 @@ YY_RULE_SETUP
 case 130:
 /* rule 130 can match eol */
 YY_RULE_SETUP
-#line 482 "scan.l"
+#line 481 "scan.l"
 ++linenum; BEGIN(INITIAL);
        YY_BREAK
 
 case 131:
 YY_RULE_SETUP
-#line 486 "scan.l"
+#line 485 "scan.l"
 ++bracelevel; yyless( 2 );     /* eat only %{ */
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 487 "scan.l"
+#line 486 "scan.l"
 --bracelevel; yyless( 2 );     /* eat only %} */
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 489 "scan.l"
+#line 488 "scan.l"
 START_CODEBLOCK(true); /* indented code in prolog */
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 491 "scan.l"
+#line 490 "scan.l"
 {
         /* non-indented code */
                if ( bracelevel <= 0 ) {
@@ -3137,17 +3205,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 504 "scan.l"
+#line 503 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 136:
 /* rule 136 can match eol */
 YY_RULE_SETUP
-#line 505 "scan.l"
+#line 504 "scan.l"
 ++linenum; ACTION_ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT2PROLOG):
-#line 507 "scan.l"
+#line 506 "scan.l"
 {
                        mark_prolog();
                        sectnum = 0;
@@ -3159,12 +3227,12 @@ case YY_STATE_EOF(SECT2PROLOG):
 case 137:
 /* rule 137 can match eol */
 YY_RULE_SETUP
-#line 515 "scan.l"
+#line 514 "scan.l"
 ++linenum; /* allow blank lines in section 2 */
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 517 "scan.l"
+#line 516 "scan.l"
 {
                        indented_code = false;
                        doing_codeblock = true;
@@ -3174,7 +3242,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 524 "scan.l"
+#line 523 "scan.l"
 {
                         /* Allow "<" to appear in (?x) patterns. */
                         if (!sf_skip_ws())
@@ -3184,12 +3252,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 530 "scan.l"
+#line 529 "scan.l"
 return '^';
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 531 "scan.l"
+#line 530 "scan.l"
 BEGIN(QUOTE); return '"';
        YY_BREAK
 case 142:
@@ -3197,7 +3265,7 @@ case 142:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 532 "scan.l"
+#line 531 "scan.l"
 {
                        BEGIN(NUM);
                        if ( lex_compat || posix_compat )
@@ -3209,16 +3277,15 @@ YY_RULE_SETUP
 case 143:
 /* rule 143 can match eol */
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-YY_LINENO_REWIND_TO(yy_bp + 1);
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 539 "scan.l"
+#line 538 "scan.l"
 return '$';
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 541 "scan.l"
+#line 540 "scan.l"
 {
                        bracelevel = 1;
                        BEGIN(PERCENT_BRACE_ACTION);
@@ -3234,7 +3301,7 @@ YY_RULE_SETUP
 case 145:
 /* rule 145 can match eol */
 YY_RULE_SETUP
-#line 552 "scan.l"
+#line 551 "scan.l"
 {
                         if (sf_skip_ws()){
                             /* We're in the middle of a (?x: ) pattern. */
@@ -3252,7 +3319,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 567 "scan.l"
+#line 566 "scan.l"
 {
 
                 if (sf_skip_ws()){
@@ -3269,12 +3336,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 581 "scan.l"
+#line 580 "scan.l"
 /* allow indented rules */ ;
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 583 "scan.l"
+#line 582 "scan.l"
 {
             if (sf_skip_ws()){
                 /* We're in the middle of a (?x: ) pattern. */
@@ -3300,7 +3367,7 @@ YY_RULE_SETUP
 case 149:
 /* rule 149 can match eol */
 YY_RULE_SETUP
-#line 605 "scan.l"
+#line 604 "scan.l"
 {
             if (sf_skip_ws()){
                 /* We're in the middle of a (?x: ) pattern. */
@@ -3322,15 +3389,15 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 case 150:
-#line 626 "scan.l"
+#line 625 "scan.l"
 case 151:
 YY_RULE_SETUP
-#line 626 "scan.l"
+#line 625 "scan.l"
 return EOF_OP;
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 628 "scan.l"
+#line 627 "scan.l"
 {
                        sectnum = 3;
                        BEGIN(no_section3_escape ? SECT3_NOESCAPE : SECT3);
@@ -3341,7 +3408,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 636 "scan.l"
+#line 635 "scan.l"
 {
                        int cclval;
 
@@ -3391,12 +3458,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 682 "scan.l"
+#line 681 "scan.l"
 return CCL_OP_DIFF;
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 683 "scan.l"
+#line 682 "scan.l"
 return CCL_OP_UNION;
        YY_BREAK
 /* Check for :space: at the end of the rule so we don't
@@ -3406,7 +3473,7 @@ return CCL_OP_UNION;
 case 156:
 /* rule 156 can match eol */
 YY_RULE_SETUP
-#line 690 "scan.l"
+#line 689 "scan.l"
 {
                        char *nmdefptr;
             int end_is_ws, end_ch;
@@ -3434,7 +3501,11 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
                                { /* push back name surrounded by ()'s */
                                size_t len = strlen( nmdefptr );
                 if (end_is_ws)
+#if 1
+ yyless(yyleng - 1);
+#else
                     unput(end_ch);
+#endif
 
                                if ( lex_compat || nmdefptr[0] == '^' ||
                                     (len > 0 && nmdefptr[len - 1] == '$')
@@ -3457,7 +3528,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 738 "scan.l"
+#line 741 "scan.l"
 {
                     if (sf_skip_ws())
                         yy_push_state(COMMENT_DISCARD);
@@ -3470,7 +3541,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 748 "scan.l"
+#line 751 "scan.l"
 {
                     if (lex_compat || posix_compat){
                         /* Push back the "?#" and treat it like a normal parens. */
@@ -3484,7 +3555,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 758 "scan.l"
+#line 761 "scan.l"
 {
                     sf_push();
                     if (lex_compat || posix_compat)
@@ -3497,12 +3568,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 767 "scan.l"
+#line 770 "scan.l"
 sf_push(); return '(';
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 768 "scan.l"
+#line 771 "scan.l"
 {
                     if (_sf_top_ix > 0) {
                         sf_pop();
@@ -3513,12 +3584,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 776 "scan.l"
+#line 779 "scan.l"
 return (unsigned char) yytext[0];
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 777 "scan.l"
+#line 780 "scan.l"
 RETURNCHAR;
        YY_BREAK
 
@@ -3526,17 +3597,17 @@ RETURNCHAR;
 case 164:
 /* rule 164 can match eol */
 YY_RULE_SETUP
-#line 782 "scan.l"
+#line 785 "scan.l"
 ++linenum;     /* Allow blank lines & continuations */
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 783 "scan.l"
+#line 786 "scan.l"
 return (unsigned char) yytext[0];
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 784 "scan.l"
+#line 787 "scan.l"
 BEGIN(SECT2); return '>';
        YY_BREAK
 case 167:
@@ -3544,17 +3615,17 @@ case 167:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 785 "scan.l"
+#line 788 "scan.l"
 BEGIN(CARETISBOL); return '>';
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 786 "scan.l"
+#line 789 "scan.l"
 RETURNNAME;
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 787 "scan.l"
+#line 790 "scan.l"
 {
                        format_synerr( _( "bad <start condition>: %s" ),
                                yytext );
@@ -3563,24 +3634,24 @@ YY_RULE_SETUP
 
 case 170:
 YY_RULE_SETUP
-#line 793 "scan.l"
+#line 796 "scan.l"
 BEGIN(SECT2); return '^';
        YY_BREAK
 
 case 171:
 YY_RULE_SETUP
-#line 797 "scan.l"
+#line 800 "scan.l"
 RETURNCHAR;
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 798 "scan.l"
+#line 801 "scan.l"
 BEGIN(SECT2); return '"';
        YY_BREAK
 case 173:
 /* rule 173 can match eol */
 YY_RULE_SETUP
-#line 800 "scan.l"
+#line 803 "scan.l"
 {
                        synerr( _( "missing quote" ) );
                        BEGIN(SECT2);
@@ -3592,49 +3663,49 @@ YY_RULE_SETUP
 
 case 174:
 YY_RULE_SETUP
-#line 809 "scan.l"
+#line 812 "scan.l"
 BEGIN(SECT2);
        YY_BREAK
 case 175:
 YY_RULE_SETUP
-#line 810 "scan.l"
+#line 813 "scan.l"
 BEGIN(GROUP_MINUS_PARAMS);
        YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 811 "scan.l"
+#line 814 "scan.l"
 sf_set_case_ins(1);
        YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 812 "scan.l"
+#line 815 "scan.l"
 sf_set_dot_all(1);
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 813 "scan.l"
+#line 816 "scan.l"
 sf_set_skip_ws(1);
        YY_BREAK
 
 
 case 179:
 YY_RULE_SETUP
-#line 816 "scan.l"
+#line 819 "scan.l"
 BEGIN(SECT2);
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 817 "scan.l"
+#line 820 "scan.l"
 sf_set_case_ins(0);
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 818 "scan.l"
+#line 821 "scan.l"
 sf_set_dot_all(0);
        YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 819 "scan.l"
+#line 822 "scan.l"
 sf_set_skip_ws(0);
        YY_BREAK
 
@@ -3644,7 +3715,7 @@ case 183:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 823 "scan.l"
+#line 826 "scan.l"
 BEGIN(CCL); return '^';
        YY_BREAK
 case 184:
@@ -3652,12 +3723,12 @@ case 184:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 824 "scan.l"
+#line 827 "scan.l"
 return '^';
        YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 825 "scan.l"
+#line 828 "scan.l"
 BEGIN(CCL); RETURNCHAR;
        YY_BREAK
 
@@ -3667,23 +3738,23 @@ case 186:
 (yy_c_buf_p) = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 829 "scan.l"
+#line 832 "scan.l"
 return '-';
        YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 830 "scan.l"
+#line 833 "scan.l"
 RETURNCHAR;
        YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 831 "scan.l"
+#line 834 "scan.l"
 BEGIN(SECT2); return ']';
        YY_BREAK
 case 189:
 /* rule 189 can match eol */
 YY_RULE_SETUP
-#line 832 "scan.l"
+#line 835 "scan.l"
 {
                        synerr( _( "bad character class" ) );
                        BEGIN(SECT2);
@@ -3694,127 +3765,127 @@ YY_RULE_SETUP
 
 case 190:
 YY_RULE_SETUP
-#line 840 "scan.l"
+#line 843 "scan.l"
 BEGIN(CCL); return CCE_ALNUM;
        YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 841 "scan.l"
+#line 844 "scan.l"
 BEGIN(CCL); return CCE_ALPHA;
        YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 842 "scan.l"
+#line 845 "scan.l"
 BEGIN(CCL); return CCE_BLANK;
        YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 843 "scan.l"
+#line 846 "scan.l"
 BEGIN(CCL); return CCE_CNTRL;
        YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 844 "scan.l"
+#line 847 "scan.l"
 BEGIN(CCL); return CCE_DIGIT;
        YY_BREAK
 case 195:
 YY_RULE_SETUP
-#line 845 "scan.l"
+#line 848 "scan.l"
 BEGIN(CCL); return CCE_GRAPH;
        YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 846 "scan.l"
+#line 849 "scan.l"
 BEGIN(CCL); return CCE_LOWER;
        YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 847 "scan.l"
+#line 850 "scan.l"
 BEGIN(CCL); return CCE_PRINT;
        YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 848 "scan.l"
+#line 851 "scan.l"
 BEGIN(CCL); return CCE_PUNCT;
        YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 849 "scan.l"
+#line 852 "scan.l"
 BEGIN(CCL); return CCE_SPACE;
        YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 850 "scan.l"
+#line 853 "scan.l"
 BEGIN(CCL); return CCE_UPPER;
        YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 851 "scan.l"
+#line 854 "scan.l"
 BEGIN(CCL); return CCE_XDIGIT;
        YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 853 "scan.l"
+#line 856 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALNUM;
        YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 854 "scan.l"
+#line 857 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALPHA;
        YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 855 "scan.l"
+#line 858 "scan.l"
 BEGIN(CCL); return CCE_NEG_BLANK;
        YY_BREAK
 case 205:
 YY_RULE_SETUP
-#line 856 "scan.l"
+#line 859 "scan.l"
 BEGIN(CCL); return CCE_NEG_CNTRL;
        YY_BREAK
 case 206:
 YY_RULE_SETUP
-#line 857 "scan.l"
+#line 860 "scan.l"
 BEGIN(CCL); return CCE_NEG_DIGIT;
        YY_BREAK
 case 207:
 YY_RULE_SETUP
-#line 858 "scan.l"
+#line 861 "scan.l"
 BEGIN(CCL); return CCE_NEG_GRAPH;
        YY_BREAK
 case 208:
 YY_RULE_SETUP
-#line 859 "scan.l"
+#line 862 "scan.l"
 BEGIN(CCL); return CCE_NEG_LOWER;
        YY_BREAK
 case 209:
 YY_RULE_SETUP
-#line 860 "scan.l"
+#line 863 "scan.l"
 BEGIN(CCL); return CCE_NEG_PRINT;
        YY_BREAK
 case 210:
 YY_RULE_SETUP
-#line 861 "scan.l"
+#line 864 "scan.l"
 BEGIN(CCL); return CCE_NEG_PUNCT;
        YY_BREAK
 case 211:
 YY_RULE_SETUP
-#line 862 "scan.l"
+#line 865 "scan.l"
 BEGIN(CCL); return CCE_NEG_SPACE;
        YY_BREAK
 case 212:
 YY_RULE_SETUP
-#line 863 "scan.l"
+#line 866 "scan.l"
 BEGIN(CCL); return CCE_NEG_UPPER;
        YY_BREAK
 case 213:
 YY_RULE_SETUP
-#line 864 "scan.l"
+#line 867 "scan.l"
 BEGIN(CCL); return CCE_NEG_XDIGIT;
        YY_BREAK
 case 214:
 YY_RULE_SETUP
-#line 865 "scan.l"
+#line 868 "scan.l"
 {
                        format_synerr(
                                _( "bad character class expression: %s" ),
@@ -3826,7 +3897,7 @@ YY_RULE_SETUP
 
 case 215:
 YY_RULE_SETUP
-#line 874 "scan.l"
+#line 877 "scan.l"
 {
                        yylval = myctoi( yytext );
                        return NUMBER;
@@ -3834,12 +3905,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 216:
 YY_RULE_SETUP
-#line 879 "scan.l"
+#line 882 "scan.l"
 return ',';
        YY_BREAK
 case 217:
 YY_RULE_SETUP
-#line 880 "scan.l"
+#line 883 "scan.l"
 {
                        BEGIN(SECT2);
                        if ( lex_compat || posix_compat )
@@ -3850,7 +3921,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 218:
 YY_RULE_SETUP
-#line 888 "scan.l"
+#line 891 "scan.l"
 {
                        synerr( _( "bad character inside {}'s" ) );
                        BEGIN(SECT2);
@@ -3860,7 +3931,7 @@ YY_RULE_SETUP
 case 219:
 /* rule 219 can match eol */
 YY_RULE_SETUP
-#line 894 "scan.l"
+#line 897 "scan.l"
 {
                        synerr( _( "missing }" ) );
                        BEGIN(SECT2);
@@ -3872,18 +3943,18 @@ YY_RULE_SETUP
 
 case 220:
 YY_RULE_SETUP
-#line 904 "scan.l"
+#line 907 "scan.l"
 bracelevel = 0;
        YY_BREAK
 case 221:
 YY_RULE_SETUP
-#line 906 "scan.l"
+#line 909 "scan.l"
 ACTION_ECHO; yy_push_state( CODE_COMMENT );
        YY_BREAK
 
 case 222:
 YY_RULE_SETUP
-#line 909 "scan.l"
+#line 912 "scan.l"
 {
             ACTION_ECHO;
             CHECK_REJECT(yytext);
@@ -3891,7 +3962,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 223:
 YY_RULE_SETUP
-#line 913 "scan.l"
+#line 916 "scan.l"
 {
             ACTION_ECHO;
             CHECK_YYMORE(yytext);
@@ -3900,13 +3971,13 @@ YY_RULE_SETUP
 
 case 224:
 YY_RULE_SETUP
-#line 919 "scan.l"
+#line 922 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 225:
 /* rule 225 can match eol */
 YY_RULE_SETUP
-#line 920 "scan.l"
+#line 923 "scan.l"
 {
                ++linenum;
                ACTION_ECHO;
@@ -3924,43 +3995,43 @@ YY_RULE_SETUP
 
 case 226:
 YY_RULE_SETUP
-#line 936 "scan.l"
+#line 939 "scan.l"
 ACTION_ECHO; ++bracelevel;
        YY_BREAK
 case 227:
 YY_RULE_SETUP
-#line 937 "scan.l"
+#line 940 "scan.l"
 ACTION_ECHO; --bracelevel;
        YY_BREAK
 case 228:
 YY_RULE_SETUP
-#line 938 "scan.l"
+#line 941 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 229:
 YY_RULE_SETUP
-#line 939 "scan.l"
+#line 942 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 230:
 YY_RULE_SETUP
-#line 940 "scan.l"
+#line 943 "scan.l"
 ACTION_ECHO; /* character constant */
        YY_BREAK
 case 231:
 YY_RULE_SETUP
-#line 941 "scan.l"
+#line 944 "scan.l"
 ACTION_ECHO; BEGIN(CHARACTER_CONSTANT);
        YY_BREAK
 case 232:
 YY_RULE_SETUP
-#line 942 "scan.l"
+#line 945 "scan.l"
 ACTION_ECHO; BEGIN(ACTION_STRING);
        YY_BREAK
 case 233:
 /* rule 233 can match eol */
 YY_RULE_SETUP
-#line 943 "scan.l"
+#line 946 "scan.l"
 {
                 ++linenum;
                 ACTION_ECHO;
@@ -3975,31 +4046,31 @@ YY_RULE_SETUP
        YY_BREAK
 case 234:
 YY_RULE_SETUP
-#line 954 "scan.l"
+#line 957 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
 
 case 235:
 YY_RULE_SETUP
-#line 958 "scan.l"
+#line 961 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 236:
 YY_RULE_SETUP
-#line 959 "scan.l"
+#line 962 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
 
 case 237:
 YY_RULE_SETUP
-#line 962 "scan.l"
+#line 965 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 238:
 YY_RULE_SETUP
-#line 963 "scan.l"
+#line 966 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
@@ -4007,24 +4078,24 @@ ACTION_ECHO; BEGIN(ACTION);
 case 239:
 /* rule 239 can match eol */
 YY_RULE_SETUP
-#line 966 "scan.l"
+#line 969 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 240:
 /* rule 240 can match eol */
 YY_RULE_SETUP
-#line 967 "scan.l"
+#line 970 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 241:
 /* rule 241 can match eol */
 YY_RULE_SETUP
-#line 968 "scan.l"
+#line 971 "scan.l"
 ++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); } else { BEGIN(ACTION); }
        YY_BREAK
 case 242:
 YY_RULE_SETUP
-#line 969 "scan.l"
+#line 972 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
@@ -4034,7 +4105,7 @@ case YY_STATE_EOF(COMMENT_DISCARD):
 case YY_STATE_EOF(ACTION):
 case YY_STATE_EOF(ACTION_STRING):
 case YY_STATE_EOF(CHARACTER_CONSTANT):
-#line 972 "scan.l"
+#line 975 "scan.l"
 {
                        synerr( _( "EOF encountered inside an action" ) );
                        yyterminate();
@@ -4043,7 +4114,7 @@ case YY_STATE_EOF(CHARACTER_CONSTANT):
 case YY_STATE_EOF(EXTENDED_COMMENT):
 case YY_STATE_EOF(GROUP_WITH_PARAMS):
 case YY_STATE_EOF(GROUP_MINUS_PARAMS):
-#line 977 "scan.l"
+#line 980 "scan.l"
 {
                        synerr( _( "EOF encountered inside pattern" ) );
                        yyterminate();
@@ -4051,7 +4122,7 @@ case YY_STATE_EOF(GROUP_MINUS_PARAMS):
        YY_BREAK
 case 243:
 YY_RULE_SETUP
-#line 982 "scan.l"
+#line 985 "scan.l"
 {
                        yylval = myesc( (unsigned char *) yytext );
 
@@ -4064,27 +4135,27 @@ YY_RULE_SETUP
 
 case 244:
 YY_RULE_SETUP
-#line 992 "scan.l"
+#line 995 "scan.l"
 fputs(escaped_qstart, yyout);
        YY_BREAK
 case 245:
 YY_RULE_SETUP
-#line 993 "scan.l"
+#line 996 "scan.l"
 fputs(escaped_qend, yyout);
        YY_BREAK
 case 246:
 /* rule 246 can match eol */
 YY_RULE_SETUP
-#line 994 "scan.l"
+#line 997 "scan.l"
 ECHO;
        YY_BREAK
 case 247:
 YY_RULE_SETUP
-#line 995 "scan.l"
+#line 998 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3):
-#line 996 "scan.l"
+#line 999 "scan.l"
 {
         sectnum = 0;
         yyterminate();
@@ -4094,27 +4165,27 @@ case YY_STATE_EOF(SECT3):
 
 case 248:
 YY_RULE_SETUP
-#line 1002 "scan.l"
+#line 1005 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qstart);
        YY_BREAK
 case 249:
 YY_RULE_SETUP
-#line 1003 "scan.l"
+#line 1006 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qend);
        YY_BREAK
 case 250:
 /* rule 250 can match eol */
 YY_RULE_SETUP
-#line 1004 "scan.l"
+#line 1007 "scan.l"
 ECHO;
        YY_BREAK
 case 251:
 YY_RULE_SETUP
-#line 1005 "scan.l"
+#line 1008 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3_NOESCAPE):
-#line 1006 "scan.l"
+#line 1009 "scan.l"
 {
        sectnum = 0;
        yyterminate();
@@ -4124,15 +4195,15 @@ case YY_STATE_EOF(SECT3_NOESCAPE):
 case 252:
 /* rule 252 can match eol */
 YY_RULE_SETUP
-#line 1011 "scan.l"
+#line 1014 "scan.l"
 format_synerr( _( "bad character: %s" ), yytext );
        YY_BREAK
 case 253:
 YY_RULE_SETUP
-#line 1013 "scan.l"
+#line 1016 "scan.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 4135 "scan.c"
+#line 4166 "scan.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(SECT2):
 case YY_STATE_EOF(CODEBLOCK):
@@ -4223,7 +4294,7 @@ case YY_STATE_EOF(LINEDIR):
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( yywrap(  ) )
+                               if ( yywrap( ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
@@ -4275,8 +4346,8 @@ case YY_STATE_EOF(LINEDIR):
                YY_FATAL_ERROR(
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
+ dump(yytext, yy_c_buf_p - yytext, stderr);
                } /* end of scanning one token */
-       } /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -4288,9 +4359,9 @@ case YY_STATE_EOF(LINEDIR):
  */
 static int yy_get_next_buffer (void)
 {
-       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       char *source = (yytext_ptr);
-       int number_to_move, i;
+       register char *dest = YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -4319,7 +4390,7 @@ static int yy_get_next_buffer (void)
        /* Try to read more data. */
 
        /* First move last chars to start of buffer. */
-       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);
@@ -4339,7 +4410,7 @@ static int yy_get_next_buffer (void)
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
@@ -4355,12 +4426,11 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       yyrealloc( (void *) b->yy_ch_buf,
-                                                        (yy_size_t) (b->yy_buf_size + 2)  );
+                                       yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = NULL;
+                               b->yy_ch_buf = 0;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -4378,7 +4448,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), num_to_read );
+                       (yy_n_chars), (size_t) num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -4388,7 +4458,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin  );
+                       yyrestart(yyin  );
                        }
 
                else
@@ -4402,15 +4472,12 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
-               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-               /* "- 2" to take care of EOB's */
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -4426,15 +4493,15 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-       yy_state_type yy_current_state;
-       char *yy_cp;
+       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 )
                {
-               YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                if ( yy_accept[yy_current_state] )
                        {
                        (yy_last_accepting_state) = yy_current_state;
@@ -4444,9 +4511,9 @@ static int yy_get_next_buffer (void)
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 1114 )
-                               yy_c = yy_meta[yy_c];
+                               yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                }
 
        return yy_current_state;
@@ -4459,10 +4526,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-       int yy_is_jam;
-       char *yy_cp = (yy_c_buf_p);
+       register int yy_is_jam;
+       register char *yy_cp = (yy_c_buf_p);
 
-       YY_CHAR yy_c = 1;
+       register YY_CHAR yy_c = 1;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -4472,19 +4539,17 @@ static int yy_get_next_buffer (void)
                {
                yy_current_state = (int) yy_def[yy_current_state];
                if ( yy_current_state >= 1114 )
-                       yy_c = yy_meta[yy_c];
+                       yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 1113);
 
-               return yy_is_jam ? 0 : yy_current_state;
+       return yy_is_jam ? 0 : yy_current_state;
 }
 
-#ifndef YY_NO_UNPUT
-
-    static void yyunput (int c, char * yy_bp )
+    static void yyunput (int c, register char * yy_bp )
 {
-       char *yy_cp;
+       register char *yy_cp;
     
     yy_cp = (yy_c_buf_p);
 
@@ -4494,10 +4559,10 @@ static int yy_get_next_buffer (void)
        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
                { /* need to shift things up to make room */
                /* +2 for EOB chars. */
-               int number_to_move = (yy_n_chars) + 2;
-               char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+               register int number_to_move = (yy_n_chars) + 2;
+               register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-               char *source =
+               register char *source =
                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 
                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
@@ -4506,7 +4571,7 @@ static int yy_get_next_buffer (void)
                yy_cp += (int) (dest - source);
                yy_bp += (int) (dest - source);
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-                       (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
 
                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
@@ -4519,8 +4584,6 @@ static int yy_get_next_buffer (void)
        (yy_c_buf_p) = yy_cp;
 }
 
-#endif
-
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -4545,7 +4608,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -4562,14 +4625,14 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       yyrestart( yyin );
+                                       yyrestart(yyin );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( yywrap(  ) )
-                                               return 0;
+                                       if ( yywrap( ) )
+                                               return EOF;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -4608,11 +4671,11 @@ static int yy_get_next_buffer (void)
        if ( ! YY_CURRENT_BUFFER ){
         yyensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
+            yy_create_buffer(yyin,YY_BUF_SIZE );
        }
 
-       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-       yy_load_buffer_state(  );
+       yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+       yy_load_buffer_state( );
 }
 
 /** Switch to a different input buffer.
@@ -4640,7 +4703,7 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(  );
+       yy_load_buffer_state( );
 
        /* We don't actually know whether we did this switch during
         * EOF (yywrap()) processing, but the only time this flag
@@ -4668,7 +4731,7 @@ static void yy_load_buffer_state  (void)
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
@@ -4677,13 +4740,13 @@ static void yy_load_buffer_state  (void)
        /* 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 *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+       b->yy_ch_buf = (char *) yyalloc(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 );
+       yy_init_buffer(b,file );
 
        return b;
 }
@@ -4702,11 +4765,15 @@ static void yy_load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               yyfree( (void *) b->yy_ch_buf  );
+               yyfree((void *) b->yy_ch_buf  );
 
-       yyfree( (void *) b  );
+       yyfree((void *) b  );
 }
 
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a yyrestart() or at EOF.
@@ -4716,7 +4783,7 @@ static void yy_load_buffer_state  (void)
 {
        int oerrno = errno;
     
-       yy_flush_buffer( b );
+       yy_flush_buffer(b );
 
        b->yy_input_file = file;
        b->yy_fill_buffer = 1;
@@ -4759,7 +4826,7 @@ static void yy_load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -4790,7 +4857,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
        /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(  );
+       yy_load_buffer_state( );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
@@ -4809,7 +4876,7 @@ void yypop_buffer_state (void)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -4819,7 +4886,7 @@ void yypop_buffer_state (void)
  */
 static void yyensure_buffer_stack (void)
 {
-       yy_size_t num_to_alloc;
+       int num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -4827,15 +4894,15 @@ static void yyensure_buffer_stack (void)
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
                 * immediate realloc on the next call.
          */
-      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+               num_to_alloc = 1;
                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+                                                                 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+                               
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -4844,7 +4911,7 @@ static void yyensure_buffer_stack (void)
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
                /* Increase the buffer to prepare for a possible push. */
-               yy_size_t grow_size = 8 /* arbitrary grow size */;
+               int grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
@@ -4864,7 +4931,7 @@ static void yyensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
@@ -4874,23 +4941,23 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
             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 NULL;
+               return 0;
 
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
+       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 = NULL;
+       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  );
+       yy_switch_to_buffer(b  );
 
        return b;
 }
@@ -4903,10 +4970,10 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
  * @note If you want to scan bytes that may contain NUL values, then use
  *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes( yystr, (int) strlen(yystr) );
+       return yy_scan_bytes(yystr,strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -4916,7 +4983,7 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -4924,8 +4991,8 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
        int i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = (yy_size_t) (_yybytes_len + 2);
-       buf = (char *) yyalloc( n  );
+       n = _yybytes_len + 2;
+       buf = (char *) yyalloc(n  );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
@@ -4934,7 +5001,7 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = yy_scan_buffer( buf, n );
+       b = yy_scan_buffer(buf,n );
        if ( ! b )
                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
@@ -4946,21 +5013,20 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
        return b;
 }
 
-    static void yy_push_state (int  _new_state )
+    static void yy_push_state (int  new_state )
 {
        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_size_t) (yy_start_stack_depth) * sizeof( int );
+               new_size = (yy_start_stack_depth) * sizeof( int );
 
                if ( ! (yy_start_stack) )
-                       (yy_start_stack) = (int *) yyalloc( new_size  );
+                       (yy_start_stack) = (int *) yyalloc(new_size  );
 
                else
-                       (yy_start_stack) = (int *) yyrealloc(
-                                       (void *) (yy_start_stack), new_size  );
+                       (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
 
                if ( ! (yy_start_stack) )
                        YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
@@ -4968,7 +5034,7 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 
        (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
 
-       BEGIN(_new_state);
+       BEGIN(new_state);
 }
 
     static void yy_pop_state  (void)
@@ -4983,9 +5049,9 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yynoreturn yy_fatal_error (const char* msg )
+static void yy_fatal_error (yyconst char* msg )
 {
-                       fprintf( stderr, "%s\n", msg );
+       (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 
@@ -5013,7 +5079,7 @@ static void yynoreturn yy_fatal_error (const char* msg )
  */
 int yyget_lineno  (void)
 {
-    
+        
     return yylineno;
 }
 
@@ -5051,29 +5117,29 @@ char *yyget_text  (void)
 }
 
 /** Set the current line number.
- * @param _line_number line number
+ * @param line_number
  * 
  */
-void yyset_lineno (int  _line_number )
+void yyset_lineno (int  line_number )
 {
     
-    yylineno = _line_number;
+    yylineno = line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param _in_str A readable stream.
+ * @param in_str A readable stream.
  * 
  * @see yy_switch_to_buffer
  */
-void yyset_in (FILE *  _in_str )
+void yyset_in (FILE *  in_str )
 {
-        yyin = _in_str ;
+        yyin = in_str ;
 }
 
-void yyset_out (FILE *  _out_str )
+void yyset_out (FILE *  out_str )
 {
-        yyout = _out_str ;
+        yyout = out_str ;
 }
 
 int yyget_debug  (void)
@@ -5081,9 +5147,9 @@ int yyget_debug  (void)
         return yy_flex_debug;
 }
 
-void yyset_debug (int  _bdebug )
+void yyset_debug (int  bdebug )
 {
-        yy_flex_debug = _bdebug ;
+        yy_flex_debug = bdebug ;
 }
 
 static int yy_init_globals (void)
@@ -5092,10 +5158,10 @@ static int yy_init_globals (void)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = NULL;
+    (yy_buffer_stack) = 0;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = NULL;
+    (yy_c_buf_p) = (char *) 0;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -5108,8 +5174,8 @@ static int yy_init_globals (void)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -5124,7 +5190,7 @@ int yylex_destroy  (void)
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               yy_delete_buffer( YY_CURRENT_BUFFER  );
+               yy_delete_buffer(YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
                yypop_buffer_state();
        }
@@ -5134,7 +5200,7 @@ int yylex_destroy  (void)
        (yy_buffer_stack) = NULL;
 
     /* Destroy the start condition stack. */
-        yyfree( (yy_start_stack)  );
+        yyfree((yy_start_stack)  );
         (yy_start_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
@@ -5149,19 +5215,18 @@ int yylex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-               
-       int i;
+       register int i;
        for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
 {
-       int n;
+       register int n;
        for ( n = 0; s[n]; ++n )
                ;
 
@@ -5171,12 +5236,11 @@ static int yy_flex_strlen (const char * s )
 
 void *yyalloc (yy_size_t  size )
 {
-                       return malloc(size);
+       return (void *) malloc( size );
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size )
 {
-               
        /* 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
@@ -5184,17 +5248,18 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return realloc(ptr, size);
+       return (void *) realloc( (char *) ptr, size );
 }
 
 void yyfree (void * ptr )
 {
-                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 }
 
 #define YYTABLES_NAME "yytables"
 
-#line 1013 "scan.l"
+#line 1016 "scan.l"
+
 
 
 
diff --git a/src/scan.c.patch b/src/scan.c.patch
new file mode 100644 (file)
index 0000000..ef7476e
--- /dev/null
@@ -0,0 +1,68 @@
+--- scan.c.orig        2018-06-12 10:24:24.518531377 +1000
++++ scan.c     2018-06-12 10:25:47.262533188 +1000
+@@ -185,7 +185,16 @@
+               } \
+       while ( 0 )
++#if 1
++#define unput(c) \
++ do { \
++  dump(yytext, yy_c_buf_p - yytext, stderr); \
++  yyunput(c, (yytext_ptr)); \
++  yytext = yy_c_buf_p; \
++ } while (0)
++#else
+ #define unput(c) yyunput( c, (yytext_ptr)  )
++#endif
+ #ifndef YY_TYPEDEF_YY_SIZE_T
+ #define YY_TYPEDEF_YY_SIZE_T
+@@ -2209,7 +2218,39 @@
+ /** The main scanner function which does all the work.
+  */
+-YY_DECL
++static int real_yylex();
++static void dump(const char *p, size_t n, FILE *stream) {
++ size_t i;
++ for (i = 0; i < n; ++i)
++  switch (p[i]) {
++  case '<':
++   fputs("&lt;", stream);
++   break;
++  case '>':
++   fputs("&gt;", stream);
++   break;
++  case '&':
++   fputs("&amp;", stream);
++   break;
++  default:
++   fputc(p[i], stream);
++   break;
++  }
++}
++ YY_DECL
++ {
++ int result = real_yylex();
++ size_t n = strlen(yytext);
++ if (n) {
++  fprintf(stderr, "<token value=\"%d\">", result);
++  dump(yytext, n, stderr);
++  fputs("</token>", stderr);
++ }
++ else
++  fprintf(stderr, "<token value=\"%d\" />", result);
++ return result;
++}
++static int real_yylex()
+ {
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+@@ -4305,6 +4346,7 @@
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
++ dump(yytext, yy_c_buf_p - yytext, stderr);
+               } /* end of scanning one token */
+ } /* end of yylex */
index 66db864..0348cfb 100644 (file)
@@ -713,7 +713,11 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
                                { /* push back name surrounded by ()'s */
                                size_t len = strlen( nmdefptr );
                 if (end_is_ws)
+#if 1
+ yyless(yyleng - 1);
+#else
                     unput(end_ch);
+#endif
 
                                if ( lex_compat || nmdefptr[0] == '^' ||
                                     (len > 0 && nmdefptr[len - 1] == '$')