gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-1933-g9907a5


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. gawk-4.1.0-1933-g9907a59
Date: Wed, 3 Aug 2016 18:23:44 +0000 (UTC)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  9907a598dca8f129422c42f8c4fa3b4e2c988221 (commit)
      from  58cd470fe6b37ff2b62f5bc5b8cedf19be04fc63 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=9907a598dca8f129422c42f8c4fa3b4e2c988221

commit 9907a598dca8f129422c42f8c4fa3b4e2c988221
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Aug 3 21:23:22 2016 +0300

    Remove typed regexps until they can be done correctly.

diff --git a/ChangeLog b/ChangeLog
index 4ead366..3287d8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2016-08-03         Arnold D. Robbins     <address@hidden>
+
+       Remove typed regexes until they can be done properly.
+
+       * NEWS: Updated.
+       * awk.h (enum nodevals): Remove Node_typedregex.
+       (force_string, force_number): Remove check for Node_typedregex.
+       * awkgram.y (TYPED_REGEXP): Remove token.
+       (grammar): Remove productions related to typed regexps. 
+       (yylex): Don't find a typed regex or return it.
+       (valinfo): Remove code for Node_typedregex.
+       * builtin.c (do_length, do_print, call_sub, call_match,
+       call_split_func, do_typeof): Remove code for Node_typedregex.
+       * debug.c (watchpoint_triggered, print_memory): Remove code
+       for Node_typedregex.
+       * eval.c (nodetypes, setup_frame): Remove code for Node_typedregex.
+       * interpret.h (r_interpret): Remove code for Node_typedregex.
+       * profile.c (pprint): Remove code for Node_typedregex.
+       (pp_strong_regex): Removed.
+       (pp_string_or_strong_regex): Remove code for Node_typedregex.
+       * re.c (re_update): Remove code for Node_typedregex.
+
 2016-08-01         Arnold D. Robbins     <address@hidden>
 
        * README, NEWS: Mark DJGPP port as unsupported.
diff --git a/NEWS b/NEWS
index 3293534..e4ec58f 100644
--- a/NEWS
+++ b/NEWS
@@ -59,26 +59,21 @@ Changes from 4.1.x to 4.2.0
     mode when FS = " " where newline was not a field separator. The code
     and doc have been updated.
 
-15. Gawk now supports strongly typed regexp constants. Such constants
-    look like @/.../.  You can assign them to variables, pass them to
-    functions, use them in ~, !~ and the case part of a switch statement.
-    More details are provided in the manual.
-
-16. The new typeof() function can be used to indicate if a variable or
-    array element is an array, regexp, string or number.  The isarray()
+15. The new typeof() function can be used to indicate if a variable or
+    array element is an array, string or number.  The isarray()
     function is deprecated in favor of typeof().
 
