gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, feature/regex-type, updated. gawk-4.1.0-


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/regex-type, updated. gawk-4.1.0-1173-gb062ba3
Date: Wed, 18 Mar 2015 20:01:48 +0000

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, feature/regex-type has been updated
       via  b062ba39d52c7e9dee06ac73030aba248ee81168 (commit)
       via  e29498dcb6a94edadf3d3ad3f631331c7ee40a33 (commit)
       via  480aca31c7772dafeb1b97cd7a768bca2f49d3c7 (commit)
       via  925f9363c4b0a5bb9375298afcdcf404efb32587 (commit)
       via  e0c1194c4348e7adf99802461d45e3dd1bd192ff (commit)
      from  69b9c6bec08738933d79010ad8c9347e36d19bed (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=b062ba39d52c7e9dee06ac73030aba248ee81168

commit b062ba39d52c7e9dee06ac73030aba248ee81168
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Mar 18 22:01:19 2015 +0200

    Make @/.../ a terminal. Improve typeof() builtin function.

diff --git a/ChangeLog b/ChangeLog
index 6543cec..81a9889 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2015-03-18         Arnold D. Robbins     <address@hidden>
 
+       * builtin.c (do_typeof): Be smarter about checking for uninitialized
+       values; can now detect and return "untyped" for such values.
+       * awkgram.y (yylex): Collect @/.../ entirely in the lexer and return
+       a new terminal (HARD_REGEX).
+       (regexp): Reverted to just a regular awk regexp constant.
+       (hard_regexp): New nonterminal, can be used only in direct
+       assignment and as an argument in function call. New set of nonterminals
+       for function call expression lists.  More work still to do.
+
+2015-03-18         Arnold D. Robbins     <address@hidden>
+
        * config.guess, config.sub: Updated, from libtool 2.4.6.
 
 2015-03-17         Arnold D. Robbins     <address@hidden>
diff --git a/awkgram.c b/awkgram.c
index 6314704..aeda94c 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -240,51 +240,52 @@ extern int yydebug;
     FILENAME = 261,
     YNUMBER = 262,
     YSTRING = 263,
-    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
+    HARD_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
   };
 #endif
 /* Tokens.  */
@@ -294,51 +295,52 @@ extern int yydebug;
 #define FILENAME 261
 #define YNUMBER 262
 #define YSTRING 263
-#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
+#define HARD_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
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -356,7 +358,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 360 "awkgram.c" /* yacc.c:358  */
+#line 362 "awkgram.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -598,21 +600,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1135
+#define YYLAST   1219
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  75
+#define YYNTOKENS  76
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  66
+#define YYNNTS  69
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  190
+#define YYNRULES  201
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  338
+#define YYNSTATES  348
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   308
+#define YYMAXUTOK   309
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -624,16 +626,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,    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,    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,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    70,     2,    71,    65,     2,     2,     2,     2,     2,
+       2,    71,     2,    72,    66,     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,    72,     2,    73,     2,     2,     2,     2,
+       2,     2,     2,    73,     2,    74,     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,
@@ -651,7 +653,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,    64
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    65
 };
 
 #if YYDEBUG
@@ -661,23 +663,24 @@ static const yytype_uint16 yyrline[] =
        0,   205,   205,   207,   212,   213,   217,   229,   234,   245,
      251,   257,   266,   274,   276,   281,   289,   291,   297,   305,
      315,   345,   359,   373,   381,   392,   404,   406,   408,   414,
-     422,   423,   427,   457,   459,   472,   471,   505,   507,   512,
-     518,   546,   551,   552,   556,   558,   560,   567,   657,   699,
-     741,   854,   861,   868,   878,   887,   896,   905,   916,   932,
-     931,   955,   967,   967,  1065,  1065,  1098,  1128,  1134,  1135,
-    1141,  1142,  1149,  1154,  1166,  1180,  1182,  1190,  1195,  1197,
-    1208,  1210,  1219,  1220,  1228,  1233,  1233,  1244,  1248,  1256,
-    1257,  1260,  1262,  1267,  1268,  1277,  1278,  1283,  1288,  1294,
-    1296,  1298,  1305,  1306,  1312,  1313,  1318,  1320,  1325,  1327,
-    1335,  1340,  1349,  1356,  1358,  1360,  1376,  1386,  1393,  1395,
-    1400,  1402,  1404,  1412,  1414,  1419,  1421,  1426,  1428,  1430,
-    1480,  1482,  1484,  1486,  1488,  1490,  1492,  1494,  1508,  1513,
-    1518,  1543,  1549,  1551,  1553,  1555,  1557,  1559,  1564,  1568,
-    1600,  1602,  1608,  1614,  1627,  1628,  1629,  1634,  1639,  1643,
-    1647,  1662,  1675,  1680,  1717,  1746,  1747,  1753,  1754,  1759,
-    1761,  1768,  1785,  1802,  1804,  1811,  1816,  1824,  1834,  1846,
-    1855,  1859,  1863,  1867,  1871,  1875,  1878,  1880,  1884,  1888,
-    1892
+     422,   423,   427,   462,   461,   495,   522,   524,   529,   535,
+     563,   568,   569,   573,   575,   577,   584,   674,   716,   758,
+     871,   878,   885,   895,   904,   913,   922,   933,   949,   948,
+     972,   984,   984,  1082,  1082,  1115,  1145,  1151,  1152,  1158,
+    1159,  1166,  1171,  1183,  1197,  1199,  1207,  1212,  1214,  1222,
+    1231,  1233,  1242,  1243,  1251,  1256,  1256,  1267,  1271,  1279,
+    1280,  1283,  1285,  1290,  1291,  1300,  1301,  1306,  1311,  1317,
+    1319,  1321,  1328,  1329,  1335,  1336,  1341,  1343,  1348,  1350,
+    1358,  1363,  1372,  1373,  1378,  1380,  1385,  1387,  1395,  1400,
+    1408,  1409,  1414,  1421,  1426,  1428,  1430,  1446,  1456,  1463,
+    1465,  1470,  1472,  1474,  1482,  1484,  1489,  1491,  1496,  1498,
+    1500,  1550,  1552,  1554,  1556,  1558,  1560,  1562,  1564,  1578,
+    1583,  1588,  1613,  1619,  1621,  1623,  1625,  1627,  1629,  1634,
+    1638,  1670,  1672,  1678,  1684,  1697,  1698,  1699,  1704,  1709,
+    1713,  1717,  1732,  1745,  1750,  1787,  1816,  1817,  1823,  1824,
+    1829,  1831,  1838,  1855,  1872,  1874,  1881,  1886,  1894,  1904,
+    1916,  1925,  1929,  1933,  1937,  1941,  1945,  1948,  1950,  1954,
+    1958,  1962
 };
 #endif
 
@@ -687,25 +690,26 @@ static const yytype_uint16 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "FUNC_CALL", "NAME", "REGEXP",
-  "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", "regexp", "normal_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", "exp",
+  "FILENAME", "YNUMBER", "YSTRING", "HARD_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",
+  "regexp", "address@hidden", "hard_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",
@@ -725,60 +729,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,    63,    58,    44,    60,    62,    43,    45,
-      42,    47,    37,    33,   308,    94,    36,    40,    41,    64,
-      91,    93,   123,   125,    59
+     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
 };
 # endif
 
-#define YYPACT_NINF -278
+#define YYPACT_NINF -276
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-278)))
+  (!!((Yystate) == (-276)))
 
