diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-25 11:47:18 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-25 11:47:18 +0200 |
commit | eceb548b02f0d72ca6a6e9a68bfd615ac9549a64 (patch) | |
tree | 10d127076e7f850560095dd386c9f28b2c4811aa | |
parent | 378de9aa9e73d44d0172947c38be67c0bd78a0b0 (diff) | |
download | egawk-eceb548b02f0d72ca6a6e9a68bfd615ac9549a64.tar.gz egawk-eceb548b02f0d72ca6a6e9a68bfd615ac9549a64.tar.bz2 egawk-eceb548b02f0d72ca6a6e9a68bfd615ac9549a64.zip |
Rework namespace handling to make simpler and correct. Add two test cases.
-rwxr-xr-x | ChangeLog | 26 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | awk.h | 2 | ||||
-rw-r--r-- | awkgram.c | 1920 | ||||
-rw-r--r-- | awkgram.y | 44 | ||||
-rw-r--r-- | command.c | 2 | ||||
-rw-r--r-- | command.y | 2 | ||||
-rw-r--r-- | debug.c | 4 | ||||
-rw-r--r-- | ext.c | 4 | ||||
-rw-r--r-- | gawkapi.c | 4 | ||||
-rw-r--r-- | interpret.h | 4 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | profile.c | 3 | ||||
-rw-r--r-- | symbol.c | 60 | ||||
-rw-r--r-- | test/ChangeLog | 14 | ||||
-rw-r--r-- | test/Makefile.am | 6 | ||||
-rw-r--r-- | test/Makefile.in | 17 | ||||
-rw-r--r-- | test/Maketests | 10 | ||||
-rw-r--r-- | test/nsforloop.awk | 20 | ||||
-rw-r--r-- | test/nsforloop.ok | 7 | ||||
-rw-r--r-- | test/nsfuncrecurse.awk | 18 | ||||
-rw-r--r-- | test/nsfuncrecurse.ok | 5 | ||||
-rw-r--r-- | test/nsindirect2.ok | 2 | ||||
-rw-r--r-- | test/nsprof2.ok | 20 |
24 files changed, 1122 insertions, 1076 deletions
@@ -1,3 +1,29 @@ +2019-01-24 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (Grammar): Add new production `qualified_name' which + is NAME + qualification call. Use it everywhere that NAME was + used, except for function parameters. + +2019-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * profile.c (adjust_namespace): Check for all upper case + identifiers so we don't get things like awk::NF. + +2019-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * symtab.c (lookup): Remove second `do_qualify' parameter. + Remove calls to `fix_up_namespace'. If name starts with + "awk::" just lookup the compnent name. + Adjust all calls to `lookup' in other files. + (install): Don't use `fix_up_namespace'. + (fix_up_namespace): Remove function. + * awk.h (lookup): Adjust declaration. + +2019-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (qualify_name): Don't qualify a name if it's + a parameter. + 2019-01-21 Arnold D. Robbins <arnold@skeeve.com> * awkgram.y (Grammar): Use qualify_name for array subscript @@ -1309,7 +1309,7 @@ assoc_list(NODE *symbol, const char *sort_str, sort_context_t sort_ctxt) if (sp == sort_str || *sp != '\0') fatal(_("`%s' is invalid as a function name"), sort_str); - f = lookup(sort_str, false); + f = lookup(sort_str); if (f == NULL || f->type != Node_func) fatal(_("sort comparison function `%s' is not defined"), sort_str); @@ -1714,7 +1714,7 @@ extern NODE *remove_symbol(NODE *r); extern void destroy_symbol(NODE *r); extern void release_symbols(NODE *symlist, int keep_globals); extern void append_symbol(NODE *r); -extern NODE *lookup(const char *name, bool do_qualify); +extern NODE *lookup(const char *name); extern NODE *make_params(char **pnames, int pcount); extern void install_params(NODE *func); extern void remove_params(NODE *func); @@ -621,16 +621,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1191 +#define YYLAST 1169 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 77 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 71 +#define YYNNTS 72 /* YYNRULES -- Number of rules. */ -#define YYNRULES 207 +#define YYNRULES 208 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 355 +#define YYNSTATES 356 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -685,24 +685,24 @@ static const yytype_uint16 yyrline[] = 0, 231, 231, 232, 237, 247, 251, 263, 271, 285, 296, 306, 316, 329, 339, 341, 346, 356, 358, 363, 365, 367, 373, 377, 382, 412, 424, 436, 442, 451, - 469, 480, 491, 497, 505, 506, 510, 510, 544, 543, - 577, 592, 594, 599, 600, 620, 625, 626, 630, 641, - 646, 653, 761, 812, 862, 988, 1009, 1030, 1040, 1050, - 1060, 1071, 1084, 1102, 1101, 1115, 1133, 1133, 1231, 1231, - 1264, 1294, 1302, 1303, 1309, 1310, 1317, 1322, 1335, 1350, - 1352, 1360, 1367, 1369, 1377, 1386, 1388, 1397, 1398, 1406, - 1411, 1411, 1424, 1430, 1442, 1446, 1468, 1469, 1475, 1476, - 1485, 1486, 1491, 1496, 1513, 1515, 1517, 1524, 1525, 1531, - 1532, 1537, 1539, 1546, 1548, 1556, 1561, 1572, 1573, 1578, - 1580, 1587, 1589, 1597, 1602, 1612, 1613, 1618, 1625, 1629, - 1631, 1633, 1646, 1663, 1673, 1680, 1682, 1687, 1689, 1691, - 1699, 1701, 1706, 1708, 1713, 1715, 1717, 1774, 1776, 1778, - 1780, 1782, 1784, 1786, 1788, 1802, 1807, 1812, 1837, 1843, - 1845, 1847, 1849, 1851, 1853, 1858, 1862, 1894, 1902, 1908, - 1914, 1927, 1928, 1929, 1934, 1939, 1943, 1947, 1962, 1983, - 1988, 2025, 2062, 2063, 2069, 2070, 2075, 2077, 2084, 2101, - 2118, 2120, 2127, 2132, 2146, 2162, 2174, 2183, 2187, 2192, - 2196, 2200, 2204, 2209, 2210, 2214, 2218, 2222 + 469, 483, 484, 495, 501, 509, 510, 514, 514, 548, + 547, 581, 596, 598, 603, 604, 624, 629, 630, 634, + 645, 650, 657, 765, 816, 866, 992, 1013, 1034, 1044, + 1054, 1064, 1075, 1088, 1106, 1105, 1119, 1137, 1137, 1235, + 1235, 1268, 1298, 1306, 1307, 1313, 1314, 1321, 1326, 1339, + 1354, 1356, 1364, 1371, 1373, 1381, 1390, 1392, 1401, 1402, + 1410, 1415, 1415, 1428, 1434, 1446, 1450, 1472, 1473, 1479, + 1480, 1489, 1490, 1495, 1500, 1517, 1519, 1521, 1528, 1529, + 1535, 1536, 1541, 1543, 1550, 1552, 1560, 1565, 1576, 1577, + 1582, 1584, 1591, 1593, 1601, 1606, 1616, 1617, 1622, 1629, + 1633, 1635, 1637, 1650, 1667, 1677, 1684, 1686, 1691, 1693, + 1695, 1703, 1705, 1710, 1712, 1717, 1719, 1721, 1778, 1780, + 1782, 1784, 1786, 1788, 1790, 1792, 1806, 1811, 1816, 1841, + 1847, 1849, 1851, 1853, 1855, 1857, 1862, 1866, 1898, 1906, + 1912, 1918, 1931, 1932, 1933, 1938, 1943, 1947, 1951, 1966, + 1987, 1992, 2029, 2066, 2067, 2073, 2074, 2079, 2081, 2088, + 2105, 2122, 2124, 2131, 2136, 2142, 2153, 2165, 2174, 2178, + 2183, 2187, 2191, 2195, 2200, 2201, 2205, 2209, 2213 }; #endif @@ -724,8 +724,8 @@ static const char *const yytname[] = "SLASH_BEFORE_EQUAL", "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'", "'['", "']'", "'{'", "'}'", "';'", "$accept", "program", "rule", - "source", "library", "namespace", "pattern", "action", "func_name", - "lex_builtin", "function_prologue", "$@1", "regexp", "$@2", + "source", "library", "namespace", "pattern", "action", "qualified_name", + "func_name", "lex_builtin", "function_prologue", "$@1", "regexp", "$@2", "typed_regexp", "a_slash", "statements", "statement_term", "statement", "non_compound_stmt", "$@3", "simple_stmt", "$@4", "$@5", "opt_simple_stmt", "case_statements", "case_statement", "case_value", @@ -758,56 +758,56 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -283 +#define YYPACT_NINF -295 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-283))) + (!!((Yystate) == (-295))) -#define YYTABLE_NINF -119 +#define YYTABLE_NINF -120 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-119))) + (!!((Yytable_value) == (-120))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -283, 316, -283, -283, -45, -28, -283, -283, -283, -283, - 160, -283, -283, 23, 23, 23, -39, -18, -283, -283, - -283, 1047, 1047, -283, 1047, 1075, 818, 257, -283, 99, - -20, -283, -283, 11, 1017, 974, 378, 415, -283, -283, - -283, -283, 329, 742, 818, -283, 0, -283, -283, -283, - -283, -283, 25, 9, -283, 22, -283, -283, -283, 742, - 742, 79, 46, 18, 46, 46, 1047, 114, -283, -283, - 13, 286, 44, 47, 60, -283, 94, -283, -283, -283, - 11, -283, 94, -283, 151, -283, -283, 1002, 162, 1047, - 1047, 1047, 94, -283, -283, -283, 1047, 1047, 132, 378, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, -283, 170, -283, -283, 168, 1047, -283, -283, - -283, 116, 14, -283, 1132, 76, 1132, -283, -283, -283, - -283, 1047, -283, 116, 116, 286, -283, -283, -283, 1047, - -283, 144, 846, -283, -283, 34, 91, -283, 39, 91, - -283, 59, 91, 11, -283, 542, -283, -283, -283, 145, - -283, 135, 580, 1113, -283, 189, 1132, 23, 230, 230, - 46, 46, 46, 46, 230, 230, 46, 46, 46, 46, - -283, -283, 1132, -283, 1002, 770, -283, 27, 378, -283, - -283, 1132, 162, -283, 1132, -283, -283, -283, -283, -283, - -283, -283, 119, -283, 12, 123, 126, 94, 128, 91, - 91, -283, -283, 91, 1047, 91, 94, -283, -283, 91, - -283, -283, 1132, -283, 122, 94, 1047, -283, -283, -283, - -283, -283, -283, 116, 73, -283, 1047, 1047, -283, 198, - 1047, 1047, 660, 895, -283, -283, -283, 91, 1132, -283, - -283, -283, 590, 542, 94, -283, -283, 1132, 94, -283, - 28, 286, 91, -28, 141, 286, 286, 190, -23, -283, - 122, -283, 818, 205, -283, 325, -283, -283, -283, -283, - -283, 94, -283, -283, 115, -283, -283, -283, 94, 94, - 153, 162, 94, 13, -283, -283, 660, -283, -283, -20, - 660, 1047, 116, 694, 144, 1047, 209, -283, -283, 286, - 94, 1090, 94, 974, 94, 152, 94, 660, 94, 929, - 660, -283, 342, 176, -283, 158, -283, -283, 929, 116, - -283, -283, -283, 236, 243, -283, -283, 176, -283, 94, - -283, 116, 94, -283, -283, 94, -283, 94, 660, -283, - 390, 660, -283, 466, -283 + -295, 359, -295, -295, -38, -295, -295, -295, -295, -295, + 172, -295, -295, 17, 17, 17, -31, -27, -295, -295, + -295, 1016, 1016, -295, 1016, 1061, 861, 218, -295, -29, + -32, -22, -295, -295, 84, 1076, 983, 354, 382, -295, + -295, -295, -295, 325, 785, -295, -295, -295, 18, -295, + 91, -295, 113, -295, -295, -295, 785, 785, 170, 115, + 87, 115, 115, 1016, 114, -295, -295, 13, 273, 31, + 70, 121, -295, 127, -295, -295, -295, 84, -295, 127, + 861, -295, 22, -295, -295, 182, -295, -295, 971, 173, + 1016, 1016, 1016, 127, -295, -295, -295, 1016, 1016, 157, + 354, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, -295, 189, -295, -295, 195, 1016, -295, + -295, -295, 134, 66, -295, 1110, -295, -295, 1016, -295, + 134, 134, 273, -295, -295, -295, 1016, -295, 175, 889, + -295, -295, 45, -17, -295, 80, -17, -295, 81, -17, + 84, -295, 585, -295, 15, 1110, -295, -295, -295, -295, + 19, -295, 276, 190, 1099, -295, 240, 1110, 17, 233, + 233, 115, 115, 115, 115, 233, 233, 115, 115, 115, + 115, -295, -295, 1110, -295, 971, 813, 49, 354, -295, + -295, 1110, 173, -295, 1110, -295, -295, -295, -295, -295, + -295, -295, 142, -295, 11, 158, 164, 127, 165, -17, + -17, -295, -295, -17, 1016, -17, 127, -295, -295, -17, + -295, -295, 1110, -295, 147, 127, -295, 1016, -295, -295, + -295, -295, -295, -295, 134, 129, -295, 1016, 1016, 173, + -295, 1016, 1016, 703, 938, -295, -295, -295, -17, 1110, + -295, -295, -295, 633, 585, 127, -295, -295, 1110, 127, + -295, 124, 273, -17, 174, -32, 273, 273, 215, -23, + -295, 147, -295, 861, 235, -295, 16, -295, -295, -295, + -295, -295, 127, -295, -295, -295, 57, -295, -295, 127, + 127, 188, 173, 127, 13, -295, -295, 703, -295, -295, + -22, 703, 1016, 134, 737, 175, 1016, 230, -295, -295, + 273, 127, 251, 127, 983, 127, 153, 127, 703, 127, + 938, 703, -295, 154, 206, -295, 193, -295, -295, 938, + 134, -295, -295, -295, 256, 257, -295, -295, 206, -295, + 127, -295, 134, 127, -295, -295, 127, -295, 127, 703, + -295, 433, 703, -295, 509, -295 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -815,68 +815,68 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 6, 0, 193, 175, 176, 25, 26, - 0, 27, 28, 182, 0, 0, 0, 170, 5, 94, - 42, 0, 0, 41, 0, 0, 0, 0, 3, 0, - 0, 165, 38, 4, 23, 136, 144, 145, 147, 171, - 179, 195, 172, 0, 0, 190, 0, 194, 31, 30, - 34, 35, 0, 0, 32, 98, 183, 173, 174, 0, - 0, 0, 178, 172, 177, 166, 0, 199, 172, 113, - 0, 111, 0, 0, 0, 180, 96, 205, 7, 8, - 46, 43, 96, 9, 0, 95, 140, 0, 0, 0, - 0, 0, 96, 141, 143, 142, 0, 0, 0, 146, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 137, 155, 156, 0, 0, 121, 40, - 126, 0, 0, 119, 125, 0, 111, 192, 191, 33, - 36, 0, 154, 0, 0, 0, 197, 198, 196, 114, - 202, 0, 0, 167, 15, 0, 0, 18, 0, 0, - 21, 0, 0, 97, 200, 0, 47, 39, 131, 132, - 133, 129, 130, 0, 207, 134, 24, 182, 152, 153, - 149, 150, 151, 148, 163, 164, 160, 161, 162, 159, - 128, 139, 127, 181, 122, 0, 189, 0, 99, 168, - 169, 115, 0, 116, 112, 14, 10, 17, 11, 20, - 12, 45, 0, 63, 0, 0, 0, 96, 0, 0, - 0, 85, 86, 0, 107, 0, 96, 44, 57, 0, - 66, 50, 71, 43, 203, 96, 0, 158, 123, 124, - 120, 104, 102, 0, 0, 157, 0, 107, 68, 0, - 0, 0, 0, 72, 58, 59, 60, 0, 108, 61, - 201, 65, 0, 0, 96, 204, 48, 135, 96, 105, - 0, 0, 0, 184, 0, 0, 0, 0, 193, 73, - 0, 62, 0, 89, 87, 0, 49, 29, 37, 106, - 103, 96, 64, 69, 0, 186, 188, 70, 96, 96, - 0, 0, 96, 0, 90, 67, 0, 185, 187, 0, - 0, 0, 0, 0, 88, 0, 92, 74, 52, 0, - 96, 0, 96, 91, 96, 0, 96, 0, 96, 72, - 0, 76, 0, 0, 75, 0, 53, 54, 72, 0, - 93, 79, 82, 0, 0, 83, 84, 0, 206, 96, - 51, 0, 96, 81, 80, 96, 43, 96, 0, 43, - 0, 0, 56, 0, 55 + 2, 0, 1, 6, 0, 30, 176, 177, 25, 26, + 0, 27, 28, 183, 0, 0, 0, 171, 5, 95, + 43, 0, 0, 42, 0, 0, 0, 0, 3, 0, + 194, 0, 166, 39, 4, 23, 137, 145, 146, 148, + 172, 180, 196, 173, 0, 32, 35, 36, 0, 31, + 0, 33, 99, 184, 174, 175, 0, 0, 0, 179, + 173, 178, 167, 0, 200, 173, 114, 0, 112, 0, + 0, 0, 181, 97, 206, 7, 8, 47, 44, 97, + 0, 191, 0, 195, 9, 0, 96, 141, 0, 0, + 0, 0, 0, 97, 142, 144, 143, 0, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 139, 138, 156, 157, 0, 0, 122, + 41, 127, 0, 0, 120, 126, 34, 37, 0, 155, + 0, 0, 0, 198, 199, 197, 115, 203, 0, 0, + 168, 15, 0, 0, 18, 0, 0, 21, 0, 0, + 98, 201, 0, 48, 0, 112, 193, 192, 40, 132, + 133, 134, 130, 131, 0, 208, 135, 24, 183, 153, + 154, 150, 151, 152, 149, 164, 165, 161, 162, 163, + 160, 129, 140, 128, 182, 123, 0, 0, 100, 169, + 170, 116, 0, 117, 113, 14, 10, 17, 11, 20, + 12, 46, 0, 64, 0, 0, 0, 97, 0, 0, + 0, 86, 87, 0, 108, 0, 97, 45, 58, 0, + 67, 51, 72, 44, 204, 97, 190, 0, 159, 124, + 125, 121, 105, 103, 0, 0, 158, 0, 108, 0, + 69, 0, 0, 0, 73, 59, 60, 61, 0, 109, + 62, 202, 66, 0, 0, 97, 205, 49, 136, 97, + 106, 0, 0, 0, 0, 185, 0, 0, 0, 194, + 74, 0, 63, 0, 90, 88, 0, 50, 29, 38, + 107, 104, 97, 65, 71, 70, 0, 187, 189, 97, + 97, 0, 0, 97, 0, 91, 68, 0, 186, 188, + 0, 0, 0, 0, 0, 89, 0, 93, 75, 53, + 0, 97, 0, 97, 92, 97, 0, 97, 0, 97, + 73, 0, 77, 0, 0, 76, 0, 54, 55, 73, + 0, 94, 80, 83, 0, 0, 84, 85, 0, 207, + 97, 52, 0, 97, 82, 81, 97, 44, 97, 0, + 44, 0, 0, 57, 0, 56 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -283, -283, -283, -283, -283, -283, -283, 226, -283, -283, - -283, -283, -63, -283, -77, -283, -215, -73, -30, -283, - -283, -234, -283, -283, -282, -283, -283, -283, -283, -283, - -283, -283, -283, 5, -35, -283, -283, -283, 24, -283, - -43, 101, -283, -15, -1, -283, -283, -283, -40, 17, - -283, 237, -283, -6, 96, -283, -283, -16, -42, -283, - -283, -81, -2, -283, -27, -186, -65, -283, -62, -68, - -8 + -295, -295, -295, -295, -295, -295, -295, 242, -9, -295, + -295, -295, -295, -52, -295, -84, -295, -195, -95, -127, + -295, -295, -236, -295, -295, -294, -295, -295, -295, -295, + -295, -295, -295, -295, 110, -35, -295, -295, -295, 37, + -295, -70, 108, -295, 7, -1, -295, -295, -295, -21, + 39, -295, 262, -295, 6, 150, -295, -295, 3, -76, + -295, -295, -80, -2, -295, -26, -213, -65, -295, 36, + -36, -28 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 28, 146, 149, 152, 29, 78, 53, 54, - 30, 187, 31, 84, 120, 32, 155, 79, 217, 218, - 237, 219, 252, 263, 270, 315, 324, 337, 220, 273, - 295, 305, 221, 153, 154, 132, 233, 234, 247, 274, - 70, 121, 122, 123, 222, 117, 95, 96, 35, 36, - 37, 38, 39, 40, 55, 283, 284, 285, 45, 46, - 47, 41, 42, 138, 223, 224, 143, 254, 82, 339, - 142 + -1, 1, 28, 143, 146, 149, 29, 75, 30, 50, + 51, 31, 187, 32, 85, 121, 33, 152, 76, 217, + 218, 238, 219, 253, 265, 271, 316, 325, 338, 220, + 274, 296, 306, 221, 150, 151, 129, 234, 235, 248, + 275, 67, 122, 123, 124, 222, 118, 96, 97, 36, + 37, 38, 39, 40, 41, 52, 285, 286, 287, 81, + 82, 83, 42, 43, 135, 223, 224, 140, 255, 79, + 340, 139 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -884,250 +884,244 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 34, 125, 81, 81, 128, 141, 33, 160, 253, 269, - 158, 56, 57, 58, 139, 184, 238, 127, 291, 63, - 63, 75, 63, 68, 43, 71, 97, 5, 231, 279, - 59, 232, 280, 63, 80, 195, 180, 329, 62, 64, - 197, 65, 124, 126, 44, 144, 341, 156, 147, 44, - 145, 60, 99, 148, 76, 75, 183, 164, 124, 124, - 199, 150, 114, 115, 85, 135, 151, 276, 189, 190, - 92, 92, 44, 196, 259, 129, 198, 139, 130, 200, - 131, 239, 4, 140, -118, 269, 159, -13, 161, 162, - 163, 25, -16, 225, 269, 165, 166, -100, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - -13, 235, -19, 105, 185, -16, 182, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 63, - 92, 350, 297, 92, 353, -19, 244, 245, 191, 340, - 246, 194, 249, -101, 19, 86, 251, 19, 188, 186, - 87, 80, 19, 321, 80, 86, 157, 80, 136, 137, - 133, 134, 255, 48, 49, 56, 5, 77, 258, 228, - 230, 167, 242, 76, 271, 77, 88, 322, 323, 119, - 225, 250, 181, 124, 124, 192, 140, 44, 236, 282, - 256, 225, 240, 93, 94, 241, 281, 243, 77, -119, - 288, 289, 264, 93, 94, 19, 50, 51, 292, 275, - 302, 287, 267, 248, 80, 80, 294, 290, 80, 277, - 80, 286, 301, 278, 80, 257, 260, -96, 304, 293, - 314, 52, 338, 216, 225, 261, 248, 310, 225, 265, - 266, 312, 286, 343, 316, 336, 296, -119, -119, 318, - 344, 126, 80, 299, 300, 225, 83, 303, 225, 335, - 4, 262, 67, 227, 342, 313, 306, 80, 298, 345, - 308, 71, 307, 0, 0, 317, 347, 319, 0, 320, - 325, 326, 0, 328, 0, 0, 225, 327, 225, 225, - 330, 225, 102, 103, 104, 0, 86, 105, 0, 0, - 309, 87, 311, 63, 346, 0, 72, 348, 73, 74, - 349, 63, 351, 0, 0, 0, 2, 3, 352, 4, - 5, 354, 0, 6, 7, 0, 139, 88, 89, 90, - 99, 0, 0, 0, 8, 9, -110, 0, 0, 0, - 0, 91, 112, 113, 93, 94, 0, 0, 0, 331, - 332, 119, 10, 11, 12, 13, 140, 0, 0, 0, - 14, 15, 16, 17, 18, 0, 0, 0, 0, 19, - 20, 0, 0, 114, 115, 0, 21, 22, -110, 23, - 0, 24, 92, 116, 25, 26, 0, 27, 0, 0, - -22, 201, -22, 4, 5, -110, 20, 6, 7, 0, - 0, -110, 333, 334, 0, 23, 0, 0, 0, 0, - 202, 0, 203, 204, 205, -78, -78, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 0, 0, 13, - 215, 0, 0, 0, 14, 15, 16, 17, 100, 101, - 102, 103, 104, -78, 20, 105, 0, 0, 0, 0, - 21, 22, 0, 23, 0, 24, 0, 0, 25, 26, - 0, 61, 0, 0, 76, -78, 77, 201, 0, 4, - 5, 0, 0, 6, 7, 106, 107, 108, 109, 110, - 0, 0, 111, 0, 0, 0, 202, 0, 203, 204, - 205, -77, -77, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 0, 0, 13, 215, 0, 0, 0, - 14, 15, 16, 17, 0, 0, 0, 0, 0, -77, - 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, - 0, 24, 0, 0, 25, 26, 0, 61, 0, 0, - 76, -77, 77, 201, 0, 4, 5, 0, 0, 6, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 202, 0, 203, 204, 205, 0, 0, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 0, - 0, 13, 215, 0, 0, 0, 14, 15, 16, 17, - 86, 69, 0, 4, 5, 87, 20, 6, 7, 0, - 0, -109, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 0, 0, 76, 216, 77, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 14, 15, 16, 17, 93, 94, - 0, 0, 0, -109, 20, 0, 0, 0, 0, 0, - 21, 22, 0, 23, 0, 24, 0, 0, 25, 272, - -109, 61, 0, 4, 5, 0, -109, 6, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 0, 203, 204, 205, 0, 0, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 4, 5, 13, - 215, 6, 7, 0, 14, 15, 16, 17, 0, 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, 76, 0, 77, 0, 14, 15, - 16, 17, 0, 118, 0, 4, 5, 0, 20, 6, - 7, 119, 0, 0, 21, 22, 0, 23, 0, 24, - 0, 0, 25, 26, 0, 61, 0, 0, 0, 0, - 77, 229, 0, 4, 5, 0, 0, 6, 7, 119, - 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, - 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 13, - 25, 26, -117, 61, 14, 15, 16, 17, 0, 69, - 0, 4, 5, 0, 20, 6, 7, 0, 0, 0, - 21, 22, 0, 23, 0, 24, 0, 0, 25, 26, - 0, 61, 0, 0, 0, 0, 0, 193, 0, 4, - 5, 0, 0, 6, 7, 0, 0, 13, 0, 0, - 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, 21, 22, - 0, 23, 0, 24, 0, 13, 25, 26, 0, 61, - 14, 15, 16, 17, 0, 0, 0, 0, 4, 268, - 20, 0, 6, 7, 0, 0, 21, 22, 0, 23, - 0, 24, 0, 0, 25, 26, 0, 61, 204, 0, - 0, 0, 0, 0, 0, 0, 0, 211, 212, 0, - 0, 0, 4, 5, 13, 0, 6, 7, 0, 14, + 35, 49, 138, 78, 159, 78, 157, 98, 270, 161, + 154, 53, 54, 55, 136, 5, 136, 136, 292, 60, + 60, 5, 60, 65, 19, 68, 330, -111, 254, 87, + 181, 44, 141, 72, 60, 342, 19, 142, 56, 156, + 80, 277, 57, 125, 153, 73, 195, 74, 196, 80, + 232, 198, 73, 233, 200, 125, 125, 184, 165, 74, + 59, 61, 132, 62, 72, 189, 190, 185, 126, -111, + 93, 144, 93, 93, 298, 100, 145, 94, 95, 155, + 239, 197, 199, 137, 270, 25, -111, 160, 226, 162, + 163, 164, -111, 270, 80, 186, 166, 167, -13, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 34, 236, 341, 245, 246, 268, 183, 247, -101, + 250, -13, 147, 93, 252, 280, 60, 148, 281, 80, + 260, 115, 116, -16, -19, 191, -119, 86, 194, 77, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 351, 272, 322, 354, -16, -19, 133, 134, + 127, 332, 333, 120, 130, 131, 53, 188, 283, 259, + 307, 128, 243, 4, 309, 45, 5, 5, 323, 324, + 19, 251, 106, 276, 125, 125, 93, 158, 225, 288, + 257, 328, 229, 231, 331, 240, 168, 282, 120, -102, + 87, 289, 290, 294, 137, 88, 19, 261, 20, 182, + 288, 237, 303, 249, 334, 335, 192, 23, 46, 47, + 278, 4, 353, 74, 279, 355, 258, 241, -97, 305, + 264, 89, 90, 242, 244, 269, 262, 249, 311, 337, + 266, 267, 291, 48, 284, 317, 295, 297, 94, 95, + -120, 315, 155, 77, 300, 301, 77, 302, 304, 77, + 256, 87, 339, 344, 345, 343, 88, 69, 216, 70, + 71, 336, 68, 84, 308, 263, 318, 348, 320, 225, + 321, 326, 327, 87, 329, 314, 87, 64, 88, 299, + 225, 88, 89, 90, 91, 103, 104, 105, -120, -120, + 106, 310, 346, 312, 60, 347, 92, 293, 349, 94, + 95, 350, 60, 352, 89, 90, 91, 89, 228, 77, + 77, 0, 0, 77, 0, 77, 0, 74, 92, 77, + 0, 94, 95, 225, 94, 95, 0, 225, 113, 114, + 313, 0, 0, 137, 0, 0, 0, 0, 319, 0, + 0, 0, 0, 100, 225, 0, 0, 225, 77, 2, + 3, 0, 4, 5, 0, 0, 6, 7, 0, 115, + 116, 0, 0, 77, 0, 0, 0, 8, 9, 117, + 0, 0, 0, 0, 0, 225, 0, 225, 225, 0, + 225, 0, 0, 0, 0, 10, 11, 12, 13, 0, + 0, 0, 0, 14, 15, 16, 17, 18, 0, 0, + 0, 0, 19, 20, 101, 102, 103, 104, 105, 21, + 22, 106, 23, 0, 24, 0, 0, 25, 26, 0, + 27, 0, 0, -22, 201, -22, 4, 5, 0, 0, + 6, 7, 107, 108, 109, 110, 111, 0, 0, 112, + 0, 0, 0, 202, 0, 203, 204, 205, -79, -79, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 0, + 0, 0, 13, 215, 0, 0, 0, 14, 15, 16, + 17, 0, 0, 0, 0, 0, -79, 20, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 58, 0, 0, 73, -79, 74, + 201, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, + 0, 203, 204, 205, -78, -78, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 0, 0, 0, 13, 215, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, 0, -78, 20, 0, 0, 0, 0, 0, 21, + 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, + 58, 0, 0, 73, -78, 74, 201, 0, 4, 5, + 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 0, 203, 204, 205, + 0, 0, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 0, 0, 0, 13, 215, 0, 0, 0, 14, + 15, 16, 17, 0, 66, 0, 4, 5, 0, 20, + 6, 7, 0, 0, -110, 21, 22, 0, 23, 0, + 24, 0, 0, 25, 26, 0, 58, 0, 0, 73, + 216, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, + 17, 0, 0, 0, 0, 0, -110, 20, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 273, -110, 58, 0, 4, 5, 0, -110, + 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 202, 0, 203, 204, 205, 0, 0, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 0, + 4, 5, 13, 215, 6, 7, 0, 14, 15, 16, + 17, 0, 0, 0, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 58, 0, 13, 73, 0, 74, + 0, 14, 15, 16, 17, 0, 119, 0, 4, 5, + 0, 20, 6, 7, 120, 0, 0, 21, 22, 0, + 23, 0, 24, 0, 0, 25, 26, 0, 58, 0, + 0, 0, 0, 74, 230, 0, 4, 5, 0, 0, + 6, 7, 120, 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 20, - 0, 0, 204, 0, 0, 21, 22, 0, 23, 0, - 24, 211, 212, 25, 26, 0, 61, 0, 13, 0, - 0, 0, 0, 14, 15, 16, 17, 4, 5, 0, - 0, 6, 7, 20, 0, 0, 98, 0, 0, 21, + 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, + 24, 0, 13, 25, 26, -118, 58, 14, 15, 16, + 17, 0, 66, 0, 4, 5, 0, 20, 6, 7, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 58, 0, 0, 0, 0, 0, + 193, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 21, 22, 0, 23, 0, 24, 0, 13, 25, + 26, 0, 58, 14, 15, 16, 17, 0, 0, 0, + 0, 4, 5, 20, 0, 6, 7, 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, - 61, 0, 0, 0, 0, 4, 5, 0, 0, 6, - 7, 119, 0, 13, 0, 0, 0, 0, 14, 15, - 16, 17, 0, 0, 0, 0, 0, 86, 20, 0, - 0, 0, 87, 0, 21, 22, 0, 23, 0, 24, - 0, 13, 25, 26, 0, 61, 14, 15, 16, 17, - 4, 5, 0, 0, 6, 7, 20, 0, 88, 89, - 90, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 91, 61, 92, 93, 94, 0, 4, 5, - 0, 0, 6, 7, 0, 0, 13, 0, 0, 0, - 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, - 86, 20, 0, 0, 0, 87, 0, 21, 22, 0, - 23, 0, 24, 0, 0, 25, 26, 0, 61, 14, - 15, 16, 17, 86, 0, 0, 0, 0, 87, 20, - 0, 88, 89, 90, 0, 21, 22, 0, 23, 0, - 24, 0, 86, 25, 66, 91, 61, 87, 93, 94, - 0, 0, 0, 0, 88, 89, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 0, 91, 226, - 0, 93, 94, 88, 89, 90, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, - 93, 94 + 58, 204, 0, 0, 0, 0, 0, 0, 0, 0, + 211, 212, 0, 0, 4, 5, 0, 13, 6, 7, + 120, 0, 14, 15, 16, 17, 4, 5, 0, 0, + 6, 7, 20, 0, 0, 99, 0, 0, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 58, + 13, 0, 0, 0, 0, 14, 15, 16, 17, 4, + 5, 0, 13, 6, 7, 20, 0, 14, 15, 16, + 17, 21, 22, 0, 23, 0, 24, 20, 0, 25, + 26, 0, 58, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 58, 13, 0, 0, 0, 0, + 14, 15, 16, 17, 4, 5, 0, 0, 6, 7, + 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, + 0, 24, 0, 0, 25, 26, 87, 58, 0, 0, + 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 15, 16, 17, 87, + 0, 0, 0, 0, 88, 20, 0, 89, 90, 91, + 87, 21, 22, 0, 23, 88, 24, 0, 0, 25, + 63, 92, 58, 93, 94, 95, 0, 0, 0, 0, + 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 91, 92, 227, 0, 94, 95, 0, + 0, 0, 0, 0, 0, 92, 0, 0, 94, 95 }; static const yytype_int16 yycheck[] = { - 1, 44, 29, 30, 46, 70, 1, 88, 223, 243, - 87, 13, 14, 15, 1, 1, 4, 17, 41, 21, - 22, 27, 24, 25, 69, 26, 34, 4, 1, 1, - 69, 4, 4, 35, 29, 1, 113, 319, 21, 22, - 1, 24, 43, 44, 72, 1, 328, 82, 1, 72, - 6, 69, 35, 6, 74, 61, 121, 92, 59, 60, - 1, 1, 44, 45, 53, 66, 6, 253, 133, 134, - 57, 57, 72, 146, 1, 50, 149, 1, 69, 152, - 58, 69, 3, 70, 70, 319, 87, 53, 89, 90, - 91, 68, 53, 155, 328, 96, 97, 70, 100, 101, + 1, 10, 67, 29, 88, 31, 82, 35, 244, 89, + 80, 13, 14, 15, 1, 4, 1, 1, 41, 21, + 22, 4, 24, 25, 53, 26, 320, 11, 223, 10, + 114, 69, 1, 27, 36, 329, 53, 6, 69, 17, + 72, 254, 69, 44, 79, 74, 1, 76, 143, 72, + 1, 146, 74, 4, 149, 56, 57, 122, 93, 76, + 21, 22, 63, 24, 58, 130, 131, 1, 50, 53, + 57, 1, 57, 57, 17, 36, 6, 58, 59, 80, + 69, 1, 1, 70, 320, 68, 70, 88, 73, 90, + 91, 92, 76, 329, 72, 123, 97, 98, 53, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 76, 192, 53, 67, 122, 76, 117, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 131, - 57, 346, 17, 57, 349, 76, 209, 210, 139, 325, - 213, 142, 215, 70, 53, 10, 219, 53, 131, 73, - 15, 146, 53, 1, 149, 10, 5, 152, 44, 45, - 59, 60, 224, 3, 4, 167, 4, 76, 233, 184, - 185, 39, 207, 74, 247, 76, 41, 25, 26, 9, - 242, 216, 14, 184, 185, 41, 70, 72, 69, 262, - 225, 253, 69, 58, 59, 69, 261, 69, 76, 10, - 265, 266, 4, 58, 59, 53, 46, 47, 270, 252, - 291, 70, 242, 214, 209, 210, 11, 27, 213, 254, - 215, 263, 69, 258, 219, 226, 234, 75, 293, 272, - 21, 71, 56, 75, 296, 236, 237, 302, 300, 240, - 241, 303, 284, 7, 309, 322, 281, 58, 59, 311, - 7, 252, 247, 288, 289, 317, 30, 292, 320, 322, - 3, 237, 25, 167, 329, 305, 296, 262, 284, 337, - 300, 272, 299, -1, -1, 310, 341, 312, -1, 314, - 315, 316, -1, 318, -1, -1, 348, 317, 350, 351, - 320, 353, 62, 63, 64, -1, 10, 67, -1, -1, - 301, 15, 303, 305, 339, -1, 49, 342, 51, 52, - 345, 313, 347, -1, -1, -1, 0, 1, 348, 3, - 4, 351, -1, 7, 8, -1, 1, 41, 42, 43, - 313, -1, -1, -1, 18, 19, 11, -1, -1, -1, - -1, 55, 13, 14, 58, 59, -1, -1, -1, 7, - 8, 9, 36, 37, 38, 39, 70, -1, -1, -1, - 44, 45, 46, 47, 48, -1, -1, -1, -1, 53, - 54, -1, -1, 44, 45, -1, 60, 61, 53, 63, - -1, 65, 57, 54, 68, 69, -1, 71, -1, -1, - 74, 1, 76, 3, 4, 70, 54, 7, 8, -1, - -1, 76, 60, 61, -1, 63, -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, 60, 61, - 62, 63, 64, 53, 54, 67, -1, -1, -1, -1, - 60, 61, -1, 63, -1, 65, -1, -1, 68, 69, - -1, 71, -1, -1, 74, 75, 76, 1, -1, 3, - 4, -1, -1, 7, 8, 60, 61, 62, 63, 64, - -1, -1, 67, -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, -1, 53, - 54, -1, -1, -1, -1, -1, 60, 61, -1, 63, - -1, 65, -1, -1, 68, 69, -1, 71, -1, -1, - 74, 75, 76, 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, - 10, 1, -1, 3, 4, 15, 54, 7, 8, -1, - -1, 11, 60, 61, -1, 63, -1, 65, -1, -1, - 68, 69, -1, 71, -1, -1, 74, 75, 76, -1, - -1, 41, 42, -1, -1, -1, -1, -1, -1, 39, - -1, -1, -1, -1, 44, 45, 46, 47, 58, 59, - -1, -1, -1, 53, 54, -1, -1, -1, -1, -1, - 60, 61, -1, 63, -1, 65, -1, -1, 68, 69, - 70, 71, -1, 3, 4, -1, 76, 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, 3, 4, 39, - 40, 7, 8, -1, 44, 45, 46, 47, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - 60, 61, -1, 63, -1, 65, -1, -1, 68, 69, - -1, 71, -1, 39, 74, -1, 76, -1, 44, 45, - 46, 47, -1, 1, -1, 3, 4, -1, 54, 7, - 8, 9, -1, -1, 60, 61, -1, 63, -1, 65, - -1, -1, 68, 69, -1, 71, -1, -1, -1, -1, - 76, 1, -1, 3, 4, -1, -1, 7, 8, 9, - -1, 39, -1, -1, -1, -1, 44, 45, 46, 47, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, -1, 60, 61, -1, 63, -1, 65, -1, 39, - 68, 69, 70, 71, 44, 45, 46, 47, -1, 1, - -1, 3, 4, -1, 54, 7, 8, -1, -1, -1, - 60, 61, -1, 63, -1, 65, -1, -1, 68, 69, - -1, 71, -1, -1, -1, -1, -1, 1, -1, 3, - 4, -1, -1, 7, 8, -1, -1, 39, -1, -1, - -1, -1, 44, 45, 46, 47, -1, -1, -1, -1, - -1, -1, 54, -1, -1, -1, -1, -1, 60, 61, - -1, 63, -1, 65, -1, 39, 68, 69, -1, 71, - 44, 45, 46, 47, -1, -1, -1, -1, 3, 4, - 54, -1, 7, 8, -1, -1, 60, 61, -1, 63, - -1, 65, -1, -1, 68, 69, -1, 71, 23, -1, - -1, -1, -1, -1, -1, -1, -1, 32, 33, -1, - -1, -1, 3, 4, 39, -1, 7, 8, -1, 44, + 112, 1, 192, 326, 209, 210, 243, 118, 213, 70, + 215, 76, 1, 57, 219, 1, 128, 6, 4, 72, + 1, 44, 45, 53, 53, 136, 70, 53, 139, 29, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 347, 248, 1, 350, 76, 76, 44, 45, + 69, 7, 8, 9, 56, 57, 168, 128, 263, 234, + 297, 58, 207, 3, 301, 3, 4, 4, 25, 26, + 53, 216, 67, 253, 185, 186, 57, 5, 152, 265, + 225, 318, 185, 186, 321, 204, 39, 262, 9, 70, + 10, 266, 267, 273, 70, 15, 53, 235, 54, 14, + 286, 69, 292, 214, 60, 61, 41, 63, 46, 47, + 255, 3, 349, 76, 259, 352, 227, 69, 75, 294, + 239, 41, 42, 69, 69, 244, 237, 238, 303, 323, + 241, 242, 27, 71, 70, 310, 11, 282, 58, 59, + 10, 21, 253, 143, 289, 290, 146, 69, 293, 149, + 224, 10, 56, 7, 7, 330, 15, 49, 75, 51, + 52, 323, 273, 31, 300, 238, 311, 342, 313, 243, + 315, 316, 317, 10, 319, 306, 10, 25, 15, 286, + 254, 15, 41, 42, 43, 62, 63, 64, 58, 59, + 67, 302, 338, 304, 306, 340, 55, 271, 343, 58, + 59, 346, 314, 348, 41, 42, 43, 41, 168, 209, + 210, -1, -1, 213, -1, 215, -1, 76, 55, 219, + -1, 58, 59, 297, 58, 59, -1, 301, 13, 14, + 304, -1, -1, 70, -1, -1, -1, -1, 312, -1, + -1, -1, -1, 314, 318, -1, -1, 321, 248, 0, + 1, -1, 3, 4, -1, -1, 7, 8, -1, 44, + 45, -1, -1, 263, -1, -1, -1, 18, 19, 54, + -1, -1, -1, -1, -1, 349, -1, 351, 352, -1, + 354, -1, -1, -1, -1, 36, 37, 38, 39, -1, + -1, -1, -1, 44, 45, 46, 47, 48, -1, -1, + -1, -1, 53, 54, 60, 61, 62, 63, 64, 60, + 61, 67, 63, -1, 65, -1, -1, 68, 69, -1, + 71, -1, -1, 74, 1, 76, 3, 4, -1, -1, + 7, 8, 60, 61, 62, 63, 64, -1, -1, 67, + -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, -1, 53, 54, -1, -1, + -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, + -1, 68, 69, -1, 71, -1, -1, 74, 75, 76, + 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, -1, 53, 54, -1, -1, -1, -1, -1, 60, + 61, -1, 63, -1, 65, -1, -1, 68, 69, -1, + 71, -1, -1, 74, 75, 76, 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, -1, 3, 4, -1, 54, + 7, 8, -1, -1, 11, 60, 61, -1, 63, -1, + 65, -1, -1, 68, 69, -1, 71, -1, -1, 74, + 75, 76, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 39, -1, -1, -1, -1, 44, 45, 46, + 47, -1, -1, -1, -1, -1, 53, 54, -1, -1, + -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, + -1, 68, 69, 70, 71, -1, 3, 4, -1, 76, + 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, + 3, 4, 39, 40, 7, 8, -1, 44, 45, 46, + 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, + -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, + -1, 68, 69, -1, 71, -1, 39, 74, -1, 76, + -1, 44, 45, 46, 47, -1, 1, -1, 3, 4, + -1, 54, 7, 8, 9, -1, -1, 60, 61, -1, + 63, -1, 65, -1, -1, 68, 69, -1, 71, -1, + -1, -1, -1, 76, 1, -1, 3, 4, -1, -1, + 7, 8, 9, -1, 39, -1, -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, 54, - -1, -1, 23, -1, -1, 60, 61, -1, 63, -1, - 65, 32, 33, 68, 69, -1, 71, -1, 39, -1, - -1, -1, -1, 44, 45, 46, 47, 3, 4, -1, - -1, 7, 8, 54, -1, -1, 12, -1, -1, 60, + -1, -1, -1, -1, -1, 60, 61, -1, 63, -1, + 65, -1, 39, 68, 69, 70, 71, 44, 45, 46, + 47, -1, 1, -1, 3, 4, -1, 54, 7, 8, + -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, + -1, 68, 69, -1, 71, -1, -1, -1, -1, -1, + 1, -1, 3, 4, -1, -1, 7, 8, -1, -1, + 39, -1, -1, -1, -1, 44, 45, 46, 47, -1, + -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, + -1, 60, 61, -1, 63, -1, 65, -1, 39, 68, + 69, -1, 71, 44, 45, 46, 47, -1, -1, -1, + -1, 3, 4, 54, -1, 7, 8, -1, -1, 60, 61, -1, 63, -1, 65, -1, -1, 68, 69, -1, - 71, -1, -1, -1, -1, 3, 4, -1, -1, 7, - 8, 9, -1, 39, -1, -1, -1, -1, 44, 45, - 46, 47, -1, -1, -1, -1, -1, 10, 54, -1, - -1, -1, 15, -1, 60, 61, -1, 63, -1, 65, - -1, 39, 68, 69, -1, 71, 44, 45, 46, 47, - 3, 4, -1, -1, 7, 8, 54, -1, 41, 42, - 43, -1, 60, 61, -1, 63, -1, 65, -1, -1, - 68, 69, 55, 71, 57, 58, 59, -1, 3, 4, - -1, -1, 7, 8, -1, -1, 39, -1, -1, -1, - -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, - 10, 54, -1, -1, -1, 15, -1, 60, 61, -1, - 63, -1, 65, -1, -1, 68, 69, -1, 71, 44, - 45, 46, 47, 10, -1, -1, -1, -1, 15, 54, - -1, 41, 42, 43, -1, 60, 61, -1, 63, -1, - 65, -1, 10, 68, 69, 55, 71, 15, 58, 59, - -1, -1, -1, -1, 41, 42, 43, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 76, -1, 55, 56, - -1, 58, 59, 41, 42, 43, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, - 58, 59 + 71, 23, -1, -1, -1, -1, -1, -1, -1, -1, + 32, 33, -1, -1, 3, 4, -1, 39, 7, 8, + 9, -1, 44, 45, 46, 47, 3, 4, -1, -1, + 7, 8, 54, -1, -1, 12, -1, -1, 60, 61, + -1, 63, -1, 65, -1, -1, 68, 69, -1, 71, + 39, -1, -1, -1, -1, 44, 45, 46, 47, 3, + 4, -1, 39, 7, 8, 54, -1, 44, 45, 46, + 47, 60, 61, -1, 63, -1, 65, 54, -1, 68, + 69, -1, 71, 60, 61, -1, 63, -1, 65, -1, + -1, 68, 69, -1, 71, 39, -1, -1, -1, -1, + 44, 45, 46, 47, 3, 4, -1, -1, 7, 8, + 54, -1, -1, -1, -1, -1, 60, 61, -1, 63, + -1, 65, -1, -1, 68, 69, 10, 71, -1, -1, + -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, 45, 46, 47, 10, + -1, -1, -1, -1, 15, 54, -1, 41, 42, 43, + 10, 60, 61, -1, 63, 15, 65, -1, -1, 68, + 69, 55, 71, 57, 58, 59, -1, -1, -1, -1, + 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, + -1, 41, 42, 43, 55, 56, -1, 58, 59, -1, + -1, -1, -1, -1, -1, 55, -1, -1, 58, 59 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1137,39 +1131,39 @@ static const yytype_uint8 yystos[] = 0, 78, 0, 1, 3, 4, 7, 8, 18, 19, 36, 37, 38, 39, 44, 45, 46, 47, 48, 53, 54, 60, 61, 63, 65, 68, 69, 71, 79, 83, - 87, 89, 92, 110, 121, 125, 126, 127, 128, 129, - 130, 138, 139, 69, 72, 135, 136, 137, 3, 4, - 46, 47, 71, 85, 86, 131, 139, 139, 139, 69, - 69, 71, 126, 139, 126, 126, 69, 128, 139, 1, - 117, 121, 49, 51, 52, 130, 74, 76, 84, 94, - 110, 141, 145, 84, 90, 53, 10, 15, 41, 42, - 43, 55, 57, 58, 59, 123, 124, 147, 12, 126, - 60, 61, 62, 63, 64, 67, 60, 61, 62, 63, - 64, 67, 13, 14, 44, 45, 54, 122, 1, 9, - 91, 118, 119, 120, 121, 117, 121, 17, 135, 50, - 69, 58, 112, 118, 118, 121, 44, 45, 140, 1, - 70, 143, 147, 143, 1, 6, 80, 1, 6, 81, - 1, 6, 82, 110, 111, 93, 111, 5, 91, 121, - 138, 121, 121, 121, 111, 121, 121, 39, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 91, 14, 121, 143, 1, 147, 73, 88, 126, 143, - 143, 121, 41, 1, 121, 1, 94, 1, 94, 1, - 94, 1, 20, 22, 23, 24, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 40, 75, 95, 96, 98, - 105, 109, 121, 141, 142, 145, 56, 131, 120, 1, - 120, 1, 4, 113, 114, 138, 69, 97, 4, 69, - 69, 69, 111, 69, 94, 94, 94, 115, 121, 94, - 111, 94, 99, 93, 144, 145, 111, 121, 143, 1, - 147, 121, 115, 100, 4, 121, 121, 95, 4, 98, - 101, 94, 69, 106, 116, 117, 142, 111, 111, 1, - 4, 143, 94, 132, 133, 134, 135, 70, 143, 143, - 27, 41, 145, 117, 11, 107, 111, 17, 134, 111, - 111, 69, 138, 111, 143, 108, 95, 141, 95, 121, - 143, 121, 145, 125, 21, 102, 143, 111, 145, 111, - 111, 1, 25, 26, 103, 111, 111, 95, 111, 101, - 95, 7, 8, 60, 61, 89, 91, 104, 56, 146, - 142, 101, 143, 7, 7, 146, 111, 143, 111, 111, - 93, 111, 95, 93, 95 + 85, 88, 90, 93, 111, 122, 126, 127, 128, 129, + 130, 131, 139, 140, 69, 3, 46, 47, 71, 85, + 86, 87, 132, 140, 140, 140, 69, 69, 71, 127, + 140, 127, 127, 69, 129, 140, 1, 118, 122, 49, + 51, 52, 131, 74, 76, 84, 95, 111, 142, 146, + 72, 136, 137, 138, 84, 91, 53, 10, 15, 41, + 42, 43, 55, 57, 58, 59, 124, 125, 148, 12, + 127, 60, 61, 62, 63, 64, 67, 60, 61, 62, + 63, 64, 67, 13, 14, 44, 45, 54, 123, 1, + 9, 92, 119, 120, 121, 122, 50, 69, 58, 113, + 119, 119, 122, 44, 45, 141, 1, 70, 144, 148, + 144, 1, 6, 80, 1, 6, 81, 1, 6, 82, + 111, 112, 94, 112, 118, 122, 17, 136, 5, 92, + 122, 139, 122, 122, 122, 112, 122, 122, 39, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 92, 14, 122, 144, 1, 148, 89, 127, 144, + 144, 122, 41, 1, 122, 1, 95, 1, 95, 1, + 95, 1, 20, 22, 23, 24, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 40, 75, 96, 97, 99, + 106, 110, 122, 142, 143, 146, 73, 56, 132, 121, + 1, 121, 1, 4, 114, 115, 139, 69, 98, 69, + 85, 69, 69, 112, 69, 95, 95, 95, 116, 122, + 95, 112, 95, 100, 94, 145, 146, 112, 122, 144, + 1, 148, 122, 116, 85, 101, 122, 122, 96, 85, + 99, 102, 95, 69, 107, 117, 118, 143, 112, 112, + 1, 4, 144, 95, 70, 133, 134, 135, 136, 144, + 144, 27, 41, 146, 118, 11, 108, 112, 17, 135, + 112, 112, 69, 139, 112, 144, 109, 96, 142, 96, + 122, 144, 122, 146, 126, 21, 103, 144, 112, 146, + 112, 112, 1, 25, 26, 104, 112, 112, 96, 112, + 102, 96, 7, 8, 60, 61, 90, 92, 105, 56, + 147, 143, 102, 144, 7, 7, 147, 112, 144, 112, + 112, 94, 112, 96, 94, 96 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1178,24 +1172,24 @@ static const yytype_uint8 yyr1[] = 0, 77, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 80, 80, 80, 81, 81, 81, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 84, - 85, 85, 85, 85, 86, 86, 88, 87, 90, 89, - 91, 92, 92, 93, 93, 93, 94, 94, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, - 96, 96, 96, 97, 96, 96, 99, 98, 100, 98, - 98, 98, 101, 101, 102, 102, 102, 103, 103, 104, - 104, 104, 104, 104, 104, 105, 105, 106, 106, 107, - 108, 107, 109, 109, 110, 110, 111, 111, 112, 112, - 113, 113, 114, 114, 114, 114, 114, 115, 115, 116, - 116, 117, 117, 117, 117, 117, 117, 118, 118, 119, - 119, 119, 119, 119, 119, 120, 120, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, - 123, 123, 124, 124, 125, 125, 125, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, - 127, 127, 127, 127, 127, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, - 129, 130, 131, 131, 132, 132, 133, 133, 134, 135, - 136, 136, 137, 138, 138, 139, 139, 140, 140, 140, - 141, 142, 143, 144, 144, 145, 146, 147 + 85, 86, 86, 86, 86, 87, 87, 89, 88, 91, + 90, 92, 93, 93, 94, 94, 94, 95, 95, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, + 97, 97, 97, 97, 98, 97, 97, 100, 99, 101, + 99, 99, 99, 102, 102, 103, 103, 103, 104, 104, + 105, 105, 105, 105, 105, 105, 106, 106, 107, 107, + 108, 109, 108, 110, 110, 111, 111, 112, 112, 113, + 113, 114, 114, 115, 115, 115, 115, 115, 116, 116, + 117, 117, 118, 118, 118, 118, 118, 118, 119, 119, + 120, 120, 120, 120, 120, 120, 121, 121, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, + 123, 124, 124, 125, 125, 126, 126, 126, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, + 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 130, 130, 131, 132, 132, 133, 133, 134, 134, 135, + 136, 137, 137, 138, 139, 139, 140, 140, 141, 141, + 141, 142, 143, 144, 145, 145, 146, 147, 148 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1204,24 +1198,24 @@ static const yytype_uint8 yyr2[] = 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 1, 2, 1, 1, 2, 1, 1, 2, 1, 0, 1, 3, 1, 1, 1, 1, 5, - 1, 1, 1, 2, 1, 1, 0, 7, 0, 3, - 1, 1, 1, 0, 2, 2, 1, 2, 2, 3, - 1, 9, 6, 8, 8, 12, 11, 1, 2, 2, - 2, 2, 3, 0, 4, 2, 0, 4, 0, 4, - 4, 1, 0, 1, 0, 2, 2, 5, 4, 1, - 2, 2, 1, 1, 1, 1, 1, 1, 3, 0, - 0, 3, 6, 9, 1, 2, 0, 1, 0, 2, - 0, 1, 1, 3, 1, 2, 3, 0, 1, 0, - 1, 1, 3, 1, 2, 3, 3, 0, 1, 1, - 3, 1, 2, 3, 3, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 2, 1, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 5, 4, 3, - 3, 3, 3, 3, 3, 1, 2, 3, 4, 4, - 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, - 2, 4, 0, 1, 0, 2, 1, 2, 1, 3, - 1, 2, 2, 1, 2, 1, 3, 1, 1, 0, - 2, 2, 1, 0, 1, 1, 1, 2 + 1, 1, 1, 1, 2, 1, 1, 0, 7, 0, + 3, 1, 1, 1, 0, 2, 2, 1, 2, 2, + 3, 1, 9, 6, 8, 8, 12, 11, 1, 2, + 2, 2, 2, 3, 0, 4, 2, 0, 4, 0, + 4, 4, 1, 0, 1, 0, 2, 2, 5, 4, + 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, + 0, 0, 3, 6, 9, 1, 2, 0, 1, 0, + 2, 0, 1, 1, 3, 1, 2, 3, 0, 1, + 0, 1, 1, 3, 1, 2, 3, 3, 0, 1, + 1, 3, 1, 2, 3, 3, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 5, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 2, 1, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 5, 4, + 3, 3, 3, 3, 3, 3, 1, 2, 3, 4, + 4, 1, 1, 1, 2, 2, 1, 1, 2, 2, + 1, 2, 4, 0, 1, 0, 2, 1, 2, 1, + 3, 1, 2, 2, 1, 2, 1, 3, 1, 1, + 0, 2, 2, 1, 0, 1, 1, 1, 2 }; @@ -1900,7 +1894,7 @@ yyreduce: case 2: #line 231 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 1904 "awkgram.c" /* yacc.c:1645 */ +#line 1898 "awkgram.c" /* yacc.c:1645 */ break; case 3: @@ -1909,7 +1903,7 @@ yyreduce: rule = 0; yyerrok; } -#line 1913 "awkgram.c" /* yacc.c:1645 */ +#line 1907 "awkgram.c" /* yacc.c:1645 */ break; case 4: @@ -1923,7 +1917,7 @@ yyreduce: } (yyval) = (yyvsp[-1]); } -#line 1927 "awkgram.c" /* yacc.c:1645 */ +#line 1921 "awkgram.c" /* yacc.c:1645 */ break; case 5: @@ -1931,7 +1925,7 @@ yyreduce: { next_sourcefile(); } -#line 1935 "awkgram.c" /* yacc.c:1645 */ +#line 1929 "awkgram.c" /* yacc.c:1645 */ break; case 6: @@ -1944,7 +1938,7 @@ yyreduce: */ /* yyerrok; */ } -#line 1948 "awkgram.c" /* yacc.c:1645 */ +#line 1942 "awkgram.c" /* yacc.c:1645 */ break; case 7: @@ -1956,7 +1950,7 @@ yyreduce: pending_comment = NULL; } } -#line 1960 "awkgram.c" /* yacc.c:1645 */ +#line 1954 "awkgram.c" /* yacc.c:1645 */ break; case 8: @@ -1974,7 +1968,7 @@ yyreduce: (void) append_rule((yyvsp[-1]), NULL); } } -#line 1978 "awkgram.c" /* yacc.c:1645 */ +#line 1972 "awkgram.c" /* yacc.c:1645 */ break; case 9: @@ -1989,7 +1983,7 @@ yyreduce: } yyerrok; } -#line 1993 "awkgram.c" /* yacc.c:1645 */ +#line 1987 "awkgram.c" /* yacc.c:1645 */ break; case 10: @@ -2003,7 +1997,7 @@ yyreduce: } yyerrok; } -#line 2007 "awkgram.c" /* yacc.c:1645 */ +#line 2001 "awkgram.c" /* yacc.c:1645 */ break; case 11: @@ -2017,7 +2011,7 @@ yyreduce: } yyerrok; } -#line 2021 "awkgram.c" /* yacc.c:1645 */ +#line 2015 "awkgram.c" /* yacc.c:1645 */ break; case 12: @@ -2031,7 +2025,7 @@ yyreduce: yyerrok; } -#line 2035 "awkgram.c" /* yacc.c:1645 */ +#line 2029 "awkgram.c" /* yacc.c:1645 */ break; case 13: @@ -2045,19 +2039,19 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = (INSTRUCTION *) srcfile; } -#line 2049 "awkgram.c" /* yacc.c:1645 */ +#line 2043 "awkgram.c" /* yacc.c:1645 */ break; case 14: #line 340 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2055 "awkgram.c" /* yacc.c:1645 */ +#line 2049 "awkgram.c" /* yacc.c:1645 */ break; case 15: #line 342 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2061 "awkgram.c" /* yacc.c:1645 */ +#line 2055 "awkgram.c" /* yacc.c:1645 */ break; case 16: @@ -2071,37 +2065,37 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = (INSTRUCTION *) srcfile; } -#line 2075 "awkgram.c" /* yacc.c:1645 */ +#line 2069 "awkgram.c" /* yacc.c:1645 */ break; case 17: #line 357 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2081 "awkgram.c" /* yacc.c:1645 */ +#line 2075 "awkgram.c" /* yacc.c:1645 */ break; case 18: #line 359 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2087 "awkgram.c" /* yacc.c:1645 */ +#line 2081 "awkgram.c" /* yacc.c:1645 */ break; case 19: #line 364 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 2093 "awkgram.c" /* yacc.c:1645 */ +#line 2087 "awkgram.c" /* yacc.c:1645 */ break; case 20: #line 366 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2099 "awkgram.c" /* yacc.c:1645 */ +#line 2093 "awkgram.c" /* yacc.c:1645 */ break; case 21: #line 368 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2105 "awkgram.c" /* yacc.c:1645 */ +#line 2099 "awkgram.c" /* yacc.c:1645 */ break; case 22: @@ -2110,7 +2104,7 @@ yyreduce: rule = Rule; (yyval) = NULL; } -#line 2114 "awkgram.c" /* yacc.c:1645 */ +#line 2108 "awkgram.c" /* yacc.c:1645 */ break; case 23: @@ -2118,7 +2112,7 @@ yyreduce: { rule = Rule; } -#line 2122 "awkgram.c" /* yacc.c:1645 */ +#line 2116 "awkgram.c" /* yacc.c:1645 */ break; case 24: @@ -2152,7 +2146,7 @@ yyreduce: (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), tp); rule = Rule; } -#line 2156 "awkgram.c" /* yacc.c:1645 */ +#line 2150 "awkgram.c" /* yacc.c:1645 */ break; case 25: @@ -2168,7 +2162,7 @@ yyreduce: (yyvsp[0])->source_file = source; (yyval) = (yyvsp[0]); } -#line 2172 "awkgram.c" /* yacc.c:1645 */ +#line 2166 "awkgram.c" /* yacc.c:1645 */ break; case 26: @@ -2184,7 +2178,7 @@ yyreduce: (yyvsp[0])->source_file = source; (yyval) = (yyvsp[0]); } -#line 2188 "awkgram.c" /* yacc.c:1645 */ +#line 2182 "awkgram.c" /* yacc.c:1645 */ break; case 27: @@ -2194,7 +2188,7 @@ yyreduce: (yyvsp[0])->source_file = source; (yyval) = (yyvsp[0]); } -#line 2198 "awkgram.c" /* yacc.c:1645 */ +#line 2192 "awkgram.c" /* yacc.c:1645 */ break; case 28: @@ -2204,7 +2198,7 @@ yyreduce: (yyvsp[0])->source_file = source; (yyval) = (yyvsp[0]); } -#line 2208 "awkgram.c" /* yacc.c:1645 */ +#line 2202 "awkgram.c" /* yacc.c:1645 */ break; case 29: @@ -2223,7 +2217,7 @@ yyreduce: (yyval) = ip; } -#line 2227 "awkgram.c" /* yacc.c:1645 */ +#line 2221 "awkgram.c" /* yacc.c:1645 */ break; case 30: @@ -2238,11 +2232,11 @@ yyreduce: } (yyval) = (yyvsp[0]); } -#line 2242 "awkgram.c" /* yacc.c:1645 */ +#line 2236 "awkgram.c" /* yacc.c:1645 */ break; - case 31: -#line 481 "awkgram.y" /* yacc.c:1645 */ + case 32: +#line 485 "awkgram.y" /* yacc.c:1645 */ { const char *name = (yyvsp[0])->lextok; char *qname = qualify_name(name, strlen(name)); @@ -2253,36 +2247,36 @@ yyreduce: } (yyval) = (yyvsp[0]); } -#line 2257 "awkgram.c" /* yacc.c:1645 */ +#line 2251 "awkgram.c" /* yacc.c:1645 */ break; - case 32: -#line 492 "awkgram.y" /* yacc.c:1645 */ + case 33: +#line 496 "awkgram.y" /* yacc.c:1645 */ { yyerror(_("`%s' is a built-in function, it cannot be redefined"), tokstart); YYABORT; } -#line 2267 "awkgram.c" /* yacc.c:1645 */ +#line 2261 "awkgram.c" /* yacc.c:1645 */ break; - case 33: -#line 498 "awkgram.y" /* yacc.c:1645 */ + case 34: +#line 502 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); at_seen = false; } -#line 2276 "awkgram.c" /* yacc.c:1645 */ +#line 2270 "awkgram.c" /* yacc.c:1645 */ break; - case 36: -#line 510 "awkgram.y" /* yacc.c:1645 */ + case 37: +#line 514 "awkgram.y" /* yacc.c:1645 */ { want_param_names = FUNC_HEADER; } -#line 2282 "awkgram.c" /* yacc.c:1645 */ +#line 2276 "awkgram.c" /* yacc.c:1645 */ break; - case 37: -#line 511 "awkgram.y" /* yacc.c:1645 */ + case 38: +#line 515 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *func_comment = NULL; // Merge any comments found in the parameter list with those @@ -2308,17 +2302,17 @@ yyreduce: (yyval) = (yyvsp[-6]); want_param_names = FUNC_BODY; } -#line 2312 "awkgram.c" /* yacc.c:1645 */ +#line 2306 "awkgram.c" /* yacc.c:1645 */ break; - case 38: -#line 544 "awkgram.y" /* yacc.c:1645 */ + case 39: +#line 548 "awkgram.y" /* yacc.c:1645 */ { want_regexp = true; } -#line 2318 "awkgram.c" /* yacc.c:1645 */ +#line 2312 "awkgram.c" /* yacc.c:1645 */ break; - case 39: -#line 546 "awkgram.y" /* yacc.c:1645 */ + case 40: +#line 550 "awkgram.y" /* yacc.c:1645 */ { NODE *n, *exp; char *re; @@ -2347,11 +2341,11 @@ yyreduce: (yyval)->opcode = Op_match_rec; (yyval)->memory = n; } -#line 2351 "awkgram.c" /* yacc.c:1645 */ +#line 2345 "awkgram.c" /* yacc.c:1645 */ break; - case 40: -#line 578 "awkgram.y" /* yacc.c:1645 */ + case 41: +#line 582 "awkgram.y" /* yacc.c:1645 */ { char *re; size_t len; @@ -2364,23 +2358,23 @@ yyreduce: (yyval)->opcode = Op_push_re; (yyval)->memory = make_typed_regex(re, len); } -#line 2368 "awkgram.c" /* yacc.c:1645 */ +#line 2362 "awkgram.c" /* yacc.c:1645 */ break; - case 41: -#line 593 "awkgram.y" /* yacc.c:1645 */ + case 42: +#line 597 "awkgram.y" /* yacc.c:1645 */ { bcfree((yyvsp[0])); } -#line 2374 "awkgram.c" /* yacc.c:1645 */ +#line 2368 "awkgram.c" /* yacc.c:1645 */ break; - case 43: -#line 599 "awkgram.y" /* yacc.c:1645 */ + case 44: +#line 603 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 2380 "awkgram.c" /* yacc.c:1645 */ +#line 2374 "awkgram.c" /* yacc.c:1645 */ break; - case 44: -#line 601 "awkgram.y" /* yacc.c:1645 */ + case 45: +#line 605 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0]) == NULL) { (yyval) = (yyvsp[-1]); @@ -2400,29 +2394,29 @@ yyreduce: yyerrok; } -#line 2404 "awkgram.c" /* yacc.c:1645 */ - break; - - case 45: -#line 621 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = NULL; } -#line 2410 "awkgram.c" /* yacc.c:1645 */ +#line 2398 "awkgram.c" /* yacc.c:1645 */ break; case 46: #line 625 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = (yyvsp[0]); } -#line 2416 "awkgram.c" /* yacc.c:1645 */ + { (yyval) = NULL; } +#line 2404 "awkgram.c" /* yacc.c:1645 */ break; case 47: -#line 626 "awkgram.y" /* yacc.c:1645 */ +#line 629 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 2422 "awkgram.c" /* yacc.c:1645 */ +#line 2410 "awkgram.c" /* yacc.c:1645 */ break; case 48: -#line 631 "awkgram.y" /* yacc.c:1645 */ +#line 630 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = (yyvsp[0]); } +#line 2416 "awkgram.c" /* yacc.c:1645 */ + break; + + case 49: +#line 635 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0]) != NULL) { INSTRUCTION *ip; @@ -2433,31 +2427,31 @@ yyreduce: } else (yyval) = NULL; } -#line 2437 "awkgram.c" /* yacc.c:1645 */ +#line 2431 "awkgram.c" /* yacc.c:1645 */ break; - case 49: -#line 642 "awkgram.y" /* yacc.c:1645 */ + case 50: +#line 646 "awkgram.y" /* yacc.c:1645 */ { trailing_comment = (yyvsp[0]); // NULL or comment (yyval) = make_braced_statements((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } -#line 2446 "awkgram.c" /* yacc.c:1645 */ +#line 2440 "awkgram.c" /* yacc.c:1645 */ break; - case 50: -#line 647 "awkgram.y" /* yacc.c:1645 */ + case 51: +#line 651 "awkgram.y" /* yacc.c:1645 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2457 "awkgram.c" /* yacc.c:1645 */ +#line 2451 "awkgram.c" /* yacc.c:1645 */ break; - case 51: -#line 654 "awkgram.y" /* yacc.c:1645 */ + case 52: +#line 658 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt; INSTRUCTION *ip, *nextc, *tbreak; @@ -2565,11 +2559,11 @@ yyreduce: break_allowed--; fix_break_continue(ip, tbreak, NULL); } -#line 2569 "awkgram.c" /* yacc.c:1645 */ +#line 2563 "awkgram.c" /* yacc.c:1645 */ break; - case 52: -#line 762 "awkgram.y" /* yacc.c:1645 */ + case 53: +#line 766 "awkgram.y" /* yacc.c:1645 */ { /* * ----------------- @@ -2620,11 +2614,11 @@ yyreduce: continue_allowed--; fix_break_continue(ip, tbreak, tcont); } -#line 2624 "awkgram.c" /* yacc.c:1645 */ +#line 2618 "awkgram.c" /* yacc.c:1645 */ break; - case 53: -#line 813 "awkgram.y" /* yacc.c:1645 */ + case 54: +#line 817 "awkgram.y" /* yacc.c:1645 */ { /* * ----------------- @@ -2674,11 +2668,11 @@ yyreduce: /* else $1 and $4 are NULLs */ } -#line 2678 "awkgram.c" /* yacc.c:1645 */ +#line 2672 "awkgram.c" /* yacc.c:1645 */ break; - case 54: -#line 863 "awkgram.y" /* yacc.c:1645 */ + case 55: +#line 867 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *ip; char *var_name = (yyvsp[-5])->lextok; @@ -2804,11 +2798,11 @@ regular_loop: break_allowed--; continue_allowed--; } -#line 2808 "awkgram.c" /* yacc.c:1645 */ +#line 2802 "awkgram.c" /* yacc.c:1645 */ break; - case 55: -#line 989 "awkgram.y" /* yacc.c:1645 */ + case 56: +#line 993 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-7]) != NULL) { merge_comments((yyvsp[-7]), NULL); @@ -2829,11 +2823,11 @@ regular_loop: break_allowed--; continue_allowed--; } -#line 2833 "awkgram.c" /* yacc.c:1645 */ +#line 2827 "awkgram.c" /* yacc.c:1645 */ break; - case 56: -#line 1010 "awkgram.y" /* yacc.c:1645 */ + case 57: +#line 1014 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-6]) != NULL) { merge_comments((yyvsp[-6]), NULL); @@ -2854,22 +2848,22 @@ regular_loop: break_allowed--; continue_allowed--; } -#line 2858 "awkgram.c" /* yacc.c:1645 */ +#line 2852 "awkgram.c" /* yacc.c:1645 */ break; - case 57: -#line 1031 "awkgram.y" /* yacc.c:1645 */ + case 58: +#line 1035 "awkgram.y" /* yacc.c:1645 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2869 "awkgram.c" /* yacc.c:1645 */ +#line 2863 "awkgram.c" /* yacc.c:1645 */ break; - case 58: -#line 1041 "awkgram.y" /* yacc.c:1645 */ + case 59: +#line 1045 "awkgram.y" /* yacc.c:1645 */ { if (! break_allowed) error_ln((yyvsp[-1])->source_line, @@ -2879,11 +2873,11 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2883 "awkgram.c" /* yacc.c:1645 */ +#line 2877 "awkgram.c" /* yacc.c:1645 */ break; - case 59: -#line 1051 "awkgram.y" /* yacc.c:1645 */ + case 60: +#line 1055 "awkgram.y" /* yacc.c:1645 */ { if (! continue_allowed) error_ln((yyvsp[-1])->source_line, @@ -2893,11 +2887,11 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2897 "awkgram.c" /* yacc.c:1645 */ +#line 2891 "awkgram.c" /* yacc.c:1645 */ break; - case 60: -#line 1061 "awkgram.y" /* yacc.c:1645 */ + case 61: +#line 1065 "awkgram.y" /* yacc.c:1645 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule && rule != Rule) @@ -2908,11 +2902,11 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2912 "awkgram.c" /* yacc.c:1645 */ +#line 2906 "awkgram.c" /* yacc.c:1645 */ break; - case 61: -#line 1072 "awkgram.y" /* yacc.c:1645 */ + case 62: +#line 1076 "awkgram.y" /* yacc.c:1645 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule == BEGIN || rule == END || rule == ENDFILE) @@ -2925,11 +2919,11 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2929 "awkgram.c" /* yacc.c:1645 */ +#line 2923 "awkgram.c" /* yacc.c:1645 */ break; - case 62: -#line 1085 "awkgram.y" /* yacc.c:1645 */ + case 63: +#line 1089 "awkgram.y" /* yacc.c:1645 */ { /* Initialize the two possible jump targets, the actual target * is resolved at run-time. @@ -2946,20 +2940,20 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2950 "awkgram.c" /* yacc.c:1645 */ +#line 2944 "awkgram.c" /* yacc.c:1645 */ break; - case 63: -#line 1102 "awkgram.y" /* yacc.c:1645 */ + case 64: +#line 1106 "awkgram.y" /* yacc.c:1645 */ { if (! in_function) yyerror(_("`return' used outside function context")); } -#line 2959 "awkgram.c" /* yacc.c:1645 */ +#line 2953 "awkgram.c" /* yacc.c:1645 */ break; - case 64: -#line 1105 "awkgram.y" /* yacc.c:1645 */ + case 65: +#line 1109 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) == NULL) { (yyval) = list_create((yyvsp[-3])); @@ -2970,28 +2964,28 @@ regular_loop: if ((yyvsp[0]) != NULL) (yyval) = list_append((yyval), (yyvsp[0])); } -#line 2974 "awkgram.c" /* yacc.c:1645 */ +#line 2968 "awkgram.c" /* yacc.c:1645 */ break; - case 65: -#line 1116 "awkgram.y" /* yacc.c:1645 */ + case 66: +#line 1120 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0]) != NULL) (yyval) = list_append((yyvsp[-1]), (yyvsp[0])); else (yyval) = (yyvsp[-1]); } -#line 2985 "awkgram.c" /* yacc.c:1645 */ +#line 2979 "awkgram.c" /* yacc.c:1645 */ break; - case 66: -#line 1133 "awkgram.y" /* yacc.c:1645 */ + case 67: +#line 1137 "awkgram.y" /* yacc.c:1645 */ { in_print = true; in_parens = 0; } -#line 2991 "awkgram.c" /* yacc.c:1645 */ +#line 2985 "awkgram.c" /* yacc.c:1645 */ break; - case 67: -#line 1134 "awkgram.y" /* yacc.c:1645 */ + case 68: +#line 1138 "awkgram.y" /* yacc.c:1645 */ { /* * Optimization: plain `print' has no expression list, so $3 is null. @@ -3088,17 +3082,17 @@ regular_print: } } } -#line 3092 "awkgram.c" /* yacc.c:1645 */ +#line 3086 "awkgram.c" /* yacc.c:1645 */ break; - case 68: -#line 1231 "awkgram.y" /* yacc.c:1645 */ + case 69: +#line 1235 "awkgram.y" /* yacc.c:1645 */ { sub_counter = 0; } -#line 3098 "awkgram.c" /* yacc.c:1645 */ +#line 3092 "awkgram.c" /* yacc.c:1645 */ break; - case 69: -#line 1232 "awkgram.y" /* yacc.c:1645 */ + case 70: +#line 1236 "awkgram.y" /* yacc.c:1645 */ { char *arr = (yyvsp[-2])->lextok; @@ -3131,11 +3125,11 @@ regular_print: (yyval) = list_append(list_append((yyvsp[0]), (yyvsp[-2])), (yyvsp[-3])); } } -#line 3135 "awkgram.c" /* yacc.c:1645 */ +#line 3129 "awkgram.c" /* yacc.c:1645 */ break; - case 70: -#line 1269 "awkgram.y" /* yacc.c:1645 */ + case 71: +#line 1273 "awkgram.y" /* yacc.c:1645 */ { static bool warned = false; char *arr = (yyvsp[-1])->lextok; @@ -3161,54 +3155,54 @@ regular_print: fatal(_("`delete' is not allowed with FUNCTAB")); } } -#line 3165 "awkgram.c" /* yacc.c:1645 */ +#line 3159 "awkgram.c" /* yacc.c:1645 */ break; - case 71: -#line 1295 "awkgram.y" /* yacc.c:1645 */ + case 72: +#line 1299 "awkgram.y" /* yacc.c:1645 */ { (yyval) = optimize_assignment((yyvsp[0])); } -#line 3173 "awkgram.c" /* yacc.c:1645 */ +#line 3167 "awkgram.c" /* yacc.c:1645 */ break; - case 72: -#line 1302 "awkgram.y" /* yacc.c:1645 */ + case 73: +#line 1306 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3179 "awkgram.c" /* yacc.c:1645 */ +#line 3173 "awkgram.c" /* yacc.c:1645 */ break; - case 73: -#line 1304 "awkgram.y" /* yacc.c:1645 */ + case 74: +#line 1308 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3185 "awkgram.c" /* yacc.c:1645 */ +#line 3179 "awkgram.c" /* yacc.c:1645 */ break; - case 74: -#line 1309 "awkgram.y" /* yacc.c:1645 */ + case 75: +#line 1313 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3191 "awkgram.c" /* yacc.c:1645 */ +#line 3185 "awkgram.c" /* yacc.c:1645 */ break; - case 75: -#line 1311 "awkgram.y" /* yacc.c:1645 */ + case 76: +#line 1315 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) == NULL) (yyval) = list_create((yyvsp[0])); else (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0])); } -#line 3202 "awkgram.c" /* yacc.c:1645 */ +#line 3196 "awkgram.c" /* yacc.c:1645 */ break; - case 76: -#line 1318 "awkgram.y" /* yacc.c:1645 */ + case 77: +#line 1322 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3208 "awkgram.c" /* yacc.c:1645 */ +#line 3202 "awkgram.c" /* yacc.c:1645 */ break; - case 77: -#line 1323 "awkgram.y" /* yacc.c:1645 */ + case 78: +#line 1327 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3221,11 +3215,11 @@ regular_print: bcfree((yyvsp[-2])); (yyval) = (yyvsp[-4]); } -#line 3225 "awkgram.c" /* yacc.c:1645 */ +#line 3219 "awkgram.c" /* yacc.c:1645 */ break; - case 78: -#line 1336 "awkgram.y" /* yacc.c:1645 */ + case 79: +#line 1340 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3237,17 +3231,17 @@ regular_print: (yyvsp[-3])->comment = (yyvsp[-1]); (yyval) = (yyvsp[-3]); } -#line 3241 "awkgram.c" /* yacc.c:1645 */ +#line 3235 "awkgram.c" /* yacc.c:1645 */ break; - case 79: -#line 1351 "awkgram.y" /* yacc.c:1645 */ + case 80: +#line 1355 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3247 "awkgram.c" /* yacc.c:1645 */ +#line 3241 "awkgram.c" /* yacc.c:1645 */ break; - case 80: -#line 1353 "awkgram.y" /* yacc.c:1645 */ + case 81: +#line 1357 "awkgram.y" /* yacc.c:1645 */ { NODE *n = (yyvsp[0])->memory; (void) force_number(n); @@ -3255,28 +3249,28 @@ regular_print: bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3259 "awkgram.c" /* yacc.c:1645 */ +#line 3253 "awkgram.c" /* yacc.c:1645 */ break; - case 81: -#line 1361 "awkgram.y" /* yacc.c:1645 */ + case 82: +#line 1365 "awkgram.y" /* yacc.c:1645 */ { NODE *n = (yyvsp[0])->lasti->memory; bcfree((yyvsp[-1])); add_sign_to_num(n, '+'); (yyval) = (yyvsp[0]); } -#line 3270 "awkgram.c" /* yacc.c:1645 */ +#line 3264 "awkgram.c" /* yacc.c:1645 */ break; - case 82: -#line 1368 "awkgram.y" /* yacc.c:1645 */ + case 83: +#line 1372 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3276 "awkgram.c" /* yacc.c:1645 */ +#line 3270 "awkgram.c" /* yacc.c:1645 */ break; - case 83: -#line 1370 "awkgram.y" /* yacc.c:1645 */ + case 84: +#line 1374 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0])->memory->type == Node_regex) (yyvsp[0])->opcode = Op_push_re; @@ -3284,57 +3278,57 @@ regular_print: (yyvsp[0])->opcode = Op_push; (yyval) = (yyvsp[0]); } -#line 3288 "awkgram.c" /* yacc.c:1645 */ +#line 3282 "awkgram.c" /* yacc.c:1645 */ break; - case 84: -#line 1378 "awkgram.y" /* yacc.c:1645 */ + case 85: +#line 1382 "awkgram.y" /* yacc.c:1645 */ { assert(((yyvsp[0])->memory->flags & REGEX) == REGEX); (yyvsp[0])->opcode = Op_push_re; (yyval) = (yyvsp[0]); } -#line 3298 "awkgram.c" /* yacc.c:1645 */ +#line 3292 "awkgram.c" /* yacc.c:1645 */ break; - case 85: -#line 1387 "awkgram.y" /* yacc.c:1645 */ + case 86: +#line 1391 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3304 "awkgram.c" /* yacc.c:1645 */ +#line 3298 "awkgram.c" /* yacc.c:1645 */ break; - case 86: -#line 1389 "awkgram.y" /* yacc.c:1645 */ + case 87: +#line 1393 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3310 "awkgram.c" /* yacc.c:1645 */ +#line 3304 "awkgram.c" /* yacc.c:1645 */ break; - case 88: -#line 1399 "awkgram.y" /* yacc.c:1645 */ + case 89: +#line 1403 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[-1]); } -#line 3318 "awkgram.c" /* yacc.c:1645 */ +#line 3312 "awkgram.c" /* yacc.c:1645 */ break; - case 89: -#line 1406 "awkgram.y" /* yacc.c:1645 */ + case 90: +#line 1410 "awkgram.y" /* yacc.c:1645 */ { in_print = false; in_parens = 0; (yyval) = NULL; } -#line 3328 "awkgram.c" /* yacc.c:1645 */ +#line 3322 "awkgram.c" /* yacc.c:1645 */ break; - case 90: -#line 1411 "awkgram.y" /* yacc.c:1645 */ + case 91: +#line 1415 "awkgram.y" /* yacc.c:1645 */ { in_print = false; in_parens = 0; } -#line 3334 "awkgram.c" /* yacc.c:1645 */ +#line 3328 "awkgram.c" /* yacc.c:1645 */ break; - case 91: -#line 1412 "awkgram.y" /* yacc.c:1645 */ + case 92: +#line 1416 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-2])->redir_type == redirect_twoway && (yyvsp[0])->lasti->opcode == Op_K_getline_redir @@ -3344,21 +3338,21 @@ regular_print: lintwarn(_("concatenation as I/O `>' redirection target is ambiguous")); (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2])); } -#line 3348 "awkgram.c" /* yacc.c:1645 */ +#line 3342 "awkgram.c" /* yacc.c:1645 */ break; - case 92: -#line 1425 "awkgram.y" /* yacc.c:1645 */ + case 93: +#line 1429 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) != NULL) (yyvsp[-5])->comment = (yyvsp[-1]); (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), NULL, NULL); } -#line 3358 "awkgram.c" /* yacc.c:1645 */ +#line 3352 "awkgram.c" /* yacc.c:1645 */ break; - case 93: -#line 1432 "awkgram.y" /* yacc.c:1645 */ + case 94: +#line 1436 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-4]) != NULL) (yyvsp[-8])->comment = (yyvsp[-4]); @@ -3366,19 +3360,19 @@ regular_print: (yyvsp[-2])->comment = (yyvsp[-1]); (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[0])); } -#line 3370 "awkgram.c" /* yacc.c:1645 */ +#line 3364 "awkgram.c" /* yacc.c:1645 */ break; - case 94: -#line 1443 "awkgram.y" /* yacc.c:1645 */ + case 95: +#line 1447 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3378 "awkgram.c" /* yacc.c:1645 */ +#line 3372 "awkgram.c" /* yacc.c:1645 */ break; - case 95: -#line 1447 "awkgram.y" /* yacc.c:1645 */ + case 96: +#line 1451 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL) { if ((yyvsp[-1])->memory->comment_type == EOL_COMMENT) { @@ -3396,59 +3390,59 @@ regular_print: } else (yyval) = NULL; } -#line 3400 "awkgram.c" /* yacc.c:1645 */ +#line 3394 "awkgram.c" /* yacc.c:1645 */ break; - case 96: -#line 1468 "awkgram.y" /* yacc.c:1645 */ + case 97: +#line 1472 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3406 "awkgram.c" /* yacc.c:1645 */ +#line 3400 "awkgram.c" /* yacc.c:1645 */ break; - case 97: -#line 1470 "awkgram.y" /* yacc.c:1645 */ + case 98: +#line 1474 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3412 "awkgram.c" /* yacc.c:1645 */ +#line 3406 "awkgram.c" /* yacc.c:1645 */ break; - case 98: -#line 1475 "awkgram.y" /* yacc.c:1645 */ + case 99: +#line 1479 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3418 "awkgram.c" /* yacc.c:1645 */ +#line 3412 "awkgram.c" /* yacc.c:1645 */ break; - case 99: -#line 1477 "awkgram.y" /* yacc.c:1645 */ + case 100: +#line 1481 "awkgram.y" /* yacc.c:1645 */ { bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3427 "awkgram.c" /* yacc.c:1645 */ +#line 3421 "awkgram.c" /* yacc.c:1645 */ break; - case 100: -#line 1485 "awkgram.y" /* yacc.c:1645 */ + case 101: +#line 1489 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3433 "awkgram.c" /* yacc.c:1645 */ +#line 3427 "awkgram.c" /* yacc.c:1645 */ break; - case 101: -#line 1487 "awkgram.y" /* yacc.c:1645 */ + case 102: +#line 1491 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3439 "awkgram.c" /* yacc.c:1645 */ +#line 3433 "awkgram.c" /* yacc.c:1645 */ break; - case 102: -#line 1492 "awkgram.y" /* yacc.c:1645 */ + case 103: +#line 1496 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->param_count = 0; (yyval) = list_create((yyvsp[0])); } -#line 3448 "awkgram.c" /* yacc.c:1645 */ +#line 3442 "awkgram.c" /* yacc.c:1645 */ break; - case 103: -#line 1497 "awkgram.y" /* yacc.c:1645 */ + case 104: +#line 1501 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) { (yyvsp[0])->param_count = (yyvsp[-2])->lasti->param_count + 1; @@ -3465,76 +3459,76 @@ regular_print: } else (yyval) = NULL; } -#line 3469 "awkgram.c" /* yacc.c:1645 */ +#line 3463 "awkgram.c" /* yacc.c:1645 */ break; - case 104: -#line 1514 "awkgram.y" /* yacc.c:1645 */ + case 105: +#line 1518 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3475 "awkgram.c" /* yacc.c:1645 */ +#line 3469 "awkgram.c" /* yacc.c:1645 */ break; - case 105: -#line 1516 "awkgram.y" /* yacc.c:1645 */ + case 106: +#line 1520 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[-1]); } -#line 3481 "awkgram.c" /* yacc.c:1645 */ +#line 3475 "awkgram.c" /* yacc.c:1645 */ break; - case 106: -#line 1518 "awkgram.y" /* yacc.c:1645 */ + case 107: +#line 1522 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[-2]); } -#line 3487 "awkgram.c" /* yacc.c:1645 */ +#line 3481 "awkgram.c" /* yacc.c:1645 */ break; - case 107: -#line 1524 "awkgram.y" /* yacc.c:1645 */ + case 108: +#line 1528 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3493 "awkgram.c" /* yacc.c:1645 */ +#line 3487 "awkgram.c" /* yacc.c:1645 */ break; - case 108: -#line 1526 "awkgram.y" /* yacc.c:1645 */ + case 109: +#line 1530 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3499 "awkgram.c" /* yacc.c:1645 */ +#line 3493 "awkgram.c" /* yacc.c:1645 */ break; - case 109: -#line 1531 "awkgram.y" /* yacc.c:1645 */ + case 110: +#line 1535 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3505 "awkgram.c" /* yacc.c:1645 */ +#line 3499 "awkgram.c" /* yacc.c:1645 */ break; - case 110: -#line 1533 "awkgram.y" /* yacc.c:1645 */ + case 111: +#line 1537 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3511 "awkgram.c" /* yacc.c:1645 */ +#line 3505 "awkgram.c" /* yacc.c:1645 */ break; - case 111: -#line 1538 "awkgram.y" /* yacc.c:1645 */ + case 112: +#line 1542 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3517 "awkgram.c" /* yacc.c:1645 */ +#line 3511 "awkgram.c" /* yacc.c:1645 */ break; - case 112: -#line 1540 "awkgram.y" /* yacc.c:1645 */ + case 113: +#line 1544 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) != NULL) (yyvsp[-2])->lasti->comment = (yyvsp[-1]); (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3528 "awkgram.c" /* yacc.c:1645 */ +#line 3522 "awkgram.c" /* yacc.c:1645 */ break; - case 113: -#line 1547 "awkgram.y" /* yacc.c:1645 */ + case 114: +#line 1551 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3534 "awkgram.c" /* yacc.c:1645 */ +#line 3528 "awkgram.c" /* yacc.c:1645 */ break; - case 114: -#line 1549 "awkgram.y" /* yacc.c:1645 */ + case 115: +#line 1553 "awkgram.y" /* yacc.c:1645 */ { /* * Returning the expression list instead of NULL lets @@ -3542,66 +3536,66 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3546 "awkgram.c" /* yacc.c:1645 */ +#line 3540 "awkgram.c" /* yacc.c:1645 */ break; - case 115: -#line 1557 "awkgram.y" /* yacc.c:1645 */ + case 116: +#line 1561 "awkgram.y" /* yacc.c:1645 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3555 "awkgram.c" /* yacc.c:1645 */ +#line 3549 "awkgram.c" /* yacc.c:1645 */ break; - case 116: -#line 1562 "awkgram.y" /* yacc.c:1645 */ + case 117: +#line 1566 "awkgram.y" /* yacc.c:1645 */ { /* Ditto */ if ((yyvsp[-1]) != NULL) (yyvsp[-2])->lasti->comment = (yyvsp[-1]); (yyval) = (yyvsp[-2]); } -#line 3566 "awkgram.c" /* yacc.c:1645 */ +#line 3560 "awkgram.c" /* yacc.c:1645 */ break; - case 117: -#line 1572 "awkgram.y" /* yacc.c:1645 */ + case 118: +#line 1576 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3572 "awkgram.c" /* yacc.c:1645 */ +#line 3566 "awkgram.c" /* yacc.c:1645 */ break; - case 118: -#line 1574 "awkgram.y" /* yacc.c:1645 */ + case 119: +#line 1578 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3578 "awkgram.c" /* yacc.c:1645 */ +#line 3572 "awkgram.c" /* yacc.c:1645 */ break; - case 119: -#line 1579 "awkgram.y" /* yacc.c:1645 */ + case 120: +#line 1583 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3584 "awkgram.c" /* yacc.c:1645 */ +#line 3578 "awkgram.c" /* yacc.c:1645 */ break; - case 120: -#line 1581 "awkgram.y" /* yacc.c:1645 */ + case 121: +#line 1585 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-1]) != NULL) (yyvsp[-2])->lasti->comment = (yyvsp[-1]); (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3595 "awkgram.c" /* yacc.c:1645 */ +#line 3589 "awkgram.c" /* yacc.c:1645 */ break; - case 121: -#line 1588 "awkgram.y" /* yacc.c:1645 */ + case 122: +#line 1592 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 3601 "awkgram.c" /* yacc.c:1645 */ +#line 3595 "awkgram.c" /* yacc.c:1645 */ break; - case 122: -#line 1590 "awkgram.y" /* yacc.c:1645 */ + case 123: +#line 1594 "awkgram.y" /* yacc.c:1645 */ { /* * Returning the expression list instead of NULL lets @@ -3609,74 +3603,74 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3613 "awkgram.c" /* yacc.c:1645 */ +#line 3607 "awkgram.c" /* yacc.c:1645 */ break; - case 123: -#line 1598 "awkgram.y" /* yacc.c:1645 */ + case 124: +#line 1602 "awkgram.y" /* yacc.c:1645 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3622 "awkgram.c" /* yacc.c:1645 */ +#line 3616 "awkgram.c" /* yacc.c:1645 */ break; - case 124: -#line 1603 "awkgram.y" /* yacc.c:1645 */ + case 125: +#line 1607 "awkgram.y" /* yacc.c:1645 */ { /* Ditto */ if ((yyvsp[-1]) != NULL) (yyvsp[-2])->comment = (yyvsp[-1]); (yyval) = (yyvsp[-2]); } -#line 3633 "awkgram.c" /* yacc.c:1645 */ +#line 3627 "awkgram.c" /* yacc.c:1645 */ break; - case 125: -#line 1612 "awkgram.y" /* yacc.c:1645 */ + case 126: +#line 1616 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3639 "awkgram.c" /* yacc.c:1645 */ +#line 3633 "awkgram.c" /* yacc.c:1645 */ break; - case 126: -#line 1613 "awkgram.y" /* yacc.c:1645 */ + case 127: +#line 1617 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_create((yyvsp[0])); } -#line 3645 "awkgram.c" /* yacc.c:1645 */ +#line 3639 "awkgram.c" /* yacc.c:1645 */ break; - case 127: -#line 1619 "awkgram.y" /* yacc.c:1645 */ + case 128: +#line 1623 "awkgram.y" /* yacc.c:1645 */ { 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 3656 "awkgram.c" /* yacc.c:1645 */ +#line 3650 "awkgram.c" /* yacc.c:1645 */ break; - case 128: -#line 1626 "awkgram.y" /* yacc.c:1645 */ + case 129: +#line 1630 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), (yyvsp[-1])); } -#line 3664 "awkgram.c" /* yacc.c:1645 */ +#line 3658 "awkgram.c" /* yacc.c:1645 */ break; - case 129: -#line 1630 "awkgram.y" /* yacc.c:1645 */ + case 130: +#line 1634 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3670 "awkgram.c" /* yacc.c:1645 */ +#line 3664 "awkgram.c" /* yacc.c:1645 */ break; - case 130: -#line 1632 "awkgram.y" /* yacc.c:1645 */ + case 131: +#line 1636 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3676 "awkgram.c" /* yacc.c:1645 */ +#line 3670 "awkgram.c" /* yacc.c:1645 */ break; - case 131: -#line 1634 "awkgram.y" /* yacc.c:1645 */ + case 132: +#line 1638 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3689,11 +3683,11 @@ regular_print: bcfree((yyvsp[0])); (yyval) = list_append((yyvsp[-2]), (yyvsp[-1])); } -#line 3693 "awkgram.c" /* yacc.c:1645 */ +#line 3687 "awkgram.c" /* yacc.c:1645 */ break; - case 132: -#line 1647 "awkgram.y" /* yacc.c:1645 */ + case 133: +#line 1651 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3710,11 +3704,11 @@ regular_print: (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } } -#line 3714 "awkgram.c" /* yacc.c:1645 */ +#line 3708 "awkgram.c" /* yacc.c:1645 */ break; - case 133: -#line 1664 "awkgram.y" /* yacc.c:1645 */ + case 134: +#line 1668 "awkgram.y" /* yacc.c:1645 */ { if (do_lint_old) warning_ln((yyvsp[-1])->source_line, @@ -3724,91 +3718,91 @@ regular_print: (yyvsp[-1])->expr_count = 1; (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } -#line 3728 "awkgram.c" /* yacc.c:1645 */ +#line 3722 "awkgram.c" /* yacc.c:1645 */ break; - case 134: -#line 1674 "awkgram.y" /* yacc.c:1645 */ + case 135: +#line 1678 "awkgram.y" /* yacc.c:1645 */ { 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 3739 "awkgram.c" /* yacc.c:1645 */ - break; - - case 135: -#line 1681 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } -#line 3745 "awkgram.c" /* yacc.c:1645 */ +#line 3733 "awkgram.c" /* yacc.c:1645 */ break; case 136: -#line 1683 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = (yyvsp[0]); } -#line 3751 "awkgram.c" /* yacc.c:1645 */ +#line 1685 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } +#line 3739 "awkgram.c" /* yacc.c:1645 */ break; case 137: -#line 1688 "awkgram.y" /* yacc.c:1645 */ +#line 1687 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3757 "awkgram.c" /* yacc.c:1645 */ +#line 3745 "awkgram.c" /* yacc.c:1645 */ break; case 138: -#line 1690 "awkgram.y" /* yacc.c:1645 */ +#line 1692 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3763 "awkgram.c" /* yacc.c:1645 */ +#line 3751 "awkgram.c" /* yacc.c:1645 */ break; case 139: -#line 1692 "awkgram.y" /* yacc.c:1645 */ +#line 1694 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = (yyvsp[0]); } +#line 3757 "awkgram.c" /* yacc.c:1645 */ + break; + + case 140: +#line 1696 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->opcode = Op_assign_quotient; (yyval) = (yyvsp[0]); } -#line 3772 "awkgram.c" /* yacc.c:1645 */ - break; - - case 140: -#line 1700 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = (yyvsp[0]); } -#line 3778 "awkgram.c" /* yacc.c:1645 */ +#line 3766 "awkgram.c" /* yacc.c:1645 */ break; case 141: -#line 1702 "awkgram.y" /* yacc.c:1645 */ +#line 1704 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3784 "awkgram.c" /* yacc.c:1645 */ +#line 3772 "awkgram.c" /* yacc.c:1645 */ break; case 142: -#line 1707 "awkgram.y" /* yacc.c:1645 */ +#line 1706 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3790 "awkgram.c" /* yacc.c:1645 */ +#line 3778 "awkgram.c" /* yacc.c:1645 */ break; case 143: -#line 1709 "awkgram.y" /* yacc.c:1645 */ +#line 1711 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3796 "awkgram.c" /* yacc.c:1645 */ +#line 3784 "awkgram.c" /* yacc.c:1645 */ break; case 144: -#line 1714 "awkgram.y" /* yacc.c:1645 */ +#line 1713 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3802 "awkgram.c" /* yacc.c:1645 */ +#line 3790 "awkgram.c" /* yacc.c:1645 */ break; case 145: -#line 1716 "awkgram.y" /* yacc.c:1645 */ +#line 1718 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 3808 "awkgram.c" /* yacc.c:1645 */ +#line 3796 "awkgram.c" /* yacc.c:1645 */ break; case 146: -#line 1718 "awkgram.y" /* yacc.c:1645 */ +#line 1720 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = (yyvsp[0]); } +#line 3802 "awkgram.c" /* yacc.c:1645 */ + break; + + case 147: +#line 1722 "awkgram.y" /* yacc.c:1645 */ { int count = 2; bool is_simple_var = false; @@ -3862,47 +3856,47 @@ regular_print: max_args = count; } } -#line 3866 "awkgram.c" /* yacc.c:1645 */ - break; - - case 148: -#line 1777 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3872 "awkgram.c" /* yacc.c:1645 */ +#line 3860 "awkgram.c" /* yacc.c:1645 */ break; case 149: -#line 1779 "awkgram.y" /* yacc.c:1645 */ +#line 1781 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3878 "awkgram.c" /* yacc.c:1645 */ +#line 3866 "awkgram.c" /* yacc.c:1645 */ break; case 150: -#line 1781 "awkgram.y" /* yacc.c:1645 */ +#line 1783 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3884 "awkgram.c" /* yacc.c:1645 */ +#line 3872 "awkgram.c" /* yacc.c:1645 */ break; case 151: -#line 1783 "awkgram.y" /* yacc.c:1645 */ +#line 1785 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3890 "awkgram.c" /* yacc.c:1645 */ +#line 3878 "awkgram.c" /* yacc.c:1645 */ break; case 152: -#line 1785 "awkgram.y" /* yacc.c:1645 */ +#line 1787 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3896 "awkgram.c" /* yacc.c:1645 */ +#line 3884 "awkgram.c" /* yacc.c:1645 */ break; case 153: -#line 1787 "awkgram.y" /* yacc.c:1645 */ +#line 1789 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3902 "awkgram.c" /* yacc.c:1645 */ +#line 3890 "awkgram.c" /* yacc.c:1645 */ break; case 154: -#line 1789 "awkgram.y" /* yacc.c:1645 */ +#line 1791 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 3896 "awkgram.c" /* yacc.c:1645 */ + break; + + case 155: +#line 1793 "awkgram.y" /* yacc.c:1645 */ { /* * In BEGINFILE/ENDFILE, allow `getline [var] < file' @@ -3916,29 +3910,29 @@ regular_print: _("non-redirected `getline' undefined inside END action")); (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), redirect_input); } -#line 3920 "awkgram.c" /* yacc.c:1645 */ +#line 3914 "awkgram.c" /* yacc.c:1645 */ break; - case 155: -#line 1803 "awkgram.y" /* yacc.c:1645 */ + case 156: +#line 1807 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->opcode = Op_postincrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3929 "awkgram.c" /* yacc.c:1645 */ +#line 3923 "awkgram.c" /* yacc.c:1645 */ break; - case 156: -#line 1808 "awkgram.y" /* yacc.c:1645 */ + case 157: +#line 1812 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->opcode = Op_postdecrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3938 "awkgram.c" /* yacc.c:1645 */ +#line 3932 "awkgram.c" /* yacc.c:1645 */ break; - case 157: -#line 1813 "awkgram.y" /* yacc.c:1645 */ + case 158: +#line 1817 "awkgram.y" /* yacc.c:1645 */ { if (do_lint_old) { warning_ln((yyvsp[-1])->source_line, @@ -3958,64 +3952,64 @@ regular_print: (yyval) = list_append(list_merge(t, (yyvsp[0])), (yyvsp[-1])); } } -#line 3962 "awkgram.c" /* yacc.c:1645 */ +#line 3956 "awkgram.c" /* yacc.c:1645 */ break; - case 158: -#line 1838 "awkgram.y" /* yacc.c:1645 */ + case 159: +#line 1842 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), (yyvsp[-2])->redir_type); bcfree((yyvsp[-2])); } -#line 3971 "awkgram.c" /* yacc.c:1645 */ - break; - - case 159: -#line 1844 "awkgram.y" /* yacc.c:1645 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3977 "awkgram.c" /* yacc.c:1645 */ +#line 3965 "awkgram.c" /* yacc.c:1645 */ break; case 160: -#line 1846 "awkgram.y" /* yacc.c:1645 */ +#line 1848 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3983 "awkgram.c" /* yacc.c:1645 */ +#line 3971 "awkgram.c" /* yacc.c:1645 */ break; case 161: -#line 1848 "awkgram.y" /* yacc.c:1645 */ +#line 1850 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3989 "awkgram.c" /* yacc.c:1645 */ +#line 3977 "awkgram.c" /* yacc.c:1645 */ break; case 162: -#line 1850 "awkgram.y" /* yacc.c:1645 */ +#line 1852 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3995 "awkgram.c" /* yacc.c:1645 */ +#line 3983 "awkgram.c" /* yacc.c:1645 */ break; case 163: -#line 1852 "awkgram.y" /* yacc.c:1645 */ +#line 1854 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 4001 "awkgram.c" /* yacc.c:1645 */ +#line 3989 "awkgram.c" /* yacc.c:1645 */ break; case 164: -#line 1854 "awkgram.y" /* yacc.c:1645 */ +#line 1856 "awkgram.y" /* yacc.c:1645 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 4007 "awkgram.c" /* yacc.c:1645 */ +#line 3995 "awkgram.c" /* yacc.c:1645 */ break; case 165: -#line 1859 "awkgram.y" /* yacc.c:1645 */ +#line 1858 "awkgram.y" /* yacc.c:1645 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 4001 "awkgram.c" /* yacc.c:1645 */ + break; + + case 166: +#line 1863 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_create((yyvsp[0])); } -#line 4015 "awkgram.c" /* yacc.c:1645 */ +#line 4009 "awkgram.c" /* yacc.c:1645 */ break; - case 166: -#line 1863 "awkgram.y" /* yacc.c:1645 */ + case 167: +#line 1867 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0])->opcode == Op_match_rec) { (yyvsp[0])->opcode = Op_nomatch; @@ -4047,11 +4041,11 @@ regular_print: } } } -#line 4051 "awkgram.c" /* yacc.c:1645 */ +#line 4045 "awkgram.c" /* yacc.c:1645 */ break; - case 167: -#line 1895 "awkgram.y" /* yacc.c:1645 */ + case 168: +#line 1899 "awkgram.y" /* yacc.c:1645 */ { // Always include. Allows us to lint warn on // print "foo" > "bar" 1 @@ -4059,31 +4053,31 @@ regular_print: // print "foo" > ("bar" 1) (yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 1, sourceline)); } -#line 4063 "awkgram.c" /* yacc.c:1645 */ +#line 4057 "awkgram.c" /* yacc.c:1645 */ break; - case 168: -#line 1903 "awkgram.y" /* yacc.c:1645 */ + case 169: +#line 1907 "awkgram.y" /* yacc.c:1645 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 4073 "awkgram.c" /* yacc.c:1645 */ +#line 4067 "awkgram.c" /* yacc.c:1645 */ break; - case 169: -#line 1909 "awkgram.y" /* yacc.c:1645 */ + case 170: +#line 1913 "awkgram.y" /* yacc.c:1645 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 4083 "awkgram.c" /* yacc.c:1645 */ +#line 4077 "awkgram.c" /* yacc.c:1645 */ break; - case 170: -#line 1915 "awkgram.y" /* yacc.c:1645 */ + case 171: +#line 1919 "awkgram.y" /* yacc.c:1645 */ { static bool warned = false; @@ -4096,45 +4090,45 @@ regular_print: if ((yyval) == NULL) YYABORT; } -#line 4100 "awkgram.c" /* yacc.c:1645 */ +#line 4094 "awkgram.c" /* yacc.c:1645 */ break; - case 173: -#line 1930 "awkgram.y" /* yacc.c:1645 */ + case 174: +#line 1934 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[-1])->opcode = Op_preincrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 4109 "awkgram.c" /* yacc.c:1645 */ +#line 4103 "awkgram.c" /* yacc.c:1645 */ break; - case 174: -#line 1935 "awkgram.y" /* yacc.c:1645 */ + case 175: +#line 1939 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[-1])->opcode = Op_predecrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 4118 "awkgram.c" /* yacc.c:1645 */ +#line 4112 "awkgram.c" /* yacc.c:1645 */ break; - case 175: -#line 1940 "awkgram.y" /* yacc.c:1645 */ + case 176: +#line 1944 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_create((yyvsp[0])); } -#line 4126 "awkgram.c" /* yacc.c:1645 */ +#line 4120 "awkgram.c" /* yacc.c:1645 */ break; - case 176: -#line 1944 "awkgram.y" /* yacc.c:1645 */ + case 177: +#line 1948 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_create((yyvsp[0])); } -#line 4134 "awkgram.c" /* yacc.c:1645 */ +#line 4128 "awkgram.c" /* yacc.c:1645 */ break; - case 177: -#line 1948 "awkgram.y" /* yacc.c:1645 */ + case 178: +#line 1952 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0])->lasti->opcode == Op_push_i && ((yyvsp[0])->lasti->memory->flags & STRING) == 0 @@ -4149,11 +4143,11 @@ regular_print: (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } } -#line 4153 "awkgram.c" /* yacc.c:1645 */ +#line 4147 "awkgram.c" /* yacc.c:1645 */ break; - case 178: -#line 1963 "awkgram.y" /* yacc.c:1645 */ + case 179: +#line 1967 "awkgram.y" /* yacc.c:1645 */ { if ((yyvsp[0])->lasti->opcode == Op_push_i && ((yyvsp[0])->lasti->memory->flags & STRING) == 0 @@ -4171,20 +4165,20 @@ regular_print: (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } } -#line 4175 "awkgram.c" /* yacc.c:1645 */ +#line 4169 "awkgram.c" /* yacc.c:1645 */ break; - case 179: -#line 1984 "awkgram.y" /* yacc.c:1645 */ + case 180: +#line 1988 "awkgram.y" /* yacc.c:1645 */ { func_use((yyvsp[0])->lasti->func_name, FUNC_USE); (yyval) = (yyvsp[0]); } -#line 4184 "awkgram.c" /* yacc.c:1645 */ +#line 4178 "awkgram.c" /* yacc.c:1645 */ break; - case 180: -#line 1989 "awkgram.y" /* yacc.c:1645 */ + case 181: +#line 1993 "awkgram.y" /* yacc.c:1645 */ { /* indirect function call */ INSTRUCTION *f, *t; @@ -4218,11 +4212,11 @@ regular_print: (yyval) = list_prepend((yyvsp[0]), t); at_seen = false; } -#line 4222 "awkgram.c" /* yacc.c:1645 */ +#line 4216 "awkgram.c" /* yacc.c:1645 */ break; - case 181: -#line 2026 "awkgram.y" /* yacc.c:1645 */ + case 182: +#line 2030 "awkgram.y" /* yacc.c:1645 */ { NODE *n; char *name = (yyvsp[-3])->func_name; @@ -4234,7 +4228,7 @@ regular_print: } if (! at_seen) { - n = lookup((yyvsp[-3])->func_name, true); + n = lookup((yyvsp[-3])->func_name); if (n != NULL && n->type != Node_func && n->type != Node_ext_func) { error_ln((yyvsp[-3])->source_line, @@ -4255,49 +4249,49 @@ regular_print: (yyval) = list_append(t, (yyvsp[-3])); } } -#line 4259 "awkgram.c" /* yacc.c:1645 */ +#line 4253 "awkgram.c" /* yacc.c:1645 */ break; - case 182: -#line 2062 "awkgram.y" /* yacc.c:1645 */ + case 183: +#line 2066 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 4265 "awkgram.c" /* yacc.c:1645 */ +#line 4259 "awkgram.c" /* yacc.c:1645 */ break; - case 183: -#line 2064 "awkgram.y" /* yacc.c:1645 */ + case 184: +#line 2068 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 4271 "awkgram.c" /* yacc.c:1645 */ +#line 4265 "awkgram.c" /* yacc.c:1645 */ break; - case 184: -#line 2069 "awkgram.y" /* yacc.c:1645 */ + case 185: +#line 2073 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 4277 "awkgram.c" /* yacc.c:1645 */ +#line 4271 "awkgram.c" /* yacc.c:1645 */ break; - case 185: -#line 2071 "awkgram.y" /* yacc.c:1645 */ + case 186: +#line 2075 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[-1]); } -#line 4283 "awkgram.c" /* yacc.c:1645 */ +#line 4277 "awkgram.c" /* yacc.c:1645 */ break; - case 186: -#line 2076 "awkgram.y" /* yacc.c:1645 */ + case 187: +#line 2080 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 4289 "awkgram.c" /* yacc.c:1645 */ +#line 4283 "awkgram.c" /* yacc.c:1645 */ break; - case 187: -#line 2078 "awkgram.y" /* yacc.c:1645 */ + case 188: +#line 2082 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4297 "awkgram.c" /* yacc.c:1645 */ +#line 4291 "awkgram.c" /* yacc.c:1645 */ break; - case 188: -#line 2085 "awkgram.y" /* yacc.c:1645 */ + case 189: +#line 2089 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *ip = (yyvsp[0])->lasti; int count = ip->sub_count; /* # of SUBSEP-seperated expressions */ @@ -4311,11 +4305,11 @@ regular_print: sub_counter++; /* count # of dimensions */ (yyval) = (yyvsp[0]); } -#line 4315 "awkgram.c" /* yacc.c:1645 */ +#line 4309 "awkgram.c" /* yacc.c:1645 */ break; - case 189: -#line 2102 "awkgram.y" /* yacc.c:1645 */ + case 190: +#line 2106 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *t = (yyvsp[-1]); if ((yyvsp[-1]) == NULL) { @@ -4329,66 +4323,53 @@ regular_print: (yyvsp[0])->sub_count = count_expressions(&t, false); (yyval) = list_append(t, (yyvsp[0])); } -#line 4333 "awkgram.c" /* yacc.c:1645 */ +#line 4327 "awkgram.c" /* yacc.c:1645 */ break; - case 190: -#line 2119 "awkgram.y" /* yacc.c:1645 */ + case 191: +#line 2123 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 4339 "awkgram.c" /* yacc.c:1645 */ +#line 4333 "awkgram.c" /* yacc.c:1645 */ break; - case 191: -#line 2121 "awkgram.y" /* yacc.c:1645 */ + case 192: +#line 2125 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4347 "awkgram.c" /* yacc.c:1645 */ +#line 4341 "awkgram.c" /* yacc.c:1645 */ break; - case 192: -#line 2128 "awkgram.y" /* yacc.c:1645 */ + case 193: +#line 2132 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[-1]); } -#line 4353 "awkgram.c" /* yacc.c:1645 */ +#line 4347 "awkgram.c" /* yacc.c:1645 */ break; - case 193: -#line 2133 "awkgram.y" /* yacc.c:1645 */ + case 194: +#line 2137 "awkgram.y" /* yacc.c:1645 */ { - const char *name = (yyvsp[0])->lextok; - char *qname = qualify_name(name, strlen(name)); - - if (qname != name) { - efree((void *)name); - (yyvsp[0])->lextok = qname; - } - (yyvsp[0])->opcode = Op_push; (yyvsp[0])->memory = variable((yyvsp[0])->source_line, (yyvsp[0])->lextok, Node_var_new); (yyval) = list_create((yyvsp[0])); } -#line 4371 "awkgram.c" /* yacc.c:1645 */ +#line 4357 "awkgram.c" /* yacc.c:1645 */ break; - case 194: -#line 2147 "awkgram.y" /* yacc.c:1645 */ + case 195: +#line 2143 "awkgram.y" /* yacc.c:1645 */ { char *arr = (yyvsp[-1])->lextok; - char *qname = qualify_name(arr, strlen(arr)); - if (qname != arr) { - efree((void *)arr); - arr = (yyvsp[-1])->lextok = qname; - } (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 4388 "awkgram.c" /* yacc.c:1645 */ +#line 4369 "awkgram.c" /* yacc.c:1645 */ break; - case 195: -#line 2163 "awkgram.y" /* yacc.c:1645 */ + case 196: +#line 2154 "awkgram.y" /* yacc.c:1645 */ { INSTRUCTION *ip = (yyvsp[0])->nexti; if (ip->opcode == Op_push @@ -4400,85 +4381,85 @@ regular_print: } else (yyval) = (yyvsp[0]); } -#line 4404 "awkgram.c" /* yacc.c:1645 */ +#line 4385 "awkgram.c" /* yacc.c:1645 */ break; - case 196: -#line 2175 "awkgram.y" /* yacc.c:1645 */ + case 197: +#line 2166 "awkgram.y" /* yacc.c:1645 */ { (yyval) = list_append((yyvsp[-1]), (yyvsp[-2])); if ((yyvsp[0]) != NULL) mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 4414 "awkgram.c" /* yacc.c:1645 */ +#line 4395 "awkgram.c" /* yacc.c:1645 */ break; - case 197: -#line 2184 "awkgram.y" /* yacc.c:1645 */ + case 198: +#line 2175 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->opcode = Op_postincrement; } -#line 4422 "awkgram.c" /* yacc.c:1645 */ +#line 4403 "awkgram.c" /* yacc.c:1645 */ break; - case 198: -#line 2188 "awkgram.y" /* yacc.c:1645 */ + case 199: +#line 2179 "awkgram.y" /* yacc.c:1645 */ { (yyvsp[0])->opcode = Op_postdecrement; } -#line 4430 "awkgram.c" /* yacc.c:1645 */ +#line 4411 "awkgram.c" /* yacc.c:1645 */ break; - case 199: -#line 2192 "awkgram.y" /* yacc.c:1645 */ + case 200: +#line 2183 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 4436 "awkgram.c" /* yacc.c:1645 */ +#line 4417 "awkgram.c" /* yacc.c:1645 */ break; - case 200: -#line 2196 "awkgram.y" /* yacc.c:1645 */ + case 201: +#line 2187 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); } -#line 4442 "awkgram.c" /* yacc.c:1645 */ +#line 4423 "awkgram.c" /* yacc.c:1645 */ break; - case 201: -#line 2200 "awkgram.y" /* yacc.c:1645 */ + case 202: +#line 2191 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); yyerrok; } -#line 4448 "awkgram.c" /* yacc.c:1645 */ +#line 4429 "awkgram.c" /* yacc.c:1645 */ break; - case 202: -#line 2204 "awkgram.y" /* yacc.c:1645 */ + case 203: +#line 2195 "awkgram.y" /* yacc.c:1645 */ { yyerrok; } -#line 4454 "awkgram.c" /* yacc.c:1645 */ +#line 4435 "awkgram.c" /* yacc.c:1645 */ break; - case 203: -#line 2209 "awkgram.y" /* yacc.c:1645 */ + case 204: +#line 2200 "awkgram.y" /* yacc.c:1645 */ { (yyval) = NULL; } -#line 4460 "awkgram.c" /* yacc.c:1645 */ +#line 4441 "awkgram.c" /* yacc.c:1645 */ break; - case 205: -#line 2214 "awkgram.y" /* yacc.c:1645 */ + case 206: +#line 2205 "awkgram.y" /* yacc.c:1645 */ { yyerrok; } -#line 4466 "awkgram.c" /* yacc.c:1645 */ +#line 4447 "awkgram.c" /* yacc.c:1645 */ break; - case 206: -#line 2218 "awkgram.y" /* yacc.c:1645 */ + case 207: +#line 2209 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); yyerrok; } -#line 4472 "awkgram.c" /* yacc.c:1645 */ +#line 4453 "awkgram.c" /* yacc.c:1645 */ break; - case 207: -#line 2222 "awkgram.y" /* yacc.c:1645 */ + case 208: +#line 2213 "awkgram.y" /* yacc.c:1645 */ { (yyval) = (yyvsp[0]); yyerrok; } -#line 4478 "awkgram.c" /* yacc.c:1645 */ +#line 4459 "awkgram.c" /* yacc.c:1645 */ break; -#line 4482 "awkgram.c" /* yacc.c:1645 */ +#line 4463 "awkgram.c" /* yacc.c:1645 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4705,7 +4686,7 @@ yyreturn: #endif return yyresult; } -#line 2224 "awkgram.y" /* yacc.c:1903 */ +#line 2215 "awkgram.y" /* yacc.c:1903 */ struct token { @@ -6859,7 +6840,7 @@ retry: goto out; case FUNC_BODY: /* in body, name must be in symbol table for it to be a parameter */ - if ((f = lookup(tokstart, false)) != NULL) { + if ((f = lookup(tokstart)) != NULL) { if (f->type == Node_builtin_func) break; else @@ -7355,7 +7336,7 @@ parms_shadow(INSTRUCTION *pc, bool *shadow) * about all shadowed parameters. */ for (i = 0; i < pcount; i++) { - if (lookup(fp[i].param, false) != NULL) { + if (lookup(fp[i].param) != NULL) { warning( _("function `%s': parameter `%s' shadows global variable"), fname, fp[i].param); @@ -7523,7 +7504,7 @@ install_function(char *fname, INSTRUCTION *fi, INSTRUCTION *plist) NODE *r, *f; int pcount = 0; - r = lookup(fname, true); + r = lookup(fname); if (r != NULL) { error_ln(fi->source_line, _("function name `%s' previously defined"), fname); return -1; @@ -7728,7 +7709,7 @@ variable(int location, char *name, NODETYPE type) { NODE *r; - if ((r = lookup(name, true)) != NULL) { + if ((r = lookup(name)) != NULL) { if (r->type == Node_func || r->type == Node_ext_func ) error_ln(location, _("function `%s' called with space between name and `(',\nor used as a variable or an array"), r->vname); @@ -9344,6 +9325,10 @@ qualify_name(const char *name, size_t len) if (strchr(name, ':') != NULL) // already qualified return (char *) name; + NODE *p = lookup(name); + if (p != NULL && p->type == Node_param_list) + return (char *) name; + if (current_namespace != awk_namespace && ! is_all_upper(name)) { size_t length = strlen(current_namespace) + 2 + len + 1; char *buf; @@ -9354,6 +9339,5 @@ qualify_name(const char *name, size_t len) return buf; } - // is this right? return (char *) name; } @@ -465,7 +465,7 @@ action } ; -func_name +qualified_name : NAME { const char *name = $1->lextok; @@ -477,6 +477,10 @@ func_name } $$ = $1; } + ; + +func_name + : qualified_name | FUNC_CALL { const char *name = $1->lextok; @@ -859,7 +863,7 @@ statement /* else $1 and $4 are NULLs */ } - | LEX_FOR '(' NAME LEX_IN simple_variable r_paren opt_nls statement + | LEX_FOR '(' qualified_name LEX_IN simple_variable r_paren opt_nls statement { INSTRUCTION *ip; char *var_name = $3->lextok; @@ -1228,7 +1232,7 @@ regular_print: } } - | LEX_DELETE NAME { sub_counter = 0; } delete_subscript_list + | LEX_DELETE qualified_name { sub_counter = 0; } delete_subscript_list { char *arr = $2->lextok; @@ -1261,7 +1265,7 @@ regular_print: $$ = list_append(list_append($4, $2), $1); } } - | LEX_DELETE '(' NAME ')' + | LEX_DELETE '(' qualified_name ')' /* * this is for tawk compatibility. maybe the warnings * should always be done. @@ -2034,7 +2038,7 @@ direct_func_call } if (! at_seen) { - n = lookup($1->func_name, true); + n = lookup($1->func_name); if (n != NULL && n->type != Node_func && n->type != Node_ext_func) { error_ln($1->source_line, @@ -2129,29 +2133,16 @@ subscript_list ; simple_variable - : NAME + : qualified_name { - const char *name = $1->lextok; - char *qname = qualify_name(name, strlen(name)); - - if (qname != name) { - efree((void *)name); - $1->lextok = qname; - } - $1->opcode = Op_push; $1->memory = variable($1->source_line, $1->lextok, Node_var_new); $$ = list_create($1); } - | NAME subscript_list + | qualified_name subscript_list { char *arr = $1->lextok; - char *qname = qualify_name(arr, strlen(arr)); - if (qname != arr) { - efree((void *)arr); - arr = $1->lextok = qname; - } $1->memory = variable($1->source_line, arr, Node_var_new); $1->opcode = Op_push_array; $$ = list_prepend($2, $1); @@ -4374,7 +4365,7 @@ retry: goto out; case FUNC_BODY: /* in body, name must be in symbol table for it to be a parameter */ - if ((f = lookup(tokstart, false)) != NULL) { + if ((f = lookup(tokstart)) != NULL) { if (f->type == Node_builtin_func) break; else @@ -4870,7 +4861,7 @@ parms_shadow(INSTRUCTION *pc, bool *shadow) * about all shadowed parameters. */ for (i = 0; i < pcount; i++) { - if (lookup(fp[i].param, false) != NULL) { + if (lookup(fp[i].param) != NULL) { warning( _("function `%s': parameter `%s' shadows global variable"), fname, fp[i].param); @@ -5038,7 +5029,7 @@ install_function(char *fname, INSTRUCTION *fi, INSTRUCTION *plist) NODE *r, *f; int pcount = 0; - r = lookup(fname, true); + r = lookup(fname); if (r != NULL) { error_ln(fi->source_line, _("function name `%s' previously defined"), fname); return -1; @@ -5243,7 +5234,7 @@ variable(int location, char *name, NODETYPE type) { NODE *r; - if ((r = lookup(name, true)) != NULL) { + if ((r = lookup(name)) != NULL) { if (r->type == Node_func || r->type == Node_ext_func ) error_ln(location, _("function `%s' called with space between name and `(',\nor used as a variable or an array"), r->vname); @@ -6859,6 +6850,10 @@ qualify_name(const char *name, size_t len) if (strchr(name, ':') != NULL) // already qualified return (char *) name; + NODE *p = lookup(name); + if (p != NULL && p->type == Node_param_list) + return (char *) name; + if (current_namespace != awk_namespace && ! is_all_upper(name)) { size_t length = strlen(current_namespace) + 2 + len + 1; char *buf; @@ -6869,6 +6864,5 @@ qualify_name(const char *name, size_t len) return buf; } - // is this right? return (char *) name; } @@ -1954,7 +1954,7 @@ yyreduce: #line 472 "command.y" /* yacc.c:1645 */ { NODE *n; - n = lookup((yyvsp[0])->a_string, true); + n = lookup((yyvsp[0])->a_string); if (n == NULL || n->type != Node_func) yyerror(_("no such function - \"%s\""), (yyvsp[0])->a_string); else { @@ -471,7 +471,7 @@ func_name : D_STRING { NODE *n; - n = lookup($1->a_string, true); + n = lookup($1->a_string); if (n == NULL || n->type != Node_func) yyerror(_("no such function - \"%s\""), $1->a_string); else { @@ -1032,7 +1032,7 @@ NODE *find_symbol(const char *name, char **pname) if (prog_running) r = find_param(name, cur_frame, pname); if (r == NULL) - r = lookup(name, false); // for now, require fully qualified name + r = lookup(name); // for now, require fully qualified name if (r == NULL) fprintf(out_fp, _("no symbol `%s' in current context\n"), name); return r; @@ -5608,7 +5608,7 @@ do_eval(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) return false; } - f = lookup("@eval", false); + f = lookup("@eval"); assert(f != NULL); if (this_func == NULL) { /* in main */ /* do a function call */ @@ -118,7 +118,7 @@ make_builtin(const char *name_space, const awk_ext_func_t *funcinfo) if (check_special(name) >= 0) fatal(_("make_builtin: can't use gawk built-in `%s' as function name"), name); - f = lookup(name, false); + f = lookup(name); install_name = estrdup(name, strlen(name)); } else { if (! is_valid_identifier(name_space)) @@ -135,7 +135,7 @@ make_builtin(const char *name_space, const awk_ext_func_t *funcinfo) sprintf(buf, "%s::%s", name_space, name); install_name = buf; - f = lookup(install_name, false); + f = lookup(install_name); } if (f != NULL) { @@ -1603,7 +1603,7 @@ ns_lookup(const char *name_space, const char *name, char **fullname) if (name_space[0] == '\0' || strcmp(name_space, awk_namespace) == 0) { if (fullname != NULL) *fullname = estrdup(name, strlen(name)); - return lookup(name, false); + return lookup(name); } size_t len = strlen(name_space) + 2 + strlen(name) + 1; @@ -1611,7 +1611,7 @@ ns_lookup(const char *name_space, const char *name, char **fullname) emalloc(buf, char *, len, "ns_lookup"); sprintf(buf, "%s::%s", name_space, name); - NODE *f = lookup(buf, false); + NODE *f = lookup(buf); if (fullname != NULL) *fullname = buf; else diff --git a/interpret.h b/interpret.h index e9896672..720b583a 100644 --- a/interpret.h +++ b/interpret.h @@ -1108,7 +1108,7 @@ match_re: ni = setup_frame(pc); JUMPTO(ni); /* Op_func */ } - f = lookup(t1->stptr, true); + f = lookup(t1->stptr); } if (f == NULL) { @@ -1172,7 +1172,7 @@ match_re: /* retrieve function definition node */ f = pc->func_body; if (f == NULL) { - f = lookup(pc->func_name, true); + f = lookup(pc->func_name); if (f == NULL || (f->type != Node_func && f->type != Node_ext_func)) fatal(_("function `%s' not defined"), pc->func_name); pc->func_body = f; /* save for next call */ @@ -1170,7 +1170,7 @@ arg_assign(char *arg, bool initing) fatal(_("cannot use gawk builtin `%s' as variable name"), arg); if (! initing) { - var = lookup(arg, false); + var = lookup(arg); if (var != NULL && var->type == Node_func) fatal(_("cannot use function `%s' as variable name"), arg); } @@ -2072,7 +2072,8 @@ adjust_namespace(char *name, bool *malloced) // unadorned name from symbol table, add awk:: if not in awk:: n.s. if (strchr(name, ':') == NULL && current_namespace != awk_namespace && // can be equal if namespace never changed - strcmp(current_namespace, "awk") != 0) { + strcmp(current_namespace, "awk") != 0 && + ! is_all_upper(name)) { char *buf; size_t len = 5 + strlen(name) + 1; @@ -39,7 +39,6 @@ static void (*install_func)(NODE *) = NULL; static NODE *make_symbol(const char *name, NODETYPE type); static NODE *install(const char *name, NODE *parm, NODETYPE type); static void free_bcpool(INSTRUCTION_POOL *pl); -static const char *fix_up_namespace(const char *name, bool *malloced); static AWK_CONTEXT *curr_ctxt = NULL; static int ctxt_level; @@ -89,13 +88,12 @@ install_symbol(const char *name, NODETYPE type) */ NODE * -lookup(const char *name, bool do_qualify) +lookup(const char *name) { NODE *n; NODE *tmp; NODE *tables[5]; /* manual init below, for z/OS */ int i; - bool malloced = false; /* ``It's turtles, all the way down.'' */ tables[0] = param_table; /* parameters shadow everything */ @@ -104,11 +102,8 @@ lookup(const char *name, bool do_qualify) tables[3] = symbol_table; /* then globals */ tables[4] = NULL; - if (do_qualify) - name = fix_up_namespace(name, & malloced); - - if (malloced) - tmp = make_str_node(name, strlen(name), ALREADY_MALLOCED); + if (strncmp(name, "awk::", 5) == 0) + tmp = make_string(name + 5, strlen(name) - 5); else tmp = make_string(name, strlen(name)); @@ -310,18 +305,8 @@ install(const char *name, NODE *parm, NODETYPE type) NODE *table; NODE *n_name; NODE *prev; - bool malloced = false; - if (type == Node_param_list) { - n_name = make_string(name, strlen(name)); - } else { - name = fix_up_namespace(name, & malloced); - - if (malloced) - n_name = make_str_node(name, strlen(name), ALREADY_MALLOCED); - else - n_name = make_string(name, strlen(name)); - } + n_name = make_string(name, strlen(name)); table = symbol_table; @@ -988,40 +973,3 @@ is_all_upper(const char *name) return true; } - -/* fix_up_namespace --- qualify / dequalify a simple name */ - -static const char * -fix_up_namespace(const char *name, bool *malloced) -{ - static char awk_ns[] = "awk::"; - const size_t awk_ns_len = sizeof(awk_ns) - 1; // don't include trailing \0 - char *cp; - - assert(malloced != NULL); - *malloced = false; - - // first, check if it's qualified - if ((cp = strchr(name, ':')) != NULL) { - // does it start with awk:: ? - if (strncmp(name, awk_ns, awk_ns_len) == 0) - return cp + 2; // just trailing part - - // otherwise it's fully qualified, not in the awk n.s. - return name; - } - - // not fully qualified - if (current_namespace == awk_namespace || is_all_upper(name)) - return name; // put it into awk namespace - - // make it fully qualified - size_t len = strlen(current_namespace) + 2 + strlen(name) + 1; - char *buf = NULL; - - emalloc(buf, char *, len, "fix_up_namespace"); - sprintf(buf, "%s::%s", current_namespace, name); - *malloced = true; - - return buf; -} diff --git a/test/ChangeLog b/test/ChangeLog index 812f3faf..b8352718 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,17 @@ +2018-01-24 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): New test: nsforloop. + * nsforloop.awk, nsforloop.ok: New files. + +2018-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * nsprof2.ok: Adjust after code changes. + +2018-01-23 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (EXTRA_DIST): New test: nsfuncrecurse. + * nsfuncrecurse.awk, nsfuncrecurse.ok: New files. + 2019-01-09 Andrew J. Schorr <aschorr@telemetry-investments.com> * Makefile.am (EXTRA_DIST): New test: arraytype. diff --git a/test/Makefile.am b/test/Makefile.am index 0ffad9ad..046d8c67 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -773,6 +773,10 @@ EXTRA_DIST = \ nsbad.awk \ nsbad.ok \ nsbad_cmd.ok \ + nsforloop.awk \ + nsforloop.ok \ + nsfuncrecurse.awk \ + nsfuncrecurse.ok \ nsindirect1.awk \ nsindirect1.ok \ nsindirect2.awk \ @@ -1327,7 +1331,7 @@ GAWK_EXT_TESTS = \ lint lintexp lintindex lintint lintlength lintold lintset lintwarn \ manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \ nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \ - nsbad nsbad_cmd nsindirect1 nsindirect2 nsprof1 nsprof2 \ + nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \ procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ profile7 profile8 profile9 profile10 profile11 pty1 pty2 \ diff --git a/test/Makefile.in b/test/Makefile.in index c244c7af..e0fbd970 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1031,6 +1031,10 @@ EXTRA_DIST = \ nsbad.awk \ nsbad.ok \ nsbad_cmd.ok \ + nsforloop.awk \ + nsforloop.ok \ + nsfuncrecurse.awk \ + nsfuncrecurse.ok \ nsindirect1.awk \ nsindirect1.ok \ nsindirect2.awk \ @@ -1585,7 +1589,7 @@ GAWK_EXT_TESTS = \ lint lintexp lintindex lintint lintlength lintold lintset lintwarn \ manyfiles match1 match2 match3 mbstr1 mbstr2 mixed1 mktime muldimposix \ nastyparm negtime next nondec nondec2 nonfatal1 nonfatal2 nonfatal3 \ - nsbad nsbad_cmd nsindirect1 nsindirect2 nsprof1 nsprof2 \ + nsbad nsbad_cmd nsforloop nsfuncrecurse nsindirect1 nsindirect2 nsprof1 nsprof2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge \ procinfs profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ profile7 profile8 profile9 profile10 profile11 pty1 pty2 \ @@ -1647,6 +1651,7 @@ NEED_POSIX = printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix NEED_PRETTY = nsprof1 nsprof2 \ profile4 profile5 profile8 profile9 profile10 profile11 + # List of tests that need --re-interval NEED_RE_INTERVAL = gsubtst3 reint reint2 @@ -4383,6 +4388,16 @@ nsbad: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nsforloop: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nsfuncrecurse: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + nsindirect1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 7163b4ab..84a0218d 100644 --- a/test/Maketests +++ b/test/Maketests @@ -1678,6 +1678,16 @@ nsbad: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nsforloop: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +nsfuncrecurse: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + nsindirect1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/nsforloop.awk b/test/nsforloop.awk new file mode 100644 index 00000000..b050db64 --- /dev/null +++ b/test/nsforloop.awk @@ -0,0 +1,20 @@ +@namespace "foo" + +function test(v) +{ + print "-- 1" + for (i in Data) + print i + + print "-- 2" + for (v in Data) + print v + print "-- 3" +} + +BEGIN { + Data[1] = 1 + Data[2] = 2 + + test() +} diff --git a/test/nsforloop.ok b/test/nsforloop.ok new file mode 100644 index 00000000..b87cd3ef --- /dev/null +++ b/test/nsforloop.ok @@ -0,0 +1,7 @@ +-- 1 +1 +2 +-- 2 +1 +2 +-- 3 diff --git a/test/nsfuncrecurse.awk b/test/nsfuncrecurse.awk new file mode 100644 index 00000000..1a006ceb --- /dev/null +++ b/test/nsfuncrecurse.awk @@ -0,0 +1,18 @@ +@namespace "foo" + +function test(v) +{ + if (v <= 0) + return + + Level++ + v-- + printf("Level = %d, v = %d\n", Level, v) + test(v) + Level-- +} + +BEGIN { + Level = 0 + test(5) +} diff --git a/test/nsfuncrecurse.ok b/test/nsfuncrecurse.ok new file mode 100644 index 00000000..3dc76e41 --- /dev/null +++ b/test/nsfuncrecurse.ok @@ -0,0 +1,5 @@ +Level = 1, v = 4 +Level = 2, v = 3 +Level = 3, v = 2 +Level = 4, v = 1 +Level = 5, v = 0 diff --git a/test/nsindirect2.ok b/test/nsindirect2.ok index 9b71cd92..c447220d 100644 --- a/test/nsindirect2.ok +++ b/test/nsindirect2.ok @@ -1,4 +1,4 @@ -strftime() - this is not the function you are looking for +strftime(from 'testing') - this is not the function you are looking for gensub = gensub iteration 1, got good result from systime iteration 2, got good result from systime diff --git a/test/nsprof2.ok b/test/nsprof2.ok index 1bb78822..5a861830 100644 --- a/test/nsprof2.ok +++ b/test/nsprof2.ok @@ -48,13 +48,13 @@ function Init(oldfs, oldrs, olddol0, pwcat, using_fw, using_fpat) if (Inited) { return } - oldfs = awk::FS - oldrs = awk::RS + oldfs = FS + oldrs = RS olddol0 = $0 - using_fw = (awk::PROCINFO["FS"] == "FIELDWIDTHS") - using_fpat = (awk::PROCINFO["FS"] == "FPAT") - awk::FS = ":" - awk::RS = "\n" + using_fw = (PROCINFO["FS"] == "FIELDWIDTHS") + using_fpat = (PROCINFO["FS"] == "FPAT") + FS = ":" + RS = "\n" pwcat = Awklib "pwcat" while ((pwcat | getline) > 0) { Byname[$1] = $0 @@ -64,12 +64,12 @@ function Init(oldfs, oldrs, olddol0, pwcat, using_fw, using_fpat) close(pwcat) Count = 0 Inited = 1 - awk::FS = oldfs + FS = oldfs if (using_fw) { - awk::FIELDWIDTHS = awk::FIELDWIDTHS + FIELDWIDTHS = FIELDWIDTHS } else if (using_fpat) { - awk::FPAT = awk::FPAT + FPAT = FPAT } - awk::RS = oldrs + RS = oldrs $0 = olddol0 } |