-17. As promised when 4.1 was released, the old extension mechanism,
+16. As promised when 4.1 was released, the old extension mechanism,
     using the `extension' function, is now gone.
 
-18. Support for GNU/Linux on Alpha systems has been removed.
+17. Support for GNU/Linux on Alpha systems has been removed.
 
-19. Optimizations are now enabled by default. Use the new -s/--no-optimize
+18. Optimizations are now enabled by default. Use the new -s/--no-optimize
     option(s) to disable them.  Pretty printing and profiling automatically
     disable optimizations so that the output program is the same as the
     original input program.
 
-20. The extension API now provides a mechanism for generating nonfatal
+19. The extension API now provides a mechanism for generating nonfatal
     error messages.
 
 Changes from 4.1.3 to 4.1.4
diff --git a/awk.h b/awk.h
index b286a9a..ba572d3 100644
--- a/awk.h
+++ b/awk.h
@@ -264,7 +264,6 @@ typedef enum nodevals {
        Node_val,               /* node is a value - type in flags */
        Node_regex,             /* a regexp, text, compiled, flags, etc */
        Node_dynregex,          /* a dynamic regexp */
-       Node_typedregex,        /* like Node_regex, but is a real type */
 
        /* symbol table values */
        Node_var,               /* scalar variable, lnode is value */
@@ -1805,9 +1804,6 @@ dupnode(NODE *n)
 static inline NODE *
 force_string(NODE *s)
 {
-       if (s->type == Node_typedregex)
-               return dupnode(s->re_exp);
-
        if ((s->flags & STRCUR) != 0
                    && (s->stfmt == STFMT_UNUSED || s->stfmt == CONVFMTidx)
        )
@@ -1834,9 +1830,6 @@ unref(NODE *r)
 static inline NODE *
 force_number(NODE *n)
 {
-       if (n->type == Node_typedregex)
-               return Nnull_string;
-
        return (n->flags & NUMCUR) != 0 ? n : str2number(n);
 }
 
@@ -1861,7 +1854,7 @@ force_number(NODE *n)
 static inline NODE *
 fixtype(NODE *n)
 {
-       assert(n->type == Node_val || n->type == Node_typedregex);
+       assert(n->type == Node_val);
        if (n->type == Node_val) {
                if ((n->flags & MAYBE_NUM) != 0)
                        return force_number(n);
diff --git a/awkgram.c b/awkgram.c
index 6037d42..e1aeb21 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -248,52 +248,51 @@ extern int yydebug;
     FILENAME = 261,
     YNUMBER = 262,
     YSTRING = 263,
-    TYPED_REGEXP = 264,
-    RELOP = 265,
-    IO_OUT = 266,
-    IO_IN = 267,
-    ASSIGNOP = 268,
-    ASSIGN = 269,
-    MATCHOP = 270,
-    CONCAT_OP = 271,
-    SUBSCRIPT = 272,
-    LEX_BEGIN = 273,
-    LEX_END = 274,
-    LEX_IF = 275,
-    LEX_ELSE = 276,
-    LEX_RETURN = 277,
-    LEX_DELETE = 278,
-    LEX_SWITCH = 279,
-    LEX_CASE = 280,
-    LEX_DEFAULT = 281,
-    LEX_WHILE = 282,
-    LEX_DO = 283,
-    LEX_FOR = 284,
-    LEX_BREAK = 285,
-    LEX_CONTINUE = 286,
-    LEX_PRINT = 287,
-    LEX_PRINTF = 288,
-    LEX_NEXT = 289,
-    LEX_EXIT = 290,
-    LEX_FUNCTION = 291,
-    LEX_BEGINFILE = 292,
-    LEX_ENDFILE = 293,
-    LEX_GETLINE = 294,
-    LEX_NEXTFILE = 295,
-    LEX_IN = 296,
-    LEX_AND = 297,
-    LEX_OR = 298,
-    INCREMENT = 299,
-    DECREMENT = 300,
-    LEX_BUILTIN = 301,
-    LEX_LENGTH = 302,
-    LEX_EOF = 303,
-    LEX_INCLUDE = 304,
-    LEX_EVAL = 305,
-    LEX_LOAD = 306,
-    NEWLINE = 307,
-    SLASH_BEFORE_EQUAL = 308,
-    UNARY = 309
+    RELOP = 264,
+    IO_OUT = 265,
+    IO_IN = 266,
+    ASSIGNOP = 267,
+    ASSIGN = 268,
+    MATCHOP = 269,
+    CONCAT_OP = 270,
+    SUBSCRIPT = 271,
+    LEX_BEGIN = 272,
+    LEX_END = 273,
+    LEX_IF = 274,
+    LEX_ELSE = 275,
+    LEX_RETURN = 276,
+    LEX_DELETE = 277,
+    LEX_SWITCH = 278,
+    LEX_CASE = 279,
+    LEX_DEFAULT = 280,
+    LEX_WHILE = 281,
+    LEX_DO = 282,
+    LEX_FOR = 283,
+    LEX_BREAK = 284,
+    LEX_CONTINUE = 285,
+    LEX_PRINT = 286,
+    LEX_PRINTF = 287,
+    LEX_NEXT = 288,
+    LEX_EXIT = 289,
+    LEX_FUNCTION = 290,
+    LEX_BEGINFILE = 291,
+    LEX_ENDFILE = 292,
+    LEX_GETLINE = 293,
+    LEX_NEXTFILE = 294,
+    LEX_IN = 295,
+    LEX_AND = 296,
+    LEX_OR = 297,
+    INCREMENT = 298,
+    DECREMENT = 299,
+    LEX_BUILTIN = 300,
+    LEX_LENGTH = 301,
+    LEX_EOF = 302,
+    LEX_INCLUDE = 303,
+    LEX_EVAL = 304,
+    LEX_LOAD = 305,
+    NEWLINE = 306,
+    SLASH_BEFORE_EQUAL = 307,
+    UNARY = 308
   };
 #endif
 /* Tokens.  */
@@ -303,52 +302,51 @@ extern int yydebug;
 #define FILENAME 261
 #define YNUMBER 262
 #define YSTRING 263
-#define TYPED_REGEXP 264
-#define RELOP 265
-#define IO_OUT 266
-#define IO_IN 267
-#define ASSIGNOP 268
-#define ASSIGN 269
-#define MATCHOP 270
-#define CONCAT_OP 271
-#define SUBSCRIPT 272
-#define LEX_BEGIN 273
-#define LEX_END 274
-#define LEX_IF 275
-#define LEX_ELSE 276
-#define LEX_RETURN 277
-#define LEX_DELETE 278
-#define LEX_SWITCH 279
-#define LEX_CASE 280
-#define LEX_DEFAULT 281
-#define LEX_WHILE 282
-#define LEX_DO 283
-#define LEX_FOR 284
-#define LEX_BREAK 285
-#define LEX_CONTINUE 286
-#define LEX_PRINT 287
-#define LEX_PRINTF 288
-#define LEX_NEXT 289
-#define LEX_EXIT 290
-#define LEX_FUNCTION 291
-#define LEX_BEGINFILE 292
-#define LEX_ENDFILE 293
-#define LEX_GETLINE 294
-#define LEX_NEXTFILE 295
-#define LEX_IN 296
-#define LEX_AND 297
-#define LEX_OR 298
-#define INCREMENT 299
-#define DECREMENT 300
-#define LEX_BUILTIN 301
-#define LEX_LENGTH 302
-#define LEX_EOF 303
-#define LEX_INCLUDE 304
-#define LEX_EVAL 305
-#define LEX_LOAD 306
-#define NEWLINE 307
-#define SLASH_BEFORE_EQUAL 308
-#define UNARY 309
+#define RELOP 264
+#define IO_OUT 265
+#define IO_IN 266
+#define ASSIGNOP 267
+#define ASSIGN 268
+#define MATCHOP 269
+#define CONCAT_OP 270
+#define SUBSCRIPT 271
+#define LEX_BEGIN 272
+#define LEX_END 273
+#define LEX_IF 274
+#define LEX_ELSE 275
+#define LEX_RETURN 276
+#define LEX_DELETE 277
+#define LEX_SWITCH 278
+#define LEX_CASE 279
+#define LEX_DEFAULT 280
+#define LEX_WHILE 281
+#define LEX_DO 282
+#define LEX_FOR 283
+#define LEX_BREAK 284
+#define LEX_CONTINUE 285
+#define LEX_PRINT 286
+#define LEX_PRINTF 287
+#define LEX_NEXT 288
+#define LEX_EXIT 289
+#define LEX_FUNCTION 290
+#define LEX_BEGINFILE 291
+#define LEX_ENDFILE 292
+#define LEX_GETLINE 293
+#define LEX_NEXTFILE 294
+#define LEX_IN 295
+#define LEX_AND 296
+#define LEX_OR 297
+#define INCREMENT 298
+#define DECREMENT 299
+#define LEX_BUILTIN 300
+#define LEX_LENGTH 301
+#define LEX_EOF 302
+#define LEX_INCLUDE 303
+#define LEX_EVAL 304
+#define LEX_LOAD 305
+#define NEWLINE 306
+#define SLASH_BEFORE_EQUAL 307
+#define UNARY 308
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -366,7 +364,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 370 "awkgram.c" /* yacc.c:358  */
+#line 368 "awkgram.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -608,21 +606,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1236
+#define YYLAST   1147
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  76
+#define YYNTOKENS  75
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  70
+#define YYNNTS  69
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  203
+#define YYNRULES  198
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  350
+#define YYNSTATES  345
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   309
+#define YYMAXUTOK   308
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -634,16 +632,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    64,     2,     2,    67,    63,     2,     2,
-      68,    69,    61,    59,    56,    60,     2,    62,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    55,    75,
-      57,     2,    58,    54,    70,     2,     2,     2,     2,     2,
+       2,     2,     2,    63,     2,     2,    66,    62,     2,     2,
+      67,    68,    60,    58,    55,    59,     2,    61,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    54,    74,
+      56,     2,    57,    53,    69,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    71,     2,    72,    66,     2,     2,     2,     2,     2,
+       2,    70,     2,    71,    65,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    73,     2,    74,     2,     2,     2,     2,
+       2,     2,     2,    72,     2,    73,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -661,7 +659,7 @@ static const yytype_uint8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    65
+      45,    46,    47,    48,    49,    50,    51,    52,    64
 };
 
 #if YYDEBUG
@@ -671,24 +669,23 @@ static const yytype_uint16 yyrline[] =
        0,   213,   213,   215,   220,   221,   225,   237,   242,   253,
      260,   266,   275,   283,   285,   290,   298,   300,   306,   314,
      324,   354,   368,   382,   390,   401,   413,   415,   417,   423,
-     431,   432,   436,   436,   482,   481,   515,   537,   539,   544,
-     554,   601,   606,   607,   611,   613,   615,   622,   712,   754,
-     796,   909,   916,   923,   934,   944,   954,   964,   976,   993,
-     992,  1017,  1029,  1029,  1128,  1128,  1162,  1193,  1202,  1203,
-    1209,  1210,  1217,  1222,  1234,  1248,  1250,  1258,  1263,  1265,
-    1273,  1282,  1284,  1293,  1294,  1302,  1307,  1307,  1318,  1322,
-    1330,  1331,  1334,  1336,  1341,  1342,  1351,  1352,  1357,  1362,
-    1371,  1373,  1375,  1382,  1383,  1389,  1390,  1395,  1397,  1402,
-    1404,  1412,  1417,  1426,  1427,  1432,  1434,  1439,  1441,  1449,
-    1454,  1462,  1463,  1468,  1475,  1479,  1481,  1483,  1496,  1513,
-    1523,  1530,  1532,  1537,  1539,  1541,  1549,  1551,  1556,  1558,
-    1563,  1565,  1567,  1623,  1625,  1627,  1629,  1631,  1633,  1635,
-    1637,  1651,  1656,  1661,  1686,  1692,  1694,  1696,  1698,  1700,
-    1702,  1707,  1711,  1743,  1745,  1751,  1757,  1770,  1771,  1772,
-    1777,  1782,  1786,  1790,  1805,  1818,  1823,  1860,  1889,  1890,
-    1896,  1897,  1902,  1904,  1911,  1928,  1945,  1947,  1954,  1959,
-    1967,  1977,  1989,  1998,  2002,  2006,  2010,  2014,  2018,  2021,
-    2023,  2027,  2031,  2035
+     431,   432,   436,   436,   482,   481,   515,   517,   522,   532,
+     579,   584,   585,   589,   591,   593,   600,   690,   732,   774,
+     887,   894,   901,   912,   922,   932,   942,   954,   971,   970,
+     995,  1007,  1007,  1106,  1106,  1140,  1171,  1180,  1181,  1187,
+    1188,  1195,  1200,  1212,  1226,  1228,  1236,  1241,  1243,  1254,
+    1256,  1265,  1266,  1274,  1279,  1279,  1290,  1294,  1302,  1303,
+    1306,  1308,  1313,  1314,  1323,  1324,  1329,  1334,  1343,  1345,
+    1347,  1354,  1355,  1361,  1362,  1367,  1369,  1374,  1376,  1384,
+    1389,  1398,  1399,  1404,  1406,  1411,  1413,  1421,  1426,  1434,
+    1439,  1446,  1448,  1450,  1467,  1477,  1484,  1486,  1491,  1493,
+    1495,  1503,  1505,  1510,  1512,  1517,  1519,  1521,  1577,  1579,
+    1581,  1583,  1585,  1587,  1589,  1591,  1605,  1610,  1615,  1640,
+    1646,  1648,  1650,  1652,  1654,  1656,  1661,  1665,  1697,  1699,
+    1705,  1711,  1724,  1725,  1726,  1731,  1736,  1740,  1744,  1759,
+    1772,  1777,  1814,  1843,  1844,  1850,  1851,  1856,  1858,  1865,
+    1882,  1899,  1901,  1908,  1913,  1921,  1931,  1943,  1952,  1956,
+    1960,  1964,  1968,  1972,  1975,  1977,  1981,  1985,  1989
 };
 #endif
 
@@ -698,32 +695,31 @@ static const yytype_uint16 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "FUNC_CALL", "NAME", "REGEXP",
-  "FILENAME", "YNUMBER", "YSTRING", "TYPED_REGEXP", "RELOP", "IO_OUT",
-  "IO_IN", "ASSIGNOP", "ASSIGN", "MATCHOP", "CONCAT_OP", "SUBSCRIPT",
-  "LEX_BEGIN", "LEX_END", "LEX_IF", "LEX_ELSE", "LEX_RETURN", "LEX_DELETE",
-  "LEX_SWITCH", "LEX_CASE", "LEX_DEFAULT", "LEX_WHILE", "LEX_DO",
-  "LEX_FOR", "LEX_BREAK", "LEX_CONTINUE", "LEX_PRINT", "LEX_PRINTF",
-  "LEX_NEXT", "LEX_EXIT", "LEX_FUNCTION", "LEX_BEGINFILE", "LEX_ENDFILE",
-  "LEX_GETLINE", "LEX_NEXTFILE", "LEX_IN", "LEX_AND", "LEX_OR",
-  "INCREMENT", "DECREMENT", "LEX_BUILTIN", "LEX_LENGTH", "LEX_EOF",
-  "LEX_INCLUDE", "LEX_EVAL", "LEX_LOAD", "NEWLINE", "SLASH_BEFORE_EQUAL",
-  "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'",
-  "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'", "'['", "']'", "'{'",
-  "'}'", "';'", "$accept", "program", "rule", "source", "library",
-  "pattern", "action", "func_name", "lex_builtin", "function_prologue",
-  "address@hidden", "regexp", "address@hidden", "typed_regexp", "a_slash", 
"statements",
-  "statement_term", "statement", "non_compound_stmt", "address@hidden", 
"simple_stmt",
-  "address@hidden", "address@hidden", "opt_simple_stmt", "case_statements", 
"case_statement",
-  "case_value", "print", "print_expression_list", "output_redir", 
"address@hidden",
-  "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list",
-  "param_list", "opt_exp", "opt_expression_list", "expression_list",
-  "opt_fcall_expression_list", "fcall_expression_list", "fcall_exp", "exp",
-  "assign_operator", "relop_or_less", "a_relop", "common_exp", "simp_exp",
-  "simp_exp_nc", "non_post_simp_exp", "func_call", "direct_func_call",
-  "opt_variable", "delete_subscript_list", "delete_subscript",
-  "delete_exp_list", "bracketed_exp_list", "subscript", "subscript_list",
-  "simple_variable", "variable", "opt_incdec", "l_brace", "r_brace",
-  "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULLPTR
+  "FILENAME", "YNUMBER", "YSTRING", "RELOP", "IO_OUT", "IO_IN", "ASSIGNOP",
+  "ASSIGN", "MATCHOP", "CONCAT_OP", "SUBSCRIPT", "LEX_BEGIN", "LEX_END",
+  "LEX_IF", "LEX_ELSE", "LEX_RETURN", "LEX_DELETE", "LEX_SWITCH",
+  "LEX_CASE", "LEX_DEFAULT", "LEX_WHILE", "LEX_DO", "LEX_FOR", "LEX_BREAK",
+  "LEX_CONTINUE", "LEX_PRINT", "LEX_PRINTF", "LEX_NEXT", "LEX_EXIT",
+  "LEX_FUNCTION", "LEX_BEGINFILE", "LEX_ENDFILE", "LEX_GETLINE",
+  "LEX_NEXTFILE", "LEX_IN", "LEX_AND", "LEX_OR", "INCREMENT", "DECREMENT",
+  "LEX_BUILTIN", "LEX_LENGTH", "LEX_EOF", "LEX_INCLUDE", "LEX_EVAL",
+  "LEX_LOAD", "NEWLINE", "SLASH_BEFORE_EQUAL", "'?'", "':'", "','", "'<'",
+  "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'!'", "UNARY", "'^'", "'$'",
+  "'('", "')'", "'@'", "'['", "']'", "'{'", "'}'", "';'", "$accept",
+  "program", "rule", "source", "library", "pattern", "action", "func_name",
+  "lex_builtin", "function_prologue", "address@hidden", "regexp", 
"address@hidden", "a_slash",
+  "statements", "statement_term", "statement", "non_compound_stmt", 
"address@hidden",
+  "simple_stmt", "address@hidden", "address@hidden", "opt_simple_stmt", 
"case_statements",
+  "case_statement", "case_value", "print", "print_expression_list",
+  "output_redir", "address@hidden", "if_statement", "nls", "opt_nls", 
"input_redir",
+  "opt_param_list", "param_list", "opt_exp", "opt_expression_list",
+  "expression_list", "opt_fcall_expression_list", "fcall_expression_list",
+  "fcall_exp", "exp", "assign_operator", "relop_or_less", "a_relop",
+  "common_exp", "simp_exp", "simp_exp_nc", "non_post_simp_exp",
+  "func_call", "direct_func_call", "opt_variable", "delete_subscript_list",
+  "delete_subscript", "delete_exp_list", "bracketed_exp_list", "subscript",
+  "subscript_list", "simple_variable", "variable", "opt_incdec", "l_brace",
+  "r_brace", "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULLPTR
 };
 #endif
 
@@ -737,61 +733,61 @@ static const yytype_uint16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,    63,    58,    44,    60,    62,    43,
-      45,    42,    47,    37,    33,   309,    94,    36,    40,    41,
-      64,    91,    93,   123,   125,    59
+     305,   306,   307,    63,    58,    44,    60,    62,    43,    45,
+      42,    47,    37,    33,   308,    94,    36,    40,    41,    64,
+      91,    93,   123,   125,    59
 };
 # endif
 
-#define YYPACT_NINF -275
+#define YYPACT_NINF -280
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-275)))
+  (!!((Yystate) == (-280)))
 
-#define YYTABLE_NINF -115
+#define YYTABLE_NINF -113
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-115)))
+  (!!((Yytable_value) == (-113)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -275,   376,  -275,  -275,   -12,    -9,  -275,  -275,  -275,  -275,
-     171,  -275,  -275,    44,    44,    44,     5,    40,  -275,  -275,
-    -275,  1139,  1139,  -275,  1139,  1166,   869,    27,  -275,   -18,
-       2,  -275,  -275,    89,   884,  1065,   192,   214,  -275,  -275,
-    -275,  -275,   248,   795,   869,  -275,    10,  -275,  -275,  -275,
-    -275,  -275,   116,    82,  -275,   115,  -275,  -275,  -275,   795,
-     795,   166,   107,   104,   107,   107,  1139,   117,  -275,  -275,
-      15,   349,    23,    45,  -275,   125,  -275,  -275,  -275,    89,
-    -275,   125,  -275,   178,  -275,  -275,  1092,   172,  1139,  1139,
-    1139,   125,  -275,  -275,  -275,  1139,   146,   192,  1139,  1139,
-    1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,
-    -275,   181,  -275,  -275,   173,  1139,  -275,  -275,  -275,   128,
-      73,  -275,  1107,    14,  1107,  -275,  -275,  -275,  -275,  1139,
-    -275,   128,   128,   349,  -275,  -275,  -275,  1139,   125,  -275,
-     152,   916,  -275,  -275,    16,    92,  -275,    20,    92,    89,
-    -275,   599,  -275,  -275,  -275,   148,  -275,   124,    22,  1048,
-    1139,   199,    44,   265,   265,   107,   107,   107,   107,   265,
-     265,   107,   107,   107,   107,  -275,  -275,  1107,  -275,  1092,
-     842,  -275,    43,   192,  -275,  -275,  1107,  -275,   172,  -275,
-    1107,  -275,  -275,  -275,  -275,  -275,   133,  -275,    41,   144,
-     145,   125,   147,    92,    92,  -275,  -275,    92,  1139,    92,
-     125,  -275,  -275,    92,  -275,  -275,  1107,  -275,   151,   125,
-    1139,  1107,  -275,  -275,  -275,  -275,  -275,  -275,   128,    76,
-    -275,  1139,  1139,  -275,   224,  1139,  1139,   715,   949,  -275,
-    -275,  -275,    92,  1107,  -275,  -275,  -275,   646,   599,   125,
-    -275,  -275,  1107,   125,  -275,    49,   349,    92,    -9,   160,
-     349,   349,   206,   113,  -275,   151,  -275,   869,   225,  -275,
-     169,  -275,  -275,  -275,  -275,  -275,   125,  -275,  -275,    11,
-    -275,  -275,  -275,   125,   125,   179,   172,   125,    15,  -275,
-    -275,   715,  -275,  -275,     2,   715,  1139,   128,   762,   152,
-    1139,   219,  -275,  -275,   349,   125,   275,   125,  1065,   125,
-     112,   125,   715,   125,   997,   715,  -275,   261,   205,  -275,
-     191,  -275,  -275,   997,   128,  -275,  -275,  -275,   271,   272,
-    -275,  -275,   205,  -275,   125,  -275,   128,   125,  -275,  -275,
-     125,  -275,   125,   715,  -275,   449,   715,  -275,   524,  -275
+    -280,   341,  -280,  -280,   -30,   -14,  -280,  -280,  -280,  -280,
+     235,  -280,  -280,    56,    56,    56,    64,    69,  -280,  -280,
+    -280,  1011,  1011,  -280,  1011,  1057,   786,   206,  -280,   -22,
+      -3,  -280,  -280,    31,   723,   984,   336,   408,  -280,  -280,
+    -280,  -280,   169,   754,   786,  -280,     5,  -280,  -280,  -280,
+    -280,  -280,    88,    87,  -280,   103,  -280,  -280,  -280,   754,
+     754,   158,    98,     4,    98,    98,  1011,    77,  -280,  -280,
+      61,   313,    45,   127,  -280,   120,  -280,  -280,  -280,    31,
+    -280,   120,  -280,   168,  -280,  -280,  1011,   182,  1011,  1011,
+    1011,   120,  -280,  -280,  -280,  1011,   149,   336,  1011,  1011,
+    1011,  1011,  1011,  1011,  1011,  1011,  1011,  1011,  1011,  1011,
+    -280,  -280,  -280,  -280,   175,  1011,  -280,   122,   129,  -280,
+    1026,    15,  1026,  -280,  -280,  -280,  -280,  1011,  -280,   122,
+     122,   313,  -280,  -280,  -280,  1011,   120,  -280,   152,   832,
+    -280,  -280,    17,   -19,  -280,    44,   -19,    31,  -280,   561,
+    -280,  -280,   151,  -280,   311,   231,  1090,  1011,   190,    56,
+     -26,   -26,    98,    98,    98,    98,   -26,   -26,    98,    98,
+      98,    98,  -280,  1026,  -280,  1011,   859,  -280,    40,   336,
+    -280,  -280,  1026,  -280,   182,  -280,  1026,  -280,  -280,  -280,
+    -280,  -280,   124,  -280,    26,   135,   144,   120,   150,   -19,
+     -19,  -280,  -280,   -19,  1011,   -19,   120,  -280,  -280,   -19,
+    -280,  -280,  1026,  -280,   142,   120,  1011,  1026,  -280,  -280,
+    -280,  -280,  -280,  -280,   122,   138,  -280,  1011,  1011,  -280,
+     215,  1011,  1011,   675,   905,  -280,  -280,  -280,   -19,  1026,
+    -280,  -280,  -280,   607,   561,   120,  -280,  -280,  1026,   120,
+    -280,   154,   313,   -19,   -14,   155,   313,   313,   196,     9,
+    -280,   142,  -280,   786,   219,  -280,    16,  -280,  -280,  -280,
+    -280,  -280,   120,  -280,  -280,     8,  -280,  -280,  -280,   120,
+     120,   165,   182,   120,    61,  -280,  -280,   675,  -280,  -280,
+      -3,   675,  1011,   122,   708,   152,  1011,   216,  -280,  -280,
+     313,   120,   256,   120,   984,   120,     3,   120,   675,   120,
+     938,   675,  -280,   366,   194,  -280,   176,  -280,  -280,   938,
+     122,  -280,  -280,  -280,   243,   246,  -280,   194,  -280,   120,
+    -280,   122,   120,  -280,  -280,   120,  -280,   120,   675,  -280,
+     413,   675,  -280,   487,  -280
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -799,65 +795,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     6,     0,   189,   171,   172,    21,    22,
-       0,    23,    24,   178,     0,     0,     0,   166,     5,    90,
-      38,     0,     0,    37,     0,     0,     0,     0,     3,     0,
-       0,   161,    34,     4,    19,   132,   140,   141,   143,   167,
-     175,   191,   168,     0,     0,   186,     0,   190,    27,    26,
-      30,    31,     0,     0,    28,    94,   179,   169,   170,     0,
-       0,     0,   174,   168,   173,   162,     0,   195,   168,   109,
-       0,   107,     0,     0,   176,    92,   201,     7,     8,    42,
-      39,    92,     9,     0,    91,   136,     0,     0,     0,     0,
-       0,    92,   137,   139,   138,     0,     0,   142,     0,     0,
+       2,     0,     1,     6,     0,   184,   166,   167,    21,    22,
+       0,    23,    24,   173,     0,     0,     0,   161,     5,    88,
+      37,     0,     0,    36,     0,     0,     0,     0,     3,     0,
+       0,   156,    34,     4,    19,   127,   135,   136,   138,   162,
+     170,   186,   163,     0,     0,   181,     0,   185,    27,    26,
+      30,    31,     0,     0,    28,    92,   174,   164,   165,     0,
+       0,     0,   169,   163,   168,   157,     0,   190,   163,   107,
+       0,   105,     0,     0,   171,    90,   196,     7,     8,    41,
+      38,    90,     9,     0,    89,   131,     0,     0,     0,     0,
+       0,    90,   132,   134,   133,     0,     0,   137,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     134,   133,   151,   152,     0,     0,   117,    36,   122,     0,
-       0,   115,   121,     0,   107,   188,   187,    29,    32,     0,
-     150,     0,     0,     0,   193,   194,   192,   110,    92,   198,
-       0,     0,   163,    14,     0,     0,    17,     0,     0,    93,
-     196,     0,    43,    35,   127,   128,   129,   125,   126,     0,
-       0,   130,   178,   148,   149,   145,   146,   147,   144,   159,
-     160,   156,   157,   158,   155,   124,   135,   123,   177,   118,
-       0,   185,     0,    95,   164,   165,   111,   203,     0,   112,
-     108,    13,    10,    16,    11,    41,     0,    59,     0,     0,
-       0,    92,     0,     0,     0,    81,    82,     0,   103,     0,
-      92,    40,    53,     0,    62,    46,    67,    39,   199,    92,
-       0,    20,   154,   119,   120,   116,   100,    98,     0,     0,
-     153,     0,   103,    64,     0,     0,     0,     0,    68,    54,
-      55,    56,     0,   104,    57,   197,    61,     0,     0,    92,
-     200,    44,   131,    92,   101,     0,     0,     0,   180,     0,
-       0,     0,     0,   189,    69,     0,    58,     0,    85,    83,
-       0,    45,    25,    33,   102,    99,    92,    60,    65,     0,
-     182,   184,    66,    92,    92,     0,     0,    92,     0,    86,
-      63,     0,   181,   183,     0,     0,     0,     0,     0,    84,
-       0,    88,    70,    48,     0,    92,     0,    92,    87,    92,
-       0,    92,     0,    92,    68,     0,    72,     0,     0,    71,
-       0,    49,    50,    68,     0,    89,    75,    78,     0,     0,
-      79,    80,     0,   202,    92,    47,     0,    92,    77,    76,
-      92,    39,    92,     0,    39,     0,     0,    52,     0,    51
+     129,   128,   146,   147,     0,     0,   115,     0,     0,   113,
+     119,     0,   105,   183,   182,    29,    32,     0,   145,     0,
+       0,     0,   188,   189,   187,   108,    90,   193,     0,     0,
+     158,    14,     0,     0,    17,     0,     0,    91,   191,     0,
+      42,    35,   123,   124,   121,   122,     0,     0,   125,   173,
+     143,   144,   140,   141,   142,   139,   154,   155,   151,   152,
+     153,   150,   130,   120,   172,   116,     0,   180,     0,    93,
+     159,   160,   109,   198,     0,   110,   106,    13,    10,    16,
+      11,    40,     0,    58,     0,     0,     0,    90,     0,     0,
+       0,    79,    80,     0,   101,     0,    90,    39,    52,     0,
+      61,    45,    66,    38,   194,    90,     0,    20,   149,   117,
+     118,   114,    98,    96,     0,     0,   148,     0,   101,    63,
+       0,     0,     0,     0,    67,    53,    54,    55,     0,   102,
+      56,   192,    60,     0,     0,    90,   195,    43,   126,    90,
+      99,     0,     0,     0,   175,     0,     0,     0,     0,   184,
+      68,     0,    57,     0,    83,    81,     0,    44,    25,    33,
+     100,    97,    90,    59,    64,     0,   177,   179,    65,    90,
+      90,     0,     0,    90,     0,    84,    62,     0,   176,   178,
+       0,     0,     0,     0,     0,    82,     0,    86,    69,    47,
+       0,    90,     0,    90,    85,    90,     0,    90,     0,    90,
+      67,     0,    71,     0,     0,    70,     0,    48,    49,    67,
+       0,    87,    74,    77,     0,     0,    78,     0,   197,    90,
+      46,     0,    90,    76,    75,    90,    38,    90,     0,    38,
+       0,     0,    51,     0,    50
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -275,  -275,  -275,  -275,  -275,  -275,   252,  -275,  -275,  -275,
-    -275,   -33,  -275,   -80,  -275,  -213,   100,  -144,  -275,  -275,
-    -231,  -275,  -275,  -274,  -275,  -275,  -275,  -275,  -275,  -275,
-    -275,  -275,     7,    62,  -275,  -275,  -275,    54,  -275,   -43,
-       1,  -275,   -23,    -1,  -275,  -275,  -275,   -13,    17,  -275,
-     263,  -275,     8,   127,  -275,  -275,    21,   -36,  -275,  -275,
-     -78,    -2,  -275,   -27,  -230,   -65,  -275,   -15,   -38,   -94
+    -280,  -280,  -280,  -280,  -280,  -280,   228,  -280,  -280,  -280,
+    -280,   -54,  -280,  -280,  -212,   -33,  -176,  -280,  -280,  -227,
+    -280,  -280,  -279,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,    52,    28,  -280,  -280,  -280,    32,  -280,   -39,    93,
+    -280,     2,    -1,  -280,  -280,  -280,   -29,    42,  -280,   241,
+    -280,    11,   109,  -280,  -280,    -6,   -40,  -280,  -280,   -72,
+      -2,  -280,   -27,  -236,   -56,  -280,   -20,   -51,  -108
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    28,   145,   148,    29,    77,    53,    54,    30,
-     182,    31,    83,   118,    32,   151,    78,   211,   212,   232,
-     213,   247,   258,   265,   310,   319,   332,   214,   268,   290,
-     300,   215,   149,   150,   130,   228,   229,   242,   269,    70,
-     119,   120,   121,   216,   115,    94,    95,    35,    36,    37,
-      38,    39,    40,    55,   278,   279,   280,    45,    46,    47,
-      41,    42,   136,   217,   218,   142,   249,   219,   334,   141
+      -1,     1,    28,   143,   146,    29,    77,    53,    54,    30,
+     178,    31,    83,    32,   149,    78,   207,   208,   228,   209,
+     243,   254,   261,   306,   315,   327,   210,   264,   286,   296,
+     211,   147,   148,   128,   224,   225,   238,   265,    70,   117,
+     118,   119,   212,   115,    94,    95,    35,    36,    37,    38,
+      39,    40,    55,   274,   275,   276,    45,    46,    47,    41,
+      42,   134,   213,   214,   140,   245,   215,   329,   139
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -865,325 +861,306 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      34,   123,    80,    80,   248,   140,   154,   264,    33,   156,
-     126,    56,    57,    58,    81,   137,   137,   191,   271,    63,
-      63,   193,    63,    68,   143,    71,   180,   125,   292,   144,
-       4,   175,    85,    63,    19,    74,    79,    86,    62,    64,
-     324,    65,   122,   124,   226,   233,   146,   227,     5,   336,
-     274,   147,    97,   275,   178,    75,    43,    76,   122,   122,
-     131,   132,    44,    87,    88,   133,   184,   185,   -12,    74,
-     138,   138,   -15,    59,   179,    75,    72,   254,    73,    92,
-      93,    44,    44,   264,   139,   155,   181,   157,   158,   159,
-     335,   -12,   264,   262,   161,   -15,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    60,   234,
-     230,    25,   -96,   316,   177,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,    63,   345,   138,
-      81,   348,   138,    81,    85,   255,   186,   317,   318,    86,
-     190,    84,  -114,   152,    19,   -97,   183,   301,   112,   113,
-     128,   303,    79,   160,   286,    79,   223,   225,    85,   221,
-      56,   134,   135,   253,    19,    87,   127,    76,   322,     4,
-     137,   325,   129,   103,    48,    49,     5,    19,   122,   122,
-    -106,    92,    93,   153,    44,   162,   -92,   176,    81,    81,
-     117,   276,    81,   188,    81,   283,   284,   139,    81,   347,
-     187,   231,   349,   250,   270,    92,    93,   243,   297,  -115,
-      79,    79,   235,   236,    79,   238,    79,    50,    51,   252,
-      79,  -106,   281,   299,   288,   138,    76,    81,   259,   282,
-     256,   243,   305,   285,   260,   261,   289,   331,  -106,   311,
-     309,    52,    81,   281,  -106,   192,   124,   296,   194,    79,
-     287,    98,    99,   100,   101,   102,  -115,  -115,   103,   337,
-     333,   110,   111,   237,    79,   210,    71,   302,   326,   327,
-     117,   342,   245,   104,   105,   106,   107,   108,   338,   339,
-     109,   251,    82,   307,   330,    85,   257,   308,    67,   222,
-      86,   313,   112,   113,   340,   304,     0,   306,    63,     0,
-     293,   114,     0,   239,   240,     0,    63,   241,     0,   244,
-       0,   272,     0,   246,    20,   273,    87,    88,    89,     0,
-     328,   329,     0,    23,     0,    97,   100,   101,   102,    90,
-       0,   103,    92,    93,     0,     0,     0,     0,   291,     0,
-       0,     0,   266,     0,     0,   294,   295,     0,     0,   298,
-      76,     0,     0,     0,     0,     0,     0,   277,     0,    85,
-       0,     0,     0,     0,    86,     0,     0,   312,     0,   314,
-       0,   315,   320,   321,     0,   323,     2,     3,     0,     4,
-       5,     0,     0,     6,     7,     0,     0,     0,     0,     0,
-      87,    88,    89,     0,     8,     9,   341,     0,     0,   343,
-       0,     0,   344,    90,   346,     0,    92,    93,     0,     0,
-       0,     0,    10,    11,    12,    13,     0,     0,   139,     0,
-      14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
+      34,   244,    80,    80,   312,   121,   124,   260,   267,    81,
+     176,    56,    57,    58,   138,   153,   135,   135,   187,    63,
+      63,   123,    63,    68,   288,    71,  -104,   313,   314,    19,
+     229,   320,    19,    63,   100,   101,   102,    43,    74,   103,
+     331,   222,   120,   122,   223,   189,   141,   112,   113,   282,
+      75,   142,    76,    33,    19,    76,    44,   258,   120,   120,
+       5,   174,   135,    62,    64,   131,    65,  -104,   -12,    75,
+     136,   136,    74,   180,   181,    44,   -90,    97,    44,    44,
+     330,    79,    84,   260,  -104,   152,   177,   154,   155,   156,
+    -104,   -12,   260,   230,   158,   -15,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,   -94,   150,
+     188,   297,   226,   190,   173,   299,   136,   251,   -15,   157,
+     132,   133,    25,    81,   340,    63,    81,   343,   144,   137,
+     175,    59,   318,   145,   182,   321,    60,   125,   186,   250,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   129,   130,   126,   270,   217,    56,   271,   127,
+      85,     4,   342,   103,   183,   344,   235,   236,   249,   179,
+     237,    19,   240,   151,   120,   120,   242,   219,   221,    81,
+      81,   110,   111,    81,   136,    81,     5,   159,   172,    81,
+     137,   227,   184,   136,   246,    79,   272,  -112,    79,  -113,
+     279,   280,   231,   239,   266,   262,   -95,    92,    93,     4,
+     293,   232,   112,   113,   277,   248,    76,   234,    81,   255,
+     273,   114,   281,   278,   284,   233,   252,   239,   295,   285,
+     256,   257,   292,    81,   241,   277,   305,   301,    48,    49,
+      85,   283,   122,   247,   307,    86,  -113,  -113,   328,   206,
+     333,    79,    79,   334,    72,    79,    73,    79,    82,   326,
+     253,    79,    71,   298,   332,    85,    67,   304,   218,   289,
+      86,    87,    88,   268,   303,   337,   335,   269,     0,     0,
+      50,    51,   309,     0,     0,     0,     0,    92,    93,     0,
+      79,   300,     0,   302,    63,     0,    87,    88,    89,     0,
+     287,     0,    63,     0,    52,    79,     0,   290,   291,    90,
+       0,   294,    92,    93,     0,     0,     0,     0,     0,     0,
+      85,     0,    85,     0,     0,    86,     0,    86,     0,   308,
+      76,   310,     0,   311,   316,   317,     0,   319,     0,     0,
+       0,     2,     3,     0,     4,     5,    97,     0,     6,     7,
+       0,    87,     0,    87,    88,    89,     0,   336,     8,     9,
+     338,     0,     0,   339,     0,   341,    90,    92,    93,    92,
+      93,     0,     0,   322,   323,     0,    10,    11,    12,    13,
+       0,   137,     0,     0,    14,    15,    16,    17,    18,     0,
+       0,     0,    19,    20,    98,    99,   100,   101,   102,    21,
+      22,   103,    23,     0,    24,     0,     0,    25,    26,     0,
+      27,     0,     0,   -18,   191,   -18,     4,     5,    20,     0,
+       6,     7,     0,     0,   324,   325,     0,    23,     0,     0,
+       0,     0,   192,     0,   193,   194,   195,   -73,   -73,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,     0,     0,
+       0,    13,   205,     0,     0,     0,    14,    15,    16,    17,
+       0,     0,     0,     0,   -73,    20,   104,   105,   106,   107,
+     108,    21,    22,   109,    23,     0,    24,     0,     0,    25,
+      26,     0,    61,     0,     0,    75,   -73,    76,   191,     0,
+       4,     5,     0,     0,     6,     7,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   192,     0,   193,   194,
+     195,   -72,   -72,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,     0,     0,     0,    13,   205,     0,     0,     0,
+      14,    15,    16,    17,     0,     0,     0,     0,   -72,    20,
        0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,    26,     0,    27,     0,     0,   -18,
-     195,   -18,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-       0,   197,   198,   199,   -74,   -74,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,     0,     0,     0,    13,   209,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,   -74,    20,     0,     0,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-       0,     0,    75,   -74,    76,   195,     0,     4,     5,     0,
-       0,     6,     7,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   196,     0,   197,   198,   199,   -73,
-     -73,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-       0,     0,     0,    13,   209,     0,     0,     0,    14,    15,
-      16,    17,     0,     0,     0,     0,   -73,    20,     0,     0,
-       0,     0,     0,    21,    22,     0,    23,     0,    24,     0,
-       0,    25,    26,     0,    61,     0,     0,    75,   -73,    76,
-     195,     0,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-       0,   197,   198,   199,     0,     0,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,     0,     0,     0,    13,   209,
-       0,     0,     0,    14,    15,    16,    17,    69,     0,     4,
-       5,     0,    20,     6,     7,     0,     0,  -105,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-       0,     0,    75,   210,    76,     0,     0,     0,     0,     0,
+      24,     0,     0,    25,    26,     0,    61,     0,     0,    75,
+     -72,    76,   191,     0,     4,     5,     0,     0,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     192,     0,   193,   194,   195,     0,     0,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,     0,     0,     0,    13,
+     205,     0,     0,     0,    14,    15,    16,    17,    69,     0,
+       4,     5,     0,    20,     6,     7,     0,  -103,     0,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,     0,
+      61,     0,     0,    75,   206,    76,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    13,     0,     0,     0,     0,
-      14,    15,    16,    17,     0,     0,     0,     0,  -105,    20,
+      14,    15,    16,    17,     0,     0,     0,     0,  -103,    20,
        0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,   267,  -105,    61,     0,     4,     5,
-       0,  -105,     6,     7,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   196,     0,   197,   198,   199,
-       0,     0,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,     0,     0,     0,    13,   209,     0,     0,     0,    14,
-      15,    16,    17,     0,     0,     4,     5,     0,    20,     6,
+      24,     0,     0,    25,   263,  -103,    61,     0,     4,     5,
+       0,  -103,     6,     7,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   192,     0,   193,   194,   195,     0,
+       0,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+       0,     4,     5,    13,   205,     6,     7,     0,    14,    15,
+      16,    17,     0,     0,     0,     0,     0,    20,     0,     0,
+       0,     0,    85,    21,    22,     0,    23,    86,    24,     0,
+       0,    25,    26,     0,    61,     0,    13,    75,     0,    76,
+       0,    14,    15,    16,    17,   116,     0,     4,     5,     0,
+      20,     6,     7,    87,    88,    89,    21,    22,     0,    23,
+       0,    24,     0,     0,    25,    26,    90,    61,    91,    92,
+      93,     0,    76,     0,     0,     0,     0,    69,     0,     4,
+       5,     0,    13,     6,     7,     0,     0,    14,    15,    16,
+      17,     0,     0,     0,     0,     0,    20,     0,     0,     0,
+       0,     0,    21,    22,     0,    23,     0,    24,     0,     0,
+      25,    26,  -111,    61,    13,     0,     0,     0,     0,    14,
+      15,    16,    17,   185,     0,     4,     5,     0,    20,     6,
        7,     0,     0,     0,    21,    22,     0,    23,     0,    24,
-       0,     0,    25,    26,     0,    61,     0,     0,    75,     0,
-      76,     0,     0,     0,     0,     0,   116,     0,     4,     5,
-       0,    13,     6,     7,   117,     0,    14,    15,    16,    17,
-       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
-       0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-      26,     0,    61,     0,    13,     0,     0,    76,     0,    14,
-      15,    16,    17,   224,     0,     4,     5,     0,    20,     6,
-       7,   117,     0,     0,    21,    22,     0,    23,     0,    24,
-       0,     0,    25,    26,  -113,    61,     0,     0,     0,     0,
-      69,     0,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,    13,     0,     0,     0,     0,    14,    15,    16,    17,
-       0,     0,     0,     0,    85,    20,     0,     0,     0,    86,
-       0,    21,    22,     0,    23,     0,    24,     0,    13,    25,
-      26,     0,    61,    14,    15,    16,    17,   189,     0,     4,
-       5,     0,    20,     6,     7,    87,    88,    89,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,    90,    61,
-      91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     4,   263,     0,    13,     6,     7,     0,     0,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,    20,
-       0,     0,   198,     0,     0,    21,    22,     0,    23,     0,
-      24,   205,   206,    25,    26,     0,    61,     0,    13,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       4,     5,    20,     0,     6,     7,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-     198,     0,     0,     0,     0,     0,     0,     0,     0,   205,
-     206,     0,     0,     0,     0,     0,    13,     0,     0,     0,
-       0,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,    21,    22,    85,    23,
-       0,    24,     0,    86,    25,    26,     0,    61,     4,     5,
-       0,     0,     6,     7,     0,     0,     0,    96,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    87,
-      88,    89,     0,     0,     0,     4,     5,     0,     0,     6,
-       7,   117,    90,   220,    13,    92,    93,     0,     0,    14,
-      15,    16,    17,     0,     0,     0,     0,    85,    20,     0,
-       0,     0,    86,     0,    21,    22,     0,    23,     0,    24,
-       0,    13,    25,    26,     0,    61,    14,    15,    16,    17,
-       0,     0,     4,     5,     0,    20,     6,     7,    87,    88,
-      89,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-      26,    90,    61,     0,    92,    93,     0,     0,     0,     4,
-       5,     0,     0,     6,     7,     0,     0,     0,    13,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,     0,    20,     0,     0,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,    20,
+       0,     0,    25,    26,     0,    61,     0,     0,     0,     0,
+     220,     0,     4,     5,     0,     0,     6,     7,     0,     0,
+      13,     0,     0,     0,     0,    14,    15,    16,    17,     0,
+       0,     0,     0,     0,    20,     0,     0,     0,     0,     0,
+      21,    22,     0,    23,     0,    24,     0,    13,    25,    26,
+       0,    61,    14,    15,    16,    17,     0,     0,     4,   259,
+       0,    20,     6,     7,     0,     0,     0,    21,    22,     0,
+      23,     0,    24,     0,     0,    25,    26,   194,    61,     0,
+       0,     0,     0,     0,     0,     0,   201,   202,     0,     0,
+       0,     4,     5,    13,     0,     6,     7,     0,    14,    15,
+      16,    17,     0,     0,     0,     0,     0,    20,     0,     0,
+     194,     0,     0,    21,    22,     0,    23,     0,    24,   201,
+     202,    25,    26,     0,    61,     0,    13,     0,     0,     0,
+       0,    14,    15,    16,    17,     0,     0,     4,     5,     0,
+      20,     6,     7,     0,     0,    96,    21,    22,     0,    23,
+       0,    24,     0,     0,    25,    26,     0,    61,     0,     0,
+       0,     0,     0,     0,     4,     5,     0,     0,     6,     7,
+       0,     0,    13,     0,     0,     0,     0,    14,    15,    16,
+      17,     0,     0,     0,     0,    85,    20,     0,     0,     0,
+      86,     0,    21,    22,     0,    23,     0,    24,     0,    13,
+      25,    26,     0,    61,    14,    15,    16,    17,     0,     0,
+       4,     5,     0,    20,     6,     7,    87,    88,    89,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,    90,
+      61,     0,    92,    93,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    85,
+      14,    15,    16,    17,    86,     0,     0,     0,     0,    20,
        0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,    66,     0,    61
+      24,     0,     0,    25,    66,     0,    61,     0,     0,     0,
+      87,    88,    89,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    90,   216,     0,    92,    93
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,    44,    29,    30,   217,    70,    86,   238,     1,    87,
-      46,    13,    14,    15,    29,     1,     1,     1,   248,    21,
-      22,     1,    24,    25,     1,    26,   120,    17,    17,     6,
-       3,   111,    10,    35,    52,    27,    29,    15,    21,    22,
-     314,    24,    43,    44,     1,     4,     1,     4,     4,   323,
-       1,     6,    35,     4,   119,    73,    68,    75,    59,    60,
-      59,    60,    71,    41,    42,    66,   131,   132,    52,    61,
-      56,    56,    52,    68,     1,    73,    49,     1,    51,    57,
-      58,    71,    71,   314,    69,    86,    72,    88,    89,    90,
-     320,    75,   323,   237,    95,    75,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,    68,    68,
-     188,    67,    69,     1,   115,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   129,   341,    56,
-     145,   344,    56,   148,    10,   229,   137,    25,    26,    15,
-     141,    52,    69,    81,    52,    69,   129,   291,    44,    45,
-      68,   295,   145,    91,    41,   148,   179,   180,    10,   160,
-     162,    44,    45,   228,    52,    41,    50,    75,   312,     3,
-       1,   315,    57,    66,     3,     4,     4,    52,   179,   180,
-      11,    57,    58,     5,    71,    39,    74,    14,   203,   204,
-       9,   256,   207,    41,   209,   260,   261,    69,   213,   343,
-     138,    68,   346,   218,   247,    57,    58,   208,   286,    10,
-     203,   204,    68,    68,   207,    68,   209,    46,    47,   220,
-     213,    52,   258,   288,   267,    56,    75,   242,     4,    69,
-     231,   232,   297,    27,   235,   236,    11,   317,    69,   304,
-      21,    70,   257,   279,    75,   145,   247,    68,   148,   242,
-     265,    59,    60,    61,    62,    63,    57,    58,    66,   324,
-      55,    13,    14,   201,   257,    74,   267,   294,     7,     8,
-       9,   336,   210,    59,    60,    61,    62,    63,     7,     7,
-      66,   219,    30,   298,   317,    10,   232,   300,    25,   162,
-      15,   306,    44,    45,   332,   296,    -1,   298,   300,    -1,
-     279,    53,    -1,   203,   204,    -1,   308,   207,    -1,   209,
-      -1,   249,    -1,   213,    53,   253,    41,    42,    43,    -1,
-      59,    60,    -1,    62,    -1,   308,    61,    62,    63,    54,
-      -1,    66,    57,    58,    -1,    -1,    -1,    -1,   276,    -1,
-      -1,    -1,   242,    -1,    -1,   283,   284,    -1,    -1,   287,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,   257,    -1,    10,
-      -1,    -1,    -1,    -1,    15,    -1,    -1,   305,    -1,   307,
-      -1,   309,   310,   311,    -1,   313,     0,     1,    -1,     3,
-       4,    -1,    -1,     7,     8,    -1,    -1,    -1,    -1,    -1,
-      41,    42,    43,    -1,    18,    19,   334,    -1,    -1,   337,
-      -1,    -1,   340,    54,   342,    -1,    57,    58,    -1,    -1,
-      -1,    -1,    36,    37,    38,    39,    -1,    -1,    69,    -1,
-      44,    45,    46,    47,    48,    -1,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,
-       1,    75,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,     1,    -1,     3,     4,    -1,
-      -1,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    20,    -1,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,    45,
-      46,    47,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,
-      -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,
-      -1,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-       1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    22,    23,    24,    -1,    -1,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,     1,    -1,     3,
-       4,    -1,    53,     7,     8,    -1,    -1,    11,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    69,    70,    -1,     3,     4,
-      -1,    75,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    20,    -1,    22,    23,    24,
-      -1,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,
-      45,    46,    47,    -1,    -1,     3,     4,    -1,    53,     7,
-       8,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,
-      -1,    39,     7,     8,     9,    -1,    44,    45,    46,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
-      -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
-      68,    -1,    70,    -1,    39,    -1,    -1,    75,    -1,    44,
-      45,    46,    47,     1,    -1,     3,     4,    -1,    53,     7,
-       8,     9,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    -1,    67,    68,    69,    70,    -1,    -1,    -1,    -1,
+       1,   213,    29,    30,     1,    44,    46,   234,   244,    29,
+     118,    13,    14,    15,    70,    87,     1,     1,     1,    21,
+      22,    16,    24,    25,    16,    26,    10,    24,    25,    51,
+       4,   310,    51,    35,    60,    61,    62,    67,    27,    65,
+     319,     1,    43,    44,     4,     1,     1,    43,    44,    40,
+      72,     6,    74,     1,    51,    74,    70,   233,    59,    60,
+       4,   117,     1,    21,    22,    66,    24,    51,    51,    72,
+      55,    55,    61,   129,   130,    70,    73,    35,    70,    70,
+     316,    29,    51,   310,    68,    86,    71,    88,    89,    90,
+      74,    74,   319,    67,    95,    51,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,    68,    81,
+     143,   287,   184,   146,   115,   291,    55,   225,    74,    91,
+      43,    44,    66,   143,   336,   127,   146,   339,     1,    68,
+       1,    67,   308,     6,   135,   311,    67,    49,   139,     1,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,    59,    60,    67,     1,   157,   159,     4,    56,
+       9,     3,   338,    65,   136,   341,   199,   200,   224,   127,
+     203,    51,   205,     5,   175,   176,   209,   175,   176,   199,
+     200,    12,    13,   203,    55,   205,     4,    38,    13,   209,
+      68,    67,    40,    55,   214,   143,   252,    68,   146,     9,
+     256,   257,    67,   204,   243,   238,    68,    56,    57,     3,
+     282,    67,    43,    44,   254,   216,    74,    67,   238,     4,
+     253,    52,    26,    68,   263,   197,   227,   228,   284,    10,
+     231,   232,    67,   253,   206,   275,    20,   293,     3,     4,
+       9,   261,   243,   215,   300,    14,    56,    57,    54,    73,
+       7,   199,   200,     7,    48,   203,    50,   205,    30,   313,
+     228,   209,   263,   290,   320,     9,    25,   296,   159,   275,
+      14,    40,    41,   245,   294,   331,   327,   249,    -1,    -1,
+      45,    46,   302,    -1,    -1,    -1,    -1,    56,    57,    -1,
+     238,   292,    -1,   294,   296,    -1,    40,    41,    42,    -1,
+     272,    -1,   304,    -1,    69,   253,    -1,   279,   280,    53,
+      -1,   283,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
+       9,    -1,     9,    -1,    -1,    14,    -1,    14,    -1,   301,
+      74,   303,    -1,   305,   306,   307,    -1,   309,    -1,    -1,
+      -1,     0,     1,    -1,     3,     4,   304,    -1,     7,     8,
+      -1,    40,    -1,    40,    41,    42,    -1,   329,    17,    18,
+     332,    -1,    -1,   335,    -1,   337,    53,    56,    57,    56,
+      57,    -1,    -1,     7,     8,    -1,    35,    36,    37,    38,
+      -1,    68,    -1,    -1,    43,    44,    45,    46,    47,    -1,
+      -1,    -1,    51,    52,    58,    59,    60,    61,    62,    58,
+      59,    65,    61,    -1,    63,    -1,    -1,    66,    67,    -1,
+      69,    -1,    -1,    72,     1,    74,     3,     4,    52,    -1,
+       7,     8,    -1,    -1,    58,    59,    -1,    61,    -1,    -1,
+      -1,    -1,    19,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    -1,    -1,
+      -1,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
+      -1,    -1,    -1,    -1,    51,    52,    58,    59,    60,    61,
+      62,    58,    59,    65,    61,    -1,    63,    -1,    -1,    66,
+      67,    -1,    69,    -1,    -1,    72,    73,    74,     1,    -1,
+       3,     4,    -1,    -1,     7,     8,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    38,    39,    -1,    -1,    -1,
+      43,    44,    45,    46,    -1,    -1,    -1,    -1,    51,    52,
+      -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    61,    -1,
+      63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,     1,    -1,     3,     4,    -1,    -1,     7,     8,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      19,    -1,    21,    22,    23,    -1,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    38,
+      39,    -1,    -1,    -1,    43,    44,    45,    46,     1,    -1,
+       3,     4,    -1,    52,     7,     8,    -1,    10,    -1,    58,
+      59,    -1,    61,    -1,    63,    -1,    -1,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
+      43,    44,    45,    46,    -1,    -1,    -1,    -1,    51,    52,
+      -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    61,    -1,
+      63,    -1,    -1,    66,    67,    68,    69,    -1,     3,     4,
+      -1,    74,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    19,    -1,    21,    22,    23,    -1,
+      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      -1,     3,     4,    38,    39,     7,     8,    -1,    43,    44,
+      45,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
+      -1,    -1,     9,    58,    59,    -1,    61,    14,    63,    -1,
+      -1,    66,    67,    -1,    69,    -1,    38,    72,    -1,    74,
+      -1,    43,    44,    45,    46,     1,    -1,     3,     4,    -1,
+      52,     7,     8,    40,    41,    42,    58,    59,    -1,    61,
+      -1,    63,    -1,    -1,    66,    67,    53,    69,    55,    56,
+      57,    -1,    74,    -1,    -1,    -1,    -1,     1,    -1,     3,
+       4,    -1,    38,     7,     8,    -1,    -1,    43,    44,    45,
+      46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
+      -1,    -1,    58,    59,    -1,    61,    -1,    63,    -1,    -1,
+      66,    67,    68,    69,    38,    -1,    -1,    -1,    -1,    43,
+      44,    45,    46,     1,    -1,     3,     4,    -1,    52,     7,
+       8,    -1,    -1,    -1,    58,    59,    -1,    61,    -1,    63,
+      -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,    -1,
        1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
-      -1,    -1,    -1,    -1,    10,    53,    -1,    -1,    -1,    15,
-      -1,    59,    60,    -1,    62,    -1,    64,    -1,    39,    67,
-      68,    -1,    70,    44,    45,    46,    47,     1,    -1,     3,
-       4,    -1,    53,     7,     8,    41,    42,    43,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    54,    70,
-      56,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,     4,    -1,    39,     7,     8,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,
-      -1,    -1,    23,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    32,    33,    67,    68,    -1,    70,    -1,    39,    -1,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-       3,     4,    53,    -1,     7,     8,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,
-      33,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
-      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    -1,    -1,    -1,    -1,    -1,    59,    60,    10,    62,
-      -1,    64,    -1,    15,    67,    68,    -1,    70,     3,     4,
-      -1,    -1,     7,     8,    -1,    -1,    -1,    12,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
-      42,    43,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
-       8,     9,    54,    55,    39,    57,    58,    -1,    -1,    44,
-      45,    46,    47,    -1,    -1,    -1,    -1,    10,    53,    -1,
-      -1,    -1,    15,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    39,    67,    68,    -1,    70,    44,    45,    46,    47,
-      -1,    -1,     3,     4,    -1,    53,     7,     8,    41,    42,
-      43,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
-      68,    54,    70,    -1,    57,    58,    -1,    -1,    -1,     3,
-       4,    -1,    -1,     7,     8,    -1,    -1,    -1,    39,    -1,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    -1,    70
+      38,    -1,    -1,    -1,    -1,    43,    44,    45,    46,    -1,
+      -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,    -1,
+      58,    59,    -1,    61,    -1,    63,    -1,    38,    66,    67,
+      -1,    69,    43,    44,    45,    46,    -1,    -1,     3,     4,
+      -1,    52,     7,     8,    -1,    -1,    -1,    58,    59,    -1,
+      61,    -1,    63,    -1,    -1,    66,    67,    22,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    31,    32,    -1,    -1,
+      -1,     3,     4,    38,    -1,     7,     8,    -1,    43,    44,
+      45,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
+      22,    -1,    -1,    58,    59,    -1,    61,    -1,    63,    31,
+      32,    66,    67,    -1,    69,    -1,    38,    -1,    -1,    -1,
+      -1,    43,    44,    45,    46,    -1,    -1,     3,     4,    -1,
+      52,     7,     8,    -1,    -1,    11,    58,    59,    -1,    61,
+      -1,    63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,     8,
+      -1,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,    45,
+      46,    -1,    -1,    -1,    -1,     9,    52,    -1,    -1,    -1,
+      14,    -1,    58,    59,    -1,    61,    -1,    63,    -1,    38,
+      66,    67,    -1,    69,    43,    44,    45,    46,    -1,    -1,
+       3,     4,    -1,    52,     7,     8,    40,    41,    42,    58,
+      59,    -1,    61,    -1,    63,    -1,    -1,    66,    67,    53,
+      69,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,
+      43,    44,    45,    46,    14,    -1,    -1,    -1,    -1,    52,
+      -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    61,    -1,
+      63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,
+      40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    53,    54,    -1,    56,    57
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    77,     0,     1,     3,     4,     7,     8,    18,    19,
-      36,    37,    38,    39,    44,    45,    46,    47,    48,    52,
-      53,    59,    60,    62,    64,    67,    68,    70,    78,    81,
-      85,    87,    90,   108,   119,   123,   124,   125,   126,   127,
-     128,   136,   137,    68,    71,   133,   134,   135,     3,     4,
-      46,    47,    70,    83,    84,   129,   137,   137,   137,    68,
-      68,    70,   124,   137,   124,   124,    68,   126,   137,     1,
-     115,   119,    49,    51,   128,    73,    75,    82,    92,   108,
-     139,   143,    82,    88,    52,    10,    15,    41,    42,    43,
-      54,    56,    57,    58,   121,   122,    12,   124,    59,    60,
-      61,    62,    63,    66,    59,    60,    61,    62,    63,    66,
-      13,    14,    44,    45,    53,   120,     1,     9,    89,   116,
-     117,   118,   119,   115,   119,    17,   133,    50,    68,    57,
-     110,   116,   116,   119,    44,    45,   138,     1,    56,    69,
-     141,   145,   141,     1,     6,    79,     1,     6,    80,   108,
-     109,    91,   109,     5,    89,   119,   136,   119,   119,   119,
-     109,   119,    39,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,    89,    14,   119,   141,     1,
-     145,    72,    86,   124,   141,   141,   119,   109,    41,     1,
-     119,     1,    92,     1,    92,     1,    20,    22,    23,    24,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    40,
-      74,    93,    94,    96,   103,   107,   119,   139,   140,   143,
-      55,   119,   129,   118,     1,   118,     1,     4,   111,   112,
-     136,    68,    95,     4,    68,    68,    68,   109,    68,    92,
-      92,    92,   113,   119,    92,   109,    92,    97,    91,   142,
-     143,   109,   119,   141,     1,   145,   119,   113,    98,     4,
-     119,   119,    93,     4,    96,    99,    92,    68,   104,   114,
-     115,   140,   109,   109,     1,     4,   141,    92,   130,   131,
-     132,   133,    69,   141,   141,    27,    41,   143,   115,    11,
-     105,   109,    17,   132,   109,   109,    68,   136,   109,   141,
-     106,    93,   139,    93,   119,   141,   119,   143,   123,    21,
-     100,   141,   109,   143,   109,   109,     1,    25,    26,   101,
-     109,   109,    93,   109,    99,    93,     7,     8,    59,    60,
-      87,    89,   102,    55,   144,   140,    99,   141,     7,     7,
-     144,   109,   141,   109,   109,    91,   109,    93,    91,    93
+       0,    76,     0,     1,     3,     4,     7,     8,    17,    18,
+      35,    36,    37,    38,    43,    44,    45,    46,    47,    51,
+      52,    58,    59,    61,    63,    66,    67,    69,    77,    80,
+      84,    86,    88,   106,   117,   121,   122,   123,   124,   125,
+     126,   134,   135,    67,    70,   131,   132,   133,     3,     4,
+      45,    46,    69,    82,    83,   127,   135,   135,   135,    67,
+      67,    69,   122,   135,   122,   122,    67,   124,   135,     1,
+     113,   117,    48,    50,   126,    72,    74,    81,    90,   106,
+     137,   141,    81,    87,    51,     9,    14,    40,    41,    42,
+      53,    55,    56,    57,   119,   120,    11,   122,    58,    59,
+      60,    61,    62,    65,    58,    59,    60,    61,    62,    65,
+      12,    13,    43,    44,    52,   118,     1,   114,   115,   116,
+     117,   113,   117,    16,   131,    49,    67,    56,   108,   114,
+     114,   117,    43,    44,   136,     1,    55,    68,   139,   143,
+     139,     1,     6,    78,     1,     6,    79,   106,   107,    89,
+     107,     5,   117,   134,   117,   117,   117,   107,   117,    38,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,    13,   117,   139,     1,   143,    71,    85,   122,
+     139,   139,   117,   107,    40,     1,   117,     1,    90,     1,
+      90,     1,    19,    21,    22,    23,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    39,    73,    91,    92,    94,
+     101,   105,   117,   137,   138,   141,    54,   117,   127,   116,
+       1,   116,     1,     4,   109,   110,   134,    67,    93,     4,
+      67,    67,    67,   107,    67,    90,    90,    90,   111,   117,
+      90,   107,    90,    95,    89,   140,   141,   107,   117,   139,
+       1,   143,   117,   111,    96,     4,   117,   117,    91,     4,
+      94,    97,    90,    67,   102,   112,   113,   138,   107,   107,
+       1,     4,   139,    90,   128,   129,   130,   131,    68,   139,
+     139,    26,    40,   141,   113,    10,   103,   107,    16,   130,
+     107,   107,    67,   134,   107,   139,   104,    91,   137,    91,
+     117,   139,   117,   141,   121,    20,    98,   139,   107,   141,
+     107,   107,     1,    24,    25,    99,   107,   107,    91,   107,
+      97,    91,     7,     8,    58,    59,    86,   100,    54,   142,
+     138,    97,   139,     7,     7,   142,   107,   139,   107,   107,
+      89,   107,    91,    89,    91
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    76,    77,    77,    77,    77,    77,    78,    78,    78,
-      78,    78,    79,    79,    79,    80,    80,    80,    81,    81,
-      81,    81,    81,    81,    81,    82,    83,    83,    83,    83,
-      84,    84,    86,    85,    88,    87,    89,    90,    90,    91,
-      91,    91,    92,    92,    93,    93,    93,    93,    93,    93,
-      93,    93,    93,    93,    94,    94,    94,    94,    94,    95,
-      94,    94,    97,    96,    98,    96,    96,    96,    99,    99,
-     100,   100,   100,   101,   101,   102,   102,   102,   102,   102,
-     102,   103,   103,   104,   104,   105,   106,   105,   107,   107,
-     108,   108,   109,   109,   110,   110,   111,   111,   112,   112,
-     112,   112,   112,   113,   113,   114,   114,   115,   115,   115,
-     115,   115,   115,   116,   116,   117,   117,   117,   117,   117,
-     117,   118,   118,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   120,   120,   120,   121,   121,   122,   122,
-     123,   123,   123,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   125,   125,   125,   125,   125,   125,
-     125,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   127,   127,   128,   129,   129,
-     130,   130,   131,   131,   132,   133,   134,   134,   135,   136,
-     136,   137,   137,   138,   138,   138,   139,   140,   141,   142,
-     142,   143,   144,   145
+       0,    75,    76,    76,    76,    76,    76,    77,    77,    77,
+      77,    77,    78,    78,    78,    79,    79,    79,    80,    80,
+      80,    80,    80,    80,    80,    81,    82,    82,    82,    82,
+      83,    83,    85,    84,    87,    86,    88,    88,    89,    89,
+      89,    90,    90,    91,    91,    91,    91,    91,    91,    91,
+      91,    91,    91,    92,    92,    92,    92,    92,    93,    92,
+      92,    95,    94,    96,    94,    94,    94,    97,    97,    98,
+      98,    98,    99,    99,   100,   100,   100,   100,   100,   101,
+     101,   102,   102,   103,   104,   103,   105,   105,   106,   106,
+     107,   107,   108,   108,   109,   109,   110,   110,   110,   110,
+     110,   111,   111,   112,   112,   113,   113,   113,   113,   113,
+     113,   114,   114,   115,   115,   115,   115,   115,   115,   116,
+     117,   117,   117,   117,   117,   117,   117,   117,   118,   118,
+     118,   119,   119,   120,   120,   121,   121,   121,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   123,
+     123,   123,   123,   123,   123,   123,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     125,   125,   126,   127,   127,   128,   128,   129,   129,   130,
+     131,   132,   132,   133,   134,   134,   135,   135,   136,   136,
+     136,   137,   138,   139,   140,   140,   141,   142,   143
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1192,24 +1169,23 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
        4,     4,     1,     2,     1,     1,     2,     1,     0,     1,
        4,     1,     1,     1,     1,     5,     1,     1,     1,     2,
-       1,     1,     0,     7,     0,     3,     1,     1,     1,     0,
-       2,     2,     1,     2,     2,     3,     1,     9,     6,     8,
-       8,    12,    11,     1,     2,     2,     2,     2,     3,     0,
-       4,     2,     0,     4,     0,     4,     4,     1,     0,     1,
-       0,     2,     2,     5,     4,     1,     2,     2,     1,     1,
-       1,     1,     1,     1,     3,     0,     0,     3,     6,     9,
-       1,     2,     0,     1,     0,     2,     0,     1,     1,     3,
-       1,     2,     3,     0,     1,     0,     1,     1,     3,     1,
-       2,     3,     3,     0,     1,     1,     3,     1,     2,     3,
-       3,     1,     1,     3,     3,     3,     3,     3,     3,     3,
-       3,     5,     1,     1,     1,     2,     1,     1,     1,     1,
-       1,     1,     2,     1,     3,     3,     3,     3,     3,     3,
-       3,     2,     2,     5,     4,     3,     3,     3,     3,     3,
-       3,     1,     2,     3,     4,     4,     1,     1,     1,     2,
-       2,     1,     1,     2,     2,     1,     2,     4,     0,     1,
-       0,     2,     1,     2,     1,     3,     1,     2,     2,     1,
-       2,     1,     3,     1,     1,     0,     2,     2,     1,     0,
-       1,     1,     1,     2
+       1,     1,     0,     7,     0,     3,     1,     1,     0,     2,
+       2,     1,     2,     2,     3,     1,     9,     6,     8,     8,
+      12,    11,     1,     2,     2,     2,     2,     3,     0,     4,
+       2,     0,     4,     0,     4,     4,     1,     0,     1,     0,
+       2,     2,     5,     4,     1,     2,     2,     1,     1,     1,
+       1,     1,     3,     0,     0,     3,     6,     9,     1,     2,
+       0,     1,     0,     2,     0,     1,     1,     3,     1,     2,
+       3,     0,     1,     0,     1,     1,     3,     1,     2,     3,
+       3,     0,     1,     1,     3,     1,     2,     3,     3,     1,
+       3,     3,     3,     3,     3,     3,     5,     1,     1,     1,
+       2,     1,     1,     1,     1,     1,     1,     2,     1,     3,
+       3,     3,     3,     3,     3,     3,     2,     2,     5,     4,
+       3,     3,     3,     3,     3,     3,     1,     2,     3,     4,
+       4,     1,     1,     1,     2,     2,     1,     1,     2,     2,
+       1,     2,     4,     0,     1,     0,     2,     1,     2,     1,
+       3,     1,     2,     2,     1,     2,     1,     3,     1,     1,
+       0,     2,     2,     1,     0,     1,     1,     1,     2
 };
 
 
@@ -1891,7 +1867,7 @@ yyreduce:
                rule = 0;
                yyerrok;
          }
-#line 1895 "awkgram.c" /* yacc.c:1646  */
+#line 1871 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -1899,7 +1875,7 @@ yyreduce:
     {
                next_sourcefile();
          }
-#line 1903 "awkgram.c" /* yacc.c:1646  */
+#line 1879 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -1912,7 +1888,7 @@ yyreduce:
                 */
                /* yyerrok; */
          }
-#line 1916 "awkgram.c" /* yacc.c:1646  */
+#line 1892 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -1921,7 +1897,7 @@ yyreduce:
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
                first_rule = false;
          }
-#line 1925 "awkgram.c" /* yacc.c:1646  */
+#line 1901 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -1936,7 +1912,7 @@ yyreduce:
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
-#line 1940 "awkgram.c" /* yacc.c:1646  */
+#line 1916 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -1947,7 +1923,7 @@ yyreduce:
                want_param_names = DONT_CHECK;
                yyerrok;
          }
-#line 1951 "awkgram.c" /* yacc.c:1646  */
+#line 1927 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -1957,7 +1933,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1961 "awkgram.c" /* yacc.c:1646  */
+#line 1937 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -1967,7 +1943,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1971 "awkgram.c" /* yacc.c:1646  */
+#line 1947 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -1979,19 +1955,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1983 "awkgram.c" /* yacc.c:1646  */
+#line 1959 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 13:
 #line 284 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1989 "awkgram.c" /* yacc.c:1646  */
+#line 1965 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 14:
 #line 286 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1995 "awkgram.c" /* yacc.c:1646  */
+#line 1971 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -2003,19 +1979,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 2007 "awkgram.c" /* yacc.c:1646  */
+#line 1983 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 16:
 #line 299 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2013 "awkgram.c" /* yacc.c:1646  */
+#line 1989 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 17:
 #line 301 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2019 "awkgram.c" /* yacc.c:1646  */
+#line 1995 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -2028,7 +2004,7 @@ yyreduce:
                } else
                        (yyval) = NULL;
          }
-#line 2032 "awkgram.c" /* yacc.c:1646  */
+#line 2008 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -2041,7 +2017,7 @@ yyreduce:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 2045 "awkgram.c" /* yacc.c:1646  */
+#line 2021 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2075,7 +2051,7 @@ yyreduce:
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
-#line 2079 "awkgram.c" /* yacc.c:1646  */
+#line 2055 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -2093,7 +2069,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2097 "awkgram.c" /* yacc.c:1646  */
+#line 2073 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -2111,7 +2087,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2115 "awkgram.c" /* yacc.c:1646  */
+#line 2091 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -2123,7 +2099,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2127 "awkgram.c" /* yacc.c:1646  */
+#line 2103 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -2135,7 +2111,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2139 "awkgram.c" /* yacc.c:1646  */
+#line 2115 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -2148,19 +2124,19 @@ yyreduce:
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
-#line 2152 "awkgram.c" /* yacc.c:1646  */
+#line 2128 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 26:
 #line 414 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2158 "awkgram.c" /* yacc.c:1646  */
+#line 2134 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 27:
 #line 416 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2164 "awkgram.c" /* yacc.c:1646  */
+#line 2140 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -2170,7 +2146,7 @@ yyreduce:
                                        tokstart);
                YYABORT;
          }
-#line 2174 "awkgram.c" /* yacc.c:1646  */
+#line 2150 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -2179,13 +2155,13 @@ yyreduce:
                (yyval) = (yyvsp[0]);
                at_seen = false;
          }
-#line 2183 "awkgram.c" /* yacc.c:1646  */
+#line 2159 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 32:
 #line 436 "awkgram.y" /* yacc.c:1646  */
     { want_param_names = FUNC_HEADER; }
-#line 2189 "awkgram.c" /* yacc.c:1646  */
+#line 2165 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -2227,13 +2203,13 @@ yyreduce:
                (yyval) = (yyvsp[-6]);
                want_param_names = FUNC_BODY;
          }
-#line 2231 "awkgram.c" /* yacc.c:1646  */
+#line 2207 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 34:
 #line 482 "awkgram.y" /* yacc.c:1646  */
     { want_regexp = true; }
-#line 2237 "awkgram.c" /* yacc.c:1646  */
+#line 2213 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 35:
@@ -2266,41 +2242,17 @@ yyreduce:
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
-#line 2270 "awkgram.c" /* yacc.c:1646  */
+#line 2246 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 36:
 #line 516 "awkgram.y" /* yacc.c:1646  */
-    {
-                 NODE *n, *exp;
-                 char *re;
-                 size_t len;
-
-                 re = (yyvsp[0])->lextok;
-                 (yyvsp[0])->lextok = NULL;
-                 len = strlen(re);
-
-                 exp = make_str_node(re, len, ALREADY_MALLOCED);
-                 n = make_regnode(Node_typedregex, exp);
-                 if (n == NULL) {
-                       unref(exp);
-                       YYABORT;
-                 }
-                 (yyval) = (yyvsp[0]);
-                 (yyval)->opcode = Op_push_re;
-                 (yyval)->memory = n;
-               }
-#line 2294 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 37:
-#line 538 "awkgram.y" /* yacc.c:1646  */
     { bcfree((yyvsp[0])); }
-#line 2300 "awkgram.c" /* yacc.c:1646  */
+#line 2252 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 39:
-#line 544 "awkgram.y" /* yacc.c:1646  */
+  case 38:
+#line 522 "awkgram.y" /* yacc.c:1646  */
     {
                if (prior_comment != NULL) {
                        (yyval) = list_create(prior_comment);
@@ -2311,11 +2263,11 @@ yyreduce:
                } else
                        (yyval) = NULL;
          }
-#line 2315 "awkgram.c" /* yacc.c:1646  */
+#line 2267 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 40:
-#line 555 "awkgram.y" /* yacc.c:1646  */
+  case 39:
+#line 533 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0]) == NULL) {
                        if (prior_comment != NULL) {
@@ -2362,40 +2314,40 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2366 "awkgram.c" /* yacc.c:1646  */
+#line 2318 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 41:
-#line 602 "awkgram.y" /* yacc.c:1646  */
+  case 40:
+#line 580 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; }
-#line 2372 "awkgram.c" /* yacc.c:1646  */
+#line 2324 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 44:
-#line 612 "awkgram.y" /* yacc.c:1646  */
+  case 43:
+#line 590 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2378 "awkgram.c" /* yacc.c:1646  */
+#line 2330 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 45:
-#line 614 "awkgram.y" /* yacc.c:1646  */
+  case 44:
+#line 592 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2384 "awkgram.c" /* yacc.c:1646  */
+#line 2336 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 46:
-#line 616 "awkgram.y" /* yacc.c:1646  */
+  case 45:
+#line 594 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2395 "awkgram.c" /* yacc.c:1646  */
+#line 2347 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 47:
-#line 623 "awkgram.y" /* yacc.c:1646  */
+  case 46:
+#line 601 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -2485,11 +2437,11 @@ yyreduce:
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
-#line 2489 "awkgram.c" /* yacc.c:1646  */
+#line 2441 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 48:
-#line 713 "awkgram.y" /* yacc.c:1646  */
+  case 47:
+#line 691 "awkgram.y" /* yacc.c:1646  */
     { 
                /*
                 *    -----------------
@@ -2531,11 +2483,11 @@ yyreduce:
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
-#line 2535 "awkgram.c" /* yacc.c:1646  */
+#line 2487 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 49:
-#line 755 "awkgram.y" /* yacc.c:1646  */
+  case 48:
+#line 733 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 *    -----------------
@@ -2577,11 +2529,11 @@ yyreduce:
                } /* else
                        $1 and $4 are NULLs */
          }
-#line 2581 "awkgram.c" /* yacc.c:1646  */
+#line 2533 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 50:
-#line 797 "awkgram.y" /* yacc.c:1646  */
+  case 49:
+#line 775 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@ -2694,33 +2646,33 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2698 "awkgram.c" /* yacc.c:1646  */
+#line 2650 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 51:
-#line 910 "awkgram.y" /* yacc.c:1646  */
+  case 50:
+#line 888 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2709 "awkgram.c" /* yacc.c:1646  */
+#line 2661 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 52:
-#line 917 "awkgram.y" /* yacc.c:1646  */
+  case 51:
+#line 895 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2720 "awkgram.c" /* yacc.c:1646  */
+#line 2672 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 53:
-#line 924 "awkgram.y" /* yacc.c:1646  */
+  case 52:
+#line 902 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
@@ -2728,11 +2680,11 @@ regular_loop:
                        (yyval) = (yyvsp[0]);
                (yyval) = add_pending_comment((yyval));
          }
-#line 2732 "awkgram.c" /* yacc.c:1646  */
+#line 2684 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 54:
-#line 935 "awkgram.y" /* yacc.c:1646  */
+  case 53:
+#line 913 "awkgram.y" /* yacc.c:1646  */
     { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2742,11 +2694,11 @@ regular_loop:
                (yyval) = add_pending_comment((yyval));
 
          }
-#line 2746 "awkgram.c" /* yacc.c:1646  */
+#line 2698 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 55:
-#line 945 "awkgram.y" /* yacc.c:1646  */
+  case 54:
+#line 923 "awkgram.y" /* yacc.c:1646  */
     {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2756,11 +2708,11 @@ regular_loop:
                (yyval) = add_pending_comment((yyval));
 
          }
-#line 2760 "awkgram.c" /* yacc.c:1646  */
+#line 2712 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 56:
-#line 955 "awkgram.y" /* yacc.c:1646  */
+  case 55:
+#line 933 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@ -2770,11 +2722,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2774 "awkgram.c" /* yacc.c:1646  */
+#line 2726 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 57:
-#line 965 "awkgram.y" /* yacc.c:1646  */
+  case 56:
+#line 943 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2786,11 +2738,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2790 "awkgram.c" /* yacc.c:1646  */
+#line 2742 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 58:
-#line 977 "awkgram.y" /* yacc.c:1646  */
+  case 57:
+#line 955 "awkgram.y" /* yacc.c:1646  */
     {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@ -2806,20 +2758,20 @@ regular_loop:
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2810 "awkgram.c" /* yacc.c:1646  */
+#line 2762 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-#line 993 "awkgram.y" /* yacc.c:1646  */
+  case 58:
+#line 971 "awkgram.y" /* yacc.c:1646  */
     {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
-#line 2819 "awkgram.c" /* yacc.c:1646  */
+#line 2771 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 996 "awkgram.y" /* yacc.c:1646  */
+  case 59:
+#line 974 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@ -2841,17 +2793,17 @@ regular_loop:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2845 "awkgram.c" /* yacc.c:1646  */
+#line 2797 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 1029 "awkgram.y" /* yacc.c:1646  */
+  case 61:
+#line 1007 "awkgram.y" /* yacc.c:1646  */
     { in_print = true; in_parens = 0; }
-#line 2851 "awkgram.c" /* yacc.c:1646  */
+#line 2803 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 1030 "awkgram.y" /* yacc.c:1646  */
+  case 62:
+#line 1008 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -2949,17 +2901,17 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2953 "awkgram.c" /* yacc.c:1646  */
+#line 2905 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 1128 "awkgram.y" /* yacc.c:1646  */
+  case 63:
+#line 1106 "awkgram.y" /* yacc.c:1646  */
     { sub_counter = 0; }
-#line 2959 "awkgram.c" /* yacc.c:1646  */
+#line 2911 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 1129 "awkgram.y" /* yacc.c:1646  */
+  case 64:
+#line 1107 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-2])->lextok;
 
@@ -2993,11 +2945,11 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2997 "awkgram.c" /* yacc.c:1646  */
+#line 2949 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 1167 "awkgram.y" /* yacc.c:1646  */
+  case 65:
+#line 1145 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@ -3024,55 +2976,55 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 3028 "awkgram.c" /* yacc.c:1646  */
+#line 2980 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 1194 "awkgram.y" /* yacc.c:1646  */
+  case 66:
+#line 1172 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = optimize_assignment((yyvsp[0]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 3037 "awkgram.c" /* yacc.c:1646  */
+#line 2989 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 1202 "awkgram.y" /* yacc.c:1646  */
+  case 67:
+#line 1180 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3043 "awkgram.c" /* yacc.c:1646  */
+#line 2995 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 1204 "awkgram.y" /* yacc.c:1646  */
+  case 68:
+#line 1182 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3049 "awkgram.c" /* yacc.c:1646  */
+#line 3001 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 1209 "awkgram.y" /* yacc.c:1646  */
+  case 69:
+#line 1187 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3055 "awkgram.c" /* yacc.c:1646  */
+#line 3007 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 1211 "awkgram.y" /* yacc.c:1646  */
+  case 70:
+#line 1189 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3066 "awkgram.c" /* yacc.c:1646  */
+#line 3018 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 1218 "awkgram.y" /* yacc.c:1646  */
+  case 71:
+#line 1196 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3072 "awkgram.c" /* yacc.c:1646  */
+#line 3024 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 1223 "awkgram.y" /* yacc.c:1646  */
+  case 72:
+#line 1201 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3084,11 +3036,11 @@ regular_print:
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
-#line 3088 "awkgram.c" /* yacc.c:1646  */
+#line 3040 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 1235 "awkgram.y" /* yacc.c:1646  */
+  case 73:
+#line 1213 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3099,17 +3051,17 @@ regular_print:
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
-#line 3103 "awkgram.c" /* yacc.c:1646  */
+#line 3055 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 1249 "awkgram.y" /* yacc.c:1646  */
+  case 74:
+#line 1227 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3109 "awkgram.c" /* yacc.c:1646  */
+#line 3061 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 1251 "awkgram.y" /* yacc.c:1646  */
+  case 75:
+#line 1229 "awkgram.y" /* yacc.c:1646  */
     { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@ -3117,26 +3069,26 @@ regular_print:
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3121 "awkgram.c" /* yacc.c:1646  */
+#line 3073 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 1259 "awkgram.y" /* yacc.c:1646  */
+  case 76:
+#line 1237 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3130 "awkgram.c" /* yacc.c:1646  */
+#line 3082 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 1264 "awkgram.y" /* yacc.c:1646  */
+  case 77:
+#line 1242 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3136 "awkgram.c" /* yacc.c:1646  */
+#line 3088 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 1266 "awkgram.y" /* yacc.c:1646  */
+  case 78:
+#line 1244 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->memory->type == Node_regex)
                        (yyvsp[0])->opcode = Op_push_re;
@@ -3144,57 +3096,47 @@ regular_print:
                        (yyvsp[0])->opcode = Op_push;
                (yyval) = (yyvsp[0]);
          }
-#line 3148 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 80:
-#line 1274 "awkgram.y" /* yacc.c:1646  */
-    {
-               assert((yyvsp[0])->memory->type == Node_typedregex);
-               (yyvsp[0])->opcode = Op_push_re;
-               (yyval) = (yyvsp[0]);
-         }
-#line 3158 "awkgram.c" /* yacc.c:1646  */
+#line 3100 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 1283 "awkgram.y" /* yacc.c:1646  */
+  case 79:
+#line 1255 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3164 "awkgram.c" /* yacc.c:1646  */
+#line 3106 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 1285 "awkgram.y" /* yacc.c:1646  */
+  case 80:
+#line 1257 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3170 "awkgram.c" /* yacc.c:1646  */
+#line 3112 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 1295 "awkgram.y" /* yacc.c:1646  */
+  case 82:
+#line 1267 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = (yyvsp[-1]);
          }
-#line 3178 "awkgram.c" /* yacc.c:1646  */
+#line 3120 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 1302 "awkgram.y" /* yacc.c:1646  */
+  case 83:
+#line 1274 "awkgram.y" /* yacc.c:1646  */
     {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
-#line 3188 "awkgram.c" /* yacc.c:1646  */
+#line 3130 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 86:
-#line 1307 "awkgram.y" /* yacc.c:1646  */
+  case 84:
+#line 1279 "awkgram.y" /* yacc.c:1646  */
     { in_print = false; in_parens = 0; }
-#line 3194 "awkgram.c" /* yacc.c:1646  */
+#line 3136 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 87:
-#line 1308 "awkgram.y" /* yacc.c:1646  */
+  case 85:
+#line 1280 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3202,63 +3144,63 @@ regular_print:
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
-#line 3206 "awkgram.c" /* yacc.c:1646  */
+#line 3148 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 88:
-#line 1319 "awkgram.y" /* yacc.c:1646  */
+  case 86:
+#line 1291 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
-#line 3214 "awkgram.c" /* yacc.c:1646  */
+#line 3156 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 89:
-#line 1324 "awkgram.y" /* yacc.c:1646  */
+  case 87:
+#line 1296 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
-#line 3222 "awkgram.c" /* yacc.c:1646  */
+#line 3164 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 1341 "awkgram.y" /* yacc.c:1646  */
+  case 92:
+#line 1313 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3228 "awkgram.c" /* yacc.c:1646  */
+#line 3170 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 95:
-#line 1343 "awkgram.y" /* yacc.c:1646  */
+  case 93:
+#line 1315 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3237 "awkgram.c" /* yacc.c:1646  */
+#line 3179 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 1351 "awkgram.y" /* yacc.c:1646  */
+  case 94:
+#line 1323 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3243 "awkgram.c" /* yacc.c:1646  */
+#line 3185 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 1353 "awkgram.y" /* yacc.c:1646  */
+  case 95:
+#line 1325 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3249 "awkgram.c" /* yacc.c:1646  */
+#line 3191 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-#line 1358 "awkgram.y" /* yacc.c:1646  */
+  case 96:
+#line 1330 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3258 "awkgram.c" /* yacc.c:1646  */
+#line 3200 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-#line 1363 "awkgram.y" /* yacc.c:1646  */
+  case 97:
+#line 1335 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
                        (yyvsp[0])->param_count =  
(yyvsp[-2])->lasti->param_count + 1;
@@ -3267,74 +3209,74 @@ regular_print:
                } else
                        (yyval) = NULL;
          }
-#line 3271 "awkgram.c" /* yacc.c:1646  */
+#line 3213 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-#line 1372 "awkgram.y" /* yacc.c:1646  */
+  case 98:
+#line 1344 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3277 "awkgram.c" /* yacc.c:1646  */
+#line 3219 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 101:
-#line 1374 "awkgram.y" /* yacc.c:1646  */
+  case 99:
+#line 1346 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3283 "awkgram.c" /* yacc.c:1646  */
+#line 3225 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 102:
-#line 1376 "awkgram.y" /* yacc.c:1646  */
+  case 100:
+#line 1348 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); }
-#line 3289 "awkgram.c" /* yacc.c:1646  */
+#line 3231 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 103:
-#line 1382 "awkgram.y" /* yacc.c:1646  */
+  case 101:
+#line 1354 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3295 "awkgram.c" /* yacc.c:1646  */
+#line 3237 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 104:
-#line 1384 "awkgram.y" /* yacc.c:1646  */
+  case 102:
+#line 1356 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3301 "awkgram.c" /* yacc.c:1646  */
+#line 3243 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 105:
-#line 1389 "awkgram.y" /* yacc.c:1646  */
+  case 103:
+#line 1361 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3307 "awkgram.c" /* yacc.c:1646  */
+#line 3249 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-#line 1391 "awkgram.y" /* yacc.c:1646  */
+  case 104:
+#line 1363 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3313 "awkgram.c" /* yacc.c:1646  */
+#line 3255 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-#line 1396 "awkgram.y" /* yacc.c:1646  */
+  case 105:
+#line 1368 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3319 "awkgram.c" /* yacc.c:1646  */
+#line 3261 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 1398 "awkgram.y" /* yacc.c:1646  */
+  case 106:
+#line 1370 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3328 "awkgram.c" /* yacc.c:1646  */
+#line 3270 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 1403 "awkgram.y" /* yacc.c:1646  */
+  case 107:
+#line 1375 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3334 "awkgram.c" /* yacc.c:1646  */
+#line 3276 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 1405 "awkgram.y" /* yacc.c:1646  */
+  case 108:
+#line 1377 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3342,62 +3284,62 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3346 "awkgram.c" /* yacc.c:1646  */
+#line 3288 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 1413 "awkgram.y" /* yacc.c:1646  */
+  case 109:
+#line 1385 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3355 "awkgram.c" /* yacc.c:1646  */
+#line 3297 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 1418 "awkgram.y" /* yacc.c:1646  */
+  case 110:
+#line 1390 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3364 "awkgram.c" /* yacc.c:1646  */
+#line 3306 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 1426 "awkgram.y" /* yacc.c:1646  */
+  case 111:
+#line 1398 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3370 "awkgram.c" /* yacc.c:1646  */
+#line 3312 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 1428 "awkgram.y" /* yacc.c:1646  */
+  case 112:
+#line 1400 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3376 "awkgram.c" /* yacc.c:1646  */
+#line 3318 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 115:
-#line 1433 "awkgram.y" /* yacc.c:1646  */
+  case 113:
+#line 1405 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3382 "awkgram.c" /* yacc.c:1646  */
+#line 3324 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 116:
-#line 1435 "awkgram.y" /* yacc.c:1646  */
+  case 114:
+#line 1407 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3391 "awkgram.c" /* yacc.c:1646  */
+#line 3333 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 117:
-#line 1440 "awkgram.y" /* yacc.c:1646  */
+  case 115:
+#line 1412 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3397 "awkgram.c" /* yacc.c:1646  */
+#line 3339 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 118:
-#line 1442 "awkgram.y" /* yacc.c:1646  */
+  case 116:
+#line 1414 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3405,89 +3347,58 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3409 "awkgram.c" /* yacc.c:1646  */
+#line 3351 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 119:
-#line 1450 "awkgram.y" /* yacc.c:1646  */
+  case 117:
+#line 1422 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3418 "awkgram.c" /* yacc.c:1646  */
+#line 3360 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 120:
-#line 1455 "awkgram.y" /* yacc.c:1646  */
+  case 118:
+#line 1427 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3427 "awkgram.c" /* yacc.c:1646  */
+#line 3369 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 121:
-#line 1462 "awkgram.y" /* yacc.c:1646  */
+  case 119:
+#line 1434 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3433 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 122:
-#line 1463 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = list_create((yyvsp[0])); }
-#line 3439 "awkgram.c" /* yacc.c:1646  */
+#line 3375 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 1469 "awkgram.y" /* yacc.c:1646  */
+  case 120:
+#line 1440 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of assignment"));
                (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
          }
-#line 3450 "awkgram.c" /* yacc.c:1646  */
+#line 3386 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 1476 "awkgram.y" /* yacc.c:1646  */
-    {
-               (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
-         }
-#line 3458 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 125:
-#line 1480 "awkgram.y" /* yacc.c:1646  */
+  case 121:
+#line 1447 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3464 "awkgram.c" /* yacc.c:1646  */
+#line 3392 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 1482 "awkgram.y" /* yacc.c:1646  */
+  case 122:
+#line 1449 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3470 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 127:
-#line 1484 "awkgram.y" /* yacc.c:1646  */
-    {
-               if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
-                       warning_ln((yyvsp[-1])->source_line,
-                               _("regular expression on left of `~' or `!~' 
operator"));
-
-               assert((yyvsp[0])->opcode == Op_push_re
-                       && (yyvsp[0])->memory->type == Node_typedregex);
-               /* RHS is @/.../ */
-               (yyvsp[-1])->memory = (yyvsp[0])->memory;
-               bcfree((yyvsp[0]));
-               (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
-         }
-#line 3487 "awkgram.c" /* yacc.c:1646  */
+#line 3398 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 128:
-#line 1497 "awkgram.y" /* yacc.c:1646  */
+  case 123:
+#line 1451 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3504,11 +3415,11 @@ regular_print:
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
-#line 3508 "awkgram.c" /* yacc.c:1646  */
+#line 3419 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 129:
-#line 1514 "awkgram.y" /* yacc.c:1646  */
+  case 124:
+#line 1468 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3518,91 +3429,91 @@ regular_print:
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3522 "awkgram.c" /* yacc.c:1646  */
+#line 3433 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 130:
-#line 1524 "awkgram.y" /* yacc.c:1646  */
+  case 125:
+#line 1478 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of comparison"));
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3533 "awkgram.c" /* yacc.c:1646  */
+#line 3444 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 131:
-#line 1531 "awkgram.y" /* yacc.c:1646  */
+  case 126:
+#line 1485 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
-#line 3539 "awkgram.c" /* yacc.c:1646  */
+#line 3450 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 132:
-#line 1533 "awkgram.y" /* yacc.c:1646  */
+  case 127:
+#line 1487 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3545 "awkgram.c" /* yacc.c:1646  */
+#line 3456 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 133:
-#line 1538 "awkgram.y" /* yacc.c:1646  */
+  case 128:
+#line 1492 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3551 "awkgram.c" /* yacc.c:1646  */
+#line 3462 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 134:
-#line 1540 "awkgram.y" /* yacc.c:1646  */
+  case 129:
+#line 1494 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3557 "awkgram.c" /* yacc.c:1646  */
+#line 3468 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 135:
-#line 1542 "awkgram.y" /* yacc.c:1646  */
+  case 130:
+#line 1496 "awkgram.y" /* yacc.c:1646  */
     {  
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
-#line 3566 "awkgram.c" /* yacc.c:1646  */
+#line 3477 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 136:
-#line 1550 "awkgram.y" /* yacc.c:1646  */
+  case 131:
+#line 1504 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3572 "awkgram.c" /* yacc.c:1646  */
+#line 3483 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 137:
-#line 1552 "awkgram.y" /* yacc.c:1646  */
+  case 132:
+#line 1506 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3578 "awkgram.c" /* yacc.c:1646  */
+#line 3489 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 1557 "awkgram.y" /* yacc.c:1646  */
+  case 133:
+#line 1511 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3584 "awkgram.c" /* yacc.c:1646  */
+#line 3495 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 1559 "awkgram.y" /* yacc.c:1646  */
+  case 134:
+#line 1513 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3590 "awkgram.c" /* yacc.c:1646  */
+#line 3501 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 140:
-#line 1564 "awkgram.y" /* yacc.c:1646  */
+  case 135:
+#line 1518 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3596 "awkgram.c" /* yacc.c:1646  */
+#line 3507 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 141:
-#line 1566 "awkgram.y" /* yacc.c:1646  */
+  case 136:
+#line 1520 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3602 "awkgram.c" /* yacc.c:1646  */
+#line 3513 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 142:
-#line 1568 "awkgram.y" /* yacc.c:1646  */
+  case 137:
+#line 1522 "awkgram.y" /* yacc.c:1646  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3655,47 +3566,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3659 "awkgram.c" /* yacc.c:1646  */
+#line 3570 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 144:
-#line 1626 "awkgram.y" /* yacc.c:1646  */
+  case 139:
+#line 1580 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3665 "awkgram.c" /* yacc.c:1646  */
+#line 3576 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 145:
-#line 1628 "awkgram.y" /* yacc.c:1646  */
+  case 140:
+#line 1582 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3671 "awkgram.c" /* yacc.c:1646  */
+#line 3582 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 1630 "awkgram.y" /* yacc.c:1646  */
+  case 141:
+#line 1584 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3677 "awkgram.c" /* yacc.c:1646  */
+#line 3588 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 147:
-#line 1632 "awkgram.y" /* yacc.c:1646  */
+  case 142:
+#line 1586 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3683 "awkgram.c" /* yacc.c:1646  */
+#line 3594 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 1634 "awkgram.y" /* yacc.c:1646  */
+  case 143:
+#line 1588 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3689 "awkgram.c" /* yacc.c:1646  */
+#line 3600 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 1636 "awkgram.y" /* yacc.c:1646  */
+  case 144:
+#line 1590 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3695 "awkgram.c" /* yacc.c:1646  */
+#line 3606 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 1638 "awkgram.y" /* yacc.c:1646  */
+  case 145:
+#line 1592 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3709,29 +3620,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
-#line 3713 "awkgram.c" /* yacc.c:1646  */
+#line 3624 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 1652 "awkgram.y" /* yacc.c:1646  */
+  case 146:
+#line 1606 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3722 "awkgram.c" /* yacc.c:1646  */
+#line 3633 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 1657 "awkgram.y" /* yacc.c:1646  */
+  case 147:
+#line 1611 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3731 "awkgram.c" /* yacc.c:1646  */
+#line 3642 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1662 "awkgram.y" /* yacc.c:1646  */
+  case 148:
+#line 1616 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@ -3751,64 +3662,64 @@ regular_print:
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
-#line 3755 "awkgram.c" /* yacc.c:1646  */
+#line 3666 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 1687 "awkgram.y" /* yacc.c:1646  */
+  case 149:
+#line 1641 "awkgram.y" /* yacc.c:1646  */
     {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
-#line 3764 "awkgram.c" /* yacc.c:1646  */
+#line 3675 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 1693 "awkgram.y" /* yacc.c:1646  */
+  case 150:
+#line 1647 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3770 "awkgram.c" /* yacc.c:1646  */
+#line 3681 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 1695 "awkgram.y" /* yacc.c:1646  */
+  case 151:
+#line 1649 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3776 "awkgram.c" /* yacc.c:1646  */
+#line 3687 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 1697 "awkgram.y" /* yacc.c:1646  */
+  case 152:
+#line 1651 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3782 "awkgram.c" /* yacc.c:1646  */
+#line 3693 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 1699 "awkgram.y" /* yacc.c:1646  */
+  case 153:
+#line 1653 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3788 "awkgram.c" /* yacc.c:1646  */
+#line 3699 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 1701 "awkgram.y" /* yacc.c:1646  */
+  case 154:
+#line 1655 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3794 "awkgram.c" /* yacc.c:1646  */
+#line 3705 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 1703 "awkgram.y" /* yacc.c:1646  */
+  case 155:
+#line 1657 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3800 "awkgram.c" /* yacc.c:1646  */
+#line 3711 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 1708 "awkgram.y" /* yacc.c:1646  */
+  case 156:
+#line 1662 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3808 "awkgram.c" /* yacc.c:1646  */
+#line 3719 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 1712 "awkgram.y" /* yacc.c:1646  */
+  case 157:
+#line 1666 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@ -3840,37 +3751,37 @@ regular_print:
                        }
                }
           }