-#define YYTABLE_NINF -106
+#define YYTABLE_NINF -114
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-106)))
+  (!!((Yytable_value) == (-114)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -278,   398,  -278,  -278,   -47,   -40,  -278,  -278,  -278,  -278,
-     195,  -278,  -278,     9,     9,     9,   -29,    -9,  -278,  -278,
-    -278,   999,   999,  -278,   999,  1045,   801,   202,  -278,   160,
-     -31,  -278,  -278,  -278,    11,   738,   972,   349,   393,  -278,
-    -278,  -278,  -278,   256,   769,   801,  -278,    36,  -278,  -278,
-    -278,  -278,  -278,    21,    19,  -278,    45,  -278,  -278,  -278,
-     769,   769,   177,    44,   138,    44,    44,   999,   141,  -278,
-    -278,    48,   289,   130,   169,  -278,  -278,    60,  -278,  -278,
-    -278,    11,  -278,    60,  -278,   144,  -278,  -278,   999,   147,
-     999,   999,   999,    60,  -278,  -278,  -278,   999,   115,   349,
-     999,   999,   999,   999,   999,   999,   999,   999,   999,   999,
-     999,   999,  -278,  -278,  -278,  -278,   142,   999,   105,     8,
-    1014,    14,  -278,  -278,  -278,    47,   999,  -278,   105,   105,
-     289,  -278,  -278,  -278,   999,    60,  -278,   146,   847,  -278,
-    -278,    13,   -28,  -278,    26,   -28,    11,  -278,   618,  -278,
-    -278,    56,  -278,   295,    15,  1078,   999,    90,     9,    80,
-      80,    44,    44,    44,    44,    80,    80,    44,    44,    44,
-      44,  -278,  1014,  -278,  -278,  -278,  -278,   105,    82,   349,
-    -278,  -278,  1014,  -278,   147,  -278,  1014,  -278,  -278,  -278,
-    -278,  -278,   111,  -278,     6,   129,   134,    60,   139,   -28,
-     -28,  -278,  -278,   -28,   999,   -28,    60,  -278,  -278,   -28,
-    -278,  -278,  1014,  -278,   133,    60,   999,  1014,  -278,    60,
-    -278,   173,  -278,   999,   999,  -278,   206,   999,   999,   690,
-     880,  -278,  -278,  -278,   -28,  1014,  -278,  -278,  -278,   318,
-     618,    60,  -278,  -278,  1014,  -278,  -278,  -278,   289,   -28,
-     -40,   145,   289,   289,   189,    -4,  -278,   133,  -278,   801,
-     207,  -278,  -278,  -278,    60,  -278,  -278,    37,  -278,  -278,
-    -278,    60,    60,   153,   147,    60,    48,  -278,  -278,   690,
-    -278,  -278,   -31,   690,   999,   105,   723,   146,   999,   210,
-    -278,  -278,   289,    60,   239,    60,   972,    60,   170,    60,
-     690,    60,   926,   690,  -278,   280,   172,  -278,   163,  -278,
-    -278,   926,   105,  -278,  -278,  -278,   226,   237,   -33,  -278,
-     172,  -278,    60,  -278,   105,    60,  -278,  -278,    60,  -278,
-      60,   690,  -278,   470,   690,  -278,   544,  -278
+    -276,   359,  -276,  -276,   -32,   -23,  -276,  -276,  -276,  -276,
+     171,  -276,  -276,    25,    25,    25,    -8,    61,  -276,  -276,
+    -276,  1122,  1122,  -276,  1122,  1149,   852,   152,  -276,   -24,
+      -7,  -276,  -276,    87,   284,  1048,   310,   354,  -276,  -276,
+    -276,  -276,   212,   778,   852,  -276,     1,  -276,  -276,  -276,
+    -276,  -276,    19,    75,  -276,    88,  -276,  -276,  -276,   778,
+     778,   146,    94,    12,    94,    94,  1122,    66,  -276,  -276,
+       7,   229,    34,    67,  -276,   102,  -276,  -276,  -276,    87,
+    -276,   102,  -276,   157,  -276,  -276,  1122,   159,  1122,  1122,
+    1122,   102,  -276,  -276,  -276,  1122,   125,   310,  1122,  1122,
+    1122,  1122,  1122,  1122,  1122,  1122,  1122,  1122,  1122,  1122,
+    -276,   156,  -276,  -276,   158,  1122,  -276,  -276,  -276,   101,
+      92,  -276,   867,     6,   867,  -276,  -276,  -276,    43,  1122,
+    -276,   101,   101,   229,  -276,  -276,  -276,  1122,   102,  -276,
+     130,   899,  -276,  -276,     9,   -21,  -276,    15,   -21,    87,
+    -276,   582,  -276,  -276,    22,  -276,   219,   333,  1031,  1122,
+     166,    25,   248,   248,    94,    94,    94,    94,   248,   248,
+      94,    94,    94,    94,  -276,  -276,   867,  -276,  1075,   825,
+    -276,  -276,  -276,   101,   112,   310,  -276,  -276,   867,  -276,
+     159,  -276,   867,  -276,  -276,  -276,  -276,  -276,   105,  -276,
+      13,   111,   114,   102,   115,   -21,   -21,  -276,  -276,   -21,
+    1122,   -21,   102,  -276,  -276,   -21,  -276,  -276,   867,  -276,
+     113,   102,  1122,   867,  -276,  -276,  -276,  -276,   102,  -276,
+      49,  -276,  1122,  1122,  -276,   176,  1122,  1122,   698,   932,
+    -276,  -276,  -276,   -21,   867,  -276,  -276,  -276,   629,   582,
+     102,  -276,  -276,   867,  -276,  -276,  -276,   229,   -21,   -23,
+     117,   229,   229,   162,     4,  -276,   113,  -276,   852,   181,
+    -276,   186,  -276,  -276,   102,  -276,  -276,    38,  -276,  -276,
+    -276,   102,   102,   127,   159,   102,     7,  -276,  -276,   698,
+    -276,  -276,    -7,   698,  1122,   101,   745,   130,  1122,   177,
+    -276,  -276,   229,   102,   259,   102,  1048,   102,   141,   102,
+     698,   102,   980,   698,  -276,   271,   144,  -276,   132,  -276,
+    -276,   980,   101,  -276,  -276,  -276,   197,   223,  -276,  -276,
+     144,  -276,   102,  -276,   101,   102,  -276,  -276,   102,  -276,
+     102,   698,  -276,   432,   698,  -276,   507,  -276
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -786,64 +791,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     6,     0,   176,   158,   159,    21,    22,
-       0,    23,    24,   165,     0,     0,     0,   153,     5,    89,
-      38,     0,     0,    37,     0,     0,     0,     0,     3,     0,
-       0,   148,    33,    35,     4,    19,   119,   127,   128,   130,
-     154,   162,   178,   155,     0,     0,   173,     0,   177,    27,
-      26,    30,    31,     0,     0,    28,    93,   166,   156,   157,
-       0,     0,     0,   161,   155,   160,   149,     0,   182,   155,
-     108,     0,   106,     0,     0,    34,   163,    91,   188,     7,
-       8,    42,    39,    91,     9,     0,    90,   123,     0,     0,
-       0,     0,     0,    91,   124,   126,   125,     0,     0,   129,
+       2,     0,     1,     6,     0,   187,   169,   170,    21,    22,
+       0,    23,    24,   176,     0,     0,     0,   164,     5,    89,
+      37,     0,     0,    36,     0,     0,     0,     0,     3,     0,
+       0,   159,    33,     4,    19,   130,   138,   139,   141,   165,
+     173,   189,   166,     0,     0,   184,     0,   188,    27,    26,
+      30,    31,     0,     0,    28,    93,   177,   167,   168,     0,
+       0,     0,   172,   166,   171,   160,     0,   193,   166,   108,
+       0,   106,     0,     0,   174,    91,   199,     7,     8,    41,
+      38,    91,     9,     0,    90,   134,     0,     0,     0,     0,
+       0,    91,   135,   137,   136,     0,     0,   140,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   121,   120,   138,   139,     0,     0,     0,     0,
-     106,     0,   175,   174,    29,     0,     0,   137,     0,     0,
-       0,   180,   181,   179,   109,    91,   185,     0,     0,   150,
-      14,     0,     0,    17,     0,     0,    92,   183,     0,    43,
-      36,   115,   116,   113,   114,     0,     0,   117,   165,   135,
-     136,   132,   133,   134,   131,   146,   147,   143,   144,   145,
-     142,   122,   112,   164,   172,    99,    97,     0,     0,    94,
-     151,   152,   110,   190,     0,   111,   107,    13,    10,    16,
-      11,    41,     0,    59,     0,     0,     0,    91,     0,     0,
-       0,    80,    81,     0,   102,     0,    91,    40,    53,     0,
-      62,    46,    67,    39,   186,    91,     0,    20,   141,    91,
-     100,     0,   140,     0,   102,    64,     0,     0,     0,     0,
-      68,    54,    55,    56,     0,   103,    57,   184,    61,     0,
-       0,    91,   187,    44,   118,    32,   101,    98,     0,     0,
-     167,     0,     0,     0,     0,   176,    69,     0,    58,     0,
-      84,    82,    45,    25,    91,    60,    65,     0,   169,   171,
-      66,    91,    91,     0,     0,    91,     0,    85,    63,     0,
-     168,   170,     0,     0,     0,     0,     0,    83,     0,    87,
-      70,    48,     0,    91,     0,    91,    86,    91,     0,    91,
-       0,    91,    68,     0,    72,     0,     0,    71,     0,    49,
-      50,    68,     0,    88,    75,    78,     0,     0,     0,    79,
-       0,   189,    91,    47,     0,    91,    77,    76,    91,    39,
-      91,     0,    39,     0,     0,    52,     0,    51
+     132,   131,   149,   150,     0,     0,   116,    35,   121,     0,
+       0,   114,   120,     0,   106,   186,   185,    29,     0,     0,
+     148,     0,     0,     0,   191,   192,   190,   109,    91,   196,
+       0,     0,   161,    14,     0,     0,    17,     0,     0,    92,
+     194,     0,    42,    34,   126,   127,   124,   125,     0,     0,
+     128,   176,   146,   147,   143,   144,   145,   142,   157,   158,
+     154,   155,   156,   153,   123,   133,   122,   175,   117,     0,
+     183,    99,    97,     0,     0,    94,   162,   163,   110,   201,
+       0,   111,   107,    13,    10,    16,    11,    40,     0,    58,
+       0,     0,     0,    91,     0,     0,     0,    80,    81,     0,
+     102,     0,    91,    39,    52,     0,    61,    45,    66,    38,
+     197,    91,     0,    20,   152,   118,   119,   115,    91,   100,
+       0,   151,     0,   102,    63,     0,     0,     0,     0,    67,
+      53,    54,    55,     0,   103,    56,   195,    60,     0,     0,
+      91,   198,    43,   129,    32,   101,    98,     0,     0,   178,
+       0,     0,     0,     0,   187,    68,     0,    57,     0,    84,
+      82,     0,    44,    25,    91,    59,    64,     0,   180,   182,
+      65,    91,    91,     0,     0,    91,     0,    85,    62,     0,
+     179,   181,     0,     0,     0,     0,     0,    83,     0,    87,
+      69,    47,     0,    91,     0,    91,    86,    91,     0,    91,
+       0,    91,    67,     0,    71,     0,     0,    70,     0,    48,
+      49,    67,     0,    88,    74,    77,     0,     0,    78,    79,
+       0,   200,    91,    46,     0,    91,    76,    75,    91,    38,
+      91,     0,    38,     0,     0,    51,     0,    50
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -278,  -278,  -278,  -278,  -278,  -278,   216,  -278,  -278,  -278,
-     -58,   -27,  -278,  -278,  -197,   -95,  -131,  -278,  -278,  -222,
-    -278,  -278,  -277,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
-    -278,    67,    96,  -278,  -278,  -278,    25,   -49,   -24,     0,
-    -278,  -278,  -278,   -23,    57,  -278,   230,  -278,    -5,    99,
-    -278,  -278,    -7,   -42,  -278,  -278,   -82,    18,  -278,   -26,
-    -234,   -34,  -278,   -12,   -59,    84
+    -276,  -276,  -276,  -276,  -276,  -276,   215,  -276,  -276,  -276,
+     -66,  -276,   -96,  -276,  -195,   -74,    -5,  -276,  -276,  -235,
+    -276,  -276,  -275,  -276,  -276,  -276,  -276,  -276,  -276,  -276,
+    -276,     5,    47,  -276,  -276,  -276,    21,  -276,   -41,    97,
+    -276,   -27,    -1,  -276,  -276,  -276,   -46,    17,  -276,   233,
+    -276,     3,   121,  -276,  -276,   -11,   -37,  -276,  -276,   -82,
+      -2,  -276,   -28,  -223,   -49,  -276,   -15,   -68,   -93
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    28,   142,   145,    29,    79,    54,    55,    30,
-      31,    32,    85,    33,   148,    80,   207,   208,   224,   209,
-     239,   250,   257,   298,   307,   320,   210,   260,   278,   288,
-     211,   146,   147,   127,   177,   178,   234,   118,   119,   212,
-     117,    96,    97,    36,    37,    38,    39,    40,    41,    56,
-     266,   267,   268,    46,    47,    48,    42,    43,   133,   213,
-     214,   139,   241,   215,   322,   138
+      -1,     1,    28,   145,   148,    29,    77,    53,    54,    30,
+      31,    83,   118,    32,   151,    78,   213,   214,   233,   215,
+     248,   259,   266,   308,   317,   330,   216,   269,   288,   298,
+     217,   149,   150,   130,   183,   184,   243,   270,    70,   119,
+     120,   121,   218,   115,    94,    95,    35,    36,    37,    38,
+      39,    40,    55,   276,   277,   278,    45,    46,    47,    41,
+      42,   136,   219,   220,   142,   250,   221,   332,   141
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -851,303 +857,321 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      75,    35,    71,    82,    82,   123,   262,   152,   256,   134,
-     225,   128,   129,     5,   187,   134,   240,    83,  -105,    20,
-      44,   121,    76,    19,    87,   312,    72,   189,    23,    88,
-      45,    57,    58,    59,   324,    75,   274,   137,    60,    64,
-      64,    77,    64,    69,   120,   120,    78,   188,   175,   134,
-     190,   176,   122,   280,    64,    89,    90,    76,    61,  -105,
-     120,   120,    86,   135,   -12,    87,    45,   130,    34,   135,
-     124,    94,    95,   226,   323,    25,  -105,   -15,    63,    65,
-     256,    66,  -105,   220,   173,   174,   125,   -12,   151,   256,
-     153,   154,   155,    99,   180,   181,    81,   157,   254,  -106,
-     -15,   126,   222,   135,   231,   232,    45,    45,   233,   105,
-     236,    19,    94,    95,   238,   -95,   136,   172,    64,    64,
-      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
-      83,   140,   333,    83,   182,   336,   141,   135,   186,   258,
-     102,   103,   104,   219,    64,   105,  -106,  -106,   289,   150,
-     -96,     5,   291,   158,   265,   171,   217,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   310,
-     143,   304,   313,   136,   246,   144,    57,   247,   223,   149,
-       4,   114,   115,   179,   131,   132,   184,    83,    83,   156,
-     261,    83,   285,    83,   305,   306,   227,    83,    49,    50,
-     335,   228,   242,   337,   235,     4,   230,    78,   269,    81,
-     251,    19,    81,   270,   264,   273,   244,   277,   271,   272,
-     284,    19,    83,   248,   235,   269,   321,   252,   253,    20,
-     297,   183,    77,   326,    78,   276,   206,    83,    23,   120,
-      51,    52,   287,   -91,   327,   275,    84,   319,    87,   249,
-      73,   293,    74,    88,    20,    68,   290,   218,   299,    72,
-     281,   328,   221,    23,    53,   296,    81,    81,   112,   113,
-      81,     0,    81,     0,   295,     0,    81,     0,   325,    89,
-      90,    91,   301,     0,   292,     0,   294,   314,   315,     0,
-     330,    75,    92,   229,     0,    94,    95,     0,    87,   114,
-     115,    81,   237,    88,    87,     0,    64,     0,   116,    88,
-       0,   243,     0,    78,    64,   245,    81,     0,     0,    70,
-       0,     4,     5,     0,     0,     6,     7,     0,  -104,    89,
-      90,    91,    20,     0,     0,    89,     0,   263,   316,   317,
-       0,    23,    92,     0,     0,    94,    95,     0,     0,   318,
-       0,    94,    95,    99,     0,     0,    13,   136,     0,     0,
-     279,    14,    15,    16,    17,     0,     0,   282,   283,  -104,
-      20,   286,     0,     0,     0,     0,    21,    22,     0,    23,
-       0,    24,     0,     0,    25,   259,  -104,    62,     0,   300,
-       0,   302,  -104,   303,   308,   309,     0,   311,     2,     3,
-       0,     4,     5,     0,     0,     6,     7,   100,   101,   102,
-     103,   104,     0,     0,   105,     8,     9,     0,   329,     0,
-       0,   331,     0,     0,   332,     0,   334,     0,     0,     0,
-       0,     0,     0,    10,    11,    12,    13,     0,     0,     0,
-       0,    14,    15,    16,    17,    18,     0,     0,     0,    19,
-      20,   106,   107,   108,   109,   110,    21,    22,   111,    23,
-       0,    24,     0,     0,    25,    26,     0,    27,     0,     0,
-     -18,   191,   -18,     4,     5,     0,     0,     6,     7,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   192,
-       0,   193,   194,   195,   -74,   -74,   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,   -74,    20,     0,     0,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    62,
-       0,     0,    77,   -74,    78,   191,     0,     4,     5,     0,
-       0,     6,     7,     0,     0,     0,     0,     0,     0,     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,     0,     0,     0,
-       0,     0,    21,    22,     0,    23,     0,    24,     0,     0,
-      25,    26,     0,    62,     0,     0,    77,   -73,    78,   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,     0,     0,     0,     0,     0,
+      34,    80,    80,   123,   265,   155,    33,   137,   137,   126,
+     193,    56,    57,    58,    81,   174,   195,   234,   125,    63,
+      63,   140,    63,    68,   249,    71,   272,   179,    19,     5,
+      74,    19,    85,    63,    79,   143,    43,   322,    62,    64,
+     144,    65,   122,   124,   181,   284,   334,   182,    44,    75,
+     255,    76,    97,   256,    76,   290,   112,   113,   122,   122,
+      59,   -12,   138,   138,    74,   133,    75,   -15,   146,   127,
+     177,   194,    44,   147,   196,    44,   139,   265,   180,    92,
+      93,   235,   186,   187,   -12,   154,   265,   156,   157,   158,
+     -15,   230,    25,   178,   160,   333,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,   231,    44,
+     134,   135,   -95,   229,   176,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,    63,   152,    60,
+      81,   240,   241,    81,   228,   242,   188,   245,   159,    84,
+     192,   247,   314,   128,   343,   129,   185,   346,   138,     4,
+      79,   225,   227,    79,    19,     4,   131,   132,   223,    56,
+     103,  -113,   153,     5,   161,   117,   315,   316,   138,   267,
+     139,   190,   175,   232,    48,    49,  -114,   122,   122,   236,
+     260,   -96,   237,   239,   275,   189,   280,   137,    76,   283,
+      81,    81,   287,    19,    81,   294,    81,  -105,   307,   331,
+      81,    72,   295,    73,   336,   251,   212,   271,   274,   244,
+      79,    79,   281,   282,    79,   -91,    79,    50,    51,   329,
+      79,   253,   279,  -114,  -114,   110,   111,   286,    81,    85,
+     337,   257,   244,   263,    86,   261,   262,   297,  -105,    85,
+     279,    52,   138,    81,    86,    82,   303,   124,    79,   328,
+     238,   285,   306,   309,   258,  -105,   112,   113,    67,   246,
+      87,  -105,   338,    79,   300,   114,   291,    71,   252,    85,
+      87,    88,    89,   335,    86,   254,    92,    93,   324,   325,
+     117,   305,   224,    90,   299,   340,    92,    93,   301,   311,
+       0,     0,     0,   302,    85,   304,    63,   273,   139,    86,
+      87,    88,    89,     0,    63,   320,     0,     0,   323,   100,
+     101,   102,     0,    90,   103,     0,    92,    93,     0,     0,
+       0,   289,     0,    97,    20,    87,    88,    89,   292,   293,
+     326,   327,   296,    23,    76,     0,   345,     0,    90,   347,
+      91,    92,    93,    85,     0,     0,     0,     0,    86,     0,
+     310,     0,   312,     0,   313,   318,   319,     0,   321,     2,
+       3,     0,     4,     5,     0,     0,     6,     7,     0,    98,
+      99,   100,   101,   102,    87,    88,   103,     8,     9,   339,
+       0,     0,   341,     0,     0,   342,     0,   344,     0,     0,
+      92,    93,     0,     0,     0,    10,    11,    12,    13,     0,
+       0,     0,     0,    14,    15,    16,    17,    18,     0,     0,
+       0,    19,    20,   104,   105,   106,   107,   108,    21,    22,
+     109,    23,     0,    24,     0,     0,    25,    26,     0,    27,
+       0,     0,   -18,   197,   -18,     4,     5,     0,     0,     6,
+       7,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   198,     0,   199,   200,   201,   -73,   -73,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,     0,     0,
+       0,    13,   211,     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,   197,     0,
+       4,     5,     0,     0,     6,     7,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   198,     0,   199,
+     200,   201,   -72,   -72,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,     0,     0,     0,    13,   211,     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,    62,     0,     0,
-      77,   206,    78,     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,     4,     5,    13,   205,
-       6,     7,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,     0,    20,     0,     0,     0,     0,    87,    21,    22,
-       0,    23,    88,    24,     0,     0,    25,    26,     0,    62,
-       0,    13,    77,     0,    78,     0,    14,    15,    16,    17,
-      70,     0,     4,     5,     0,    20,     6,     7,    89,    90,
-      91,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-      26,    92,    62,    93,    94,    95,     0,    78,     0,     0,
-       0,     0,    70,     0,     4,     5,     0,    13,     6,     7,
+       0,    24,     0,     0,    25,    26,     0,    61,     0,     0,
+      75,   -72,    76,   197,     0,     4,     5,     0,     0,     6,
+       7,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   198,     0,   199,   200,   201,     0,     0,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,     0,     0,
+       0,    13,   211,     0,     0,     0,    14,    15,    16,    17,
+      69,     0,     4,     5,     0,    20,     6,     7,     0,     0,
+    -104,    21,    22,     0,    23,     0,    24,     0,     0,    25,
+      26,     0,    61,     0,     0,    75,   212,    76,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    13,     0,
+       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
+       0,  -104,    20,     0,     0,     0,     0,     0,    21,    22,
+       0,    23,     0,    24,     0,     0,    25,   268,  -104,    61,
+       0,     4,     5,     0,  -104,     6,     7,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   198,     0,
+     199,   200,   201,     0,     0,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,     0,     0,     0,    13,   211,     0,
+       0,     0,    14,    15,    16,    17,     0,     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,   226,     0,     4,     5,
+       0,    20,     6,     7,   117,     0,     0,    21,    22,     0,
+      23,     0,    24,     0,     0,    25,    26,  -112,    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,
+     191,     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,     4,   264,     0,    13,     6,
+       7,     0,     0,    14,    15,    16,    17,     0,     0,     0,
+       0,     0,    20,     0,     0,   200,     0,     0,    21,    22,
+       0,    23,     0,    24,   207,   208,    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,   200,     0,     0,     0,     0,     0,     0,
+       0,     0,   207,   208,     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,   222,    13,    92,    93,
        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,  -104,    62,    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,
-      62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     4,   255,    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,    62,     0,    13,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     4,
-       5,     0,    20,     6,     7,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,   194,    62,
-       0,     0,     0,     0,     0,     0,     0,   201,   202,     0,
-       0,     0,     0,     0,    13,     0,     0,     0,     0,    14,
+      23,     0,    24,     0,    13,    25,    26,     0,    61,    14,
       15,    16,    17,     0,     0,     4,     5,     0,    20,     6,
-       7,     0,     0,    98,    21,    22,     0,    23,     0,    24,
-       0,     0,    25,    26,     0,    62,     0,     0,     0,     0,
+       7,     0,     0,     0,    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,    87,    20,     0,     0,     0,    88,     0,
-      21,    22,     0,    23,     0,    24,     0,    13,    25,    26,
-       0,    62,    14,    15,    16,    17,     0,     0,     4,     5,
-       0,    20,     6,     7,    89,    90,    91,    21,    22,     0,
-      23,     0,    24,     0,     0,    25,    26,    92,    62,     0,
-      94,    95,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    87,    14,    15,
-      16,    17,    88,     0,     0,     0,     0,    20,     0,     0,
-       0,     0,     0,    21,    22,     0,    23,     0,    24,     0,
-       0,    25,    67,     0,    62,     0,     0,     0,    89,    90,
-      91,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    92,   216,     0,    94,    95
+       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,     0,     0,     0,    21,    22,
+       0,    23,     0,    24,     0,     0,    25,    66,     0,    61
 };
 
 static const yytype_int16 yycheck[] =
 {
-      27,     1,    26,    29,    30,    47,   240,    89,   230,     1,
-       4,    60,    61,     4,     1,     1,   213,    29,    10,    52,
-      67,    45,    27,    51,     9,   302,    26,     1,    61,    14,
-      70,    13,    14,    15,   311,    62,    40,    71,    67,    21,
-      22,    72,    24,    25,    44,    45,    74,   142,     1,     1,
-     145,     4,    16,    16,    36,    40,    41,    62,    67,    51,
-      60,    61,    51,    55,    51,     9,    70,    67,     1,    55,
-      49,    56,    57,    67,   308,    66,    68,    51,    21,    22,
-     302,    24,    74,     1,   118,    71,    67,    74,    88,   311,
-      90,    91,    92,    36,   128,   129,    29,    97,   229,     9,
-      74,    56,   184,    55,   199,   200,    70,    70,   203,    65,
-     205,    51,    56,    57,   209,    68,    68,   117,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     142,     1,   329,   145,   134,   332,     6,    55,   138,   234,
-      60,    61,    62,   177,   126,    65,    56,    57,   279,     5,
-      68,     4,   283,    38,   249,    13,   156,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   300,
-       1,     1,   303,    68,     1,     6,   158,     4,    67,    83,
-       3,    43,    44,   126,    43,    44,    40,   199,   200,    93,
-     239,   203,   274,   205,    24,    25,    67,   209,     3,     4,
-     331,    67,   214,   334,   204,     3,    67,    74,   250,   142,
-       4,    51,   145,    68,   248,    26,   216,    10,   252,   253,
-      67,    51,   234,   223,   224,   267,    54,   227,   228,    52,
-      20,   135,    72,     7,    74,   259,    73,   249,    61,   239,
-      45,    46,   276,    73,     7,   257,    30,   305,     9,   224,
-      48,   285,    50,    14,    52,    25,   282,   158,   292,   259,
-     267,   320,   178,    61,    69,   288,   199,   200,    12,    13,
-     203,    -1,   205,    -1,   286,    -1,   209,    -1,   312,    40,
-      41,    42,   294,    -1,   284,    -1,   286,     7,     8,    -1,
-     324,   318,    53,   197,    -1,    56,    57,    -1,     9,    43,
-      44,   234,   206,    14,     9,    -1,   288,    -1,    52,    14,
-      -1,   215,    -1,    74,   296,   219,   249,    -1,    -1,     1,
-      -1,     3,     4,    -1,    -1,     7,     8,    -1,    10,    40,
-      41,    42,    52,    -1,    -1,    40,    -1,   241,    58,    59,
-      -1,    61,    53,    -1,    -1,    56,    57,    -1,    -1,    69,
-      -1,    56,    57,   296,    -1,    -1,    38,    68,    -1,    -1,
-     264,    43,    44,    45,    46,    -1,    -1,   271,   272,    51,
-      52,   275,    -1,    -1,    -1,    -1,    58,    59,    -1,    61,
-      -1,    63,    -1,    -1,    66,    67,    68,    69,    -1,   293,
-      -1,   295,    74,   297,   298,   299,    -1,   301,     0,     1,
-      -1,     3,     4,    -1,    -1,     7,     8,    58,    59,    60,
-      61,    62,    -1,    -1,    65,    17,    18,    -1,   322,    -1,
-      -1,   325,    -1,    -1,   328,    -1,   330,    -1,    -1,    -1,
-      -1,    -1,    -1,    35,    36,    37,    38,    -1,    -1,    -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,    -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,    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,    -1,    -1,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    61,
-      -1,    63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,     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,     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,    -1,    -1,    -1,
-      -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,    -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,    -1,    -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,    29,    30,    44,   239,    87,     1,     1,     1,    46,
+       1,    13,    14,    15,    29,   111,     1,     4,    17,    21,
+      22,    70,    24,    25,   219,    26,   249,   120,    52,     4,
+      27,    52,    10,    35,    29,     1,    68,   312,    21,    22,
+       6,    24,    43,    44,     1,    41,   321,     4,    71,    73,
+       1,    75,    35,     4,    75,    17,    44,    45,    59,    60,
+      68,    52,    56,    56,    61,    66,    73,    52,     1,    50,
+     119,   145,    71,     6,   148,    71,    69,   312,    72,    57,
+      58,    68,   131,   132,    75,    86,   321,    88,    89,    90,
+      75,   184,    67,     1,    95,   318,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   190,    71,
+      44,    45,    69,     1,   115,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   129,    81,    68,
+     145,   205,   206,   148,   183,   209,   137,   211,    91,    52,
+     141,   215,     1,    68,   339,    57,   129,   342,    56,     3,
+     145,   178,   179,   148,    52,     3,    59,    60,   159,   161,
+      66,    69,     5,     4,    39,     9,    25,    26,    56,   243,
+      69,    41,    14,    68,     3,     4,    10,   178,   179,    68,
+       4,    69,    68,    68,   258,   138,    69,     1,    75,    27,
+     205,   206,    11,    52,   209,    68,   211,    11,    21,    55,
+     215,    49,   284,    51,     7,   220,    74,   248,   257,   210,
+     205,   206,   261,   262,   209,    74,   211,    46,    47,   315,
+     215,   222,   259,    57,    58,    13,    14,   268,   243,    10,
+       7,   232,   233,   238,    15,   236,   237,   286,    52,    10,
+     277,    70,    56,   258,    15,    30,   295,   248,   243,   315,
+     203,   266,   298,   302,   233,    69,    44,    45,    25,   212,
+      41,    75,   330,   258,   292,    53,   277,   268,   221,    10,
+      41,    42,    43,   322,    15,   228,    57,    58,     7,     8,
+       9,   296,   161,    54,   289,   334,    57,    58,   293,   304,
+      -1,    -1,    -1,   294,    10,   296,   298,   250,    69,    15,
+      41,    42,    43,    -1,   306,   310,    -1,    -1,   313,    61,
+      62,    63,    -1,    54,    66,    -1,    57,    58,    -1,    -1,
+      -1,   274,    -1,   306,    53,    41,    42,    43,   281,   282,
+      59,    60,   285,    62,    75,    -1,   341,    -1,    54,   344,
+      56,    57,    58,    10,    -1,    -1,    -1,    -1,    15,    -1,
+     303,    -1,   305,    -1,   307,   308,   309,    -1,   311,     0,
+       1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    59,
+      60,    61,    62,    63,    41,    42,    66,    18,    19,   332,
+      -1,    -1,   335,    -1,    -1,   338,    -1,   340,    -1,    -1,
+      57,    58,    -1,    -1,    -1,    36,    37,    38,    39,    -1,
+      -1,    -1,    -1,    44,    45,    46,    47,    48,    -1,    -1,
+      -1,    52,    53,    59,    60,    61,    62,    63,    59,    60,
+      66,    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,    -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,    -1,    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,
+      -1,    53,    -1,    -1,    -1,    -1,    -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,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
+      -1,    -1,    67,    68,    -1,    70,    -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
+      -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
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       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,    85,    86,    88,   106,   114,   118,   119,   120,   121,
-     122,   123,   131,   132,    67,    70,   128,   129,   130,     3,
-       4,    45,    46,    69,    82,    83,   124,   132,   132,   132,
-      67,    67,    69,   119,   132,   119,   119,    67,   121,   132,
-       1,   113,   114,    48,    50,    86,   123,    72,    74,    81,
-      90,   106,   134,   138,    81,    87,    51,     9,    14,    40,
-      41,    42,    53,    55,    56,    57,   116,   117,    11,   119,
-      58,    59,    60,    61,    62,    65,    58,    59,    60,    61,
-      62,    65,    12,    13,    43,    44,    52,   115,   112,   113,
-     114,   113,    16,   128,    49,    67,    56,   108,   112,   112,
-     114,    43,    44,   133,     1,    55,    68,   136,   140,   136,
-       1,     6,    78,     1,     6,    79,   106,   107,    89,   107,
-       5,   114,   131,   114,   114,   114,   107,   114,    38,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,    13,   114,   136,    71,     1,     4,   109,   110,   119,
-     136,   136,   114,   107,    40,     1,   114,     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,   114,   134,   135,   138,    54,   114,   124,   136,
-       1,   140,   131,    67,    93,     4,    67,    67,    67,   107,
-      67,    90,    90,    90,   111,   114,    90,   107,    90,    95,
-      89,   137,   138,   107,   114,   107,     1,     4,   114,   111,
-      96,     4,   114,   114,    91,     4,    94,    97,    90,    67,
-     102,   112,   135,   107,   136,    90,   125,   126,   127,   128,
-      68,   136,   136,    26,    40,   138,   113,    10,   103,   107,
-      16,   127,   107,   107,    67,   131,   107,   136,   104,    91,
-     134,    91,   114,   136,   114,   138,   118,    20,    98,   136,
-     107,   138,   107,   107,     1,    24,    25,    99,   107,   107,
-      91,   107,    97,    91,     7,     8,    58,    59,    69,    85,
-     100,    54,   139,   135,    97,   136,     7,     7,   139,   107,
-     136,   107,   107,    89,   107,    91,    89,    91
+       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,    86,    89,   107,   118,   122,   123,   124,   125,   126,
+     127,   135,   136,    68,    71,   132,   133,   134,     3,     4,
+      46,    47,    70,    83,    84,   128,   136,   136,   136,    68,
+      68,    70,   123,   136,   123,   123,    68,   125,   136,     1,
+     114,   118,    49,    51,   127,    73,    75,    82,    91,   107,
+     138,   142,    82,    87,    52,    10,    15,    41,    42,    43,
+      54,    56,    57,    58,   120,   121,    12,   123,    59,    60,
+      61,    62,    63,    66,    59,    60,    61,    62,    63,    66,
+      13,    14,    44,    45,    53,   119,     1,     9,    88,   115,
+     116,   117,   118,   114,   118,    17,   132,    50,    68,    57,
+     109,   115,   115,   118,    44,    45,   137,     1,    56,    69,
+     140,   144,   140,     1,     6,    79,     1,     6,    80,   107,
+     108,    90,   108,     5,   118,   135,   118,   118,   118,   108,
+     118,    39,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,    88,    14,   118,   140,     1,   144,
+      72,     1,     4,   110,   111,   123,   140,   140,   118,   108,
+      41,     1,   118,     1,    91,     1,    91,     1,    20,    22,
+      23,    24,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    40,    74,    92,    93,    95,   102,   106,   118,   138,
+     139,   142,    55,   118,   128,   117,     1,   117,   140,     1,
+     144,   135,    68,    94,     4,    68,    68,    68,   108,    68,
+      91,    91,    91,   112,   118,    91,   108,    91,    96,    90,
+     141,   142,   108,   118,   108,     1,     4,   118,   112,    97,
+       4,   118,   118,    92,     4,    95,    98,    91,    68,   103,
+     113,   114,   139,   108,   140,    91,   129,   130,   131,   132,
+      69,   140,   140,    27,    41,   142,   114,    11,   104,   108,
+      17,   131,   108,   108,    68,   135,   108,   140,   105,    92,
+     138,    92,   118,   140,   118,   142,   122,    21,    99,   140,
+     108,   142,   108,   108,     1,    25,    26,   100,   108,   108,
+      92,   108,    98,    92,     7,     8,    59,    60,    86,    88,
+     101,    55,   143,   139,    98,   140,     7,     7,   143,   108,
+     140,   108,   108,    90,   108,    92,    90,    92
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       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,    84,    85,    85,    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,   114,   114,   114,   114,   114,   114,
-     115,   115,   115,   116,   116,   117,   117,   118,   118,   118,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   120,   120,   120,   120,   120,   120,   120,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   122,   122,   123,   124,   124,   125,   125,   126,
-     126,   127,   128,   129,   129,   130,   131,   131,   132,   132,
-     133,   133,   133,   134,   135,   136,   137,   137,   138,   139,
-     140
+       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,    85,    87,    86,    88,    89,    89,    90,    90,
+      90,    91,    91,    92,    92,    92,    92,    92,    92,    92,
+      92,    92,    92,    93,    93,    93,    93,    93,    94,    93,
+      93,    96,    95,    97,    95,    95,    95,    98,    98,    99,
+      99,    99,   100,   100,   101,   101,   101,   101,   101,   101,
+     102,   102,   103,   103,   104,   105,   104,   106,   106,   107,
+     107,   108,   108,   109,   109,   110,   110,   111,   111,   111,
+     111,   111,   112,   112,   113,   113,   114,   114,   114,   114,
+     114,   114,   115,   115,   116,   116,   116,   116,   116,   116,
+     117,   117,   118,   118,   118,   118,   118,   118,   118,   118,
+     118,   119,   119,   119,   120,   120,   121,   121,   122,   122,
+     122,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   124,   124,   124,   124,   124,   124,   124,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   126,   126,   127,   128,   128,   129,   129,
+     130,   130,   131,   132,   133,   133,   134,   135,   135,   136,
+     136,   137,   137,   137,   138,   139,   140,   141,   141,   142,
+     143,   144
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1156,23 +1180,24 @@ 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,     6,     1,     2,     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,     6,     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,     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
+       3,     3,     0,     1,     1,     3,     1,     2,     3,     3,
+       1,     1,     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
 };
 
 
@@ -1854,7 +1879,7 @@ yyreduce:
                rule = 0;
                yyerrok;
          }
