chiark / gitweb /
Parser fixes:
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 23 Jan 2017 13:34:16 +0000 (13:34 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 23 Jan 2017 13:52:49 +0000 (13:52 +0000)
* Support `stdin', `stdout' and `stderr' in fd ranges, as promised by the spec.  Closes:#813005.

debian/changelog
language.i4
lexer.c
lexer.l
parser.c
tokens.h

index 88016cc00af648441954bfcd734c6acabcab007f..c87457fe769395a16128f17b9b557540a5f41fa8 100644 (file)
@@ -1,5 +1,9 @@
 userv (1.1.2~~iwj1) unstable; urgency=low
 
+  Parser fixes:
+  * Support `stdin', `stdout' and `stderr' in fd ranges, as promised
+    by the spec.  Closes:#813005.
+
   Upstream Makefiles:
   * Honour XCFLAGS.
 
index d660b272834003edd2ad31dbc295dec9ef4e2c16..9b328e6bc55dd870341b553a4665edd0832a4bba 100644 (file)
@@ -233,6 +233,12 @@ autovalistype(`fdrange',   `tokt_fdrange|tokr_punct')
 autovalistype(`fdstoend',      `tokt_fdrange|tokr_punct')
 nametypelexpatexec(`dollar',`tokt_misc|tokr_punct',`\$',`')
 
+define(singlefd,`
+wordtypelexexec(`$1',`tokt_fdrange',` lr_max= lr_min= $2; ')')
+singlefd(`stdin',`0');
+singlefd(`stdout',`1');
+singlefd(`stderr',`2');
+
 dnl non-word things
 autovalistype(`lwsp',            `tokt_misc|tokr_nonstring')
 autovalistype(`newline',         `tokt_misc|tokr_nonstring')
diff --git a/lexer.c b/lexer.c
index 99300adc8f1f9fb4eecad76231d17fff11b4c6b8..39fb319b3b63b7a915507ecc018b04c2e6b2b6d0 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -7,8 +7,8 @@
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 31
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
 #include <inttypes.h>
 typedef int8_t flex_int8_t;
 typedef uint8_t flex_uint8_t;
@@ -45,7 +53,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -76,26 +83,17 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_CONST
+#endif /* ! C99 */
 
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
+#endif /* ! FLEXINT_H */
 
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
@@ -131,14 +129,31 @@ typedef unsigned int flex_uint32_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
 #define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
 #endif
 
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
 #define YY_TYPEDEF_YY_BUFFER_STATE
 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;
@@ -148,6 +163,7 @@ extern FILE *yyin, *yyout;
 #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) \
@@ -165,16 +181,6 @@ extern FILE *yyin, *yyout;
 
 #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).
- */
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef unsigned int yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -187,7 +193,7 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       yy_size_t yy_buf_size;
+       int yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
@@ -215,7 +221,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.
         */
@@ -243,7 +249,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 = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< 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
@@ -266,8 +272,8 @@ 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 char *yy_c_buf_p = NULL;
+static int yy_init = 0;                /* 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
@@ -323,12 +329,12 @@ void yyfree (void *  );
 
 /* Begin user sect3 */
 
-#define yywrap(n) 1
+#define yywrap() (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
 
 typedef unsigned char YY_CHAR;
 
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
@@ -337,25 +343,28 @@ 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 yy_fatal_error (yyconst char msg[]  );
+static void yynoreturn 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 = (size_t) (yy_cp - 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 107
-#define YY_END_OF_BUFFER 108
+#define YY_NUM_RULES 110
+#define YY_END_OF_BUFFER 111
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,73 +372,74 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[565] =
+static yyconst flex_int16_t yy_accept[575] =
     {   0,
-        0,    0,  108,  103,   98,   99,   90,  104,  101,   87,
-       91,   88,   89,   94,  105,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,   92,  103,   98,
-       99,  101,    0,    0,  102,    0,  101,  101,  100,   96,
-       94,    0,   97,  103,  103,  103,  103,   19,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,   37,  103,
-      103,  103,  103,   32,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-        0,    0,    0,   95,   94,   97,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,   31,   63,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,   71,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,    0,    0,   95,   94,  103,  103,  103,   67,
-      103,  103,   64,   68,  103,  103,  103,   35,   36,  103,
-      103,  103,  103,   40,   42,  103,   51,  103,  103,   60,
-       70,  103,   72,  103,   73,  103,  103,  103,  103,  103,
-
-      103,  103,   30,  103,   85,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,   75,   76,  103,   62,
-      103,    0,   95,   94,  103,   65,  103,  103,  103,  103,
-      103,   59,  103,   66,  103,   93,  103,   38,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       41,  103,  103,   49,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,   86,   95,   94,  103,  103,
-      103,  103,  103,   69,  103,  103,  103,  103,  103,  103,
-       70,   77,   78,   79,   80,   81,   82,   83,   84,  103,
-      103,  103,  103,   61,  103,  103,  103,    1,  103,  103,
-
-      103,  103,  103,   39,  103,   74,  103,  103,  103,  103,
-       95,   94,  103,  103,  103,  103,  103,  103,  103,  103,
-       50,  103,   21,   26,  103,  103,  103,   10,  103,  103,
-      103,  103,  103,   52,  103,  103,  103,  103,  103,   45,
-       62,   95,   94,  103,    9,   67,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,   47,  103,
-      103,  103,  103,  103,   48,  103,   46,  103,   95,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,   12,
-      103,  103,  103,  103,  103,  103,   44,   11,  103,  103,
-      103,  103,  103,  103,   95,  103,  103,  103,  103,  103,
-
-       33,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,    8,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,   43,   34,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,   20,  103,  103,  103,  103,   53,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       56,  103,  103,  103,  103,  103,   54,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       57,  103,  103,   15,  103,  103,  103,  103,   17,    7,
-      103,  103,  103,  103,  103,  103,  103,   23,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,    4,
-      103,  103,  103,   22,  103,  103,  103,  103,  103,   13,
-      103,  103,  103,  103,    5,    6,  103,  103,  103,  103,
-      103,  103,   16,  103,  103,  103,  103,  103,  103,    3,
-       25,  103,   18,  103,  103,  103,   27,  103,   55,  103,
-       24,   14,   58,  103,  103,  103,  103,   28,  103,  103,
-      103,   29,    2,    0
+        0,    0,  111,  106,  101,  102,   93,  107,  104,   87,
+       94,   91,   92,   97,  108,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,   95,  106,  101,
+      102,  104,    0,    0,  105,    0,  104,  104,  103,   99,
+       97,    0,  100,  106,  106,  106,  106,   19,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,   37,  106,
+      106,  106,  106,   32,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+
+      106,    0,    0,    0,   98,   97,  100,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,   31,   63,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,   71,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,    0,    0,   98,   97,  106,  106,
+      106,   67,  106,  106,   64,   68,  106,  106,  106,   35,
+       36,  106,  106,  106,  106,   40,   42,  106,   51,  106,
+      106,   60,   70,  106,   72,  106,   73,  106,  106,  106,
+
+      106,  106,  106,  106,   30,  106,   85,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,   75,   76,  106,   62,  106,    0,   98,   97,  106,
+       65,  106,  106,  106,  106,  106,   59,  106,   66,  106,
+       96,  106,   38,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,   41,  106,  106,   49,  106,
+      106,  106,  106,  106,  106,   88,  106,  106,  106,  106,
+      106,  106,  106,   86,   98,   97,  106,  106,  106,  106,
+      106,   69,  106,  106,  106,  106,  106,  106,   70,   77,
+       78,   79,   80,   81,   82,   83,   84,  106,  106,  106,
+
+      106,   61,  106,  106,  106,    1,  106,  106,  106,  106,
+      106,   39,   90,   89,  106,   74,  106,  106,  106,  106,
+       98,   97,  106,  106,  106,  106,  106,  106,  106,  106,
+       50,  106,   21,   26,  106,  106,  106,   10,  106,  106,
+      106,  106,  106,   52,  106,  106,  106,  106,  106,   45,
+       62,   98,   97,  106,    9,   67,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,   47,  106,
+      106,  106,  106,  106,   48,  106,   46,  106,   98,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,   12,
+      106,  106,  106,  106,  106,  106,   44,   11,  106,  106,
+
+      106,  106,  106,  106,   98,  106,  106,  106,  106,  106,
+       33,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,    8,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  106,   43,   34,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,   20,  106,  106,  106,  106,   53,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+       56,  106,  106,  106,  106,  106,   54,  106,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+       57,  106,  106,   15,  106,  106,  106,  106,   17,    7,
+
+      106,  106,  106,  106,  106,  106,  106,   23,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  106,    4,
+      106,  106,  106,   22,  106,  106,  106,  106,  106,   13,
+      106,  106,  106,  106,    5,    6,  106,  106,  106,  106,
+      106,  106,   16,  106,  106,  106,  106,  106,  106,    3,
+       25,  106,   18,  106,  106,  106,   27,  106,   55,  106,
+       24,   14,   58,  106,  106,  106,  106,   28,  106,  106,
+      106,   29,    2,    0
     } ;
 
-static yyconst flex_int32_t yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -461,7 +471,7 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[52] =
+static yyconst YY_CHAR yy_meta[52] =
     {   0,
         1,    2,    3,    1,    2,    1,    1,    1,    1,    1,
         1,    1,    4,    4,    4,    4,    4,    4,    4,    4,
@@ -471,139 +481,141 @@ static yyconst flex_int32_t yy_meta[52] =
         1
     } ;
 
-static yyconst flex_int16_t yy_base[571] =
+static yyconst flex_uint16_t yy_base[581] =
     {   0,
-        0,    0,  779,    0,   50,  780,    0,   49,   55,    0,
-        0,    0,    0,   67,   59,  745,   19,   49,   34,   56,
-      744,   29,   39,   59,  747,   30,   71,   70,  729,  749,
-      728,   76,   74,  733,   65,  742,   82,    0,    0,  111,
-      780,  767,   73,   97,  780,  134,  123,  766,  780,  170,
-      179,  109,  116,  730,   93,  723,   94,    0,   88,  737,
-      739,  721,   98,  734,  716,  731,  718,  730,    0,  719,
-      728,  712,  719,    0,  716,  113,  711,  725,  709,  717,
-      706,  701,  120,  711,  717,  119,  712,  706,  133,  118,
-      698,  703,  701,  697,  699,  709,  710,  694,  693,  701,
-
-      163,    0,  196,  214,  223,  140,  706,  690,  692,  698,
-      693,  701,  683,  688,  688,  679,  696,  692,  692,  678,
-      686,    0,  679,  690,  690,  675,  689,  673,  673,  675,
-      671,  671,  683,    0,  671,  663,  662,  116,  671,  667,
-      660,  668,  675,  655,  667,  669,  667,  650,  665,  648,
-      646,  679,  646,  647,  648,  651,  650,  643,  644,  640,
-      644,  637,    0,  232,  250,  259,  644,  635,  631,  637,
-      643,  643,    0,    0,  635,  642,  633,    0,    0,  640,
-      628,  627,  623,    0,    0,  640,    0,  624,  620,    0,
-      635,  627,    0,  637,    0,  628,  175,  633,  647,  616,
-
-      630,  619,    0,  626,    0,  627,  620,  608,  609,  617,
-      620,  620,  605,  604,  606,  615,  631,    0,  609,  608,
-      611,  276,  287,  296,  594,    0,  626,  595,  598,  623,
-      596,    0,  595,    0,  593,  588,  586,    0,  600,  600,
-      591,  305,  595,  582,  580,  583,  593,  591,  587,  590,
-        0,  574,  575,    0,  583,  588,  576,  574,  583,  582,
-      579,  563,  566,  568,  568,    0,  313,  322,  577,  574,
-      570,  571,  560,    0,  562,  561,  586,  568,  584,  566,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  565,
-      566,  580,  551,    0,  562,  561,  544,  575,  557,  541,
-
-      555,  537,  535,    0,  538,    0,  551,  552,  540,  546,
-      331,  340,  547,  547,  528,  561,  527,  542,  533,  128,
-      557,  538,  555,    0,  527,  536,  522,    0,  534,  533,
-      531,  548,  510,  546,  524,  518,  512,  518,  523,    0,
-        0,  349,  540,  539,    0,    0,  251,  517,  522,  519,
-      502,  507,  143,  517,  142,  506,  505,  513,    0,  499,
-      512,  509,  252,  496,    0,  525,    0,  503,  358,  353,
-      493,  491,  489,  488,  493,  487,  517,  483,  485,    0,
-      493,  495,  485,  485,  476,  478,    0,    0,  492,  477,
-      475,  478,  491,  479,    0,  478,  464,  469,  472,  481,
-
-        0,  497,  464,  475,  255,  473,  466,  462,  474,  463,
-      472,  467,  456,    0,  459,  468,  458,  453,  465,  460,
-      449,  462,  445,  447,  456,    0,    0,  454,  158,  450,
-      448,  455,  435,  447,  454,  438,  467,  433,  435,  439,
-      444,    0,  445,  446,  430,  431,  458,  424,  432,  439,
-      423,  421,  452,  436,  429,  416,  416,  420,  433,  417,
-      444,  426,  411,  415,  413,  439,    0,  407,  409,  419,
-      418,  410,  412,  353,  400,  400,  402,  429,  402,  397,
-        0,  395,  399,    0,  392,  397,  392,  401,    0,    0,
-      390,  392,  392,  396,  403,  388,  382,  413,  392,  386,
-
-      391,  389,  376,  407,  388,  390,  387,  373,  374,    0,
-      359,  356,  355,    0,  370,  349,  363,  348,  361,    0,
-      362,  355,  357,  350,    0,    0,  356,  352,  334,  346,
-      255,  256,    0,  257,  253,  260,  257,  253,  261,    0,
-        0,  251,    0,  242,  248,  218,    0,  219,    0,  164,
-        0,    0,    0,  176,  176,  164,  148,    0,  138,  148,
-      128,    0,    0,  780,  398,  402,  406,  410,  167,  129
+        0,    0,  789,    0,   50,  790,    0,   49,   55,    0,
+        0,    0,    0,   67,   59,  755,   19,   49,   34,   56,
+      754,   29,   39,   59,  757,   30,   71,   70,  739,  759,
+      738,   76,   74,  743,   65,  752,   82,    0,    0,  111,
+      790,  777,   73,   97,  790,  134,  123,  776,  790,  170,
+      179,  109,  119,  740,   93,  733,   94,    0,   94,  747,
+      749,  731,   98,  744,  726,  741,  728,  740,    0,  729,
+      738,  722,  729,    0,  726,  113,  721,  735,  719,  727,
+      716,  711,  120,  721,  727,  119,  722,  716,  133,  118,
+      708,  713,  723,  710,  706,  708,  718,  719,  703,  702,
+
+      710,  163,    0,  196,  214,  223,  157,  715,  699,  701,
+      707,  702,  710,  692,  697,  697,  688,  705,  701,  701,
+      687,  695,    0,  688,  699,  699,  684,  698,  682,  682,
+      684,  680,  680,  692,    0,  680,  672,  671,  135,  680,
+      676,  669,  677,  684,  664,  676,  678,  676,  659,  674,
+      657,  655,  688,  655,  656,  140,  657,  660,  659,  652,
+      653,  649,  653,  646,    0,  232,  250,  259,  653,  644,
+      640,  646,  652,  652,    0,    0,  644,  651,  642,    0,
+        0,  649,  637,  636,  632,    0,    0,  649,    0,  633,
+      629,    0,  644,  636,    0,  646,    0,  637,  175,  642,
+
+      656,  625,  639,  628,    0,  635,    0,  636,  629,  617,
+      618,  626,  629,  629,  614,  613,  616,  608,  610,  612,
+      621,  637,    0,  615,  614,  617,  276,  287,  296,  600,
+        0,  632,  601,  604,  629,  602,    0,  601,    0,  599,
+      594,  592,    0,  606,  606,  597,  305,  601,  588,  586,
+      589,  599,  597,  593,  596,    0,  580,  581,    0,  589,
+      594,  582,  580,  589,  575,    0,  572,  586,  583,  567,
+      570,  572,  572,    0,  313,  322,  581,  578,  574,  575,
+      564,    0,  566,  565,  590,  572,  588,  570,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  569,  570,  584,
+
+      555,    0,  566,  565,  548,  579,  561,  545,  559,  541,
+      539,    0,    0,    0,  542,    0,  555,  556,  544,  550,
+      331,  340,  551,  551,  532,  565,  531,  546,  537,  128,
+      561,  542,  559,    0,  531,  540,  526,    0,  538,  537,
+      535,  552,  514,  550,  528,  522,  516,  522,  527,    0,
+        0,  349,  544,  543,    0,    0,  251,  521,  526,  523,
+      506,  511,  145,  521,  255,  510,  509,  517,    0,  503,
+      516,  513,  253,  500,    0,  529,    0,  507,  358,  353,
+      497,  495,  493,  492,  497,  491,  521,  487,  489,    0,
+      497,  499,  489,  489,  480,  482,    0,    0,  496,  481,
+
+      479,  482,  495,  483,    0,  482,  468,  473,  476,  485,
+        0,  501,  468,  479,  351,  477,  470,  466,  478,  467,
+      476,  471,  460,    0,  463,  472,  462,  457,  469,  464,
+      453,  466,  449,  451,  460,    0,    0,  458,   95,  454,
+      452,  459,  439,  451,  458,  442,  471,  437,  439,  443,
+      448,    0,  449,  450,  434,  435,  462,  428,  436,  443,
+      427,  425,  456,  440,  433,  420,  420,  424,  437,  421,
+      448,  430,  415,  419,  417,  443,    0,  411,  413,  423,
+      422,  414,  416,  257,  404,  404,  406,  433,  406,  401,
+        0,  399,  403,    0,  396,  401,  396,  405,    0,    0,
+
+      394,  396,  396,  400,  407,  392,  386,  417,  396,  390,
+      395,  393,  380,  411,  392,  394,  391,  377,  387,    0,
+      375,  372,  373,    0,  380,  356,  371,  354,  366,    0,
+      366,  359,  361,  354,    0,    0,  360,  356,  338,  350,
+      345,  346,    0,  347,  343,  264,  261,  257,  265,    0,
+        0,  254,    0,  245,  251,  248,    0,  220,    0,  211,
+        0,    0,    0,  178,  178,  167,  172,    0,  161,  171,
+      132,    0,    0,  790,  398,  402,  406,  410,  173,  166
     } ;
 
-static yyconst flex_int16_t yy_def[571] =
+static yyconst flex_int16_t yy_def[581] =
     {   0,
-      564,    1,  564,  565,  564,  564,  565,  566,  567,  565,
-      565,  565,  565,  565,  564,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  564,
-      564,  568,  564,  566,  564,  566,  567,  568,  564,  565,
-       14,  564,  564,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-
-      564,  569,  566,  565,   14,  564,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  570,  103,  565,   14,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  566,  565,   14,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,   14,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,   14,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
-      565,  565,  565,    0,  564,  564,  564,  564,  564,  564
+      574,    1,  574,  575,  574,  574,  575,  576,  577,  575,
+      575,  575,  575,  575,  574,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  574,
+      574,  578,  574,  576,  574,  576,  577,  578,  574,  575,
+       14,  574,  574,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+
+      575,  574,  579,  576,  575,   14,  574,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  580,  104,  575,   14,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  576,  575,   14,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,   14,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,   14,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+      575,  575,  575,    0,  574,  574,  574,  574,  574,  574
     } ;
 
-static yyconst flex_int16_t yy_nxt[832] =
+static yyconst flex_uint16_t yy_nxt[842] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,    4,   11,   12,
        13,    4,   14,   14,   14,   14,   14,   14,   14,   14,
@@ -616,90 +628,91 @@ static yyconst flex_int16_t yy_nxt[832] =
        51,   51,   51,   51,   51,   51,   51,   51,   74,   75,
        59,   63,   64,   65,   66,   80,   76,   67,   82,   81,
 
-       88,   45,   90,   68,   89,   91,   99,   96,   83,   97,
-       52,   53,   40,   41,   84,   92,   42,  106,   93,   46,
-      113,  108,   94,  100,   48,   49,  114,   48,  109,  111,
-      118,  138,   44,   43,  564,  101,   44,  112,   43,  130,
-      119,  106,  131,  196,  150,   48,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  564,  142,  146,  197,  151,
-      143,  152,   43,  139,  101,   44,  147,  351,  378,  381,
-      163,  352,  379,  148,  382,  149,  563,  383,  562,  561,
-      560,  103,  104,  104,  104,  104,  104,  104,  104,  104,
-      104,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-
-       45,  450,  559,  245,  558,  557,  451,  556,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,   46,  246,
-      164,  164,  164,  164,  164,  164,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  166,  166,  166,  166,  166,
-      166,  166,  166,  166,  222,  222,  222,  222,  222,  222,
-      222,  222,  222,  222,  555,  554,  222,  222,  222,  222,
-      222,  222,  223,  223,  223,  223,  223,  223,  223,  223,
-      223,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-       45,  371,  390,  553,  428,  552,  551,  550,  549,  548,
-      547,  546,  545,  544,  543,  372,  391,  429,   46,  267,
-
-      267,  267,  267,  267,  267,  267,  267,  267,  268,  268,
-      268,  268,  268,  268,  268,  268,  268,  282,  283,  284,
-      285,  286,  287,  288,  289,  311,  311,  311,  311,  311,
-      311,  311,  311,  311,  312,  312,  312,  312,  312,  312,
-      312,  312,  312,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  369,  369,  369,  369,  369,  369,  369,  369,  369,
-      395,  395,  395,  395,  395,  395,  395,  395,  395,  396,
-      494,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-      533,  532,  495,  531,  530,  397,  529,  398,   39,  528,
-
-      527,   39,   44,   44,  526,   44,   47,   47,   47,   47,
-       48,   48,   48,   48,  525,  524,  523,  522,  521,  520,
-      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  507,  506,  505,  504,  503,  502,  501,  500,
-      499,  498,  497,  496,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      477,  476,  475,  474,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
-      457,  456,  455,  454,  453,  452,  449,  448,  447,  446,
-      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
-
-      435,  434,  433,  432,  431,  430,  427,  426,  425,  424,
-      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
-      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
-      403,  402,  401,  400,  399,  394,  393,  392,  389,  388,
-      387,  386,  385,  384,  380,  377,  376,  375,  374,  373,
-      370,   50,  368,  367,  366,  365,  364,  363,  346,  362,
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  350,
-      349,  348,  347,  346,  345,  344,  341,  340,  339,  338,
-      337,  336,  335,  334,  333,  332,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
-
-      317,  316,  315,  314,  313,  310,  309,  308,  307,  306,
-      305,  304,  303,  302,  301,  300,  299,  298,  297,  296,
-      295,  294,  293,  292,  291,  290,  281,  280,  279,  278,
-      277,  276,  275,  274,  273,  272,  271,  270,  269,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  253,  252,  251,  250,  234,  249,  248,  247,
-      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
-      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  202,
-
-      201,  200,  199,  198,  195,  194,  193,  192,  191,  190,
-      189,  188,  187,  186,  185,  184,  183,  182,  181,  180,
-      179,  178,  177,  176,  175,  174,  173,  172,  171,  170,
-      169,  168,  167,  162,  161,  160,  159,  158,  157,  156,
-      155,  154,  153,  145,  144,  141,  140,  137,  136,  135,
-      134,  133,  132,  129,  128,  127,  126,  125,  124,  123,
-      122,  121,  120,  117,  116,  115,  110,  107,   49,   49,
-       98,   95,   87,   86,   85,   77,   69,   54,  564,    3,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564
+       88,   45,   90,   68,   89,   91,  100,   97,   83,   98,
+       52,   53,   40,   41,   84,   92,   42,   93,   94,   46,
+      107,  109,   95,  101,   48,   49,  114,   48,  110,  112,
+      119,  139,  115,   43,  574,  102,   44,  113,  460,  131,
+      120,   43,  132,  461,  151,   48,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  574,  143,  147,  107,  152,
+      144,  153,  198,  140,  102,   44,  148,  361,  216,   44,
+      388,  362,  217,  149,  389,  150,  165,  199,  218,   43,
+      573,  104,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  106,  106,  106,  106,  106,  106,  106,  106,  106,
+
+       45,  572,  571,  250,  570,  569,  568,  567,  166,  166,
+      166,  166,  166,  166,  166,  166,  166,  166,   46,  251,
+      166,  166,  166,  166,  166,  166,  167,  167,  167,  167,
+      167,  167,  167,  167,  167,  168,  168,  168,  168,  168,
+      168,  168,  168,  168,  227,  227,  227,  227,  227,  227,
+      227,  227,  227,  227,  566,  565,  227,  227,  227,  227,
+      227,  227,  228,  228,  228,  228,  228,  228,  228,  228,
+      228,  229,  229,  229,  229,  229,  229,  229,  229,  229,
+       45,  381,  391,  400,  504,  564,  563,  392,  562,  561,
+      393,  560,  559,  558,  557,  382,  505,  401,   46,  275,
+
+      275,  275,  275,  275,  275,  275,  275,  275,  276,  276,
+      276,  276,  276,  276,  276,  276,  276,  290,  291,  292,
+      293,  294,  295,  296,  297,  321,  321,  321,  321,  321,
+      321,  321,  321,  321,  322,  322,  322,  322,  322,  322,
+      322,  322,  322,  352,  352,  352,  352,  352,  352,  352,
+      352,  352,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  379,  379,  379,  379,  379,  379,  379,  379,  379,
+      405,  405,  405,  405,  405,  405,  405,  405,  405,  406,
+      438,  556,  555,  554,  553,  552,  551,  550,  549,  548,
+      547,  546,  545,  439,  544,  407,  543,  408,   39,  542,
+
+      541,   39,   44,   44,  540,   44,   47,   47,   47,   47,
+       48,   48,   48,   48,  539,  538,  537,  536,  535,  534,
+      533,  532,  531,  530,  529,  528,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
+      513,  512,  511,  510,  509,  508,  507,  506,  503,  502,
+      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
+      491,  490,  489,  488,  487,  486,  485,  484,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
+      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
+
+      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
+      437,  436,  435,  434,  433,  432,  431,  430,  429,  428,
+      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
+      417,  416,  415,  414,  413,  412,  411,  410,  409,  404,
+      403,  402,  399,  398,  397,  396,  395,  394,  390,  387,
+      386,  385,  384,  383,  380,   50,  378,  377,  376,  375,
+      374,  373,  356,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  360,  359,  358,  357,  356,  355,  354,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  320,
+      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
+      299,  298,  289,  288,  287,  286,  285,  284,  283,  282,
+      281,  280,  279,  278,  277,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  256,  255,  239,  254,  253,  252,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  226,
+      225,  224,  223,  222,  221,  220,  219,  215,  214,  213,
+
+      212,  211,  210,  209,  208,  207,  206,  205,  204,  203,
+      202,  201,  200,  197,  196,  195,  194,  193,  192,  191,
+      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
+      180,  179,  178,  177,  176,  175,  174,  173,  172,  171,
+      170,  169,  164,  163,  162,  161,  160,  159,  158,  157,
+      156,  155,  154,  146,  145,  142,  141,  138,  137,  136,
+      135,  134,  133,  130,  129,  128,  127,  126,  125,  124,
+      123,  122,  121,  118,  117,  116,  111,  108,   49,   49,
+       99,   96,   87,   86,   85,   77,   69,   54,  574,    3,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574
     } ;
 
-static yyconst flex_int16_t yy_chk[832] =
+static yyconst flex_int16_t yy_chk[842] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -713,86 +726,87 @@ static yyconst flex_int16_t yy_chk[832] =
        18,   20,   20,   20,   20,   27,   24,   20,   28,   27,
 
        32,   44,   33,   20,   32,   33,   37,   35,   28,   35,
-       52,   52,   40,   40,   28,   33,   40,   53,   33,   44,
-       59,   55,   33,   37,   47,   47,   59,   47,   55,   57,
-       63,   83,  570,   40,   46,   46,   46,   57,   53,   76,
-       63,  106,   76,  138,   90,   47,   46,   46,   46,   46,
-       46,   46,   46,   46,   46,   46,   86,   89,  138,   90,
-       86,   90,  106,   83,  101,  101,   89,  320,  353,  355,
-      569,  320,  353,   89,  355,   89,  561,  355,  560,  559,
-      557,   46,   50,   50,   50,   50,   50,   50,   50,   50,
+       52,   52,   40,   40,   28,   33,   40,   33,   33,   44,
+       53,   55,   33,   37,   47,   47,   59,   47,   55,   57,
+       63,   83,   59,   40,   46,   46,   46,   57,  439,   76,
+       63,   53,   76,  439,   90,   47,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   86,   89,  107,   90,
+       86,   90,  139,   83,  102,  102,   89,  330,  156,  580,
+      363,  330,  156,   89,  363,   89,  579,  139,  156,  107,
+      571,   46,   50,   50,   50,   50,   50,   50,   50,   50,
        50,   51,   51,   51,   51,   51,   51,   51,   51,   51,
 
-      103,  429,  556,  197,  555,  554,  429,  550,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  197,
-      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
-      104,  104,  104,  104,  104,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  548,  546,  164,  164,  164,  164,
-      164,  164,  165,  165,  165,  165,  165,  165,  165,  165,
-      165,  166,  166,  166,  166,  166,  166,  166,  166,  166,
-      222,  347,  363,  545,  405,  544,  542,  539,  538,  537,
-      536,  535,  534,  532,  531,  347,  363,  405,  222,  223,
-
-      223,  223,  223,  223,  223,  223,  223,  223,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  242,  242,  242,
-      242,  242,  242,  242,  242,  267,  267,  267,  267,  267,
-      267,  267,  267,  267,  268,  268,  268,  268,  268,  268,
-      268,  268,  268,  311,  311,  311,  311,  311,  311,  311,
-      311,  311,  312,  312,  312,  312,  312,  312,  312,  312,
-      312,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      369,  369,  369,  369,  369,  369,  369,  369,  369,  370,
-      474,  530,  529,  528,  527,  524,  523,  522,  521,  519,
-      518,  517,  474,  516,  515,  370,  513,  370,  565,  512,
-
-      511,  565,  566,  566,  509,  566,  567,  567,  567,  567,
-      568,  568,  568,  568,  508,  507,  506,  505,  504,  503,
-      502,  501,  500,  499,  498,  497,  496,  495,  494,  493,
-      492,  491,  488,  487,  486,  485,  483,  482,  480,  479,
-      478,  477,  476,  475,  473,  472,  471,  470,  469,  468,
-      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
-      456,  455,  454,  453,  452,  451,  450,  449,  448,  447,
-      446,  445,  444,  443,  441,  440,  439,  438,  437,  436,
-      435,  434,  433,  432,  431,  430,  428,  425,  424,  423,
-      422,  421,  420,  419,  418,  417,  416,  415,  413,  412,
-
-      411,  410,  409,  408,  407,  406,  404,  403,  402,  400,
-      399,  398,  397,  396,  394,  393,  392,  391,  390,  389,
-      386,  385,  384,  383,  382,  381,  379,  378,  377,  376,
-      375,  374,  373,  372,  371,  368,  366,  364,  362,  361,
-      360,  358,  357,  356,  354,  352,  351,  350,  349,  348,
-      344,  343,  339,  338,  337,  336,  335,  334,  333,  332,
-      331,  330,  329,  327,  326,  325,  323,  322,  321,  319,
-      318,  317,  316,  315,  314,  313,  310,  309,  308,  307,
-      305,  303,  302,  301,  300,  299,  298,  297,  296,  295,
-      293,  292,  291,  290,  280,  279,  278,  277,  276,  275,
-
-      273,  272,  271,  270,  269,  265,  264,  263,  262,  261,
-      260,  259,  258,  257,  256,  255,  253,  252,  250,  249,
-      248,  247,  246,  245,  244,  243,  241,  240,  239,  237,
-      236,  235,  233,  231,  230,  229,  228,  227,  225,  221,
-      220,  219,  217,  216,  215,  214,  213,  212,  211,  210,
-      209,  208,  207,  206,  204,  202,  201,  200,  199,  198,
-      196,  194,  192,  191,  189,  188,  186,  183,  182,  181,
-      180,  177,  176,  175,  172,  171,  170,  169,  168,  167,
-      162,  161,  160,  159,  158,  157,  156,  155,  154,  153,
-      152,  151,  150,  149,  148,  147,  146,  145,  144,  143,
+      104,  570,  569,  199,  567,  566,  565,  564,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  199,
+      104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  166,  166,  166,  166,  166,  166,
+      166,  166,  166,  166,  560,  558,  166,  166,  166,  166,
+      166,  166,  167,  167,  167,  167,  167,  167,  167,  167,
+      167,  168,  168,  168,  168,  168,  168,  168,  168,  168,
+      227,  357,  365,  373,  484,  556,  555,  365,  554,  552,
+      365,  549,  548,  547,  546,  357,  484,  373,  227,  228,
+
+      228,  228,  228,  228,  228,  228,  228,  228,  229,  229,
+      229,  229,  229,  229,  229,  229,  229,  247,  247,  247,
+      247,  247,  247,  247,  247,  275,  275,  275,  275,  275,
+      275,  275,  275,  275,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  321,  321,  321,  321,  321,  321,  321,
+      321,  321,  322,  322,  322,  322,  322,  322,  322,  322,
+      322,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      379,  379,  379,  379,  379,  379,  379,  379,  379,  380,
+      415,  545,  544,  542,  541,  540,  539,  538,  537,  534,
+      533,  532,  531,  415,  529,  380,  528,  380,  575,  527,
+
+      526,  575,  576,  576,  525,  576,  577,  577,  577,  577,
+      578,  578,  578,  578,  523,  522,  521,  519,  518,  517,
+      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  498,  497,  496,  495,
+      493,  492,  490,  489,  488,  487,  486,  485,  483,  482,
+      481,  480,  479,  478,  476,  475,  474,  473,  472,  471,
+      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
+      460,  459,  458,  457,  456,  455,  454,  453,  451,  450,
+      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
+      438,  435,  434,  433,  432,  431,  430,  429,  428,  427,
+
+      426,  425,  423,  422,  421,  420,  419,  418,  417,  416,
+      414,  413,  412,  410,  409,  408,  407,  406,  404,  403,
+      402,  401,  400,  399,  396,  395,  394,  393,  392,  391,
+      389,  388,  387,  386,  385,  384,  383,  382,  381,  378,
+      376,  374,  372,  371,  370,  368,  367,  366,  364,  362,
+      361,  360,  359,  358,  354,  353,  349,  348,  347,  346,
+      345,  344,  343,  342,  341,  340,  339,  337,  336,  335,
+      333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
+      320,  319,  318,  317,  315,  311,  310,  309,  308,  307,
+      306,  305,  304,  303,  301,  300,  299,  298,  288,  287,
+
+      286,  285,  284,  283,  281,  280,  279,  278,  277,  273,
+      272,  271,  270,  269,  268,  267,  265,  264,  263,  262,
+      261,  260,  258,  257,  255,  254,  253,  252,  251,  250,
+      249,  248,  246,  245,  244,  242,  241,  240,  238,  236,
+      235,  234,  233,  232,  230,  226,  225,  224,  222,  221,
+      220,  219,  218,  217,  216,  215,  214,  213,  212,  211,
+      210,  209,  208,  206,  204,  203,  202,  201,  200,  198,
+      196,  194,  193,  191,  190,  188,  185,  184,  183,  182,
+      179,  178,  177,  174,  173,  172,  171,  170,  169,  164,
+      163,  162,  161,  160,  159,  158,  157,  155,  154,  153,
 
-      142,  141,  140,  139,  137,  136,  135,  133,  132,  131,
-      130,  129,  128,  127,  126,  125,  124,  123,  121,  120,
+      152,  151,  150,  149,  148,  147,  146,  145,  144,  143,
+      142,  141,  140,  138,  137,  136,  134,  133,  132,  131,
+      130,  129,  128,  127,  126,  125,  124,  122,  121,  120,
       119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
-      109,  108,  107,  100,   99,   98,   97,   96,   95,   94,
+      109,  108,  101,  100,   99,   98,   97,   96,   95,   94,
        93,   92,   91,   88,   87,   85,   84,   82,   81,   80,
        79,   78,   77,   75,   73,   72,   71,   70,   68,   67,
        66,   65,   64,   62,   61,   60,   56,   54,   48,   42,
-       36,   34,   31,   30,   29,   25,   21,   16,    3,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
-      564
+       36,   34,   31,   30,   29,   25,   21,   16,    3,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      574
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -948,7 +962,7 @@ static void countnewlines(void);
 
 #define YY_NO_UNPUT
 
-#line 952 "<stdout>"
+#line 966 "<stdout>"
 
 #define INITIAL 0
 
@@ -964,6 +978,37 @@ static void countnewlines(void);
 #define YY_EXTRA_TYPE void *
 #endif
 
+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 yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * _in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * _out_str  );
+
+                       int yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int _line_number  );
+
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
  */
@@ -976,8 +1021,12 @@ extern int yywrap (void );
 #endif
 #endif
 
+#ifndef YY_NO_UNPUT
+    
     static void yyunput (int c,char *buf_ptr  );
     
+#endif
+
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
@@ -998,7 +1047,12 @@ static int input (void );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
 #define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1006,7 +1060,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 (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1030,7 +1084,7 @@ static int input (void );
        else \
                { \
                errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+               while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -1085,7 +1139,7 @@ extern int yylex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK break;
+#define YY_BREAK /*LINTED*/break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -1095,18 +1149,13 @@ extern int yylex (void);
  */
 YY_DECL
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
+       yy_state_type yy_current_state;
+       char *yy_cp, *yy_bp;
+       int yy_act;
     
-#line 144 "lexer.l"
-
-
-#line 1106 "<stdout>"
-
-       if ( (yy_init) )
+       if ( !(yy_init) )
                {
-               (yy_init) = 0;
+               (yy_init) = 1;
 
 #ifdef YY_USER_INIT
                YY_USER_INIT;
@@ -1130,7 +1179,13 @@ YY_DECL
                yy_load_buffer_state( );
                }
 
-       while ( 1 )             /* loops until end-of-file is reached */
+       {
+#line 144 "lexer.l"
+
+
+#line 1187 "<stdout>"
+
+       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
                yy_cp = (yy_c_buf_p);
 
@@ -1146,7 +1201,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       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;
@@ -1155,13 +1210,13 @@ yy_match:
                        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 >= 565 )
+                               if ( yy_current_state >= 575 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 780 );
+               while ( yy_base[yy_current_state] != 790 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1623,36 +1678,51 @@ YY_RULE_SETUP
 case 88:
 YY_RULE_SETUP
 #line 233 "lexer.l"
-{ return tokv_openparen; }
+{  lr_max= lr_min= 0; return tokv_word_stdin; }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 234 "lexer.l"
-{ return tokv_closeparen; }
+{  lr_max= lr_min= 1; return tokv_word_stdout; }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 235 "lexer.l"
-{ return tokv_not; }
+{  lr_max= lr_min= 2; return tokv_word_stderr; }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 236 "lexer.l"
-{ return tokv_and; }
+{ return tokv_openparen; }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 237 "lexer.l"
-{ return tokv_or; }
+{ return tokv_closeparen; }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 238 "lexer.l"
-{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+{ return tokv_not; }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 242 "lexer.l"
+#line 239 "lexer.l"
+{ return tokv_and; }
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 240 "lexer.l"
+{ return tokv_or; }
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 241 "lexer.l"
+{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+       YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 245 "lexer.l"
 {
                          char *ep;
                          lr_min=lr_max= (int)strtoul(yytext,&ep,10);
@@ -1660,9 +1730,9 @@ YY_RULE_SETUP
                          return tokv_ordinal;
                        }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 248 "lexer.l"
+#line 251 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1675,9 +1745,9 @@ YY_RULE_SETUP
                          return tokv_fdrange;
                        }
        YY_BREAK
-case 96:
+case 99:
 YY_RULE_SETUP
-#line 259 "lexer.l"
+#line 262 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1687,73 +1757,73 @@ YY_RULE_SETUP
                          return tokv_fdstoend;
                        }
        YY_BREAK
-case 97:
-/* rule 97 can match eol */
+case 100:
+/* rule 100 can match eol */
 YY_RULE_SETUP
-#line 267 "lexer.l"
+#line 270 "lexer.l"
 countnewlines(); return tokv_lwsp;
        YY_BREAK
-case 98:
+case 101:
 YY_RULE_SETUP
-#line 268 "lexer.l"
+#line 271 "lexer.l"
 return tokv_lwsp;
        YY_BREAK
-case 99:
-/* rule 99 can match eol */
+case 102:
+/* rule 102 can match eol */
 YY_RULE_SETUP
-#line 269 "lexer.l"
+#line 272 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 100:
-/* rule 100 can match eol */
+case 103:
+/* rule 103 can match eol */
 YY_RULE_SETUP
-#line 270 "lexer.l"
+#line 273 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 101:
+case 104:
 YY_RULE_SETUP
-#line 271 "lexer.l"
+#line 274 "lexer.l"
 return parseerrprint("missing newline at eof after comment");
        YY_BREAK
-case 102:
-/* rule 102 can match eol */
+case 105:
+/* rule 105 can match eol */
 YY_RULE_SETUP
-#line 272 "lexer.l"
+#line 275 "lexer.l"
 {
                          countnewlines();
                          return dequote(yytext);
                        }
        YY_BREAK
-case 103:
+case 106:
 YY_RULE_SETUP
-#line 276 "lexer.l"
+#line 279 "lexer.l"
 return tokv_barestring;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 277 "lexer.l"
+#line 280 "lexer.l"
 return tokv_eof;
        YY_BREAK
-case 104:
+case 107:
 YY_RULE_SETUP
-#line 278 "lexer.l"
+#line 281 "lexer.l"
 return parseerrprint("misquoted or unterminated string");
        YY_BREAK
-case 105:
+case 108:
 YY_RULE_SETUP
-#line 279 "lexer.l"
+#line 282 "lexer.l"
 return parseerrprint("unexpected backslash");
        YY_BREAK
-case 106:
+case 109:
 YY_RULE_SETUP
-#line 280 "lexer.l"
+#line 283 "lexer.l"
 abort(); /* expect lex warning "rule cannot be matched" */
        YY_BREAK
-case 107:
+case 110:
 YY_RULE_SETUP
-#line 283 "lexer.l"
+#line 286 "lexer.l"
 ECHO;
        YY_BREAK
-#line 1757 "<stdout>"
+#line 1827 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -1882,6 +1952,7 @@ ECHO;
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
+       } /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -1893,9 +1964,9 @@ ECHO;
  */
 static int yy_get_next_buffer (void)
 {
-       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       register char *source = (yytext_ptr);
-       register int number_to_move, i;
+       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       char *source = (yytext_ptr);
+       int number_to_move, i;
        int ret_val;
 
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -1924,7 +1995,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++);
@@ -1937,14 +2008,14 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       size_t num_to_read =
+                       int num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
@@ -1964,7 +2035,7 @@ static int yy_get_next_buffer (void)
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
+                               b->yy_ch_buf = NULL;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -2006,6 +2077,14 @@ 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) {
+               /* 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,new_size  );
+               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+       }
+
        (yy_n_chars) += number_to_move;
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
@@ -2019,14 +2098,14 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
+       yy_state_type yy_current_state;
+       char *yy_cp;
     
        yy_current_state = (yy_start);
 
        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)] : 1);
+               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;
@@ -2035,10 +2114,10 @@ static int yy_get_next_buffer (void)
                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 >= 565 )
+                       if ( yy_current_state >= 575 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                }
 
        return yy_current_state;
@@ -2051,10 +2130,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-       register int yy_is_jam;
-       register char *yy_cp = (yy_c_buf_p);
+       int yy_is_jam;
+       char *yy_cp = (yy_c_buf_p);
 
-       register YY_CHAR yy_c = 1;
+       YY_CHAR yy_c = 1;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -2063,18 +2142,20 @@ static int yy_get_next_buffer (void)
        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 >= 565 )
+               if ( yy_current_state >= 575 )
                        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 == 564);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+       yy_is_jam = (yy_current_state == 574);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
-    static void yyunput (int c, register char * yy_bp )
+#ifndef YY_NO_UNPUT
+
+    static void yyunput (int c, char * yy_bp )
 {
-       register char *yy_cp;
+       char *yy_cp;
     
     yy_cp = (yy_c_buf_p);
 
@@ -2084,10 +2165,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. */
-               register int number_to_move = (yy_n_chars) + 2;
-               register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+               int number_to_move = (yy_n_chars) + 2;
+               char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-               register char *source =
+               char *source =
                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 
                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
@@ -2096,7 +2177,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) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+                       (yy_n_chars) = (int) 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" );
@@ -2109,6 +2190,8 @@ static int yy_get_next_buffer (void)
        (yy_c_buf_p) = yy_cp;
 }
 
+#endif
+
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -2157,7 +2240,7 @@ static int yy_get_next_buffer (void)
                                case EOB_ACT_END_OF_FILE:
                                        {
                                        if ( yywrap( ) )
-                                               return EOF;
+                                               return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -2258,7 +2341,7 @@ static void yy_load_buffer_state  (void)
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
-       b->yy_buf_size = size;
+       b->yy_buf_size = (yy_size_t)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.
@@ -2293,10 +2376,6 @@ static void yy_load_buffer_state  (void)
        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.
@@ -2417,13 +2496,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;
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
                (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;
@@ -2432,13 +2513,15 @@ 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. */
-               int grow_size = 8 /* arbitrary grow size */;
+               yy_size_t grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -2450,7 +2533,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 )
 {
@@ -2460,7 +2543,7 @@ 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 0;
+               return NULL;
 
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
@@ -2469,7 +2552,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
        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_input_file = NULL;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
@@ -2483,26 +2566,26 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 
 /** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
+ * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
  *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str )
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes(yy_str,strlen(yy_str) );
+       return yy_scan_bytes(yystr,(int) strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * bytes, int  len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -2510,15 +2593,15 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * bytes, int  len )
        int i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = len + 2;
+       n = (yy_size_t) (_yybytes_len + 2);
        buf = (char *) yyalloc(n  );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
-       for ( i = 0; i < len; ++i )
-               buf[i] = bytes[i];
+       for ( i = 0; i < _yybytes_len; ++i )
+               buf[i] = yybytes[i];
 
-       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+       buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
        b = yy_scan_buffer(buf,n );
        if ( ! b )
@@ -2536,9 +2619,9 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * bytes, int  len )
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
-       (void) fprintf( stderr, "%s\n", msg );
+                       (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 
@@ -2566,7 +2649,7 @@ static void yy_fatal_error (yyconst char* msg )
  */
 int yyget_lineno  (void)
 {
-        
+    
     return yylineno;
 }
 
@@ -2604,29 +2687,29 @@ char *yyget_text  (void)
 }
 
 /** Set the current line number.
- * @param line_number
+ * @param _line_number 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)
@@ -2634,9 +2717,37 @@ 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)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from yylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = NULL;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = NULL;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    yyin = stdin;
+    yyout = stdout;
+#else
+    yyin = NULL;
+    yyout = NULL;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * yylex_init()
+     */
+    return 0;
 }
 
 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
@@ -2654,6 +2765,10 @@ int yylex_destroy  (void)
        yyfree((yy_buffer_stack) );
        (yy_buffer_stack) = NULL;
 
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * yylex() is called, initialization will occur. */
+    yy_init_globals( );
+
     return 0;
 }
 
@@ -2664,8 +2779,9 @@ int yylex_destroy  (void)
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-       register int i;
-       for ( i = 0; i < n; ++i )
+               
+       int i;
+       for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
 }
 #endif
@@ -2673,8 +2789,8 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 #ifdef YY_NEED_STRLEN
 static int yy_flex_strlen (yyconst char * s )
 {
-       register int n;
-       for ( n = 0; s[n]; ++n )
+       int n;
+       for ( n = 0; s[n]; ++n )
                ;
 
        return n;
@@ -2683,11 +2799,12 @@ static int yy_flex_strlen (yyconst char * s )
 
 void *yyalloc (yy_size_t  size )
 {
-       return (void *) malloc( size );
+                       return 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
@@ -2695,29 +2812,17 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return (void *) realloc( (char *) ptr, size );
+       return realloc(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"
 
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef yytext_ptr
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-#line 283 "lexer.l"
+#line 286 "lexer.l"
 
 
 
diff --git a/lexer.l b/lexer.l
index 17b757d9a12aa2669f3074a84c7774e2a156e574..d75ed270bbdab3688829c950cf1d428c8fa8fa20 100644 (file)
--- a/lexer.l
+++ b/lexer.l
@@ -230,6 +230,9 @@ local7 { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
 read { return tokv_word_read; }
 write { return tokv_word_write; }
 \$ { return tokv_dollar; }
+stdin {  lr_max= lr_min= 0; return tokv_word_stdin; }
+stdout {  lr_max= lr_min= 1; return tokv_word_stdout; }
+stderr {  lr_max= lr_min= 2; return tokv_word_stderr; }
 \( { return tokv_openparen; }
 \) { return tokv_closeparen; }
 \! { return tokv_not; }
index 5157f39819a6771333ebd0bff67b768cef187273..a5b5fb5fd66de0b10d504a7238c6883efae7190c 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -205,6 +205,8 @@ const char *printtoken(int token) {
     return buf;
   } else if (token & tokt_number) {
     snyprintf(buf,sizeof(buf),"number %d",lr_min); return buf;
+  } else if (token & tokt_fdrange && token & tokr_word) {
+    snyprintf(buf,sizeof(buf),"fd %s",buf); return buf;
   } else if (token & tokt_fdrange && lr_max==-1) {
     snyprintf(buf,sizeof(buf),"fdrange %d-",lr_min); return buf;
   } else if (token & tokt_fdrange) {
index 4ea2ac9bc090b8b3d536e15ae766c34b061a048e..2ecf6a6ea2c5bd9ad7b59abee39778dc6f1dbe3a 100644 (file)
--- a/tokens.h
+++ b/tokens.h
@@ -141,19 +141,22 @@ enum tokens {
   toki_fdrange=                                     0x00000058,
   toki_fdstoend=                                    0x00000059,
   toki_dollar=                                      0x0000005a,
-  toki_lwsp=                                        0x0000005b,
-  toki_newline=                                     0x0000005c,
-  toki_barestring=                                  0x0000005d,
-  toki_quotedstring=                                0x0000005e,
-  toki_eof=                                         0x0000005f,
-  toki_quit=                                        0x00000060,
-  toki_error=                                       0x00000061,
-  toki_openparen=                                   0x00000062,
-  toki_closeparen=                                  0x00000063,
-  toki_not=                                         0x00000064,
-  toki_and=                                         0x00000065,
-  toki_or=                                          0x00000066,
-  toki_word_error=                                  0x00000067,
+  toki_word_stdin=                                  0x0000005b,
+  toki_word_stdout=                                 0x0000005c,
+  toki_word_stderr=                                 0x0000005d,
+  toki_lwsp=                                        0x0000005e,
+  toki_newline=                                     0x0000005f,
+  toki_barestring=                                  0x00000060,
+  toki_quotedstring=                                0x00000061,
+  toki_eof=                                         0x00000062,
+  toki_quit=                                        0x00000063,
+  toki_error=                                       0x00000064,
+  toki_openparen=                                   0x00000065,
+  toki_closeparen=                                  0x00000066,
+  toki_not=                                         0x00000067,
+  toki_and=                                         0x00000068,
+  toki_or=                                          0x00000069,
+  toki_word_error=                                  0x0000006a,
 
   tokv_word_reject=             tokt_directive|tokt_execmode|tokr_word|toki_word_reject,
   tokv_word_executefromdirectory=tokt_directive|tokt_execmode|tokr_word|toki_word_executefromdirectory,
@@ -245,6 +248,9 @@ enum tokens {
   tokv_fdrange=                 tokt_fdrange|tokr_punct|toki_fdrange,
   tokv_fdstoend=                tokt_fdrange|tokr_punct|toki_fdstoend,
   tokv_dollar=                  tokt_misc|tokr_punct|toki_dollar,
+  tokv_word_stdin=              tokt_fdrange|tokr_word|toki_word_stdin,
+  tokv_word_stdout=             tokt_fdrange|tokr_word|toki_word_stdout,
+  tokv_word_stderr=             tokt_fdrange|tokr_word|toki_word_stderr,
   tokv_lwsp=                    tokt_misc|tokr_nonstring|toki_lwsp,
   tokv_newline=                 tokt_misc|tokr_nonstring|toki_newline,
   tokv_barestring=              tokt_string|tokr_string|toki_barestring,