-#line 3844 "awkgram.c" /* yacc.c:1646  */
+#line 3755 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 1744 "awkgram.y" /* yacc.c:1646  */
+  case 158:
+#line 1698 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3850 "awkgram.c" /* yacc.c:1646  */
+#line 3761 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 1746 "awkgram.y" /* yacc.c:1646  */
+  case 159:
+#line 1700 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3860 "awkgram.c" /* yacc.c:1646  */
+#line 3771 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 1752 "awkgram.y" /* yacc.c:1646  */
+  case 160:
+#line 1706 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3870 "awkgram.c" /* yacc.c:1646  */
+#line 3781 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 1758 "awkgram.y" /* yacc.c:1646  */
+  case 161:
+#line 1712 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
 
@@ -3883,45 +3794,45 @@ regular_print:
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3887 "awkgram.c" /* yacc.c:1646  */
+#line 3798 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 1773 "awkgram.y" /* yacc.c:1646  */
+  case 164:
+#line 1727 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3896 "awkgram.c" /* yacc.c:1646  */
+#line 3807 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 1778 "awkgram.y" /* yacc.c:1646  */
+  case 165:
+#line 1732 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3905 "awkgram.c" /* yacc.c:1646  */
+#line 3816 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1783 "awkgram.y" /* yacc.c:1646  */
+  case 166:
+#line 1737 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3913 "awkgram.c" /* yacc.c:1646  */
+#line 3824 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1787 "awkgram.y" /* yacc.c:1646  */
+  case 167:
+#line 1741 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3921 "awkgram.c" /* yacc.c:1646  */
+#line 3832 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1791 "awkgram.y" /* yacc.c:1646  */
+  case 168:
+#line 1745 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3936,11 +3847,11 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3940 "awkgram.c" /* yacc.c:1646  */
+#line 3851 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1806 "awkgram.y" /* yacc.c:1646  */
+  case 169:
+#line 1760 "awkgram.y" /* yacc.c:1646  */
     {
            /*
             * was: $$ = $2
@@ -3950,20 +3861,20 @@ regular_print:
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
-#line 3954 "awkgram.c" /* yacc.c:1646  */
+#line 3865 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1819 "awkgram.y" /* yacc.c:1646  */
+  case 170:
+#line 1773 "awkgram.y" /* yacc.c:1646  */
     {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
-#line 3963 "awkgram.c" /* yacc.c:1646  */
+#line 3874 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1824 "awkgram.y" /* yacc.c:1646  */
+  case 171:
+#line 1778 "awkgram.y" /* yacc.c:1646  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -3997,11 +3908,11 @@ regular_print:
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
-#line 4001 "awkgram.c" /* yacc.c:1646  */
+#line 3912 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1861 "awkgram.y" /* yacc.c:1646  */
+  case 172:
+#line 1815 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n;
 
@@ -4026,49 +3937,49 @@ regular_print:
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
-#line 4030 "awkgram.c" /* yacc.c:1646  */
+#line 3941 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1889 "awkgram.y" /* yacc.c:1646  */
+  case 173:
+#line 1843 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4036 "awkgram.c" /* yacc.c:1646  */
+#line 3947 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1891 "awkgram.y" /* yacc.c:1646  */
+  case 174:
+#line 1845 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 4042 "awkgram.c" /* yacc.c:1646  */
+#line 3953 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1896 "awkgram.y" /* yacc.c:1646  */
+  case 175:
+#line 1850 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4048 "awkgram.c" /* yacc.c:1646  */
+#line 3959 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1898 "awkgram.y" /* yacc.c:1646  */
+  case 176:
+#line 1852 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4054 "awkgram.c" /* yacc.c:1646  */
+#line 3965 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1903 "awkgram.y" /* yacc.c:1646  */
+  case 177:
+#line 1857 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4060 "awkgram.c" /* yacc.c:1646  */
+#line 3971 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1905 "awkgram.y" /* yacc.c:1646  */
+  case 178:
+#line 1859 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4068 "awkgram.c" /* yacc.c:1646  */
+#line 3979 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1912 "awkgram.y" /* yacc.c:1646  */
+  case 179:
+#line 1866 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -4082,11 +3993,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
-#line 4086 "awkgram.c" /* yacc.c:1646  */
+#line 3997 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1929 "awkgram.y" /* yacc.c:1646  */
+  case 180:
+#line 1883 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@ -4100,31 +4011,31 @@ regular_print:
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
-#line 4104 "awkgram.c" /* yacc.c:1646  */
+#line 4015 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 1946 "awkgram.y" /* yacc.c:1646  */
+  case 181:
+#line 1900 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4110 "awkgram.c" /* yacc.c:1646  */
+#line 4021 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 1948 "awkgram.y" /* yacc.c:1646  */
+  case 182:
+#line 1902 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4118 "awkgram.c" /* yacc.c:1646  */
+#line 4029 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1955 "awkgram.y" /* yacc.c:1646  */
+  case 183:
+#line 1909 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4124 "awkgram.c" /* yacc.c:1646  */
+#line 4035 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1960 "awkgram.y" /* yacc.c:1646  */
+  case 184:
+#line 1914 "awkgram.y" /* yacc.c:1646  */
     {
                char *var_name = (yyvsp[0])->lextok;
 
@@ -4132,22 +4043,22 @@ regular_print:
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
-#line 4136 "awkgram.c" /* yacc.c:1646  */
+#line 4047 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1968 "awkgram.y" /* yacc.c:1646  */
+  case 185:
+#line 1922 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-1])->lextok;
                (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, 
Node_var_new);
                (yyvsp[-1])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
          }
-#line 4147 "awkgram.c" /* yacc.c:1646  */
+#line 4058 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1978 "awkgram.y" /* yacc.c:1646  */
+  case 186:
+#line 1932 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@ -4159,73 +4070,73 @@ regular_print:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 4163 "awkgram.c" /* yacc.c:1646  */
+#line 4074 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 1990 "awkgram.y" /* yacc.c:1646  */
+  case 187:
+#line 1944 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 4173 "awkgram.c" /* yacc.c:1646  */
+#line 4084 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 1999 "awkgram.y" /* yacc.c:1646  */
+  case 188:
+#line 1953 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
          }
-#line 4181 "awkgram.c" /* yacc.c:1646  */
+#line 4092 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 2003 "awkgram.y" /* yacc.c:1646  */
+  case 189:
+#line 1957 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
-#line 4189 "awkgram.c" /* yacc.c:1646  */
+#line 4100 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 2006 "awkgram.y" /* yacc.c:1646  */
+  case 190:
+#line 1960 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4195 "awkgram.c" /* yacc.c:1646  */
+#line 4106 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 2014 "awkgram.y" /* yacc.c:1646  */
+  case 192:
+#line 1968 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4201 "awkgram.c" /* yacc.c:1646  */
+#line 4112 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 2018 "awkgram.y" /* yacc.c:1646  */
+  case 193:
+#line 1972 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4207 "awkgram.c" /* yacc.c:1646  */
+#line 4118 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 2027 "awkgram.y" /* yacc.c:1646  */
+  case 196:
+#line 1981 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4213 "awkgram.c" /* yacc.c:1646  */
+#line 4124 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 2031 "awkgram.y" /* yacc.c:1646  */
+  case 197:
+#line 1985 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); yyerrok; }
-#line 4219 "awkgram.c" /* yacc.c:1646  */
+#line 4130 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 2035 "awkgram.y" /* yacc.c:1646  */
+  case 198:
+#line 1989 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4225 "awkgram.c" /* yacc.c:1646  */
+#line 4136 "awkgram.c" /* yacc.c:1646  */
     break;
 
 
-#line 4229 "awkgram.c" /* yacc.c:1646  */
+#line 4140 "awkgram.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4453,7 +4364,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2037 "awkgram.y" /* yacc.c:1906  */
+#line 1991 "awkgram.y" /* yacc.c:1906  */
 
 
 struct token {
@@ -5772,7 +5683,6 @@ yylex(void)
        bool inhex = false;
        bool intlstr = false;
        AWKNUM d;
-       bool collecting_typed_regexp = false;
 
 #define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
 
@@ -5807,7 +5717,7 @@ yylex(void)
 
        lexeme = lexptr;
        thisline = NULL;
-collect_regexp:
+
        if (want_regexp) {
                int in_brack = 0;       /* count brackets, [[:alnum:]] allowed 
*/
                int b_index = -1;
@@ -5894,11 +5804,7 @@ end_regexp:
                                                                peek);
                                        }
                                }