-#line 1858 "awkgram.c" /* yacc.c:1646  */
+#line 1883 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -1862,7 +1887,7 @@ yyreduce:
     {
                next_sourcefile();
          }
-#line 1866 "awkgram.c" /* yacc.c:1646  */
+#line 1891 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -1875,7 +1900,7 @@ yyreduce:
                 */
                /* yyerrok; */
          }
-#line 1879 "awkgram.c" /* yacc.c:1646  */
+#line 1904 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -1884,7 +1909,7 @@ yyreduce:
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
                first_rule = false;
          }
-#line 1888 "awkgram.c" /* yacc.c:1646  */
+#line 1913 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -1899,7 +1924,7 @@ yyreduce:
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
-#line 1903 "awkgram.c" /* yacc.c:1646  */
+#line 1928 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -1909,7 +1934,7 @@ yyreduce:
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
-#line 1913 "awkgram.c" /* yacc.c:1646  */
+#line 1938 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -1919,7 +1944,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1923 "awkgram.c" /* yacc.c:1646  */
+#line 1948 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -1929,7 +1954,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1933 "awkgram.c" /* yacc.c:1646  */
+#line 1958 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -1941,19 +1966,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1945 "awkgram.c" /* yacc.c:1646  */
+#line 1970 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 13:
 #line 275 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1951 "awkgram.c" /* yacc.c:1646  */