-                               if (collecting_typed_regexp) {
-                                       collecting_typed_regexp = false;
-                                       lasttok = TYPED_REGEXP;
-                               } else
-                                       lasttok = REGEXP;
+                               lasttok = REGEXP;
 
                                return lasttok;
                        case '\n':
@@ -5958,13 +5864,6 @@ retry:
                return lasttok = NEWLINE;
 
        case '@':
-               c = nextc(true);
-               if (c == '/') {
-                       want_regexp = true;
-                       collecting_typed_regexp = true;
-                       goto collect_regexp;
-               }
-               pushback();
                at_seen = true;
                return lasttok = '@';
 
@@ -7017,8 +6916,6 @@ valinfo(NODE *n, Func_print print_func, FILE *fp)
 {
        if (n == Nnull_string)
                print_func(fp, "uninitialized scalar\n");
-       else if (n->type == Node_typedregex)
-               print_func(fp, "@/%.*s/\n", n->re_exp->stlen, n->re_exp->stptr);
        else if ((n->flags & STRING) != 0) {
                pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', false);
                print_func(fp, "\n");
@@ -7393,7 +7290,7 @@ make_regnode(int type, NODE *exp)
        n->type = type;
        n->re_cnt = 1;
 
-       if (type == Node_regex || type == Node_typedregex) {
+       if (type == Node_regex) {
                n->re_reg = make_regexp(exp->stptr, exp->stlen, false, true, 
false);
                if (n->re_reg == NULL) {
                        freenode(n);
diff --git a/awkgram.y b/awkgram.y
index 0b7e29f..fb44ba9 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -172,7 +172,7 @@ extern double fmod(double x, double y);
 %}
 
 %token FUNC_CALL NAME REGEXP FILENAME
-%token YNUMBER YSTRING TYPED_REGEXP
+%token YNUMBER YSTRING
 %token RELOP IO_OUT IO_IN
 %token ASSIGNOP ASSIGN MATCHOP CONCAT_OP
 %token SUBSCRIPT
@@ -200,7 +200,7 @@ extern double fmod(double x, double y);
 %left MATCHOP
 %nonassoc RELOP '<' '>' IO_IN IO_OUT
 %left CONCAT_OP
-%left YSTRING YNUMBER TYPED_REGEXP
+%left YSTRING YNUMBER
 %left '+' '-'
 %left '*' '/' '%'
 %right '!' UNARY
@@ -511,28 +511,6 @@ regexp
                }
        ;
 
-typed_regexp
-       : TYPED_REGEXP
-               {
-                 NODE *n, *exp;
-                 char *re;
-                 size_t len;
-
-                 re = $1->lextok;
-                 $1->lextok = NULL;
-                 len = strlen(re);
-
-                 exp = make_str_node(re, len, ALREADY_MALLOCED);
-                 n = make_regnode(Node_typedregex, exp);
-                 if (n == NULL) {
-                       unref(exp);
-                       YYABORT;
-                 }
-                 $$ = $1;
-                 $$->opcode = Op_push_re;
-                 $$->memory = n;
-               }
-
 a_slash
        : '/'
          { bcfree($1); }
@@ -1270,12 +1248,6 @@ case_value
                        $1->opcode = Op_push;
                $$ = $1;
          }
-       | typed_regexp
-         {
-               assert($1->memory->type == Node_typedregex);
-               $1->opcode = Op_push_re;
-               $$ = $1;
-         }
        ;
 
 print
@@ -1460,7 +1432,6 @@ fcall_expression_list
 
 fcall_exp
        : exp { $$ = $1; }
-       | typed_regexp { $$ = list_create($1); }
        ;
 
 /* Expressions, not including the comma operator.  */
@@ -1472,27 +1443,10 @@ exp
                                _("regular expression on right of assignment"));
                $$ = mk_assignment($1, $3, $2);
          }