+#line 1976 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 14:
 #line 277 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1957 "awkgram.c" /* yacc.c:1646  */
+#line 1982 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -1965,19 +1990,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1969 "awkgram.c" /* yacc.c:1646  */
+#line 1994 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 16:
 #line 290 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1975 "awkgram.c" /* yacc.c:1646  */
+#line 2000 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 17:
 #line 292 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1981 "awkgram.c" /* yacc.c:1646  */
+#line 2006 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -1990,7 +2015,7 @@ yyreduce:
                } else
                        (yyval) = NULL;
          }
-#line 1994 "awkgram.c" /* yacc.c:1646  */
+#line 2019 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -2003,7 +2028,7 @@ yyreduce:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 2007 "awkgram.c" /* yacc.c:1646  */
+#line 2032 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2037,7 +2062,7 @@ yyreduce:
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
-#line 2041 "awkgram.c" /* yacc.c:1646  */
+#line 2066 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -2055,7 +2080,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2059 "awkgram.c" /* yacc.c:1646  */
+#line 2084 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -2073,7 +2098,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2077 "awkgram.c" /* yacc.c:1646  */
+#line 2102 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -2085,7 +2110,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2089 "awkgram.c" /* yacc.c:1646  */
+#line 2114 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -2097,7 +2122,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2101 "awkgram.c" /* yacc.c:1646  */
+#line 2126 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -2110,19 +2135,19 @@ yyreduce:
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
-#line 2114 "awkgram.c" /* yacc.c:1646  */
+#line 2139 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 26:
 #line 405 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2120 "awkgram.c" /* yacc.c:1646  */