-       | variable ASSIGN typed_regexp %prec ASSIGNOP
-         {
-               $$ = mk_assignment($1, list_create($3), $2);
-         }
        | exp LEX_AND exp
          {     $$ = mk_boolean($1, $3, $2); }
        | exp LEX_OR exp
          {     $$ = mk_boolean($1, $3, $2); }
-       | exp MATCHOP typed_regexp
-         {
-               if ($1->lasti->opcode == Op_match_rec)
-                       warning_ln($2->source_line,
-                               _("regular expression on left of `~' or `!~' 
operator"));
-
-               assert($3->opcode == Op_push_re
-                       && $3->memory->type == Node_typedregex);
-               /* RHS is @/.../ */
-               $2->memory = $3->memory;
-               bcfree($3);
-               $$ = list_append($1, $2);
-         }
        | exp MATCHOP exp
          {
                if ($1->lasti->opcode == Op_match_rec)
@@ -3352,7 +3306,6 @@ yylex(void)
        bool inhex = false;
        bool intlstr = false;
        AWKNUM d;
-       bool collecting_typed_regexp = false;
 
 #define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
 
@@ -3387,7 +3340,7 @@ yylex(void)
 
        lexeme = lexptr;
        thisline = NULL;
-collect_regexp:
+
        if (want_regexp) {
                int in_brack = 0;       /* count brackets, [[:alnum:]] allowed 
*/
                int b_index = -1;
@@ -3474,11 +3427,7 @@ end_regexp:
                                                                peek);
                                        }
                                }
-                               if (collecting_typed_regexp) {
-                                       collecting_typed_regexp = false;
-                                       lasttok = TYPED_REGEXP;
-                               } else
-                                       lasttok = REGEXP;
+                               lasttok = REGEXP;
 
                                return lasttok;
                        case '\n':
@@ -3538,13 +3487,6 @@ retry:
                return lasttok = NEWLINE;
 
        case '@':
-               c = nextc(true);
-               if (c == '/') {
-                       want_regexp = true;
-                       collecting_typed_regexp = true;
-                       goto collect_regexp;
-               }
-               pushback();
                at_seen = true;
                return lasttok = '@';
 
@@ -4597,8 +4539,6 @@ valinfo(NODE *n, Func_print print_func, FILE *fp)
 {
        if (n == Nnull_string)
                print_func(fp, "uninitialized scalar\n");
-       else if (n->type == Node_typedregex)
-               print_func(fp, "@/%.*s/\n", n->re_exp->stlen, n->re_exp->stptr);
        else if ((n->flags & STRING) != 0) {
                pp_string_fp(print_func, fp, n->stptr, n->stlen, '"', false);
                print_func(fp, "\n");
@@ -4973,7 +4913,7 @@ make_regnode(int type, NODE *exp)
        n->type = type;
        n->re_cnt = 1;
 
-       if (type == Node_regex || type == Node_typedregex) {
+       if (type == Node_regex) {
                n->re_reg = make_regexp(exp->stptr, exp->stlen, false, true, 
false);
                if (n->re_reg == NULL) {
                        freenode(n);
diff --git a/builtin.c b/builtin.c
index 87f7fb2..b295cd2 100644
--- a/builtin.c
+++ b/builtin.c
@@ -532,7 +532,7 @@ do_length(int nargs)
                return make_number(size);
        }
 
-       assert(tmp->type == Node_val || tmp->type == Node_typedregex);
+       assert(tmp->type == Node_val);
 
        if (do_lint && (fixtype(tmp)->flags & STRING) == 0)
                lintwarn(_("length: received non-string argument"));
@@ -2191,12 +2191,10 @@ do_print(int nargs, int redirtype)
                        fatal(_("attempt to use array `%s' in a scalar 
context"), array_vname(tmp));
                }
 
-               if (tmp->type == Node_typedregex)
-                       args_array[i] = force_string(tmp);
-               else if (   (tmp->flags & STRCUR) == 0
-                        || (   tmp->stfmt != STFMT_UNUSED
-                            && tmp->stfmt != OFMTidx))
-                               args_array[i] = format_val(OFMT, OFMTidx, tmp);
+               if (   (tmp->flags & STRCUR) == 0
+                   || (   tmp->stfmt != STFMT_UNUSED
+                       && tmp->stfmt != OFMTidx))
+                       args_array[i] = format_val(OFMT, OFMTidx, tmp);
        }
 
        if (redir_exp != NULL) {
@@ -3199,8 +3197,7 @@ call_sub(const char *name, int nargs)
                 * push replace
                 * push $0
                 */
-               if (regex->type != Node_typedregex)
-                       regex = make_regnode(Node_regex, regex);
+               regex = make_regnode(Node_regex, regex);
                PUSH(regex);
                PUSH(replace);
                lhs = r_get_field(zero, (Func_ptr *) 0, true);
@@ -3224,8 +3221,7 @@ call_sub(const char *name, int nargs)
                 *       nargs++
                 * }
                 */
-               if (regex->type != Node_typedregex)
-                       regex = make_regnode(Node_regex, regex);
+               regex = make_regnode(Node_regex, regex);
                PUSH(regex);
                PUSH(replace);
                PUSH(glob_flag);
@@ -3262,8 +3258,7 @@ call_match(int nargs)
 
        /* Don't need to pop the string just to push it back ... */
 
-       if (regex->type != Node_typedregex)
-               regex = make_regnode(Node_regex, regex);
+       regex = make_regnode(Node_regex, regex);
        PUSH(regex);
 
        if (array)
@@ -3291,8 +3286,7 @@ call_split_func(const char *name, int nargs)
 
        if (nargs >= 3) {
                regex = POP_STRING();
-               if (regex->type != Node_typedregex)
-                       regex = make_regnode(Node_regex, regex);
+               regex = make_regnode(Node_regex, regex);
        } else {
                if (name[0] == 's') {
                        regex = make_regnode(Node_regex, FS_node->var_value);
@@ -3948,9 +3942,6 @@ do_typeof(int nargs)
                res = "array";
                deref = false;
                break;
-       case Node_typedregex:
-               res = "regexp";
-               break;
        case Node_val:
        case Node_var:
                switch (arg->flags & (STRING|NUMBER|MAYBE_NUM)) {
diff --git a/debug.c b/debug.c
index a083062..f4640ad 100644
--- a/debug.c
+++ b/debug.c
@@ -1736,8 +1736,6 @@ watchpoint_triggered(struct list_item *w)
                /* new != NULL */
                if (t2->type == Node_val)
                        w->cur_value = dupnode(t2);
-               else if (t2->type == Node_typedregex)
-                       w->cur_value = dupnode(t2);
                else {
                        w->flags |= CUR_IS_ARRAY;
                        w->cur_size = (t2->type == Node_var_array) ? 
assoc_length(t2) : 0;
@@ -1750,7 +1748,6 @@ watchpoint_triggered(struct list_item *w)
                        w->flags |= CUR_IS_ARRAY;
                        w->cur_size = assoc_length(t2);
                } else
-                       /* works for Node_typedregex too */
                        w->cur_value = dupnode(t2);
        }
 
@@ -1793,8 +1790,6 @@ initialize_watch_item(struct list_item *w)
                } else if (symbol->type == Node_var_array) {
                        w->flags |= CUR_IS_ARRAY;
                        w->cur_size = assoc_length(symbol);
-               } else if (symbol->type == Node_typedregex) {
-                       w->cur_value = dupnode(symbol);
                } /* else
                        can't happen */
        }
@@ -3709,9 +3704,6 @@ print_memory(NODE *m, NODE *func, Func_print print_func, 
FILE *fp)
                print_func(fp, " [%s]", flags2str(m->flags));
                break;
 
-       case Node_typedregex:
-               print_func(fp, "@");
-               /* fall through */
        case Node_regex:
                pp_string_fp(print_func, fp, m->re_exp->stptr, 
m->re_exp->stlen, '/', false);
                break;
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2cada32..53d1d34 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2016-08-03         Arnold D. Robbins     <address@hidden>
+
+       Remove typed regexes until they can be done properly.
+
+       * gawk.1, gawktexi.in: Updated.
+
 2016-08-01         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in: Mark DJGPP port as unsupported.
diff --git a/doc/gawk.1 b/doc/gawk.1
index dedf6c9..751f8b8 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -3230,7 +3230,6 @@ Return a string indicating the type of
 The string will be one of
 \fB"array"\fP,
 \fB"number"\fP,
-\fB"regexp"\fP,
 \fB"string"\fP,
 \fB"strnum"\fP,
 or
diff --git a/doc/gawk.info b/doc/gawk.info
index 97c9d3c..cbcf450 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -4136,54 +4136,6 @@ that you can define a variable to be a number or a 
string:
      str = "hi"      String variable
      re = /foo/      Wrong! re is the result of $0 ~ /foo/
 
-   For a number of more advanced use cases (described later on in this
-Info file), it would be nice to have regexp constants that are "strongly
-typed"; in other words, that denote a regexp useful for matching, and
-not an expression.
-
-   'gawk' provides this feature.  A strongly typed regexp constant looks
-almost like a regular regexp constant, except that it is preceded by an
-'@' sign:
-
-     re = @/foo/     Regexp variable
-
-   Strongly typed regexp constants _cannot_ be used eveywhere that a
-regular regexp constant can, because this would make the language even
-more confusing.  Instead, you may use them only in certain contexts:
-
-   * On the righthand side of the '~' and '!~' operators: 'some_var ~
-     @/foo/' (*note Regexp Usage::).
-
-   * In the 'case' part of a 'switch' statement (*note Switch
-     Statement::).
-
-   * As an argument to one of the built-in functions that accept regexp
-     constants: 'gensub()', 'gsub()', 'match()', 'patsplit()',
-     'split()', and 'sub()' (*note String Functions::).
-
-   * As a parameter in a call to a user-defined function (*note
-     User-defined::).
-
-   * On the righthand side of an assignment to a variable: 'some_var =
-     @/foo/'.  In this case, the type of 'some_var' is regexp.
-     Additionally, 'some_var' can be used with '~' and '!~', passed to
-     one of the built-in functions listed above, or passed as a
-     parameter to a user-defined function.
-
-   You may use the 'typeof()' built-in function (*note Type Functions::)
-to determine if a variable or function parameter is a regexp variable.
-
-   The true power of this feature comes from the ability to create
-variables that have regexp type.  Such variables can be passed on to
-user-defined functions, without the confusing aspects of computed
-regular expressions created from strings or string constants.  They may
-also be passed through indirect function calls (*note Indirect Calls::)
-onto the built-in functions that accept regexp constants.
-
-   When used in numeric conversions, strongly typed regexp variables
-convert to zero.  When used in string conversions, they convert to the
-string value of the original regexp text.
-
 
 File: gawk.info,  Node: Regexp Summary,  Prev: Strong Regexp Constants,  Up: 
Regexp
 
@@ -4221,9 +4173,6 @@ File: gawk.info,  Node: Regexp Summary,  Prev: Strong 
Regexp Constants,  Up: Reg
      sensitivity of regexp matching.  In other 'awk' versions, use
      'tolower()' or 'toupper()'.
 
-   * Strongly typed regexp constants ('@/.../') enable certain advanced
-     use cases to be described later on in the Info file.
-
 
 File: gawk.info,  Node: Reading Files,  Next: Printing,  Prev: Regexp,  Up: Top
 
@@ -13601,10 +13550,6 @@ contexts.
      '"array"'
           X is an array.
 
-     '"regexp"'
-          X is a strongly typed regexp (*note Strong Regexp
-          Constants::).
-
      '"number"'
           X is a number.
 
@@ -13651,8 +13596,7 @@ parameter is an array or not.
      turning it into a scalar.
 
    The 'typeof()' function is general; it allows you to determine if a
-variable or function parameter is a scalar, an array, or a strongly
-typed regexp.
+variable or function parameter is a scalar, an array.
 
    'isarray()' is deprecated; you should use 'typeof()' instead.  You
 should replace any existing uses of 'isarray(var)' in your code with
@@ -35386,498 +35330,498 @@ Node: Case-sensitivity185992
 Ref: Case-sensitivity-Footnote-1188888
 Ref: Case-sensitivity-Footnote-2189123
 Node: Strong Regexp Constants189231
-Node: Regexp Summary192173
-Node: Reading Files193779
-Node: Records195942
-Node: awk split records196675
-Node: gawk split records201606
-Ref: gawk split records-Footnote-1206146
-Node: Fields206183
-Node: Nonconstant Fields208924
-Ref: Nonconstant Fields-Footnote-1211160
-Node: Changing Fields211364
-Node: Field Separators217292
-Node: Default Field Splitting219990
-Node: Regexp Field Splitting221108
-Node: Single Character Fields224461
-Node: Command Line Field Separator225521
-Node: Full Line Fields228739
-Ref: Full Line Fields-Footnote-1230261
-Ref: Full Line Fields-Footnote-2230307
-Node: Field Splitting Summary230408
-Node: Constant Size232482
-Node: Splitting By Content237060
-Ref: Splitting By Content-Footnote-1241031
-Node: Multiple Line241194
-Ref: Multiple Line-Footnote-1247076
-Node: Getline247255
-Node: Plain Getline249721
-Node: Getline/Variable252360
-Node: Getline/File253509
-Node: Getline/Variable/File254895
-Ref: Getline/Variable/File-Footnote-1256498
-Node: Getline/Pipe256586
-Node: Getline/Variable/Pipe259291
-Node: Getline/Coprocess260424
-Node: Getline/Variable/Coprocess261689
-Node: Getline Notes262429
-Node: Getline Summary265224
-Ref: table-getline-variants265646
-Node: Read Timeout266394
-Ref: Read Timeout-Footnote-1270300
-Node: Retrying Input270358
-Node: Command-line directories271557
-Node: Input Summary272463
-Node: Input Exercises275635
-Node: Printing276363
-Node: Print278197
-Node: Print Examples279654
-Node: Output Separators282434
-Node: OFMT284451
-Node: Printf285807
-Node: Basic Printf286592
-Node: Control Letters288166
-Node: Format Modifiers292154
-Node: Printf Examples298169
-Node: Redirection300655
-Node: Special FD307496
-Ref: Special FD-Footnote-1310664
-Node: Special Files310738
-Node: Other Inherited Files311355
-Node: Special Network312356
-Node: Special Caveats313216
-Node: Close Files And Pipes314165
-Ref: table-close-pipe-return-values321072
-Ref: Close Files And Pipes-Footnote-1321855
-Ref: Close Files And Pipes-Footnote-2322003
-Node: Nonfatal322155
-Node: Output Summary324480
-Node: Output Exercises325702
-Node: Expressions326381
-Node: Values327569
-Node: Constants328247
-Node: Scalar Constants328938
-Ref: Scalar Constants-Footnote-1329802
-Node: Nondecimal-numbers330052
-Node: Regexp Constants333065
-Node: Using Constant Regexps333591
-Node: Variables336754
-Node: Using Variables337411
-Node: Assignment Options339321
-Node: Conversion341194
-Node: Strings And Numbers341718
-Ref: Strings And Numbers-Footnote-1344781
-Node: Locale influences conversions344890
-Ref: table-locale-affects347648
-Node: All Operators348266
-Node: Arithmetic Ops348895
-Node: Concatenation351401
-Ref: Concatenation-Footnote-1354248
-Node: Assignment Ops354355
-Ref: table-assign-ops359346
-Node: Increment Ops360659
-Node: Truth Values and Conditions364119
-Node: Truth Values365193
-Node: Typing and Comparison366241
-Node: Variable Typing367061
-Node: Comparison Operators370685
-Ref: table-relational-ops371104
-Node: POSIX String Comparison374599
-Ref: POSIX String Comparison-Footnote-1375673
-Node: Boolean Ops375812
-Ref: Boolean Ops-Footnote-1380294
-Node: Conditional Exp380386
-Node: Function Calls382122
-Node: Precedence385999
-Node: Locales389658
-Node: Expressions Summary391290
-Node: Patterns and Actions393863
-Node: Pattern Overview394983
-Node: Regexp Patterns396660
-Node: Expression Patterns397202
-Node: Ranges400983
-Node: BEGIN/END404091
-Node: Using BEGIN/END404852
-Ref: Using BEGIN/END-Footnote-1407588
-Node: I/O And BEGIN/END407694
-Node: BEGINFILE/ENDFILE410008
-Node: Empty412915
-Node: Using Shell Variables413232
-Node: Action Overview415506
-Node: Statements417831
-Node: If Statement419679
-Node: While Statement421174
-Node: Do Statement423202
-Node: For Statement424350
-Node: Switch Statement427508
-Node: Break Statement429894
-Node: Continue Statement431986
-Node: Next Statement433813
-Node: Nextfile Statement436196
-Node: Exit Statement438848
-Node: Built-in Variables441251
-Node: User-modified442384
-Node: Auto-set449970
-Ref: Auto-set-Footnote-1464623
-Ref: Auto-set-Footnote-2464829
-Node: ARGC and ARGV464885
-Node: Pattern Action Summary469098
-Node: Arrays471528
-Node: Array Basics472857
-Node: Array Intro473701
-Ref: figure-array-elements475676
-Ref: Array Intro-Footnote-1478380
-Node: Reference to Elements478508
-Node: Assigning Elements480972
-Node: Array Example481463
-Node: Scanning an Array483222
-Node: Controlling Scanning486244
-Ref: Controlling Scanning-Footnote-1491643
-Node: Numeric Array Subscripts491959
-Node: Uninitialized Subscripts494143
-Node: Delete495762
-Ref: Delete-Footnote-1498514
-Node: Multidimensional498571
-Node: Multiscanning501666
-Node: Arrays of Arrays503257
-Node: Arrays Summary508024
-Node: Functions510117
-Node: Built-in511155
-Node: Calling Built-in512236
-Node: Numeric Functions514232
-Ref: Numeric Functions-Footnote-1519065
-Ref: Numeric Functions-Footnote-2519422
-Ref: Numeric Functions-Footnote-3519470
-Node: String Functions519742
-Ref: String Functions-Footnote-1543246
-Ref: String Functions-Footnote-2543374
-Ref: String Functions-Footnote-3543622
-Node: Gory Details543709
-Ref: table-sub-escapes545500
-Ref: table-sub-proposed547019
-Ref: table-posix-sub548382
-Ref: table-gensub-escapes549923
-Ref: Gory Details-Footnote-1550746
-Node: I/O Functions550900
-Ref: table-system-return-values557482
-Ref: I/O Functions-Footnote-1559462
-Ref: I/O Functions-Footnote-2559610
-Node: Time Functions559730
-Ref: Time Functions-Footnote-1570235
-Ref: Time Functions-Footnote-2570303
-Ref: Time Functions-Footnote-3570461
-Ref: Time Functions-Footnote-4570572
-Ref: Time Functions-Footnote-5570684
-Ref: Time Functions-Footnote-6570911
-Node: Bitwise Functions571177
-Ref: table-bitwise-ops571771
-Ref: Bitwise Functions-Footnote-1576109
-Node: Type Functions576282
-Node: I18N Functions578943
-Node: User-defined580594
-Node: Definition Syntax581399
-Ref: Definition Syntax-Footnote-1587086
-Node: Function Example587157
-Ref: Function Example-Footnote-1590079
-Node: Function Caveats590101
-Node: Calling A Function590619
-Node: Variable Scope591577
-Node: Pass By Value/Reference594571
-Node: Return Statement598070
-Node: Dynamic Typing601049
-Node: Indirect Calls601979
-Ref: Indirect Calls-Footnote-1612230
-Node: Functions Summary612358
-Node: Library Functions615063
-Ref: Library Functions-Footnote-1618670
-Ref: Library Functions-Footnote-2618813
-Node: Library Names618984
-Ref: Library Names-Footnote-1622444
-Ref: Library Names-Footnote-2622667
-Node: General Functions622753
-Node: Strtonum Function623856
-Node: Assert Function626878
-Node: Round Function630204
-Node: Cliff Random Function631745
-Node: Ordinal Functions632761
-Ref: Ordinal Functions-Footnote-1635824
-Ref: Ordinal Functions-Footnote-2636076
-Node: Join Function636286
-Ref: Join Function-Footnote-1638056
-Node: Getlocaltime Function638256
-Node: Readfile Function641998
-Node: Shell Quoting643970
-Node: Data File Management645371
-Node: Filetrans Function646003
-Node: Rewind Function650099
-Node: File Checking652004
-Ref: File Checking-Footnote-1653338
-Node: Empty Files653539
-Node: Ignoring Assigns655518
-Node: Getopt Function657068
-Ref: Getopt Function-Footnote-1668537
-Node: Passwd Functions668737
-Ref: Passwd Functions-Footnote-1677576
-Node: Group Functions677664
-Ref: Group Functions-Footnote-1685561
-Node: Walking Arrays685768
-Node: Library Functions Summary688776
-Node: Library Exercises690182
-Node: Sample Programs690647
-Node: Running Examples691417
-Node: Clones692145
-Node: Cut Program693369
-Node: Egrep Program703298
-Ref: Egrep Program-Footnote-1710810
-Node: Id Program710920
-Node: Split Program714600
-Ref: Split Program-Footnote-1718059
-Node: Tee Program718188
-Node: Uniq Program720978
-Node: Wc Program728404
-Ref: Wc Program-Footnote-1732659
-Node: Miscellaneous Programs732753
-Node: Dupword Program733966
-Node: Alarm Program735996
-Node: Translate Program740851
-Ref: Translate Program-Footnote-1745416
-Node: Labels Program745686
-Ref: Labels Program-Footnote-1749037
-Node: Word Sorting749121
-Node: History Sorting753193
-Node: Extract Program755028
-Node: Simple Sed762557
-Node: Igawk Program765631
-Ref: Igawk Program-Footnote-1779962
-Ref: Igawk Program-Footnote-2780164
-Ref: Igawk Program-Footnote-3780286
-Node: Anagram Program780401
-Node: Signature Program783463
-Node: Programs Summary784710
-Node: Programs Exercises785924
-Ref: Programs Exercises-Footnote-1790053
-Node: Advanced Features790144
-Node: Nondecimal Data792134
-Node: Array Sorting793725
-Node: Controlling Array Traversal794425
-Ref: Controlling Array Traversal-Footnote-1802792
-Node: Array Sorting Functions802910
-Ref: Array Sorting Functions-Footnote-1808001
-Node: Two-way I/O808197
-Ref: Two-way I/O-Footnote-1814747
-Ref: Two-way I/O-Footnote-2814934
-Node: TCP/IP Networking815016
-Node: Profiling818134
-Ref: Profiling-Footnote-1826627
-Node: Advanced Features Summary826950
-Node: Internationalization828794
-Node: I18N and L10N830274
-Node: Explaining gettext830961
-Ref: Explaining gettext-Footnote-1836853
-Ref: Explaining gettext-Footnote-2837038
-Node: Programmer i18n837203
-Ref: Programmer i18n-Footnote-1842058
-Node: Translator i18n842107
-Node: String Extraction842901
-Ref: String Extraction-Footnote-1844033
-Node: Printf Ordering844119
-Ref: Printf Ordering-Footnote-1846905
-Node: I18N Portability846969
-Ref: I18N Portability-Footnote-1849425
-Node: I18N Example849488
-Ref: I18N Example-Footnote-1852294
-Node: Gawk I18N852367
-Node: I18N Summary853012
-Node: Debugger854353
-Node: Debugging855375
-Node: Debugging Concepts855816
-Node: Debugging Terms857625
-Node: Awk Debugging860200
-Node: Sample Debugging Session861106
-Node: Debugger Invocation861640
-Node: Finding The Bug863026
-Node: List of Debugger Commands869504
-Node: Breakpoint Control870837
-Node: Debugger Execution Control874531
-Node: Viewing And Changing Data877893
-Node: Execution Stack881267
-Node: Debugger Info882904
-Node: Miscellaneous Debugger Commands886975
-Node: Readline Support892063
-Node: Limitations892959
-Ref: Limitations-Footnote-1897190
-Node: Debugging Summary897241
-Node: Arbitrary Precision Arithmetic898520
-Node: Computer Arithmetic899936
-Ref: table-numeric-ranges903527
-Ref: Computer Arithmetic-Footnote-1904249
-Node: Math Definitions904306
-Ref: table-ieee-formats907620
-Ref: Math Definitions-Footnote-1908223
-Node: MPFR features908328
-Node: FP Math Caution910045
-Ref: FP Math Caution-Footnote-1911117
-Node: Inexactness of computations911486
-Node: Inexact representation912446
-Node: Comparing FP Values913806
-Node: Errors accumulate914888
-Node: Getting Accuracy916321
-Node: Try To Round919031
-Node: Setting precision919930
-Ref: table-predefined-precision-strings920627
-Node: Setting the rounding mode922457
-Ref: table-gawk-rounding-modes922831
-Ref: Setting the rounding mode-Footnote-1926239
-Node: Arbitrary Precision Integers926418
-Ref: Arbitrary Precision Integers-Footnote-1931335
-Node: POSIX Floating Point Problems931484
-Ref: POSIX Floating Point Problems-Footnote-1935366
-Node: Floating point summary935404
-Node: Dynamic Extensions937594
-Node: Extension Intro939147
-Node: Plugin License940413
-Node: Extension Mechanism Outline941210
-Ref: figure-load-extension941649
-Ref: figure-register-new-function943214
-Ref: figure-call-new-function944306
-Node: Extension API Description946368
-Node: Extension API Functions Introduction947900
-Node: General Data Types952759
-Ref: General Data Types-Footnote-1958714
-Node: Memory Allocation Functions959013
-Ref: Memory Allocation Functions-Footnote-1961858
-Node: Constructor Functions961957
-Node: Registration Functions963702
-Node: Extension Functions964387
-Node: Exit Callback Functions967010
-Node: Extension Version String968260
-Node: Input Parsers968923
-Node: Output Wrappers978805
-Node: Two-way processors983317
-Node: Printing Messages985582
-Ref: Printing Messages-Footnote-1986753
-Node: Updating ERRNO986906
-Node: Requesting Values987645
-Ref: table-value-types-returned988382
-Node: Accessing Parameters989265
-Node: Symbol Table Access990500
-Node: Symbol table by name991012
-Node: Symbol table by cookie993033
-Ref: Symbol table by cookie-Footnote-1997185
-Node: Cached values997249
-Ref: Cached values-Footnote-11000756
-Node: Array Manipulation1000847
-Ref: Array Manipulation-Footnote-11001938
-Node: Array Data Types1001975
-Ref: Array Data Types-Footnote-11004633
-Node: Array Functions1004725
-Node: Flattening Arrays1008583
-Node: Creating Arrays1015491
-Node: Redirection API1020260
-Node: Extension API Variables1023091
-Node: Extension Versioning1023724
-Ref: gawk-api-version1024161
-Node: Extension API Informational Variables1025917
-Node: Extension API Boilerplate1026981
-Node: Finding Extensions1030795
-Node: Extension Example1031354
-Node: Internal File Description1032152
-Node: Internal File Ops1036232
-Ref: Internal File Ops-Footnote-11047994
-Node: Using Internal File Ops1048134
-Ref: Using Internal File Ops-Footnote-11050517
-Node: Extension Samples1050791
-Node: Extension Sample File Functions1052320
-Node: Extension Sample Fnmatch1059969
-Node: Extension Sample Fork1061456
-Node: Extension Sample Inplace1062674
-Node: Extension Sample Ord1065884
-Node: Extension Sample Readdir1066720
-Ref: table-readdir-file-types1067609
-Node: Extension Sample Revout1068414
-Node: Extension Sample Rev2way1069003
-Node: Extension Sample Read write array1069743
-Node: Extension Sample Readfile1071685
-Node: Extension Sample Time1072780
-Node: Extension Sample API Tests1074128
-Node: gawkextlib1074620
-Node: Extension summary1077067
-Node: Extension Exercises1080769
-Node: Language History1082267
-Node: V7/SVR3.11083923
-Node: SVR41086075
-Node: POSIX1087509
-Node: BTL1088888
-Node: POSIX/GNU1089617
-Node: Feature History1095479
-Node: Common Extensions1109849
-Node: Ranges and Locales1111132
-Ref: Ranges and Locales-Footnote-11115748
-Ref: Ranges and Locales-Footnote-21115775
-Ref: Ranges and Locales-Footnote-31116010
-Node: Contributors1116231
-Node: History summary1121791
-Node: Installation1123171
-Node: Gawk Distribution1124115
-Node: Getting1124599
-Node: Extracting1125560
-Node: Distribution contents1127198
-Node: Unix Installation1133292
-Node: Quick Installation1133974
-Node: Shell Startup Files1136388
-Node: Additional Configuration Options1137466
-Node: Configuration Philosophy1139271
-Node: Non-Unix Installation1141640
-Node: PC Installation1142098
-Node: PC Binary Installation1143418
-Node: PC Compiling1145270
-Ref: PC Compiling-Footnote-11148064
-Node: PC Testing1148173
-Node: PC Using1149353
-Ref: PC Using-Footnote-11153506
-Node: Cygwin1153579
-Node: MSYS1154349
-Node: VMS Installation1154850
-Node: VMS Compilation1155641
-Ref: VMS Compilation-Footnote-11156870
-Node: VMS Dynamic Extensions1156928
-Node: VMS Installation Details1158613
-Node: VMS Running1160866
-Node: VMS GNV1165145
-Node: VMS Old Gawk1165880
-Node: Bugs1166351
-Node: Other Versions1170666
-Node: Installation summary1177250
-Node: Notes1178301
-Node: Compatibility Mode1179166
-Node: Additions1179948
-Node: Accessing The Source1180873
-Node: Adding Code1182308
-Node: New Ports1188527
-Node: Derived Files1193015
-Ref: Derived Files-Footnote-11198500
-Ref: Derived Files-Footnote-21198535
-Ref: Derived Files-Footnote-31199133
-Node: Future Extensions1199247
-Node: Implementation Limitations1199905
-Node: Extension Design1201088
-Node: Old Extension Problems1202242
-Ref: Old Extension Problems-Footnote-11203760
-Node: Extension New Mechanism Goals1203817
-Ref: Extension New Mechanism Goals-Footnote-11207181
-Node: Extension Other Design Decisions1207370
-Node: Extension Future Growth1209483
-Node: Old Extension Mechanism1210319
-Node: Notes summary1212082
-Node: Basic Concepts1213264
-Node: Basic High Level1213945
-Ref: figure-general-flow1214227
-Ref: figure-process-flow1214912
-Ref: Basic High Level-Footnote-11218213
-Node: Basic Data Typing1218398
-Node: Glossary1221726
-Node: Copying1253672
-Node: GNU Free Documentation License1291211
-Node: Index1316329
+Node: Regexp Summary190020
+Node: Reading Files191495
+Node: Records193658
+Node: awk split records194391
+Node: gawk split records199322
+Ref: gawk split records-Footnote-1203862
+Node: Fields203899
+Node: Nonconstant Fields206640
+Ref: Nonconstant Fields-Footnote-1208876
+Node: Changing Fields209080
+Node: Field Separators215008
+Node: Default Field Splitting217706
+Node: Regexp Field Splitting218824
+Node: Single Character Fields222177
+Node: Command Line Field Separator223237
+Node: Full Line Fields226455
+Ref: Full Line Fields-Footnote-1227977
+Ref: Full Line Fields-Footnote-2228023
+Node: Field Splitting Summary228124
+Node: Constant Size230198
+Node: Splitting By Content234776
+Ref: Splitting By Content-Footnote-1238747
+Node: Multiple Line238910
+Ref: Multiple Line-Footnote-1244792
+Node: Getline244971
+Node: Plain Getline247437
+Node: Getline/Variable250076
+Node: Getline/File251225
+Node: Getline/Variable/File252611
+Ref: Getline/Variable/File-Footnote-1254214
+Node: Getline/Pipe254302
+Node: Getline/Variable/Pipe257007
+Node: Getline/Coprocess258140
+Node: Getline/Variable/Coprocess259405
+Node: Getline Notes260145
+Node: Getline Summary262940
+Ref: table-getline-variants263362
+Node: Read Timeout264110
+Ref: Read Timeout-Footnote-1268016
+Node: Retrying Input268074
+Node: Command-line directories269273
+Node: Input Summary270179
+Node: Input Exercises273351
+Node: Printing274079
+Node: Print275913
+Node: Print Examples277370
+Node: Output Separators280150
+Node: OFMT282167
+Node: Printf283523
+Node: Basic Printf284308
+Node: Control Letters285882
+Node: Format Modifiers289870
+Node: Printf Examples295885
+Node: Redirection298371
+Node: Special FD305212
+Ref: Special FD-Footnote-1308380
+Node: Special Files308454
+Node: Other Inherited Files309071
+Node: Special Network310072
+Node: Special Caveats310932
+Node: Close Files And Pipes311881
+Ref: table-close-pipe-return-values318788
+Ref: Close Files And Pipes-Footnote-1319571
+Ref: Close Files And Pipes-Footnote-2319719
+Node: Nonfatal319871
+Node: Output Summary322196
+Node: Output Exercises323418
+Node: Expressions324097
+Node: Values325285
+Node: Constants325963
+Node: Scalar Constants326654
+Ref: Scalar Constants-Footnote-1327518
+Node: Nondecimal-numbers327768
+Node: Regexp Constants330781
+Node: Using Constant Regexps331307
+Node: Variables334470
+Node: Using Variables335127
+Node: Assignment Options337037
+Node: Conversion338910
+Node: Strings And Numbers339434
+Ref: Strings And Numbers-Footnote-1342497
+Node: Locale influences conversions342606
+Ref: table-locale-affects345364
+Node: All Operators345982
+Node: Arithmetic Ops346611
+Node: Concatenation349117
+Ref: Concatenation-Footnote-1351964
+Node: Assignment Ops352071
+Ref: table-assign-ops357062
+Node: Increment Ops358375
+Node: Truth Values and Conditions361835
+Node: Truth Values362909
+Node: Typing and Comparison363957
+Node: Variable Typing364777
+Node: Comparison Operators368401
+Ref: table-relational-ops368820
+Node: POSIX String Comparison372315
+Ref: POSIX String Comparison-Footnote-1373389
+Node: Boolean Ops373528
+Ref: Boolean Ops-Footnote-1378010
+Node: Conditional Exp378102
+Node: Function Calls379838
+Node: Precedence383715
+Node: Locales387374
+Node: Expressions Summary389006
+Node: Patterns and Actions391579
+Node: Pattern Overview392699
+Node: Regexp Patterns394376
+Node: Expression Patterns394918
+Node: Ranges398699
+Node: BEGIN/END401807
+Node: Using BEGIN/END402568
+Ref: Using BEGIN/END-Footnote-1405304
+Node: I/O And BEGIN/END405410
+Node: BEGINFILE/ENDFILE407724
+Node: Empty410631
+Node: Using Shell Variables410948
+Node: Action Overview413222
+Node: Statements415547
+Node: If Statement417395
+Node: While Statement418890
+Node: Do Statement420918
+Node: For Statement422066
+Node: Switch Statement425224
+Node: Break Statement427610
+Node: Continue Statement429702
+Node: Next Statement431529
+Node: Nextfile Statement433912
+Node: Exit Statement436564
+Node: Built-in Variables438967
+Node: User-modified440100
+Node: Auto-set447686
+Ref: Auto-set-Footnote-1462339
+Ref: Auto-set-Footnote-2462545
+Node: ARGC and ARGV462601
+Node: Pattern Action Summary466814
+Node: Arrays469244
+Node: Array Basics470573
+Node: Array Intro471417
+Ref: figure-array-elements473392
+Ref: Array Intro-Footnote-1476096
+Node: Reference to Elements476224
+Node: Assigning Elements478688
+Node: Array Example479179
+Node: Scanning an Array480938
+Node: Controlling Scanning483960
+Ref: Controlling Scanning-Footnote-1489359
+Node: Numeric Array Subscripts489675
+Node: Uninitialized Subscripts491859
+Node: Delete493478
+Ref: Delete-Footnote-1496230
+Node: Multidimensional496287
+Node: Multiscanning499382
+Node: Arrays of Arrays500973
+Node: Arrays Summary505740
+Node: Functions507833
+Node: Built-in508871
+Node: Calling Built-in509952
+Node: Numeric Functions511948
+Ref: Numeric Functions-Footnote-1516781
+Ref: Numeric Functions-Footnote-2517138
+Ref: Numeric Functions-Footnote-3517186
+Node: String Functions517458
+Ref: String Functions-Footnote-1540962
+Ref: String Functions-Footnote-2541090
+Ref: String Functions-Footnote-3541338
+Node: Gory Details541425
+Ref: table-sub-escapes543216
+Ref: table-sub-proposed544735
+Ref: table-posix-sub546098
+Ref: table-gensub-escapes547639
+Ref: Gory Details-Footnote-1548462
+Node: I/O Functions548616
+Ref: table-system-return-values555198
+Ref: I/O Functions-Footnote-1557178
+Ref: I/O Functions-Footnote-2557326
+Node: Time Functions557446
+Ref: Time Functions-Footnote-1567951
+Ref: Time Functions-Footnote-2568019
+Ref: Time Functions-Footnote-3568177
+Ref: Time Functions-Footnote-4568288
+Ref: Time Functions-Footnote-5568400
+Ref: Time Functions-Footnote-6568627
+Node: Bitwise Functions568893
+Ref: table-bitwise-ops569487
+Ref: Bitwise Functions-Footnote-1573825
+Node: Type Functions573998
+Node: I18N Functions576530
+Node: User-defined578181
+Node: Definition Syntax578986
+Ref: Definition Syntax-Footnote-1584673
+Node: Function Example584744
+Ref: Function Example-Footnote-1587666
+Node: Function Caveats587688
+Node: Calling A Function588206
+Node: Variable Scope589164
+Node: Pass By Value/Reference592158
+Node: Return Statement595657
+Node: Dynamic Typing598636
+Node: Indirect Calls599566
+Ref: Indirect Calls-Footnote-1609817
+Node: Functions Summary609945
+Node: Library Functions612650
+Ref: Library Functions-Footnote-1616257
+Ref: Library Functions-Footnote-2616400
+Node: Library Names616571
+Ref: Library Names-Footnote-1620031
+Ref: Library Names-Footnote-2620254
+Node: General Functions620340
+Node: Strtonum Function621443
+Node: Assert Function624465
+Node: Round Function627791
+Node: Cliff Random Function629332
+Node: Ordinal Functions630348
+Ref: Ordinal Functions-Footnote-1633411
+Ref: Ordinal Functions-Footnote-2633663
+Node: Join Function633873
+Ref: Join Function-Footnote-1635643
+Node: Getlocaltime Function635843
+Node: Readfile Function639585
+Node: Shell Quoting641557
+Node: Data File Management642958
+Node: Filetrans Function643590
+Node: Rewind Function647686
+Node: File Checking649591
+Ref: File Checking-Footnote-1650925
+Node: Empty Files651126
+Node: Ignoring Assigns653105
+Node: Getopt Function654655
+Ref: Getopt Function-Footnote-1666124
+Node: Passwd Functions666324
+Ref: Passwd Functions-Footnote-1675163
+Node: Group Functions675251
+Ref: Group Functions-Footnote-1683148
+Node: Walking Arrays683355
+Node: Library Functions Summary686363
+Node: Library Exercises687769
+Node: Sample Programs688234
+Node: Running Examples689004
+Node: Clones689732
+Node: Cut Program690956
+Node: Egrep Program700885
+Ref: Egrep Program-Footnote-1708397
+Node: Id Program708507
+Node: Split Program712187
+Ref: Split Program-Footnote-1715646
+Node: Tee Program715775
+Node: Uniq Program718565
+Node: Wc Program725991
+Ref: Wc Program-Footnote-1730246
+Node: Miscellaneous Programs730340
+Node: Dupword Program731553
+Node: Alarm Program733583
+Node: Translate Program738438
+Ref: Translate Program-Footnote-1743003
+Node: Labels Program743273
+Ref: Labels Program-Footnote-1746624
+Node: Word Sorting746708
+Node: History Sorting750780
+Node: Extract Program752615
+Node: Simple Sed760144
+Node: Igawk Program763218
+Ref: Igawk Program-Footnote-1777549
+Ref: Igawk Program-Footnote-2777751
+Ref: Igawk Program-Footnote-3777873
+Node: Anagram Program777988
+Node: Signature Program781050
+Node: Programs Summary782297
+Node: Programs Exercises783511
+Ref: Programs Exercises-Footnote-1787640
+Node: Advanced Features787731
+Node: Nondecimal Data789721
+Node: Array Sorting791312
+Node: Controlling Array Traversal792012
+Ref: Controlling Array Traversal-Footnote-1800379
+Node: Array Sorting Functions800497
+Ref: Array Sorting Functions-Footnote-1805588
+Node: Two-way I/O805784
+Ref: Two-way I/O-Footnote-1812334
+Ref: Two-way I/O-Footnote-2812521
+Node: TCP/IP Networking812603
+Node: Profiling815721
+Ref: Profiling-Footnote-1824214
+Node: Advanced Features Summary824537
+Node: Internationalization826381
+Node: I18N and L10N827861
+Node: Explaining gettext828548
+Ref: Explaining gettext-Footnote-1834440
+Ref: Explaining gettext-Footnote-2834625
+Node: Programmer i18n834790
+Ref: Programmer i18n-Footnote-1839645
+Node: Translator i18n839694
+Node: String Extraction840488
+Ref: String Extraction-Footnote-1841620
+Node: Printf Ordering841706
+Ref: Printf Ordering-Footnote-1844492
+Node: I18N Portability844556
+Ref: I18N Portability-Footnote-1847012
+Node: I18N Example847075
+Ref: I18N Example-Footnote-1849881
+Node: Gawk I18N849954
+Node: I18N Summary850599
+Node: Debugger851940
+Node: Debugging852962
+Node: Debugging Concepts853403
+Node: Debugging Terms855212
+Node: Awk Debugging857787
+Node: Sample Debugging Session858693
+Node: Debugger Invocation859227
+Node: Finding The Bug860613
+Node: List of Debugger Commands867091
+Node: Breakpoint Control868424
+Node: Debugger Execution Control872118
+Node: Viewing And Changing Data875480
+Node: Execution Stack878854
+Node: Debugger Info880491
+Node: Miscellaneous Debugger Commands884562
+Node: Readline Support889650
+Node: Limitations890546
+Ref: Limitations-Footnote-1894777
+Node: Debugging Summary894828
+Node: Arbitrary Precision Arithmetic896107
+Node: Computer Arithmetic897523
+Ref: table-numeric-ranges901114
+Ref: Computer Arithmetic-Footnote-1901836
+Node: Math Definitions901893
+Ref: table-ieee-formats905207
+Ref: Math Definitions-Footnote-1905810
+Node: MPFR features905915
+Node: FP Math Caution907632
+Ref: FP Math Caution-Footnote-1908704
+Node: Inexactness of computations909073
+Node: Inexact representation910033
+Node: Comparing FP Values911393
+Node: Errors accumulate912475
+Node: Getting Accuracy913908
+Node: Try To Round916618
+Node: Setting precision917517
+Ref: table-predefined-precision-strings918214
+Node: Setting the rounding mode920044
+Ref: table-gawk-rounding-modes920418
+Ref: Setting the rounding mode-Footnote-1923826
+Node: Arbitrary Precision Integers924005
+Ref: Arbitrary Precision Integers-Footnote-1928922
+Node: POSIX Floating Point Problems929071
+Ref: POSIX Floating Point Problems-Footnote-1932953
+Node: Floating point summary932991
+Node: Dynamic Extensions935181
+Node: Extension Intro936734
+Node: Plugin License938000
+Node: Extension Mechanism Outline938797
+Ref: figure-load-extension939236
+Ref: figure-register-new-function940801
+Ref: figure-call-new-function941893
+Node: Extension API Description943955
+Node: Extension API Functions Introduction945487
+Node: General Data Types950346
+Ref: General Data Types-Footnote-1956301
+Node: Memory Allocation Functions956600
+Ref: Memory Allocation Functions-Footnote-1959445
+Node: Constructor Functions959544
+Node: Registration Functions961289
+Node: Extension Functions961974
+Node: Exit Callback Functions964597
+Node: Extension Version String965847
+Node: Input Parsers966510
+Node: Output Wrappers976392
+Node: Two-way processors980904
+Node: Printing Messages983169
+Ref: Printing Messages-Footnote-1984340
+Node: Updating ERRNO984493
+Node: Requesting Values985232
+Ref: table-value-types-returned985969
+Node: Accessing Parameters986852
+Node: Symbol Table Access988087
+Node: Symbol table by name988599
+Node: Symbol table by cookie990620
+Ref: Symbol table by cookie-Footnote-1994772
+Node: Cached values994836
+Ref: Cached values-Footnote-1998343
+Node: Array Manipulation998434
+Ref: Array Manipulation-Footnote-1999525
+Node: Array Data Types999562
+Ref: Array Data Types-Footnote-11002220
+Node: Array Functions1002312
+Node: Flattening Arrays1006170
+Node: Creating Arrays1013078
+Node: Redirection API1017847
+Node: Extension API Variables1020678
+Node: Extension Versioning1021311
+Ref: gawk-api-version1021748
+Node: Extension API Informational Variables1023504
+Node: Extension API Boilerplate1024568
+Node: Finding Extensions1028382
+Node: Extension Example1028941
+Node: Internal File Description1029739
+Node: Internal File Ops1033819
+Ref: Internal File Ops-Footnote-11045581
+Node: Using Internal File Ops1045721
+Ref: Using Internal File Ops-Footnote-11048104
+Node: Extension Samples1048378
+Node: Extension Sample File Functions1049907
+Node: Extension Sample Fnmatch1057556
+Node: Extension Sample Fork1059043
+Node: Extension Sample Inplace1060261
+Node: Extension Sample Ord1063471
+Node: Extension Sample Readdir1064307
+Ref: table-readdir-file-types1065196
+Node: Extension Sample Revout1066001
+Node: Extension Sample Rev2way1066590
+Node: Extension Sample Read write array1067330
+Node: Extension Sample Readfile1069272
+Node: Extension Sample Time1070367
+Node: Extension Sample API Tests1071715
+Node: gawkextlib1072207
+Node: Extension summary1074654
+Node: Extension Exercises1078356
+Node: Language History1079854
+Node: V7/SVR3.11081510
+Node: SVR41083662
+Node: POSIX1085096
+Node: BTL1086475
+Node: POSIX/GNU1087204
+Node: Feature History1093066
+Node: Common Extensions1107436
+Node: Ranges and Locales1108719
+Ref: Ranges and Locales-Footnote-11113335
+Ref: Ranges and Locales-Footnote-21113362
+Ref: Ranges and Locales-Footnote-31113597
+Node: Contributors1113818
+Node: History summary1119378
+Node: Installation1120758
+Node: Gawk Distribution1121702
+Node: Getting1122186
+Node: Extracting1123147
+Node: Distribution contents1124785
+Node: Unix Installation1130879
+Node: Quick Installation1131561
+Node: Shell Startup Files1133975
+Node: Additional Configuration Options1135053
+Node: Configuration Philosophy1136858
+Node: Non-Unix Installation1139227
+Node: PC Installation1139685
+Node: PC Binary Installation1141005
+Node: PC Compiling1142857
+Ref: PC Compiling-Footnote-11145651
+Node: PC Testing1145760
+Node: PC Using1146940
+Ref: PC Using-Footnote-11151093
+Node: Cygwin1151166
+Node: MSYS1151936
+Node: VMS Installation1152437
+Node: VMS Compilation1153228
+Ref: VMS Compilation-Footnote-11154457
+Node: VMS Dynamic Extensions1154515
+Node: VMS Installation Details1156200
+Node: VMS Running1158453
+Node: VMS GNV1162732
+Node: VMS Old Gawk1163467
+Node: Bugs1163938
+Node: Other Versions1168253
+Node: Installation summary1174837
+Node: Notes1175888
+Node: Compatibility Mode1176753
+Node: Additions1177535
+Node: Accessing The Source1178460
+Node: Adding Code1179895
+Node: New Ports1186114
+Node: Derived Files1190602
+Ref: Derived Files-Footnote-11196087
+Ref: Derived Files-Footnote-21196122
+Ref: Derived Files-Footnote-31196720
+Node: Future Extensions1196834
+Node: Implementation Limitations1197492
+Node: Extension Design1198675
+Node: Old Extension Problems1199829
+Ref: Old Extension Problems-Footnote-11201347
+Node: Extension New Mechanism Goals1201404
+Ref: Extension New Mechanism Goals-Footnote-11204768
+Node: Extension Other Design Decisions1204957
+Node: Extension Future Growth1207070
+Node: Old Extension Mechanism1207906
+Node: Notes summary1209669
+Node: Basic Concepts1210851
+Node: Basic High Level1211532
+Ref: figure-general-flow1211814
+Ref: figure-process-flow1212499
+Ref: Basic High Level-Footnote-11215800
+Node: Basic Data Typing1215985
+Node: Glossary1219313
+Node: Copying1251259
+Node: GNU Free Documentation License1288798
+Node: Index1313916
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index df4a194..5e40e86 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -6295,70 +6295,6 @@ str = "hi"      @ii{String variable}
 re = /foo/      @ii{Wrong!} re @ii{is the result of} $0 ~ /foo/
 @end example
 
-For a number of more advanced use cases (described later on in this
address@hidden), it would be nice to have regexp constants that
-are @dfn{strongly typed}; in other words, that denote a regexp useful
-for matching, and not an expression.
-
address@hidden provides this feature.  A strongly typed regexp constant
-looks almost like a regular regexp constant, except that it is preceded
-by an @samp{@@} sign:
-
address@hidden
-re = @@/foo/     @ii{Regexp variable}
address@hidden example
-
-Strongly typed regexp constants @emph{cannot} be used eveywhere that a
-regular regexp constant can, because this would make the language even more
-confusing.  Instead, you may use them only in certain contexts:
-
address@hidden @bullet
address@hidden
-On the righthand side of the @samp{~} and @samp{!~} operators: @samp{some_var 
~ @@/foo/}
-(@pxref{Regexp Usage}).
-
address@hidden
-In the @code{case} part of a @code{switch} statement
-(@pxref{Switch Statement}).
-
address@hidden
-As an argument to one of the built-in functions that accept regexp constants:
address@hidden()},
address@hidden()},
address@hidden()},
address@hidden()},
address@hidden()},
-and
address@hidden()}
-(@pxref{String Functions}).
-
address@hidden
-As a parameter in a call to a user-defined function
-(@pxref{User-defined}).
-
address@hidden
-On the righthand side of an assignment to a variable: @samp{some_var = 
@@/foo/}.
-In this case, the type of @code{some_var} is regexp. Additionally, 
@code{some_var}
-can be used with @samp{~} and @samp{!~}, passed to one of the built-in 
functions
-listed above, or passed as a parameter to a user-defined function.
address@hidden itemize
-
-You may use the @code{typeof()} built-in function
-(@pxref{Type Functions})
-to determine if a variable or function parameter is
-a regexp variable.
-
-The true power of this feature comes from the ability to create variables that
-have regexp type. Such variables can be passed on to user-defined functions,
-without the confusing aspects of computed regular expressions created from
-strings or string constants. They may also be passed through indirect function
-calls (@pxref{Indirect Calls})
-onto the built-in functions that accept regexp constants.
-
-When used in numeric conversions, strongly typed regexp variables convert
-to zero. When used in string conversions, they convert to the string
-value of the original regexp text.
-
 @node Regexp Summary
 @section Summary
 
@@ -6402,11 +6338,6 @@ treated as regular expressions).
 case sensitivity of regexp matching.  In other @command{awk}
 versions, use @code{tolower()} or @code{toupper()}.
 
address@hidden
-Strongly typed regexp constants (@code{@@/.../}) enable
-certain advanced use cases to be described later on in the
address@hidden
-
 @end itemize
 
 
@@ -19575,9 +19506,6 @@ Return one of the following strings, depending upon the 
type of @var{x}:
 @item "array"
 @var{x} is an array.
 
address@hidden "regexp"
address@hidden is a strongly typed regexp (@pxref{Strong Regexp Constants}).
-
 @item "number"
 @var{x} is a number.
 
@@ -19634,8 +19562,7 @@ ends up turning it into a scalar.
 @end quotation
 
 The @code{typeof()} function is general; it allows you to determine
-if a variable or function parameter is a scalar, an array, or a strongly
-typed regexp.
+if a variable or function parameter is a scalar, an array.
 
 @code{isarray()} is deprecated; you should use @code{typeof()} instead.
 You should replace any existing uses of @samp{isarray(var)} in your
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 2b0a5c2..c5b8999 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -6079,70 +6079,6 @@ str = "hi"      @ii{String variable}
 re = /foo/      @ii{Wrong!} re @ii{is the result of} $0 ~ /foo/
 @end example
 