+#line 2145 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 27:
 #line 407 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2126 "awkgram.c" /* yacc.c:1646  */
+#line 2151 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -2132,7 +2157,7 @@ yyreduce:
                                        tokstart);
                YYABORT;
          }
-#line 2136 "awkgram.c" /* yacc.c:1646  */
+#line 2161 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -2141,7 +2166,7 @@ yyreduce:
                (yyval) = (yyvsp[0]);
                at_seen = false;
          }
-#line 2145 "awkgram.c" /* yacc.c:1646  */
+#line 2170 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -2172,32 +2197,17 @@ yyreduce:
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
-#line 2176 "awkgram.c" /* yacc.c:1646  */
+#line 2201 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 458 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = (yyvsp[0]); }
-#line 2182 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 34:
-#line 460 "awkgram.y" /* yacc.c:1646  */
-    {
-               (yyvsp[0])->memory->type = Node_hardregex;
-               (yyval) = (yyvsp[0]);
-         }
-#line 2191 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 35:
-#line 472 "awkgram.y" /* yacc.c:1646  */
+#line 462 "awkgram.y" /* yacc.c:1646  */
     { want_regexp = true; }
-#line 2197 "awkgram.c" /* yacc.c:1646  */
+#line 2207 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 36:
-#line 474 "awkgram.y" /* yacc.c:1646  */
+  case 34:
+#line 464 "awkgram.y" /* yacc.c:1646  */
     {
                  NODE *n, *exp;
                  char *re;
@@ -2226,28 +2236,57 @@ yyreduce:
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
-#line 2230 "awkgram.c" /* yacc.c:1646  */
+#line 2240 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 35:
+#line 496 "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_hardregex, exp);
+                 if (n == NULL) {
+                       unref(exp);
+                       YYABORT;
+                 }
+                 (yyval) = (yyvsp[0]);
+#if 0
+                 /* Don't set this, on purpose */
+                 /* $$->opcode = Op_match_rec; */
+#else
+                 (yyval)->opcode = Op_push_re;
+#endif
+                 (yyval)->memory = n;
+               }
+#line 2269 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 37:
-#line 506 "awkgram.y" /* yacc.c:1646  */
+  case 36:
+#line 523 "awkgram.y" /* yacc.c:1646  */
     { bcfree((yyvsp[0])); }
-#line 2236 "awkgram.c" /* yacc.c:1646  */
+#line 2275 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 39:
-#line 512 "awkgram.y" /* yacc.c:1646  */
+  case 38:
+#line 529 "awkgram.y" /* yacc.c:1646  */
     {
                if (comment != NULL) {
                        (yyval) = list_create(comment);
                        comment = NULL;
                } else (yyval) = NULL;
          }
-#line 2247 "awkgram.c" /* yacc.c:1646  */
+#line 2286 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 40:
-#line 519 "awkgram.y" /* yacc.c:1646  */
+  case 39:
+#line 536 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0]) == NULL) {
                        if (comment == NULL)
@@ -2275,40 +2314,40 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2279 "awkgram.c" /* yacc.c:1646  */
+#line 2318 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 41:
-#line 547 "awkgram.y" /* yacc.c:1646  */
+  case 40:
+#line 564 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; }
-#line 2285 "awkgram.c" /* yacc.c:1646  */
+#line 2324 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 44:
-#line 557 "awkgram.y" /* yacc.c:1646  */
+  case 43:
+#line 574 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2291 "awkgram.c" /* yacc.c:1646  */
+#line 2330 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 45:
-#line 559 "awkgram.y" /* yacc.c:1646  */
+  case 44:
+#line 576 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2297 "awkgram.c" /* yacc.c:1646  */
+#line 2336 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 46:
-#line 561 "awkgram.y" /* yacc.c:1646  */
+  case 45:
+#line 578 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2308 "awkgram.c" /* yacc.c:1646  */
+#line 2347 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 47:
-#line 568 "awkgram.y" /* yacc.c:1646  */
+  case 46:
+#line 585 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -2398,11 +2437,11 @@ yyreduce:
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
-#line 2402 "awkgram.c" /* yacc.c:1646  */
+#line 2441 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 48:
-#line 658 "awkgram.y" /* yacc.c:1646  */
+  case 47:
+#line 675 "awkgram.y" /* yacc.c:1646  */
     { 
                /*
                 *    -----------------
@@ -2444,11 +2483,11 @@ yyreduce:
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
-#line 2448 "awkgram.c" /* yacc.c:1646  */
+#line 2487 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 49:
-#line 700 "awkgram.y" /* yacc.c:1646  */
+  case 48:
+#line 717 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 *    -----------------
@@ -2490,11 +2529,11 @@ yyreduce:
                } /* else
                        $1 and $4 are NULLs */
          }
-#line 2494 "awkgram.c" /* yacc.c:1646  */
+#line 2533 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 50:
-#line 742 "awkgram.y" /* yacc.c:1646  */
+  case 49:
+#line 759 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@ -2607,44 +2646,44 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2611 "awkgram.c" /* yacc.c:1646  */
+#line 2650 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 51:
-#line 855 "awkgram.y" /* yacc.c:1646  */
+  case 50:
+#line 872 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2622 "awkgram.c" /* yacc.c:1646  */
+#line 2661 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 52:
-#line 862 "awkgram.y" /* yacc.c:1646  */
+  case 51:
+#line 879 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2633 "awkgram.c" /* yacc.c:1646  */
+#line 2672 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 53:
-#line 869 "awkgram.y" /* yacc.c:1646  */
+  case 52:
+#line 886 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2644 "awkgram.c" /* yacc.c:1646  */
+#line 2683 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 54:
-#line 879 "awkgram.y" /* yacc.c:1646  */
+  case 53:
+#line 896 "awkgram.y" /* yacc.c:1646  */
     { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2653,11 +2692,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
 
          }
-#line 2657 "awkgram.c" /* yacc.c:1646  */
+#line 2696 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 55:
-#line 888 "awkgram.y" /* yacc.c:1646  */
+  case 54:
+#line 905 "awkgram.y" /* yacc.c:1646  */
     {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2666,11 +2705,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
 
          }
-#line 2670 "awkgram.c" /* yacc.c:1646  */
+#line 2709 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 56:
-#line 897 "awkgram.y" /* yacc.c:1646  */
+  case 55:
+#line 914 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@ -2679,11 +2718,11 @@ regular_loop:
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
-#line 2683 "awkgram.c" /* yacc.c:1646  */
+#line 2722 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 57:
-#line 906 "awkgram.y" /* yacc.c:1646  */
+  case 56:
+#line 923 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2694,11 +2733,11 @@ regular_loop:
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
-#line 2698 "awkgram.c" /* yacc.c:1646  */
+#line 2737 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 58:
-#line 917 "awkgram.y" /* yacc.c:1646  */
+  case 57:
+#line 934 "awkgram.y" /* yacc.c:1646  */
     {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@ -2713,20 +2752,20 @@ regular_loop:
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
-#line 2717 "awkgram.c" /* yacc.c:1646  */
+#line 2756 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-#line 932 "awkgram.y" /* yacc.c:1646  */
+  case 58:
+#line 949 "awkgram.y" /* yacc.c:1646  */
     {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
-#line 2726 "awkgram.c" /* yacc.c:1646  */
+#line 2765 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 935 "awkgram.y" /* yacc.c:1646  */
+  case 59:
+#line 952 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@ -2747,17 +2786,17 @@ regular_loop:
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
-#line 2751 "awkgram.c" /* yacc.c:1646  */
+#line 2790 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 967 "awkgram.y" /* yacc.c:1646  */
+  case 61:
+#line 984 "awkgram.y" /* yacc.c:1646  */
     { in_print = true; in_parens = 0; }
-#line 2757 "awkgram.c" /* yacc.c:1646  */
+#line 2796 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 968 "awkgram.y" /* yacc.c:1646  */
+  case 62:
+#line 985 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -2854,17 +2893,17 @@ regular_print:
                        }
                }
          }
-#line 2858 "awkgram.c" /* yacc.c:1646  */
+#line 2897 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 1065 "awkgram.y" /* yacc.c:1646  */
+  case 63:
+#line 1082 "awkgram.y" /* yacc.c:1646  */
     { sub_counter = 0; }
-#line 2864 "awkgram.c" /* yacc.c:1646  */
+#line 2903 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 1066 "awkgram.y" /* yacc.c:1646  */
+  case 64:
+#line 1083 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-2])->lextok;
 
@@ -2897,11 +2936,11 @@ regular_print:
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
-#line 2901 "awkgram.c" /* yacc.c:1646  */
+#line 2940 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 1103 "awkgram.y" /* yacc.c:1646  */
+  case 65:
+#line 1120 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@ -2927,52 +2966,52 @@ regular_print:
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
-#line 2931 "awkgram.c" /* yacc.c:1646  */
+#line 2970 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 1129 "awkgram.y" /* yacc.c:1646  */
+  case 66:
+#line 1146 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = optimize_assignment((yyvsp[0])); }
-#line 2937 "awkgram.c" /* yacc.c:1646  */
+#line 2976 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 1134 "awkgram.y" /* yacc.c:1646  */
+  case 67:
+#line 1151 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2943 "awkgram.c" /* yacc.c:1646  */
+#line 2982 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 1136 "awkgram.y" /* yacc.c:1646  */
+  case 68:
+#line 1153 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2949 "awkgram.c" /* yacc.c:1646  */
+#line 2988 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 1141 "awkgram.y" /* yacc.c:1646  */
+  case 69:
+#line 1158 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2955 "awkgram.c" /* yacc.c:1646  */
+#line 2994 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 1143 "awkgram.y" /* yacc.c:1646  */
+  case 70:
+#line 1160 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
-#line 2966 "awkgram.c" /* yacc.c:1646  */
+#line 3005 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 1150 "awkgram.y" /* yacc.c:1646  */
+  case 71:
+#line 1167 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2972 "awkgram.c" /* yacc.c:1646  */
+#line 3011 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 1155 "awkgram.y" /* yacc.c:1646  */
+  case 72:
+#line 1172 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -2984,11 +3023,11 @@ regular_print:
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
-#line 2988 "awkgram.c" /* yacc.c:1646  */
+#line 3027 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 1167 "awkgram.y" /* yacc.c:1646  */
+  case 73:
+#line 1184 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -2999,17 +3038,17 @@ regular_print:
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
-#line 3003 "awkgram.c" /* yacc.c:1646  */
+#line 3042 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 1181 "awkgram.y" /* yacc.c:1646  */
+  case 74:
+#line 1198 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3009 "awkgram.c" /* yacc.c:1646  */
+#line 3048 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 1183 "awkgram.y" /* yacc.c:1646  */
+  case 75:
+#line 1200 "awkgram.y" /* yacc.c:1646  */
     { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@ -3017,26 +3056,26 @@ regular_print:
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3021 "awkgram.c" /* yacc.c:1646  */
+#line 3060 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 1191 "awkgram.y" /* yacc.c:1646  */
+  case 76:
+#line 1208 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3030 "awkgram.c" /* yacc.c:1646  */
+#line 3069 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 1196 "awkgram.y" /* yacc.c:1646  */
+  case 77:
+#line 1213 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3036 "awkgram.c" /* yacc.c:1646  */
+#line 3075 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 1198 "awkgram.y" /* yacc.c:1646  */
+  case 78:
+#line 1215 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->memory->type == Node_regex)
                        (yyvsp[0])->opcode = Op_push_re;
@@ -3044,47 +3083,57 @@ regular_print:
                        (yyvsp[0])->opcode = Op_push;
                (yyval) = (yyvsp[0]);
          }
-#line 3048 "awkgram.c" /* yacc.c:1646  */
+#line 3087 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 79:
+#line 1223 "awkgram.y" /* yacc.c:1646  */
+    {
+               assert((yyvsp[0])->memory->type == Node_hardregex);
+               (yyvsp[0])->opcode = Op_push_re;
+               (yyval) = (yyvsp[0]);
+         }
+#line 3097 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 1209 "awkgram.y" /* yacc.c:1646  */
+#line 1232 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3054 "awkgram.c" /* yacc.c:1646  */
+#line 3103 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 1211 "awkgram.y" /* yacc.c:1646  */
+#line 1234 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3060 "awkgram.c" /* yacc.c:1646  */
+#line 3109 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 1221 "awkgram.y" /* yacc.c:1646  */
+#line 1244 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = (yyvsp[-1]);
          }