-For a number of more advanced use cases (described later on in this
address@hidden), it would be nice to have regexp constants that
-are @dfn{strongly typed}; in other words, that denote a regexp useful
-for matching, and not an expression.
-
address@hidden provides this feature.  A strongly typed regexp constant
-looks almost like a regular regexp constant, except that it is preceded
-by an @samp{@@} sign:
-
address@hidden
-re = @@/foo/     @ii{Regexp variable}
address@hidden example
-
-Strongly typed regexp constants @emph{cannot} be used eveywhere that a
-regular regexp constant can, because this would make the language even more
-confusing.  Instead, you may use them only in certain contexts:
-
address@hidden @bullet
address@hidden
-On the righthand side of the @samp{~} and @samp{!~} operators: @samp{some_var 
~ @@/foo/}
-(@pxref{Regexp Usage}).
-
address@hidden
-In the @code{case} part of a @code{switch} statement
-(@pxref{Switch Statement}).
-
address@hidden
-As an argument to one of the built-in functions that accept regexp constants:
address@hidden()},
address@hidden()},
address@hidden()},
address@hidden()},
address@hidden()},
-and
address@hidden()}
-(@pxref{String Functions}).
-
address@hidden
-As a parameter in a call to a user-defined function
-(@pxref{User-defined}).
-
address@hidden
-On the righthand side of an assignment to a variable: @samp{some_var = 
@@/foo/}.
-In this case, the type of @code{some_var} is regexp. Additionally, 
@code{some_var}
-can be used with @samp{~} and @samp{!~}, passed to one of the built-in 
functions
-listed above, or passed as a parameter to a user-defined function.
address@hidden itemize
-
-You may use the @code{typeof()} built-in function
-(@pxref{Type Functions})
-to determine if a variable or function parameter is
-a regexp variable.
-
-The true power of this feature comes from the ability to create variables that
-have regexp type. Such variables can be passed on to user-defined functions,
-without the confusing aspects of computed regular expressions created from
-strings or string constants. They may also be passed through indirect function
-calls (@pxref{Indirect Calls})
-onto the built-in functions that accept regexp constants.
-
-When used in numeric conversions, strongly typed regexp variables convert
-to zero. When used in string conversions, they convert to the string
-value of the original regexp text.
-
 @node Regexp Summary
 @section Summary
 