-#line 3068 "awkgram.c" /* yacc.c:1646  */
+#line 3117 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 1228 "awkgram.y" /* yacc.c:1646  */
+#line 1251 "awkgram.y" /* yacc.c:1646  */
     {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
-#line 3078 "awkgram.c" /* yacc.c:1646  */
+#line 3127 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 1233 "awkgram.y" /* yacc.c:1646  */
+#line 1256 "awkgram.y" /* yacc.c:1646  */
     { in_print = false; in_parens = 0; }
-#line 3084 "awkgram.c" /* yacc.c:1646  */
+#line 3133 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 1234 "awkgram.y" /* yacc.c:1646  */
+#line 1257 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3092,136 +3141,136 @@ regular_print:
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
-#line 3096 "awkgram.c" /* yacc.c:1646  */
+#line 3145 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 1245 "awkgram.y" /* yacc.c:1646  */
+#line 1268 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
-#line 3104 "awkgram.c" /* yacc.c:1646  */
+#line 3153 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 1250 "awkgram.y" /* yacc.c:1646  */
+#line 1273 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
-#line 3112 "awkgram.c" /* yacc.c:1646  */
+#line 3161 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 1267 "awkgram.y" /* yacc.c:1646  */
+#line 1290 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3118 "awkgram.c" /* yacc.c:1646  */
+#line 3167 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 1269 "awkgram.y" /* yacc.c:1646  */
+#line 1292 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3127 "awkgram.c" /* yacc.c:1646  */
+#line 3176 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 1277 "awkgram.y" /* yacc.c:1646  */
+#line 1300 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3133 "awkgram.c" /* yacc.c:1646  */
+#line 3182 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 1279 "awkgram.y" /* yacc.c:1646  */
+#line 1302 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3139 "awkgram.c" /* yacc.c:1646  */
+#line 3188 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 1284 "awkgram.y" /* yacc.c:1646  */
+#line 1307 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3148 "awkgram.c" /* yacc.c:1646  */
+#line 3197 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 1289 "awkgram.y" /* yacc.c:1646  */
+#line 1312 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3158 "awkgram.c" /* yacc.c:1646  */
+#line 3207 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 1295 "awkgram.y" /* yacc.c:1646  */
+#line 1318 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3164 "awkgram.c" /* yacc.c:1646  */
+#line 3213 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 1297 "awkgram.y" /* yacc.c:1646  */
+#line 1320 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3170 "awkgram.c" /* yacc.c:1646  */
+#line 3219 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 1299 "awkgram.y" /* yacc.c:1646  */
+#line 1322 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); }
-#line 3176 "awkgram.c" /* yacc.c:1646  */
+#line 3225 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 1305 "awkgram.y" /* yacc.c:1646  */
+#line 1328 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3182 "awkgram.c" /* yacc.c:1646  */
+#line 3231 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 1307 "awkgram.y" /* yacc.c:1646  */
+#line 1330 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3188 "awkgram.c" /* yacc.c:1646  */
+#line 3237 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 1312 "awkgram.y" /* yacc.c:1646  */
+#line 1335 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3194 "awkgram.c" /* yacc.c:1646  */
+#line 3243 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 1314 "awkgram.y" /* yacc.c:1646  */
+#line 1337 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3200 "awkgram.c" /* yacc.c:1646  */
+#line 3249 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 1319 "awkgram.y" /* yacc.c:1646  */
+#line 1342 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3206 "awkgram.c" /* yacc.c:1646  */
+#line 3255 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 1321 "awkgram.y" /* yacc.c:1646  */
+#line 1344 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3215 "awkgram.c" /* yacc.c:1646  */
+#line 3264 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 1326 "awkgram.y" /* yacc.c:1646  */
+#line 1349 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3221 "awkgram.c" /* yacc.c:1646  */
+#line 3270 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 1328 "awkgram.y" /* yacc.c:1646  */
+#line 1351 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3229,52 +3278,136 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3233 "awkgram.c" /* yacc.c:1646  */
+#line 3282 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 1336 "awkgram.y" /* yacc.c:1646  */
+#line 1359 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3242 "awkgram.c" /* yacc.c:1646  */
+#line 3291 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 1341 "awkgram.y" /* yacc.c:1646  */
+#line 1364 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3251 "awkgram.c" /* yacc.c:1646  */
+#line 3300 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 1350 "awkgram.y" /* yacc.c:1646  */
+#line 1372 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = NULL; }
+#line 3306 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 113:
+#line 1374 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[0]); }
+#line 3312 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 114:
+#line 1379 "awkgram.y" /* yacc.c:1646  */
+    {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
+#line 3318 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 115:
+#line 1381 "awkgram.y" /* yacc.c:1646  */
+    {
+               (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
+               yyerrok;
+         }
+#line 3327 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 116:
+#line 1386 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = NULL; }
+#line 3333 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 117:
+#line 1388 "awkgram.y" /* yacc.c:1646  */
+    {
+               /*
+                * Returning the expression list instead of NULL lets
+                * snode get a list of arguments that it can count.
+                */
+               (yyval) = (yyvsp[-1]);
+         }
+#line 3345 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 118:
+#line 1396 "awkgram.y" /* yacc.c:1646  */
+    {
+               /* Ditto */
+               (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
+         }
+#line 3354 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 119:
+#line 1401 "awkgram.y" /* yacc.c:1646  */
+    {
+               /* Ditto */
+               (yyval) = (yyvsp[-2]);
+         }
+#line 3363 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 120:
+#line 1408 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[0]); }
+#line 3369 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 121:
+#line 1409 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = list_create((yyvsp[0])); }
+#line 3375 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 122:
+#line 1415 "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 3262 "awkgram.c" /* yacc.c:1646  */
+#line 3386 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 1357 "awkgram.y" /* yacc.c:1646  */
+  case 123:
+#line 1422 "awkgram.y" /* yacc.c:1646  */
+    {
+               stopme(0);
+               (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
+         }
+#line 3395 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 124:
+#line 1427 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3268 "awkgram.c" /* yacc.c:1646  */
+#line 3401 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 1359 "awkgram.y" /* yacc.c:1646  */
+  case 125:
+#line 1429 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3274 "awkgram.c" /* yacc.c:1646  */
+#line 3407 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 115:
-#line 1361 "awkgram.y" /* yacc.c:1646  */
+  case 126:
+#line 1431 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3290,11 +3423,11 @@ regular_print:
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
-#line 3294 "awkgram.c" /* yacc.c:1646  */
+#line 3427 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 116:
-#line 1377 "awkgram.y" /* yacc.c:1646  */
+  case 127:
+#line 1447 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3304,91 +3437,91 @@ regular_print:
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3308 "awkgram.c" /* yacc.c:1646  */
+#line 3441 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 117:
-#line 1387 "awkgram.y" /* yacc.c:1646  */
+  case 128:
+#line 1457 "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 3319 "awkgram.c" /* yacc.c:1646  */
+#line 3452 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 118:
-#line 1394 "awkgram.y" /* yacc.c:1646  */
+  case 129:
+#line 1464 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
-#line 3325 "awkgram.c" /* yacc.c:1646  */
+#line 3458 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 119:
-#line 1396 "awkgram.y" /* yacc.c:1646  */
+  case 130:
+#line 1466 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3331 "awkgram.c" /* yacc.c:1646  */
+#line 3464 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 120:
-#line 1401 "awkgram.y" /* yacc.c:1646  */
+  case 131:
+#line 1471 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3337 "awkgram.c" /* yacc.c:1646  */
+#line 3470 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 121:
-#line 1403 "awkgram.y" /* yacc.c:1646  */
+  case 132:
+#line 1473 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3343 "awkgram.c" /* yacc.c:1646  */
+#line 3476 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 122:
-#line 1405 "awkgram.y" /* yacc.c:1646  */
+  case 133:
+#line 1475 "awkgram.y" /* yacc.c:1646  */
     {  
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
-#line 3352 "awkgram.c" /* yacc.c:1646  */
+#line 3485 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 1413 "awkgram.y" /* yacc.c:1646  */
+  case 134:
+#line 1483 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3358 "awkgram.c" /* yacc.c:1646  */
+#line 3491 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 1415 "awkgram.y" /* yacc.c:1646  */
+  case 135:
+#line 1485 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3364 "awkgram.c" /* yacc.c:1646  */
+#line 3497 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 1420 "awkgram.y" /* yacc.c:1646  */
+  case 136:
+#line 1490 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3370 "awkgram.c" /* yacc.c:1646  */
+#line 3503 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 1422 "awkgram.y" /* yacc.c:1646  */
+  case 137:
+#line 1492 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3376 "awkgram.c" /* yacc.c:1646  */
+#line 3509 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 127:
-#line 1427 "awkgram.y" /* yacc.c:1646  */
+  case 138:
+#line 1497 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3382 "awkgram.c" /* yacc.c:1646  */
+#line 3515 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 128:
-#line 1429 "awkgram.y" /* yacc.c:1646  */
+  case 139:
+#line 1499 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3388 "awkgram.c" /* yacc.c:1646  */
+#line 3521 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 129:
-#line 1431 "awkgram.y" /* yacc.c:1646  */
+  case 140:
+#line 1501 "awkgram.y" /* yacc.c:1646  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3435,47 +3568,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3439 "awkgram.c" /* yacc.c:1646  */
+#line 3572 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 131:
-#line 1483 "awkgram.y" /* yacc.c:1646  */
+  case 142:
+#line 1553 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3445 "awkgram.c" /* yacc.c:1646  */
+#line 3578 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 132:
-#line 1485 "awkgram.y" /* yacc.c:1646  */
+  case 143:
+#line 1555 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3451 "awkgram.c" /* yacc.c:1646  */
+#line 3584 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 133:
-#line 1487 "awkgram.y" /* yacc.c:1646  */
+  case 144:
+#line 1557 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3457 "awkgram.c" /* yacc.c:1646  */
+#line 3590 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 134:
-#line 1489 "awkgram.y" /* yacc.c:1646  */
+  case 145:
+#line 1559 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3463 "awkgram.c" /* yacc.c:1646  */
+#line 3596 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 135:
-#line 1491 "awkgram.y" /* yacc.c:1646  */
+  case 146:
+#line 1561 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3469 "awkgram.c" /* yacc.c:1646  */
+#line 3602 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 136:
-#line 1493 "awkgram.y" /* yacc.c:1646  */
+  case 147:
+#line 1563 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3475 "awkgram.c" /* yacc.c:1646  */
+#line 3608 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 137:
-#line 1495 "awkgram.y" /* yacc.c:1646  */
+  case 148:
+#line 1565 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3489,29 +3622,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
-#line 3493 "awkgram.c" /* yacc.c:1646  */
+#line 3626 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 1509 "awkgram.y" /* yacc.c:1646  */
+  case 149:
+#line 1579 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3502 "awkgram.c" /* yacc.c:1646  */
+#line 3635 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 1514 "awkgram.y" /* yacc.c:1646  */
+  case 150:
+#line 1584 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3511 "awkgram.c" /* yacc.c:1646  */
+#line 3644 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 140:
-#line 1519 "awkgram.y" /* yacc.c:1646  */
+  case 151:
+#line 1589 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@ -3531,64 +3664,64 @@ regular_print:
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
-#line 3535 "awkgram.c" /* yacc.c:1646  */
+#line 3668 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 141:
-#line 1544 "awkgram.y" /* yacc.c:1646  */
+  case 152:
+#line 1614 "awkgram.y" /* yacc.c:1646  */
     {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
-#line 3544 "awkgram.c" /* yacc.c:1646  */
+#line 3677 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 142:
-#line 1550 "awkgram.y" /* yacc.c:1646  */
+  case 153:
+#line 1620 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3550 "awkgram.c" /* yacc.c:1646  */
+#line 3683 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 143:
-#line 1552 "awkgram.y" /* yacc.c:1646  */
+  case 154:
+#line 1622 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3556 "awkgram.c" /* yacc.c:1646  */
+#line 3689 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 144:
-#line 1554 "awkgram.y" /* yacc.c:1646  */
+  case 155:
+#line 1624 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3562 "awkgram.c" /* yacc.c:1646  */
+#line 3695 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 145:
-#line 1556 "awkgram.y" /* yacc.c:1646  */
+  case 156:
+#line 1626 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3568 "awkgram.c" /* yacc.c:1646  */
+#line 3701 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 1558 "awkgram.y" /* yacc.c:1646  */
+  case 157:
+#line 1628 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3574 "awkgram.c" /* yacc.c:1646  */
+#line 3707 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 147:
-#line 1560 "awkgram.y" /* yacc.c:1646  */
+  case 158:
+#line 1630 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3580 "awkgram.c" /* yacc.c:1646  */
+#line 3713 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 1565 "awkgram.y" /* yacc.c:1646  */
+  case 159:
+#line 1635 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3588 "awkgram.c" /* yacc.c:1646  */
+#line 3721 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 1569 "awkgram.y" /* yacc.c:1646  */
+  case 160:
+#line 1639 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@ -3620,37 +3753,37 @@ regular_print:
                        }
                }
           }
-#line 3624 "awkgram.c" /* yacc.c:1646  */
+#line 3757 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 1601 "awkgram.y" /* yacc.c:1646  */
+  case 161:
+#line 1671 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3630 "awkgram.c" /* yacc.c:1646  */
+#line 3763 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 1603 "awkgram.y" /* yacc.c:1646  */
+  case 162:
+#line 1673 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3640 "awkgram.c" /* yacc.c:1646  */
+#line 3773 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 1609 "awkgram.y" /* yacc.c:1646  */
+  case 163:
+#line 1679 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3650 "awkgram.c" /* yacc.c:1646  */
+#line 3783 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1615 "awkgram.y" /* yacc.c:1646  */
+  case 164:
+#line 1685 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
 
@@ -3663,45 +3796,45 @@ regular_print:
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3667 "awkgram.c" /* yacc.c:1646  */
+#line 3800 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 1630 "awkgram.y" /* yacc.c:1646  */
+  case 167:
+#line 1700 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3676 "awkgram.c" /* yacc.c:1646  */
+#line 3809 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 1635 "awkgram.y" /* yacc.c:1646  */
+  case 168:
+#line 1705 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3685 "awkgram.c" /* yacc.c:1646  */
+#line 3818 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 1640 "awkgram.y" /* yacc.c:1646  */
+  case 169:
+#line 1710 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3693 "awkgram.c" /* yacc.c:1646  */
+#line 3826 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 1644 "awkgram.y" /* yacc.c:1646  */
+  case 170:
+#line 1714 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3701 "awkgram.c" /* yacc.c:1646  */
+#line 3834 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 1648 "awkgram.y" /* yacc.c:1646  */
+  case 171:
+#line 1718 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@ -3716,11 +3849,11 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3720 "awkgram.c" /* yacc.c:1646  */
+#line 3853 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 1663 "awkgram.y" /* yacc.c:1646  */
+  case 172:
+#line 1733 "awkgram.y" /* yacc.c:1646  */
     {
            /*
             * was: $$ = $2
@@ -3730,20 +3863,20 @@ regular_print:
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
-#line 3734 "awkgram.c" /* yacc.c:1646  */
+#line 3867 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 1676 "awkgram.y" /* yacc.c:1646  */
+  case 173:
+#line 1746 "awkgram.y" /* yacc.c:1646  */
     {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
-#line 3743 "awkgram.c" /* yacc.c:1646  */
+#line 3876 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 1681 "awkgram.y" /* yacc.c:1646  */
+  case 174:
+#line 1751 "awkgram.y" /* yacc.c:1646  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -3777,11 +3910,11 @@ regular_print:
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
-#line 3781 "awkgram.c" /* yacc.c:1646  */
+#line 3914 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 1718 "awkgram.y" /* yacc.c:1646  */
+  case 175:
+#line 1788 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n;
 
@@ -3806,49 +3939,49 @@ regular_print:
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
-#line 3810 "awkgram.c" /* yacc.c:1646  */
+#line 3943 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 1746 "awkgram.y" /* yacc.c:1646  */
+  case 176:
+#line 1816 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3816 "awkgram.c" /* yacc.c:1646  */
+#line 3949 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 1748 "awkgram.y" /* yacc.c:1646  */
+  case 177:
+#line 1818 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3822 "awkgram.c" /* yacc.c:1646  */
+#line 3955 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 1753 "awkgram.y" /* yacc.c:1646  */
+  case 178:
+#line 1823 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3828 "awkgram.c" /* yacc.c:1646  */
+#line 3961 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 1755 "awkgram.y" /* yacc.c:1646  */
+  case 179:
+#line 1825 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3834 "awkgram.c" /* yacc.c:1646  */
+#line 3967 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 1760 "awkgram.y" /* yacc.c:1646  */
+  case 180:
+#line 1830 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3840 "awkgram.c" /* yacc.c:1646  */
+#line 3973 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 1762 "awkgram.y" /* yacc.c:1646  */
+  case 181:
+#line 1832 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3848 "awkgram.c" /* yacc.c:1646  */
+#line 3981 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1769 "awkgram.y" /* yacc.c:1646  */
+  case 182:
+#line 1839 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -3862,11 +3995,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
-#line 3866 "awkgram.c" /* yacc.c:1646  */
+#line 3999 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1786 "awkgram.y" /* yacc.c:1646  */
+  case 183:
+#line 1856 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@ -3880,31 +4013,31 @@ regular_print:
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
-#line 3884 "awkgram.c" /* yacc.c:1646  */
+#line 4017 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1803 "awkgram.y" /* yacc.c:1646  */
+  case 184:
+#line 1873 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3890 "awkgram.c" /* yacc.c:1646  */
+#line 4023 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1805 "awkgram.y" /* yacc.c:1646  */
+  case 185:
+#line 1875 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3898 "awkgram.c" /* yacc.c:1646  */
+#line 4031 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1812 "awkgram.y" /* yacc.c:1646  */
+  case 186:
+#line 1882 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3904 "awkgram.c" /* yacc.c:1646  */
+#line 4037 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1817 "awkgram.y" /* yacc.c:1646  */
+  case 187:
+#line 1887 "awkgram.y" /* yacc.c:1646  */
     {
                char *var_name = (yyvsp[0])->lextok;
 
@@ -3912,22 +4045,22 @@ regular_print:
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3916 "awkgram.c" /* yacc.c:1646  */
+#line 4049 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1825 "awkgram.y" /* yacc.c:1646  */
+  case 188:
+#line 1895 "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 3927 "awkgram.c" /* yacc.c:1646  */
+#line 4060 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1835 "awkgram.y" /* yacc.c:1646  */
+  case 189:
+#line 1905 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@ -3939,73 +4072,73 @@ regular_print:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 3943 "awkgram.c" /* yacc.c:1646  */
+#line 4076 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1847 "awkgram.y" /* yacc.c:1646  */
+  case 190:
+#line 1917 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3953 "awkgram.c" /* yacc.c:1646  */
+#line 4086 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1856 "awkgram.y" /* yacc.c:1646  */
+  case 191:
+#line 1926 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
          }
-#line 3961 "awkgram.c" /* yacc.c:1646  */
+#line 4094 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1860 "awkgram.y" /* yacc.c:1646  */
+  case 192:
+#line 1930 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
-#line 3969 "awkgram.c" /* yacc.c:1646  */
+#line 4102 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1863 "awkgram.y" /* yacc.c:1646  */
+  case 193:
+#line 1933 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3975 "awkgram.c" /* yacc.c:1646  */
+#line 4108 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1871 "awkgram.y" /* yacc.c:1646  */
+  case 195:
+#line 1941 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3981 "awkgram.c" /* yacc.c:1646  */
+#line 4114 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1875 "awkgram.y" /* yacc.c:1646  */
+  case 196:
+#line 1945 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3987 "awkgram.c" /* yacc.c:1646  */
+#line 4120 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1884 "awkgram.y" /* yacc.c:1646  */
+  case 199:
+#line 1954 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 3993 "awkgram.c" /* yacc.c:1646  */
+#line 4126 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1888 "awkgram.y" /* yacc.c:1646  */
+  case 200:
+#line 1958 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); yyerrok; }
-#line 3999 "awkgram.c" /* yacc.c:1646  */
+#line 4132 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1892 "awkgram.y" /* yacc.c:1646  */
+  case 201:
+#line 1962 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4005 "awkgram.c" /* yacc.c:1646  */
+#line 4138 "awkgram.c" /* yacc.c:1646  */
     break;
 
 
-#line 4009 "awkgram.c" /* yacc.c:1646  */
+#line 4142 "awkgram.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4233,7 +4366,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1894 "awkgram.y" /* yacc.c:1906  */
+#line 1964 "awkgram.y" /* yacc.c:1906  */
 
 
 struct token {
@@ -5540,6 +5673,7 @@ yylex(void)
        bool inhex = false;
        bool intlstr = false;
        AWKNUM d;
+       bool collecting_hard_regexp = false;
 
 #define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
 
@@ -5574,6 +5708,7 @@ yylex(void)
 
        lexeme = lexptr;
        thisline = NULL;
+collect_regexp:
        if (want_regexp) {
                int in_brack = 0;       /* count brackets, [[:alnum:]] allowed 
*/
                /*
@@ -5650,7 +5785,13 @@ end_regexp:
                                                                peek);
                                        }
                                }
-                               return lasttok = REGEXP;
+                               if (collecting_hard_regexp) {
+                                       collecting_hard_regexp = false;
+                                       lasttok = HARD_REGEXP;
+                               } else
+                                       lasttok = REGEXP;
+
+                               return lasttok;
                        case '\n':
                                pushback();
                                yyerror(_("unterminated regexp"));
@@ -5708,6 +5849,13 @@ retry:
                return lasttok = NEWLINE;
 
        case '@':
+               c = nextc(true);
+               if (c == '/') {
+                       want_regexp = true;
+                       collecting_hard_regexp = true;
+                       goto collect_regexp;
+               }
+               pushback();
                at_seen = true;
                return lasttok = '@';
 
diff --git a/awkgram.y b/awkgram.y
index 99482af..916a385 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -164,7 +164,7 @@ extern double fmod(double x, double y);
 %}
 
 %token FUNC_CALL NAME REGEXP FILENAME
-%token YNUMBER YSTRING
+%token YNUMBER YSTRING HARD_REGEXP
 %token RELOP IO_OUT IO_IN
 %token ASSIGNOP ASSIGN MATCHOP CONCAT_OP
 %token SUBSCRIPT
@@ -192,7 +192,7 @@ extern double fmod(double x, double y);
 %left MATCHOP
 %nonassoc RELOP '<' '>' IO_IN IO_OUT
 %left CONCAT_OP
-%left YSTRING YNUMBER
+%left YSTRING YNUMBER HARD_REGEXP
 %left '+' '-'
 %left '*' '/' '%'
 %right '!' UNARY
@@ -454,16 +454,6 @@ function_prologue
        ;
 
 regexp
-       : normal_regexp
-               { $$ = $1; }
-       | '@' normal_regexp
-         {
-               $2->memory->type = Node_hardregex;
-               $$ = $2;
-         }
-       ;
-
-normal_regexp
        /*
         * In this rule, want_regexp tells yylex that the next thing
         * is a regexp so it should read up to the closing slash.
@@ -501,6 +491,33 @@ normal_regexp
                }
        ;
 
+hard_regexp
+       : HARD_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_hardregex, exp);
+                 if (n == NULL) {
+                       unref(exp);
+                       YYABORT;
+                 }
+                 $$ = $1;
+#if 0
+                 /* Don't set this, on purpose */
+                 /* $$->opcode = Op_match_rec; */
+#else
+                 $$->opcode = Op_push_re;
+#endif
+                 $$->memory = n;
+               }
+
 a_slash
        : '/'
          { bcfree($1); }
@@ -1202,6 +1219,12 @@ case_value
                        $1->opcode = Op_push;
                $$ = $1;
          }
+       | hard_regexp  
+         {
+               assert($1->memory->type == Node_hardregex);
+               $1->opcode = Op_push_re;
+               $$ = $1;
+         }
        ;
 
 print
@@ -1344,6 +1367,48 @@ expression_list
          }
        ;
 
+opt_fcall_expression_list
+       : /* empty */
+         { $$ = NULL; }
+       | fcall_expression_list
+         { $$ = $1; }
+       ;
+
+fcall_expression_list
+       : fcall_exp
+         {     $$ = mk_expression_list(NULL, $1); }
+       | fcall_expression_list comma fcall_exp
+         {
+               $$ = mk_expression_list($1, $3);
+               yyerrok;
+         }
+       | error
+         { $$ = NULL; }
+       | fcall_expression_list error
+         {
+               /*
+                * Returning the expression list instead of NULL lets
+                * snode get a list of arguments that it can count.
+                */
+               $$ = $1;
+         }
+       | fcall_expression_list error fcall_exp
+         {
+               /* Ditto */
+               $$ = mk_expression_list($1, $3);
+         }
+       | fcall_expression_list comma error
+         {
+               /* Ditto */
+               $$ = $1;
+         }
+       ;
+
+fcall_exp
+       : exp { $$ = $1; }
+       | hard_regexp { $$ = list_create($1); }
+       ;
+
 /* Expressions, not including the comma operator.  */
 exp
        : variable assign_operator exp %prec ASSIGNOP
@@ -1353,6 +1418,11 @@ exp
                                _("regular expression on right of assignment"));
                $$ = mk_assignment($1, $3, $2);
          }
+       | variable ASSIGN hard_regexp %prec ASSIGNOP
+         {
+               stopme(0);
+               $$ = mk_assignment($1, list_create($3), $2);
+         }
        | exp LEX_AND exp
          {     $$ = mk_boolean($1, $3, $2); }
        | exp LEX_OR exp
@@ -1599,13 +1669,13 @@ non_post_simp_exp
           }
        | '(' exp r_paren
          { $$ = $2; }
-       | LEX_BUILTIN '(' opt_expression_list r_paren
+       | LEX_BUILTIN '(' opt_fcall_expression_list r_paren
          {
                $$ = snode($3, $1);
                if ($$ == NULL)
                        YYABORT;
          }
-       | LEX_LENGTH '(' opt_expression_list r_paren
+       | LEX_LENGTH '(' opt_fcall_expression_list r_paren
          {
                $$ = snode($3, $1);
                if ($$ == NULL)
@@ -1714,7 +1784,7 @@ func_call
        ;
 
 direct_func_call
-       : FUNC_CALL '(' opt_expression_list r_paren
+       : FUNC_CALL '(' opt_fcall_expression_list r_paren
          {
                NODE *n;
 
@@ -3197,6 +3267,7 @@ yylex(void)
        bool inhex = false;
        bool intlstr = false;
        AWKNUM d;
+       bool collecting_hard_regexp = false;
 
 #define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
 
@@ -3231,6 +3302,7 @@ yylex(void)
 
        lexeme = lexptr;
        thisline = NULL;
+collect_regexp:
        if (want_regexp) {
                int in_brack = 0;       /* count brackets, [[:alnum:]] allowed 
*/
                /*
@@ -3307,7 +3379,13 @@ end_regexp:
                                                                peek);
                                        }
                                }
-                               return lasttok = REGEXP;
+                               if (collecting_hard_regexp) {
+                                       collecting_hard_regexp = false;
+                                       lasttok = HARD_REGEXP;
+                               } else
+                                       lasttok = REGEXP;
+
+                               return lasttok;
                        case '\n':
                                pushback();
                                yyerror(_("unterminated regexp"));
@@ -3365,6 +3443,13 @@ retry:
                return lasttok = NEWLINE;
 
        case '@':
+               c = nextc(true);
+               if (c == '/') {
+                       want_regexp = true;
+                       collecting_hard_regexp = true;
+                       goto collect_regexp;
+               }
+               pushback();
                at_seen = true;
                return lasttok = '@';
 
diff --git a/builtin.c b/builtin.c
index f6fed87..4a99ed6 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3685,6 +3685,7 @@ do_typeof(int nargs)
 {
        NODE *arg;
        char *res = "unknown";
+       int null_str_flags = (STRCUR|STRING|NUMCUR|NUMBER);
 
        arg = POP();
        switch (arg->type) {
@@ -3696,7 +3697,9 @@ do_typeof(int nargs)
                break;
        case Node_val:
        case Node_var:
-               if ((arg->flags & STRING) != 0)
+               if ((arg->flags & null_str_flags) == null_str_flags)
+                       res = "untyped";
+               else if ((arg->flags & STRING) != 0)
                        res = "scalar_s";
                else if ((arg->flags & NUMBER) != 0)
                        res = "scalar_n";
diff --git a/x.awk b/x.awk
index b654db7..c301030 100644
--- a/x.awk
+++ b/x.awk
@@ -1,7 +1,7 @@
 BEGIN {
        a = 5 ; print typeof(a)
        print typeof(b)
-       print typeof(b)
+       print typeof(@/foo/)
        c = "foo" ; print typeof(c)
        d[1] = 1 ; print typeof(d), typeof(d[1])
        e = @/foo/ ; print typeof(e)

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=e29498dcb6a94edadf3d3ad3f631331c7ee40a33

commit e29498dcb6a94edadf3d3ad3f631331c7ee40a33
Merge: 69b9c6b 480aca3
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Mar 18 21:55:17 2015 +0200

    Merge branch 'master' into feature/regex-type


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

Summary of changes:
 ChangeLog                        |   15 +
 NEWS                             |    5 +-
 awkgram.c                        | 2062 ++++++++++++++++++++------------------
 awkgram.y                        |  117 ++-
 awklib/eg/lib/inplace.awk        |    9 +-
 builtin.c                        |    5 +-
 config.guess                     |    6 +-
 config.sub                       |    8 +-
 doc/ChangeLog                    |    6 +
 doc/gawk.info                    |  187 ++--
 doc/gawk.texi                    |   13 +-
 doc/gawktexi.in                  |   13 +-
 extension/ChangeLog              |   10 +
 extension/build-aux/ChangeLog    |    4 +
 extension/build-aux/config.guess |    6 +-
 extension/build-aux/config.sub   |    8 +-
 extension/build-aux/ltmain.sh    |   23 +-
 extension/configure              |   45 +-
 extension/inplace.3am            |   23 +-
 extension/m4/ChangeLog           |    4 +
 extension/m4/libtool.m4          |   27 +-
 extension/m4/ltversion.m4        |   10 +-
 test/ChangeLog                   |    5 +
 test/inplace1.ok                 |    2 +-
 test/inplace2.ok                 |    2 +-
 test/inplace3.ok                 |    4 +-
 x.awk                            |    2 +-
 27 files changed, 1472 insertions(+), 1149 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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