@@ -6186,11 +6122,6 @@ treated as regular expressions).
 case sensitivity of regexp matching.  In other @command{awk}
 versions, use @code{tolower()} or @code{toupper()}.
 
address@hidden
-Strongly typed regexp constants (@code{@@/.../}) enable
-certain advanced use cases to be described later on in the
address@hidden
-
 @end itemize
 
 
@@ -18687,9 +18618,6 @@ Return one of the following strings, depending upon the 
type of @var{x}:
 @item "array"
 @var{x} is an array.
 
address@hidden "regexp"
address@hidden is a strongly typed regexp (@pxref{Strong Regexp Constants}).
-
 @item "number"
 @var{x} is a number.
 
@@ -18746,8 +18674,7 @@ ends up turning it into a scalar.
 @end quotation
 
 The @code{typeof()} function is general; it allows you to determine
-if a variable or function parameter is a scalar, an array, or a strongly
-typed regexp.
+if a variable or function parameter is a scalar, an array.
 
 @code{isarray()} is deprecated; you should use @code{typeof()} instead.
 You should replace any existing uses of @samp{isarray(var)} in your
diff --git a/eval.c b/eval.c
index 6bd854e..3e33530 100644
--- a/eval.c
+++ b/eval.c
@@ -236,7 +236,6 @@ static const char *const nodetypes[] = {
        "Node_val",
        "Node_regex",
        "Node_dynregex",
-       "Node_typedregex",
        "Node_var",
        "Node_var_array",
        "Node_var_new",
@@ -1327,11 +1326,6 @@ setup_frame(INSTRUCTION *pc)
                        r->var_value = m;
                        break;
 
-               case Node_typedregex:
-                       r->type = Node_var;
-                       r->var_value = m;
-                       break;
-
                default:
                        cant_happen();
                }
diff --git a/interpret.h b/interpret.h
index 3bb4532..6b832c1 100644
--- a/interpret.h
+++ b/interpret.h
@@ -268,7 +268,7 @@ uninitialized_scalar:
                                        r = r->var_value;
                        }
 
-                       if (r->type == Node_val || r->type == Node_typedregex)
+                       if (r->type == Node_val)
                                UPREF(r);
                        PUSH(r);
                        break;
@@ -987,8 +987,6 @@ arrayfor:
                                r = POP_STRING();
                                unref(m->re_exp);
                                m->re_exp = r;
-                       } else if (m->type == Node_typedregex) {
-                               UPREF(m);
                        }
                        PUSH(m);
                        break;
diff --git a/profile.c b/profile.c
index be8977e..56df9e3 100644
--- a/profile.c
+++ b/profile.c
@@ -33,7 +33,6 @@ static char *pp_list(int nargs, const char *paren, const char 
*delim);
 static char *pp_group3(const char *s1, const char *s2, const char *s3);
 static char *pp_concat(int nargs);
 static char *pp_string_or_strong_regex(const char *in_str, size_t len, int 
delim, bool strong_regex);
-static char *pp_strong_regex(const char *in_str, size_t len, int delim);
 static bool is_binary(int type);
 static bool is_scalar(int type);
 static int prec_level(int type);
@@ -637,17 +636,14 @@ cleanup:
                        break;
 
                case Op_push_re:
-                       if (pc->memory->type != Node_regex && pc->memory->type 
!= Node_typedregex)
+                       if (pc->memory->type != Node_regex)
                                break;
                        /* else 
                                fall through */
                case Op_match_rec:
                {
                        NODE *re = pc->memory->re_exp;
-                       if (pc->memory->type == Node_regex)
-                               str = pp_string(re->stptr, re->stlen, '/');
-                       else
-                               str = pp_strong_regex(re->stptr, re->stlen, 
'/');
+                       str = pp_string(re->stptr, re->stlen, '/');
                        pp_push(pc->opcode, str, CAN_FREE);
                }
                        break;
@@ -669,11 +665,6 @@ cleanup:
                                txt = t2->pp_str;
                                str = pp_group3(txt, op2str(pc->opcode), restr);
                                pp_free(t2);
-                       } else if (m->type == Node_typedregex) {
-                               NODE *re = m->re_exp;
-                               restr = pp_strong_regex(re->stptr, re->stlen, 
'/');
-                               str = pp_group3(txt, op2str(pc->opcode), restr);
-                               efree(restr);
                        } else {
                                NODE *re = m->re_exp;
                                restr = pp_string(re->stptr, re->stlen, '/');
@@ -1414,13 +1405,6 @@ pp_string(const char *in_str, size_t len, int delim)
        return pp_string_or_strong_regex(in_str, len, delim, false);
 }
 
-/* pp_strong_regex --- pretty format a hard regex constant */
-
-static char *
-pp_strong_regex(const char *in_str, size_t len, int delim)
-{
-       return pp_string_or_strong_regex(in_str, len, delim, true);
-}
 
 /* pp_string_or_strong_regex --- pretty format a string, regex, or hard regex 
constant */
 
@@ -1464,9 +1448,6 @@ pp_string_or_strong_regex(const char *in_str, size_t len, 
int delim, bool strong
        obufout = obuf;
        ofre = osiz - 1;
 
-       if (strong_regex)
-               *obufout++ = '@';
-
        *obufout++ = delim;
        for (; len > 0; len--, str++) {
                chksize(2);             /* make space for 2 chars */
diff --git a/re.c b/re.c
index d92560d..3b01823 100644
--- a/re.c
+++ b/re.c
@@ -351,14 +351,10 @@ re_update(NODE *t)
                /* regex was compiled with settings matching IGNORECASE */
                if ((t->re_flags & CONSTANT) != 0) {
                        /* it's a constant, so just return it as is */
-                       assert(t->type == Node_regex || t->type == 
Node_typedregex);
+                       assert(t->type == Node_regex);
                        return t->re_reg;
                }
                t1 = t->re_exp;
-               if (t1->type == Node_typedregex) {
-                       assert((t1->re_flags & CONSTANT) != 0);
-                       return t1->re_reg;
-               }
                if (t->re_text != NULL) {
                        /* if contents haven't changed, just return it */
                        if (cmp_nodes(t->re_text, t1) == 0)
diff --git a/test/ChangeLog b/test/ChangeLog
index de57804..1736757 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,14 @@
+2016-08-03         Arnold D. Robbins     <address@hidden>
+
+       Remove typed regexes until they can be done correctly.
+
+       * typeof1.awk, typeof1.ok: Adjusted.
+       * typeof3.awk, typeof3.ok: Adjusted.
+       * gsubind.awk, gsubind.ok: Adjusted.
+       * Makefile.am (TYPED_RE_TESTS): New macro to hold typed regexp tests.
+       (dbugtypedre1, dbugtypedre2, typedregex1, typedregex2,
+       typedregex3): Moved into it.
+
 2016-08-01         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (ignrcas3): Adjust to check that the el_GR.xxx locale
diff --git a/test/Makefile.am b/test/Makefile.am
index 3ac9ee7..6748545 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1190,11 +1190,15 @@ UNIX_TESTS = \
        fflush getlnhd localenl pid pipeio1 pipeio2 poundbang \
        rtlen rtlen01 space strftlng
 
+TYPED_RE_TESTS = \
+       dbugtypedre1 dbugtypedre2 \
+       typedregex1 typedregex2 typedregex3
+
 GAWK_EXT_TESTS = \
        aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
        backw badargs beginfile1 beginfile2 binmode1 charasbytes \
        colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 clos1way6 \
-       crlf dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \
+       crlf dbugeval dbugeval2 delsub \
        devfd devfd1 devfd2 dumpvars errno exit \
        fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen 
\
        functab1 functab2 functab3 fwtest fwtest2 fwtest3 \
@@ -1216,7 +1220,7 @@ GAWK_EXT_TESTS = \
        splitarg4 strftime \
        strtonum strtonum1 switch2 symtab1 symtab2 symtab3 symtab4 symtab5 
symtab6 \
        symtab7 symtab8 symtab9 symtab10 \
-       typedregex1 typedregex2 typedregex3 typeof1 typeof2 typeof3 typeof4 \
+       typeof1 typeof2 typeof3 typeof4 \
        timeout \
        watchpoint1
 
diff --git a/test/Makefile.in b/test/Makefile.in
index 0798979..8df786d 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1446,11 +1446,15 @@ UNIX_TESTS = \
        fflush getlnhd localenl pid pipeio1 pipeio2 poundbang \
        rtlen rtlen01 space strftlng
 
+TYPED_RE_TESTS = \
+       dbugtypedre1 dbugtypedre2 \
+       typedregex1 typedregex2 typedregex3
+
 GAWK_EXT_TESTS = \
        aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
        backw badargs beginfile1 beginfile2 binmode1 charasbytes \
        colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 clos1way6 \
-       crlf dbugeval dbugeval2 dbugtypedre1 dbugtypedre2 delsub \
+       crlf dbugeval dbugeval2 delsub \
        devfd devfd1 devfd2 dumpvars errno exit \
        fieldwdth forcenum fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen 
\
        functab1 functab2 functab3 fwtest fwtest2 fwtest3 \
@@ -1472,7 +1476,7 @@ GAWK_EXT_TESTS = \
        splitarg4 strftime \
        strtonum strtonum1 switch2 symtab1 symtab2 symtab3 symtab4 symtab5 
symtab6 \
        symtab7 symtab8 symtab9 symtab10 \
-       typedregex1 typedregex2 typedregex3 typeof1 typeof2 typeof3 typeof4 \
+       typeof1 typeof2 typeof3 typeof4 \
        timeout \
        watchpoint1
 
@@ -3790,6 +3794,21 @@ getlnhd:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+typedregex1:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
+typedregex2:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
+typedregex3:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 aadelete1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
@@ -4240,21 +4259,6 @@ symtab7:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
-typedregex1:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
-typedregex2:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
-typedregex3:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
 typeof1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 951590a..b28a32a 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1017,6 +1017,21 @@ getlnhd:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+typedregex1:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
+typedregex2:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
+typedregex3:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 aadelete1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
@@ -1467,21 +1482,6 @@ symtab7:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  < 
"$(srcdir)"/address@hidden >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
-typedregex1:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
-typedregex2:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
-typedregex3:
-       @echo $@
-       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
-       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
-
 typeof1:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/gsubind.awk b/test/gsubind.awk
index fce0d81..fec6cbc 100644
--- a/test/gsubind.awk
+++ b/test/gsubind.awk
@@ -1,9 +1,10 @@
 BEGIN {
        f = "foo"
-       p = @/o/
+#      p = @/o/
+p = "o"
        gsub(p, "q", f)
        print f
-       fun = "gsub"
-       @fun(p, "q", f)
-       print f
+#      fun = "gsub"
+#      @fun(p, "q", f)
+#      print f
 }
diff --git a/test/gsubind.ok b/test/gsubind.ok
index d25f018..ca6662e 100644
--- a/test/gsubind.ok
+++ b/test/gsubind.ok
@@ -1,3 +1 @@
 fqq
-gawk: gsubind.awk:7: fatal: gsub: can be called indirectly only with two 
arguments
-EXIT CODE: 2
diff --git a/test/typeof1.awk b/test/typeof1.awk
index c301030..9db6448 100644
--- a/test/typeof1.awk
+++ b/test/typeof1.awk
@@ -1,9 +1,9 @@
 BEGIN {
        a = 5 ; print typeof(a)
        print typeof(b)
-       print typeof(@/foo/)
+#      print typeof(@/foo/)
        c = "foo" ; print typeof(c)
        d[1] = 1 ; print typeof(d), typeof(d[1])
-       e = @/foo/ ; print typeof(e)
-       print typeof(@/bar/)
+#      e = @/foo/ ; print typeof(e)
+#      print typeof(@/bar/)
 }
diff --git a/test/typeof1.ok b/test/typeof1.ok
index 132cc24..c172da5 100644
--- a/test/typeof1.ok
+++ b/test/typeof1.ok
@@ -1,7 +1,4 @@
 number
 untyped
-regexp
 string
 array number
-regexp
-regexp
diff --git a/test/typeof3.awk b/test/typeof3.awk
index d148f37..e31bf60 100644
--- a/test/typeof3.awk
+++ b/test/typeof3.awk
@@ -1,13 +1,13 @@
-BEGIN {
-       x = @/xx/
-       print typeof(x)
-       print x
-}
+#BEGIN {
+#      x = @/xx/
+#      print typeof(x)
+#      print x
+#}
 
 # this set may not really be needed for the test
 BEGIN {
        x = 4
-       print typeof(@/xxx/)
+#      print typeof(@/xxx/)
        print typeof(3)
        print x
 }
diff --git a/test/typeof3.ok b/test/typeof3.ok
index a6cd6c4..9a89704 100644
--- a/test/typeof3.ok
+++ b/test/typeof3.ok
@@ -1,6 +1,3 @@
-regexp
-xx
-regexp
 number
 4
 number

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |   22 +
 NEWS             |   17 +-
 awk.h            |    9 +-
 awkgram.c        | 2121 ++++++++++++++++++++++++++----------------------------
 awkgram.y        |   70 +-
 builtin.c        |   27 +-
 debug.c          |    8 -
 doc/ChangeLog    |    6 +
 doc/gawk.1       |    1 -
 doc/gawk.info    | 1044 +++++++++++++--------------
 doc/gawk.texi    |   75 +-
 doc/gawktexi.in  |   75 +-
 eval.c           |    6 -
 interpret.h      |    4 +-
 profile.c        |   23 +-
 re.c             |    6 +-
 test/ChangeLog   |   11 +
 test/Makefile.am |    8 +-
 test/Makefile.in |   38 +-
 test/Maketests   |   30 +-
 test/gsubind.awk |    9 +-
 test/gsubind.ok  |    2 -
 test/typeof1.awk |    6 +-
 test/typeof1.ok  |    3 -
 test/typeof3.awk |   12 +-
 test/typeof3.ok  |    3 -
 26 files changed, 1625 insertions(+), 2011 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]