diff options
Diffstat (limited to 'awkgram.c')
-rw-r--r-- | awkgram.c | 1981 |
1 files changed, 1007 insertions, 974 deletions
@@ -129,6 +129,11 @@ static void check_comment(void); static bool at_seen = false; static bool want_source = false; static bool want_regexp = false; /* lexical scanning kludge */ +static enum { + FUNC_HEADER, + FUNC_BODY, + DONT_CHECK +} want_param_names = DONT_CHECK; /* ditto */ static char *in_function; /* parsing kludge */ static int rule = 0; @@ -202,7 +207,7 @@ extern double fmod(double x, double y); #define YYSTYPE INSTRUCTION * -#line 206 "awkgram.c" /* yacc.c:339 */ +#line 211 "awkgram.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -358,7 +363,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 362 "awkgram.c" /* yacc.c:358 */ +#line 367 "awkgram.c" /* yacc.c:358 */ #ifdef short # undef short @@ -600,16 +605,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1220 +#define YYLAST 1236 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 76 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 69 +#define YYNNTS 70 /* YYNRULES -- Number of rules. */ -#define YYNRULES 202 +#define YYNRULES 203 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 349 +#define YYNSTATES 350 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -660,27 +665,27 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 205, 205, 207, 212, 213, 217, 229, 234, 245, - 251, 257, 266, 274, 276, 281, 289, 291, 297, 305, - 315, 345, 359, 373, 381, 392, 404, 406, 408, 414, - 422, 423, 427, 462, 461, 495, 522, 524, 529, 535, - 563, 568, 569, 573, 575, 577, 584, 674, 716, 758, - 871, 878, 885, 895, 904, 913, 922, 933, 949, 948, - 972, 984, 984, 1082, 1082, 1115, 1145, 1151, 1152, 1158, - 1159, 1166, 1171, 1183, 1197, 1199, 1207, 1212, 1214, 1222, - 1231, 1233, 1242, 1243, 1251, 1256, 1256, 1267, 1271, 1279, - 1280, 1283, 1285, 1290, 1291, 1300, 1301, 1306, 1311, 1317, - 1319, 1321, 1328, 1329, 1335, 1336, 1341, 1343, 1348, 1350, - 1358, 1363, 1372, 1373, 1378, 1380, 1385, 1387, 1395, 1400, - 1408, 1409, 1414, 1421, 1425, 1427, 1429, 1442, 1459, 1469, - 1476, 1478, 1483, 1485, 1487, 1495, 1497, 1502, 1504, 1509, - 1511, 1513, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 1577, - 1591, 1596, 1601, 1626, 1632, 1634, 1636, 1638, 1640, 1642, - 1647, 1651, 1683, 1685, 1691, 1697, 1710, 1711, 1712, 1717, - 1722, 1726, 1730, 1745, 1758, 1763, 1800, 1829, 1830, 1836, - 1837, 1842, 1844, 1851, 1868, 1885, 1887, 1894, 1899, 1907, - 1917, 1929, 1938, 1942, 1946, 1950, 1954, 1958, 1961, 1963, - 1967, 1971, 1975 + 0, 210, 210, 212, 217, 218, 222, 234, 239, 250, + 257, 263, 272, 280, 282, 287, 295, 297, 303, 311, + 321, 351, 365, 379, 387, 398, 410, 412, 414, 420, + 428, 429, 433, 433, 469, 468, 502, 529, 531, 536, + 542, 570, 575, 576, 580, 582, 584, 591, 681, 723, + 765, 878, 885, 892, 902, 911, 920, 929, 940, 956, + 955, 979, 991, 991, 1089, 1089, 1122, 1152, 1158, 1159, + 1165, 1166, 1173, 1178, 1190, 1204, 1206, 1214, 1219, 1221, + 1229, 1238, 1240, 1249, 1250, 1258, 1263, 1263, 1274, 1278, + 1286, 1287, 1290, 1292, 1297, 1298, 1307, 1308, 1313, 1318, + 1324, 1326, 1328, 1335, 1336, 1342, 1343, 1348, 1350, 1355, + 1357, 1365, 1370, 1379, 1380, 1385, 1387, 1392, 1394, 1402, + 1407, 1415, 1416, 1421, 1428, 1432, 1434, 1436, 1449, 1466, + 1476, 1483, 1485, 1490, 1492, 1494, 1502, 1504, 1509, 1511, + 1516, 1518, 1520, 1570, 1572, 1574, 1576, 1578, 1580, 1582, + 1584, 1598, 1603, 1608, 1633, 1639, 1641, 1643, 1645, 1647, + 1649, 1654, 1658, 1690, 1692, 1698, 1704, 1717, 1718, 1719, + 1724, 1729, 1733, 1737, 1752, 1765, 1770, 1807, 1836, 1837, + 1843, 1844, 1849, 1851, 1858, 1875, 1892, 1894, 1901, 1906, + 1914, 1924, 1936, 1945, 1949, 1953, 1957, 1961, 1965, 1968, + 1970, 1974, 1978, 1982 }; #endif @@ -703,10 +708,10 @@ static const char *const yytname[] = "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'", "'['", "']'", "'{'", "'}'", "';'", "$accept", "program", "rule", "source", "library", "pattern", "action", "func_name", "lex_builtin", "function_prologue", - "regexp", "$@1", "hard_regexp", "a_slash", "statements", - "statement_term", "statement", "non_compound_stmt", "$@2", "simple_stmt", - "$@3", "$@4", "opt_simple_stmt", "case_statements", "case_statement", - "case_value", "print", "print_expression_list", "output_redir", "$@5", + "$@1", "regexp", "$@2", "hard_regexp", "a_slash", "statements", + "statement_term", "statement", "non_compound_stmt", "$@3", "simple_stmt", + "$@4", "$@5", "opt_simple_stmt", "case_statements", "case_statement", + "case_value", "print", "print_expression_list", "output_redir", "$@6", "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list", "param_list", "opt_exp", "opt_expression_list", "expression_list", "opt_fcall_expression_list", "fcall_expression_list", "fcall_exp", "exp", @@ -735,55 +740,55 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -274 +#define YYPACT_NINF -275 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-274))) + (!!((Yystate) == (-275))) -#define YYTABLE_NINF -114 +#define YYTABLE_NINF -115 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-114))) + (!!((Yytable_value) == (-115))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -274, 360, -274, -274, -17, -23, -274, -274, -274, -274, - 128, -274, -274, 14, 14, 14, -11, 8, -274, -274, - -274, 1123, 1123, -274, 1123, 1150, 853, 151, -274, -20, - -10, -274, -274, 20, 868, 1049, 252, 276, -274, -274, - -274, -274, 264, 779, 853, -274, 9, -274, -274, -274, - -274, -274, 28, 45, -274, 10, -274, -274, -274, 779, - 779, 134, 75, 104, 75, 75, 1123, 127, -274, -274, - 15, 333, 44, 63, -274, 106, -274, -274, -274, 20, - -274, 106, -274, 157, -274, -274, 1076, 152, 1123, 1123, - 1123, 106, -274, -274, -274, 1123, 145, 252, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - -274, 164, -274, -274, 172, 1123, -274, -274, -274, 97, - 73, -274, 1091, 36, 1091, -274, -274, -274, 26, 1123, - -274, 97, 97, 333, -274, -274, -274, 1123, 106, -274, - 146, 900, -274, -274, 16, -21, -274, 34, -21, 20, - -274, 583, -274, -274, -274, 173, -274, 209, 374, 1032, - 1123, 215, 14, 102, 102, 75, 75, 75, 75, 102, - 102, 75, 75, 75, 75, -274, -274, 1091, -274, 1076, - 826, -274, -274, -274, 97, 111, 252, -274, -274, 1091, - -274, 152, -274, 1091, -274, -274, -274, -274, -274, 120, - -274, 42, 126, 131, 106, 135, -21, -21, -274, -274, - -21, 1123, -21, 106, -274, -274, -21, -274, -274, 1091, - -274, 115, 106, 1123, 1091, -274, -274, -274, -274, 106, - -274, 43, -274, 1123, 1123, -274, 203, 1123, 1123, 699, - 933, -274, -274, -274, -21, 1091, -274, -274, -274, 630, - 583, 106, -274, -274, 1091, -274, -274, -274, 333, -21, - -23, 147, 333, 333, 199, -5, -274, 115, -274, 853, - 216, -274, 4, -274, -274, 106, -274, -274, 122, -274, - -274, -274, 106, 106, 167, 152, 106, 15, -274, -274, - 699, -274, -274, -10, 699, 1123, 97, 746, 146, 1123, - 218, -274, -274, 333, 106, 246, 106, 1049, 106, 144, - 106, 699, 106, 981, 699, -274, 272, 185, -274, 168, - -274, -274, 981, 97, -274, -274, -274, 236, 238, -274, - -274, 185, -274, 106, -274, 97, 106, -274, -274, 106, - -274, 106, 699, -274, 433, 699, -274, 508, -274 + -275, 376, -275, -275, -12, -9, -275, -275, -275, -275, + 171, -275, -275, 44, 44, 44, 5, 40, -275, -275, + -275, 1139, 1139, -275, 1139, 1166, 869, 27, -275, -18, + 2, -275, -275, 89, 884, 1065, 192, 214, -275, -275, + -275, -275, 248, 795, 869, -275, 10, -275, -275, -275, + -275, -275, 116, 82, -275, 115, -275, -275, -275, 795, + 795, 166, 107, 104, 107, 107, 1139, 117, -275, -275, + 15, 349, 23, 45, -275, 125, -275, -275, -275, 89, + -275, 125, -275, 178, -275, -275, 1092, 172, 1139, 1139, + 1139, 125, -275, -275, -275, 1139, 146, 192, 1139, 1139, + 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, + -275, 181, -275, -275, 173, 1139, -275, -275, -275, 128, + 73, -275, 1107, 14, 1107, -275, -275, -275, -275, 1139, + -275, 128, 128, 349, -275, -275, -275, 1139, 125, -275, + 152, 916, -275, -275, 16, 92, -275, 20, 92, 89, + -275, 599, -275, -275, -275, 148, -275, 124, 22, 1048, + 1139, 199, 44, 265, 265, 107, 107, 107, 107, 265, + 265, 107, 107, 107, 107, -275, -275, 1107, -275, 1092, + 842, -275, 43, 192, -275, -275, 1107, -275, 172, -275, + 1107, -275, -275, -275, -275, -275, 133, -275, 41, 144, + 145, 125, 147, 92, 92, -275, -275, 92, 1139, 92, + 125, -275, -275, 92, -275, -275, 1107, -275, 151, 125, + 1139, 1107, -275, -275, -275, -275, -275, -275, 128, 76, + -275, 1139, 1139, -275, 224, 1139, 1139, 715, 949, -275, + -275, -275, 92, 1107, -275, -275, -275, 646, 599, 125, + -275, -275, 1107, 125, -275, 49, 349, 92, -9, 160, + 349, 349, 206, 113, -275, 151, -275, 869, 225, -275, + 169, -275, -275, -275, -275, -275, 125, -275, -275, 11, + -275, -275, -275, 125, 125, 179, 172, 125, 15, -275, + -275, 715, -275, -275, 2, 715, 1139, 128, 762, 152, + 1139, 219, -275, -275, 349, 125, 275, 125, 1065, 125, + 112, 125, 715, 125, 997, 715, -275, 261, 205, -275, + 191, -275, -275, 997, 128, -275, -275, -275, 271, 272, + -275, -275, 205, -275, 125, -275, 128, 125, -275, -275, + 125, -275, 125, 715, -275, 449, 715, -275, 524, -275 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -791,65 +796,65 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 6, 0, 188, 170, 171, 21, 22, - 0, 23, 24, 177, 0, 0, 0, 165, 5, 89, - 37, 0, 0, 36, 0, 0, 0, 0, 3, 0, - 0, 160, 33, 4, 19, 131, 139, 140, 142, 166, - 174, 190, 167, 0, 0, 185, 0, 189, 27, 26, - 30, 31, 0, 0, 28, 93, 178, 168, 169, 0, - 0, 0, 173, 167, 172, 161, 0, 194, 167, 108, - 0, 106, 0, 0, 175, 91, 200, 7, 8, 41, - 38, 91, 9, 0, 90, 135, 0, 0, 0, 0, - 0, 91, 136, 138, 137, 0, 0, 141, 0, 0, + 2, 0, 1, 6, 0, 189, 171, 172, 21, 22, + 0, 23, 24, 178, 0, 0, 0, 166, 5, 90, + 38, 0, 0, 37, 0, 0, 0, 0, 3, 0, + 0, 161, 34, 4, 19, 132, 140, 141, 143, 167, + 175, 191, 168, 0, 0, 186, 0, 190, 27, 26, + 30, 31, 0, 0, 28, 94, 179, 169, 170, 0, + 0, 0, 174, 168, 173, 162, 0, 195, 168, 109, + 0, 107, 0, 0, 176, 92, 201, 7, 8, 42, + 39, 92, 9, 0, 91, 136, 0, 0, 0, 0, + 0, 92, 137, 139, 138, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 132, 150, 151, 0, 0, 116, 35, 121, 0, - 0, 114, 120, 0, 106, 187, 186, 29, 0, 0, - 149, 0, 0, 0, 192, 193, 191, 109, 91, 197, - 0, 0, 162, 14, 0, 0, 17, 0, 0, 92, - 195, 0, 42, 34, 126, 127, 128, 124, 125, 0, - 0, 129, 177, 147, 148, 144, 145, 146, 143, 158, - 159, 155, 156, 157, 154, 123, 134, 122, 176, 117, - 0, 184, 99, 97, 0, 0, 94, 163, 164, 110, - 202, 0, 111, 107, 13, 10, 16, 11, 40, 0, - 58, 0, 0, 0, 91, 0, 0, 0, 80, 81, - 0, 102, 0, 91, 39, 52, 0, 61, 45, 66, - 38, 198, 91, 0, 20, 153, 118, 119, 115, 91, - 100, 0, 152, 0, 102, 63, 0, 0, 0, 0, - 67, 53, 54, 55, 0, 103, 56, 196, 60, 0, - 0, 91, 199, 43, 130, 32, 101, 98, 0, 0, - 179, 0, 0, 0, 0, 188, 68, 0, 57, 0, - 84, 82, 0, 44, 25, 91, 59, 64, 0, 181, - 183, 65, 91, 91, 0, 0, 91, 0, 85, 62, - 0, 180, 182, 0, 0, 0, 0, 0, 83, 0, - 87, 69, 47, 0, 91, 0, 91, 86, 91, 0, - 91, 0, 91, 67, 0, 71, 0, 0, 70, 0, - 48, 49, 67, 0, 88, 74, 77, 0, 0, 78, - 79, 0, 201, 91, 46, 0, 91, 76, 75, 91, - 38, 91, 0, 38, 0, 0, 51, 0, 50 + 134, 133, 151, 152, 0, 0, 117, 36, 122, 0, + 0, 115, 121, 0, 107, 188, 187, 29, 32, 0, + 150, 0, 0, 0, 193, 194, 192, 110, 92, 198, + 0, 0, 163, 14, 0, 0, 17, 0, 0, 93, + 196, 0, 43, 35, 127, 128, 129, 125, 126, 0, + 0, 130, 178, 148, 149, 145, 146, 147, 144, 159, + 160, 156, 157, 158, 155, 124, 135, 123, 177, 118, + 0, 185, 0, 95, 164, 165, 111, 203, 0, 112, + 108, 13, 10, 16, 11, 41, 0, 59, 0, 0, + 0, 92, 0, 0, 0, 81, 82, 0, 103, 0, + 92, 40, 53, 0, 62, 46, 67, 39, 199, 92, + 0, 20, 154, 119, 120, 116, 100, 98, 0, 0, + 153, 0, 103, 64, 0, 0, 0, 0, 68, 54, + 55, 56, 0, 104, 57, 197, 61, 0, 0, 92, + 200, 44, 131, 92, 101, 0, 0, 0, 180, 0, + 0, 0, 0, 189, 69, 0, 58, 0, 85, 83, + 0, 45, 25, 33, 102, 99, 92, 60, 65, 0, + 182, 184, 66, 92, 92, 0, 0, 92, 0, 86, + 63, 0, 181, 183, 0, 0, 0, 0, 0, 84, + 0, 88, 70, 48, 0, 92, 0, 92, 87, 92, + 0, 92, 0, 92, 68, 0, 72, 0, 0, 71, + 0, 49, 50, 68, 0, 89, 75, 78, 0, 0, + 79, 80, 0, 202, 92, 47, 0, 92, 77, 76, + 92, 39, 92, 0, 39, 0, 0, 52, 0, 51 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -274, -274, -274, -274, -274, -274, 223, -274, -274, -274, - -70, -274, -82, -274, -196, -55, -19, -274, -274, -179, - -274, -274, -273, -274, -274, -274, -274, -274, -274, -274, - -274, 5, 47, -274, -274, -274, 21, -274, -41, 117, - -274, 2, -1, -274, -274, -274, -42, 17, -274, 233, - -274, 1, 100, -274, -274, -8, -37, -274, -274, -80, - -2, -274, -28, -242, -49, -274, -15, -72, -110 + -275, -275, -275, -275, -275, -275, 252, -275, -275, -275, + -275, -33, -275, -80, -275, -213, 100, -144, -275, -275, + -231, -275, -275, -274, -275, -275, -275, -275, -275, -275, + -275, -275, 7, 62, -275, -275, -275, 54, -275, -43, + 1, -275, -23, -1, -275, -275, -275, -13, 17, -275, + 263, -275, 8, 127, -275, -275, 21, -36, -275, -275, + -78, -2, -275, -27, -230, -65, -275, -15, -38, -94 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 28, 145, 148, 29, 77, 53, 54, 30, - 31, 83, 118, 32, 151, 78, 214, 215, 234, 216, - 249, 260, 267, 309, 318, 331, 217, 270, 289, 299, - 218, 149, 150, 130, 184, 185, 244, 271, 70, 119, - 120, 121, 219, 115, 94, 95, 35, 36, 37, 38, - 39, 40, 55, 277, 278, 279, 45, 46, 47, 41, - 42, 136, 220, 221, 142, 251, 222, 333, 141 + 182, 31, 83, 118, 32, 151, 78, 211, 212, 232, + 213, 247, 258, 265, 310, 319, 332, 214, 268, 290, + 300, 215, 149, 150, 130, 228, 229, 242, 269, 70, + 119, 120, 121, 216, 115, 94, 95, 35, 36, 37, + 38, 39, 40, 55, 278, 279, 280, 45, 46, 47, + 41, 42, 136, 217, 218, 142, 249, 219, 334, 141 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -857,256 +862,258 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 34, 80, 80, 123, 154, 137, 33, 156, 273, 126, - 180, 56, 57, 58, 81, -105, 137, 194, 5, 63, - 63, 140, 63, 68, 250, 71, 125, 182, 74, 175, - 183, 19, 19, 63, 79, 196, 285, 137, 62, 64, - 323, 65, 122, 124, 256, 143, 235, 257, 44, 335, - 144, 43, 97, 75, 76, 76, -105, 59, 122, 122, - 138, 266, 74, 75, 146, 133, 44, 129, -12, 147, - 178, 138, 84, -105, 179, 231, 60, 334, 127, -105, - 44, 25, 187, 188, 139, 155, -15, 157, 158, 159, - 195, -12, 138, 197, 161, -95, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 181, -15, - 236, 232, 230, 128, 177, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 63, 152, 138, - 81, 48, 49, 81, 266, 229, 189, 4, 160, 291, - 193, 103, -113, 266, 344, 315, 186, 347, 112, 113, - 79, 241, 242, 79, 4, 243, 5, 246, 19, 224, - 56, 248, 153, 100, 101, 102, 139, 138, 103, 316, - 317, 134, 135, 117, 50, 51, 131, 132, 122, 122, - -96, 226, 228, 85, 162, 190, 176, 191, 233, 268, - 76, 81, 81, 44, 237, 81, 19, 81, 52, 238, - 72, 81, 73, 240, 276, 296, 252, 261, 272, 275, - 245, 79, 79, 282, 283, 79, 281, 79, -91, 85, - 264, 79, 254, 280, 86, -114, 284, 288, 287, 81, - 92, 93, 258, 245, 330, 295, 262, 263, 298, 308, - 332, 280, 213, 337, 81, 338, 329, 304, 124, 79, - 87, 239, 286, 82, 310, 259, 85, 307, 67, 339, - 247, 86, 225, 0, 79, 301, 92, 93, 71, 253, - 292, 300, -114, -114, 336, 302, 255, 110, 111, 325, - 326, 117, 306, 0, 0, 0, 341, 87, 88, 89, - 312, 0, 321, 0, 303, 324, 305, 63, 274, 0, - 90, 0, 0, 92, 93, 63, 0, 0, 112, 113, - 0, 98, 99, 100, 101, 102, 0, 114, 103, 0, - 0, 76, 290, 346, 97, 20, 348, 0, 0, 293, - 294, 327, 328, 297, 23, 104, 105, 106, 107, 108, - 0, 0, 109, 85, 0, 0, 0, 0, 86, 0, - 0, 311, 0, 313, 0, 314, 319, 320, 0, 322, - 2, 3, 0, 4, 5, 0, 0, 6, 7, 0, - 0, 0, 0, 0, 87, 88, 89, 0, 8, 9, - 340, 0, 0, 342, 85, 0, 343, 90, 345, 86, - 92, 93, 0, 0, 0, 0, 10, 11, 12, 13, - 0, 0, 139, 0, 14, 15, 16, 17, 18, 0, - 0, 0, 19, 20, 0, 87, 88, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, - 27, 92, 93, -18, 198, -18, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 0, 200, 201, 202, -73, -73, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, - 0, 0, 13, 212, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 0, -73, 20, 0, 0, 0, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 0, 0, 75, -73, 76, 198, - 0, 4, 5, 0, 0, 6, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, - 200, 201, 202, -72, -72, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 0, 0, 0, 13, 212, 0, - 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, - -72, 20, 0, 0, 0, 0, 0, 21, 22, 0, - 23, 0, 24, 0, 0, 25, 26, 0, 61, 0, - 0, 75, -72, 76, 198, 0, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 0, 200, 201, 202, 0, 0, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, - 0, 0, 13, 212, 0, 0, 0, 14, 15, 16, - 17, 69, 0, 4, 5, 0, 20, 6, 7, 0, - 0, -104, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 0, 0, 75, 213, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, - 0, 0, -104, 20, 0, 0, 0, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 269, -104, - 61, 0, 4, 5, 0, -104, 6, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 200, 201, 202, 0, 0, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 0, 0, 0, 13, 212, - 0, 0, 0, 14, 15, 16, 17, 0, 0, 4, - 5, 0, 20, 6, 7, 0, 0, 0, 21, 22, + 34, 123, 80, 80, 248, 140, 154, 264, 33, 156, + 126, 56, 57, 58, 81, 137, 137, 191, 271, 63, + 63, 193, 63, 68, 143, 71, 180, 125, 292, 144, + 4, 175, 85, 63, 19, 74, 79, 86, 62, 64, + 324, 65, 122, 124, 226, 233, 146, 227, 5, 336, + 274, 147, 97, 275, 178, 75, 43, 76, 122, 122, + 131, 132, 44, 87, 88, 133, 184, 185, -12, 74, + 138, 138, -15, 59, 179, 75, 72, 254, 73, 92, + 93, 44, 44, 264, 139, 155, 181, 157, 158, 159, + 335, -12, 264, 262, 161, -15, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 60, 234, + 230, 25, -96, 316, 177, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 63, 345, 138, + 81, 348, 138, 81, 85, 255, 186, 317, 318, 86, + 190, 84, -114, 152, 19, -97, 183, 301, 112, 113, + 128, 303, 79, 160, 286, 79, 223, 225, 85, 221, + 56, 134, 135, 253, 19, 87, 127, 76, 322, 4, + 137, 325, 129, 103, 48, 49, 5, 19, 122, 122, + -106, 92, 93, 153, 44, 162, -92, 176, 81, 81, + 117, 276, 81, 188, 81, 283, 284, 139, 81, 347, + 187, 231, 349, 250, 270, 92, 93, 243, 297, -115, + 79, 79, 235, 236, 79, 238, 79, 50, 51, 252, + 79, -106, 281, 299, 288, 138, 76, 81, 259, 282, + 256, 243, 305, 285, 260, 261, 289, 331, -106, 311, + 309, 52, 81, 281, -106, 192, 124, 296, 194, 79, + 287, 98, 99, 100, 101, 102, -115, -115, 103, 337, + 333, 110, 111, 237, 79, 210, 71, 302, 326, 327, + 117, 342, 245, 104, 105, 106, 107, 108, 338, 339, + 109, 251, 82, 307, 330, 85, 257, 308, 67, 222, + 86, 313, 112, 113, 340, 304, 0, 306, 63, 0, + 293, 114, 0, 239, 240, 0, 63, 241, 0, 244, + 0, 272, 0, 246, 20, 273, 87, 88, 89, 0, + 328, 329, 0, 23, 0, 97, 100, 101, 102, 90, + 0, 103, 92, 93, 0, 0, 0, 0, 291, 0, + 0, 0, 266, 0, 0, 294, 295, 0, 0, 298, + 76, 0, 0, 0, 0, 0, 0, 277, 0, 85, + 0, 0, 0, 0, 86, 0, 0, 312, 0, 314, + 0, 315, 320, 321, 0, 323, 2, 3, 0, 4, + 5, 0, 0, 6, 7, 0, 0, 0, 0, 0, + 87, 88, 89, 0, 8, 9, 341, 0, 0, 343, + 0, 0, 344, 90, 346, 0, 92, 93, 0, 0, + 0, 0, 10, 11, 12, 13, 0, 0, 139, 0, + 14, 15, 16, 17, 18, 0, 0, 0, 19, 20, + 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, + 24, 0, 0, 25, 26, 0, 27, 0, 0, -18, + 195, -18, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 0, 197, 198, 199, -74, -74, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 0, 0, 0, 13, 209, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, -74, 20, 0, 0, 0, 0, 0, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 0, 0, 75, -74, 76, 195, 0, 4, 5, 0, + 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 196, 0, 197, 198, 199, -73, + -73, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 0, 0, 0, 13, 209, 0, 0, 0, 14, 15, + 16, 17, 0, 0, 0, 0, -73, 20, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 25, 26, 0, 61, 0, 0, 75, -73, 76, + 195, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 0, 197, 198, 199, 0, 0, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 0, 0, 0, 13, 209, + 0, 0, 0, 14, 15, 16, 17, 69, 0, 4, + 5, 0, 20, 6, 7, 0, 0, -105, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 0, 0, 75, 210, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 14, 15, 16, 17, 0, 0, 0, 0, -105, 20, + 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, + 24, 0, 0, 25, 267, -105, 61, 0, 4, 5, + 0, -105, 6, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 196, 0, 197, 198, 199, + 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 0, 0, 0, 13, 209, 0, 0, 0, 14, + 15, 16, 17, 0, 0, 4, 5, 0, 20, 6, + 7, 0, 0, 0, 21, 22, 0, 23, 0, 24, + 0, 0, 25, 26, 0, 61, 0, 0, 75, 0, + 76, 0, 0, 0, 0, 0, 116, 0, 4, 5, + 0, 13, 6, 7, 117, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 21, 22, 0, 23, 0, 24, 0, 0, 25, + 26, 0, 61, 0, 13, 0, 0, 76, 0, 14, + 15, 16, 17, 224, 0, 4, 5, 0, 20, 6, + 7, 117, 0, 0, 21, 22, 0, 23, 0, 24, + 0, 0, 25, 26, -113, 61, 0, 0, 0, 0, + 69, 0, 4, 5, 0, 0, 6, 7, 0, 0, + 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 85, 20, 0, 0, 0, 86, + 0, 21, 22, 0, 23, 0, 24, 0, 13, 25, + 26, 0, 61, 14, 15, 16, 17, 189, 0, 4, + 5, 0, 20, 6, 7, 87, 88, 89, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 90, 61, + 91, 92, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 263, 0, 13, 6, 7, 0, 0, + 14, 15, 16, 17, 0, 0, 0, 0, 0, 20, + 0, 0, 198, 0, 0, 21, 22, 0, 23, 0, + 24, 205, 206, 25, 26, 0, 61, 0, 13, 0, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 4, 5, 20, 0, 6, 7, 0, 0, 21, 22, + 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 205, + 206, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 21, 22, 85, 23, + 0, 24, 0, 86, 25, 26, 0, 61, 4, 5, + 0, 0, 6, 7, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, + 88, 89, 0, 0, 0, 4, 5, 0, 0, 6, + 7, 117, 90, 220, 13, 92, 93, 0, 0, 14, + 15, 16, 17, 0, 0, 0, 0, 85, 20, 0, + 0, 0, 86, 0, 21, 22, 0, 23, 0, 24, + 0, 13, 25, 26, 0, 61, 14, 15, 16, 17, + 0, 0, 4, 5, 0, 20, 6, 7, 87, 88, + 89, 21, 22, 0, 23, 0, 24, 0, 0, 25, + 26, 90, 61, 0, 92, 93, 0, 0, 0, 4, + 5, 0, 0, 6, 7, 0, 0, 0, 13, 0, + 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, 25, 26, 0, 61, - 0, 0, 75, 0, 76, 0, 0, 0, 0, 0, - 116, 0, 4, 5, 0, 13, 6, 7, 117, 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, 22, 0, 23, 0, - 24, 0, 0, 25, 26, 0, 61, 0, 13, 0, - 0, 76, 0, 14, 15, 16, 17, 227, 0, 4, - 5, 0, 20, 6, 7, 117, 0, 0, 21, 22, - 0, 23, 0, 24, 0, 0, 25, 26, -112, 61, - 0, 0, 0, 0, 69, 0, 4, 5, 0, 0, - 6, 7, 0, 0, 0, 13, 0, 0, 0, 0, - 14, 15, 16, 17, 0, 0, 0, 0, 85, 20, - 0, 0, 0, 86, 0, 21, 22, 0, 23, 0, - 24, 0, 13, 25, 26, 0, 61, 14, 15, 16, - 17, 192, 0, 4, 5, 0, 20, 6, 7, 87, - 88, 89, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 90, 61, 91, 92, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 265, 0, 13, - 6, 7, 0, 0, 14, 15, 16, 17, 0, 0, - 0, 0, 0, 20, 0, 0, 201, 0, 0, 21, - 22, 0, 23, 0, 24, 208, 209, 25, 26, 0, - 61, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 4, 5, 20, 0, 6, 7, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 201, 0, 0, 0, 0, 0, - 0, 0, 0, 208, 209, 0, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, - 21, 22, 85, 23, 0, 24, 0, 86, 25, 26, - 0, 61, 4, 5, 0, 0, 6, 7, 0, 0, - 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 88, 89, 0, 0, 0, 4, - 5, 0, 0, 6, 7, 117, 90, 223, 13, 92, - 93, 0, 0, 14, 15, 16, 17, 0, 0, 0, - 0, 85, 20, 0, 0, 0, 86, 0, 21, 22, - 0, 23, 0, 24, 0, 13, 25, 26, 0, 61, - 14, 15, 16, 17, 0, 0, 4, 5, 0, 20, - 6, 7, 87, 88, 89, 21, 22, 0, 23, 0, - 24, 0, 0, 25, 26, 90, 61, 0, 92, 93, - 0, 0, 0, 4, 5, 0, 0, 6, 7, 0, - 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 25, 26, 0, 61, 14, 15, 16, 17, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, - 22, 0, 23, 0, 24, 0, 0, 25, 66, 0, - 61 + 24, 0, 0, 25, 66, 0, 61 }; static const yytype_int16 yycheck[] = { - 1, 29, 30, 44, 86, 1, 1, 87, 250, 46, - 120, 13, 14, 15, 29, 11, 1, 1, 4, 21, - 22, 70, 24, 25, 220, 26, 17, 1, 27, 111, - 4, 52, 52, 35, 29, 1, 41, 1, 21, 22, - 313, 24, 43, 44, 1, 1, 4, 4, 71, 322, - 6, 68, 35, 73, 75, 75, 52, 68, 59, 60, - 56, 240, 61, 73, 1, 66, 71, 57, 52, 6, - 119, 56, 52, 69, 1, 185, 68, 319, 50, 75, - 71, 67, 131, 132, 69, 86, 52, 88, 89, 90, - 145, 75, 56, 148, 95, 69, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 72, 75, - 68, 191, 1, 68, 115, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 129, 81, 56, - 145, 3, 4, 148, 313, 184, 137, 3, 91, 17, - 141, 66, 69, 322, 340, 1, 129, 343, 44, 45, - 145, 206, 207, 148, 3, 210, 4, 212, 52, 160, - 162, 216, 5, 61, 62, 63, 69, 56, 66, 25, - 26, 44, 45, 9, 46, 47, 59, 60, 179, 180, - 69, 179, 180, 10, 39, 138, 14, 41, 68, 244, - 75, 206, 207, 71, 68, 210, 52, 212, 70, 68, - 49, 216, 51, 68, 259, 285, 221, 4, 249, 258, - 211, 206, 207, 262, 263, 210, 69, 212, 74, 10, - 239, 216, 223, 260, 15, 10, 27, 11, 269, 244, - 57, 58, 233, 234, 316, 68, 237, 238, 287, 21, - 55, 278, 74, 7, 259, 7, 316, 296, 249, 244, - 41, 204, 267, 30, 303, 234, 10, 299, 25, 331, - 213, 15, 162, -1, 259, 293, 57, 58, 269, 222, - 278, 290, 57, 58, 323, 294, 229, 13, 14, 7, - 8, 9, 297, -1, -1, -1, 335, 41, 42, 43, - 305, -1, 311, -1, 295, 314, 297, 299, 251, -1, - 54, -1, -1, 57, 58, 307, -1, -1, 44, 45, - -1, 59, 60, 61, 62, 63, -1, 53, 66, -1, - -1, 75, 275, 342, 307, 53, 345, -1, -1, 282, - 283, 59, 60, 286, 62, 59, 60, 61, 62, 63, - -1, -1, 66, 10, -1, -1, -1, -1, 15, -1, - -1, 304, -1, 306, -1, 308, 309, 310, -1, 312, - 0, 1, -1, 3, 4, -1, -1, 7, 8, -1, - -1, -1, -1, -1, 41, 42, 43, -1, 18, 19, - 333, -1, -1, 336, 10, -1, 339, 54, 341, 15, - 57, 58, -1, -1, -1, -1, 36, 37, 38, 39, - -1, -1, 69, -1, 44, 45, 46, 47, 48, -1, - -1, -1, 52, 53, -1, 41, 42, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, - 70, 57, 58, 73, 1, 75, 3, 4, -1, -1, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 39, 40, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, -1, 52, 53, -1, -1, -1, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, -1, -1, 73, 74, 75, 1, - -1, 3, 4, -1, -1, 7, 8, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, -1, 39, 40, -1, - -1, -1, 44, 45, 46, 47, -1, -1, -1, -1, - 52, 53, -1, -1, -1, -1, -1, 59, 60, -1, - 62, -1, 64, -1, -1, 67, 68, -1, 70, -1, - -1, 73, 74, 75, 1, -1, 3, 4, -1, -1, - 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, -1, 22, 23, 24, -1, -1, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 39, 40, -1, -1, -1, 44, 45, 46, - 47, 1, -1, 3, 4, -1, 53, 7, 8, -1, - -1, 11, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, -1, -1, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, - -1, -1, -1, -1, 44, 45, 46, 47, -1, -1, - -1, -1, 52, 53, -1, -1, -1, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, 69, - 70, -1, 3, 4, -1, 75, 7, 8, -1, -1, + 1, 44, 29, 30, 217, 70, 86, 238, 1, 87, + 46, 13, 14, 15, 29, 1, 1, 1, 248, 21, + 22, 1, 24, 25, 1, 26, 120, 17, 17, 6, + 3, 111, 10, 35, 52, 27, 29, 15, 21, 22, + 314, 24, 43, 44, 1, 4, 1, 4, 4, 323, + 1, 6, 35, 4, 119, 73, 68, 75, 59, 60, + 59, 60, 71, 41, 42, 66, 131, 132, 52, 61, + 56, 56, 52, 68, 1, 73, 49, 1, 51, 57, + 58, 71, 71, 314, 69, 86, 72, 88, 89, 90, + 320, 75, 323, 237, 95, 75, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 68, 68, + 188, 67, 69, 1, 115, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 129, 341, 56, + 145, 344, 56, 148, 10, 229, 137, 25, 26, 15, + 141, 52, 69, 81, 52, 69, 129, 291, 44, 45, + 68, 295, 145, 91, 41, 148, 179, 180, 10, 160, + 162, 44, 45, 228, 52, 41, 50, 75, 312, 3, + 1, 315, 57, 66, 3, 4, 4, 52, 179, 180, + 11, 57, 58, 5, 71, 39, 74, 14, 203, 204, + 9, 256, 207, 41, 209, 260, 261, 69, 213, 343, + 138, 68, 346, 218, 247, 57, 58, 208, 286, 10, + 203, 204, 68, 68, 207, 68, 209, 46, 47, 220, + 213, 52, 258, 288, 267, 56, 75, 242, 4, 69, + 231, 232, 297, 27, 235, 236, 11, 317, 69, 304, + 21, 70, 257, 279, 75, 145, 247, 68, 148, 242, + 265, 59, 60, 61, 62, 63, 57, 58, 66, 324, + 55, 13, 14, 201, 257, 74, 267, 294, 7, 8, + 9, 336, 210, 59, 60, 61, 62, 63, 7, 7, + 66, 219, 30, 298, 317, 10, 232, 300, 25, 162, + 15, 306, 44, 45, 332, 296, -1, 298, 300, -1, + 279, 53, -1, 203, 204, -1, 308, 207, -1, 209, + -1, 249, -1, 213, 53, 253, 41, 42, 43, -1, + 59, 60, -1, 62, -1, 308, 61, 62, 63, 54, + -1, 66, 57, 58, -1, -1, -1, -1, 276, -1, + -1, -1, 242, -1, -1, 283, 284, -1, -1, 287, + 75, -1, -1, -1, -1, -1, -1, 257, -1, 10, + -1, -1, -1, -1, 15, -1, -1, 305, -1, 307, + -1, 309, 310, 311, -1, 313, 0, 1, -1, 3, + 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, + 41, 42, 43, -1, 18, 19, 334, -1, -1, 337, + -1, -1, 340, 54, 342, -1, 57, 58, -1, -1, + -1, -1, 36, 37, 38, 39, -1, -1, 69, -1, + 44, 45, 46, 47, 48, -1, -1, -1, 52, 53, + -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, + 64, -1, -1, 67, 68, -1, 70, -1, -1, 73, + 1, 75, 3, 4, -1, -1, 7, 8, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + -1, 52, 53, -1, -1, -1, -1, -1, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + -1, -1, 73, 74, 75, 1, -1, 3, 4, -1, + -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 20, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, -1, 39, 40, -1, -1, -1, 44, 45, + 46, 47, -1, -1, -1, -1, 52, 53, -1, -1, + -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, + -1, 67, 68, -1, 70, -1, -1, 73, 74, 75, + 1, -1, 3, 4, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, - -1, -1, -1, 44, 45, 46, 47, -1, -1, 3, - 4, -1, 53, 7, 8, -1, -1, -1, 59, 60, + -1, -1, -1, 44, 45, 46, 47, 1, -1, 3, + 4, -1, 53, 7, 8, -1, -1, 11, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + -1, -1, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, + 44, 45, 46, 47, -1, -1, -1, -1, 52, 53, + -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, + 64, -1, -1, 67, 68, 69, 70, -1, 3, 4, + -1, 75, 7, 8, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 20, -1, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, + 35, -1, -1, -1, 39, 40, -1, -1, -1, 44, + 45, 46, 47, -1, -1, 3, 4, -1, 53, 7, + 8, -1, -1, -1, 59, 60, -1, 62, -1, 64, + -1, -1, 67, 68, -1, 70, -1, -1, 73, -1, + 75, -1, -1, -1, -1, -1, 1, -1, 3, 4, + -1, 39, 7, 8, 9, -1, 44, 45, 46, 47, + -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, + -1, 59, 60, -1, 62, -1, 64, -1, -1, 67, + 68, -1, 70, -1, 39, -1, -1, 75, -1, 44, + 45, 46, 47, 1, -1, 3, 4, -1, 53, 7, + 8, 9, -1, -1, 59, 60, -1, 62, -1, 64, + -1, -1, 67, 68, 69, 70, -1, -1, -1, -1, + 1, -1, 3, 4, -1, -1, 7, 8, -1, -1, + -1, 39, -1, -1, -1, -1, 44, 45, 46, 47, + -1, -1, -1, -1, 10, 53, -1, -1, -1, 15, + -1, 59, 60, -1, 62, -1, 64, -1, 39, 67, + 68, -1, 70, 44, 45, 46, 47, 1, -1, 3, + 4, -1, 53, 7, 8, 41, 42, 43, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, 54, 70, + 56, 57, 58, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, -1, 39, 7, 8, -1, -1, + 44, 45, 46, 47, -1, -1, -1, -1, -1, 53, + -1, -1, 23, -1, -1, 59, 60, -1, 62, -1, + 64, 32, 33, 67, 68, -1, 70, -1, 39, -1, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + 3, 4, 53, -1, 7, 8, -1, -1, 59, 60, + -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, + 23, -1, -1, -1, -1, -1, -1, -1, -1, 32, + 33, -1, -1, -1, -1, -1, 39, -1, -1, -1, + -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, 59, 60, 10, 62, + -1, 64, -1, 15, 67, 68, -1, 70, 3, 4, + -1, -1, 7, 8, -1, -1, -1, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 42, 43, -1, -1, -1, 3, 4, -1, -1, 7, + 8, 9, 54, 55, 39, 57, 58, -1, -1, 44, + 45, 46, 47, -1, -1, -1, -1, 10, 53, -1, + -1, -1, 15, -1, 59, 60, -1, 62, -1, 64, + -1, 39, 67, 68, -1, 70, 44, 45, 46, 47, + -1, -1, 3, 4, -1, 53, 7, 8, 41, 42, + 43, 59, 60, -1, 62, -1, 64, -1, -1, 67, + 68, 54, 70, -1, 57, 58, -1, -1, -1, 3, + 4, -1, -1, 7, 8, -1, -1, -1, 39, -1, + -1, -1, -1, 44, 45, 46, 47, -1, -1, -1, + -1, -1, 53, -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, 70, - -1, -1, 73, -1, 75, -1, -1, -1, -1, -1, - 1, -1, 3, 4, -1, 39, 7, 8, 9, -1, 44, 45, 46, 47, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, - 64, -1, -1, 67, 68, -1, 70, -1, 39, -1, - -1, 75, -1, 44, 45, 46, 47, 1, -1, 3, - 4, -1, 53, 7, 8, 9, -1, -1, 59, 60, - -1, 62, -1, 64, -1, -1, 67, 68, 69, 70, - -1, -1, -1, -1, 1, -1, 3, 4, -1, -1, - 7, 8, -1, -1, -1, 39, -1, -1, -1, -1, - 44, 45, 46, 47, -1, -1, -1, -1, 10, 53, - -1, -1, -1, 15, -1, 59, 60, -1, 62, -1, - 64, -1, 39, 67, 68, -1, 70, 44, 45, 46, - 47, 1, -1, 3, 4, -1, 53, 7, 8, 41, - 42, 43, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, 54, 70, 56, 57, 58, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, -1, 39, - 7, 8, -1, -1, 44, 45, 46, 47, -1, -1, - -1, -1, -1, 53, -1, -1, 23, -1, -1, 59, - 60, -1, 62, -1, 64, 32, 33, 67, 68, -1, - 70, -1, 39, -1, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, 3, 4, 53, -1, 7, 8, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, 23, -1, -1, -1, -1, -1, - -1, -1, -1, 32, 33, -1, -1, -1, -1, -1, - 39, -1, -1, -1, -1, 44, 45, 46, 47, -1, - -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, - 59, 60, 10, 62, -1, 64, -1, 15, 67, 68, - -1, 70, 3, 4, -1, -1, 7, 8, -1, -1, - -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, 42, 43, -1, -1, -1, 3, - 4, -1, -1, 7, 8, 9, 54, 55, 39, 57, - 58, -1, -1, 44, 45, 46, 47, -1, -1, -1, - -1, 10, 53, -1, -1, -1, 15, -1, 59, 60, - -1, 62, -1, 64, -1, 39, 67, 68, -1, 70, - 44, 45, 46, 47, -1, -1, 3, 4, -1, 53, - 7, 8, 41, 42, 43, 59, 60, -1, 62, -1, - 64, -1, -1, 67, 68, 54, 70, -1, 57, 58, - -1, -1, -1, 3, 4, -1, -1, 7, 8, -1, - -1, -1, 39, -1, -1, -1, -1, 44, 45, 46, - 47, -1, -1, -1, -1, -1, 53, -1, -1, -1, - -1, -1, 59, 60, -1, 62, -1, 64, -1, -1, - 67, 68, -1, 70, 44, 45, 46, 47, -1, -1, - -1, -1, -1, 53, -1, -1, -1, -1, -1, 59, - 60, -1, 62, -1, 64, -1, -1, 67, 68, -1, - 70 + 64, -1, -1, 67, 68, -1, 70 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1116,38 +1123,38 @@ static const yytype_uint8 yystos[] = 0, 77, 0, 1, 3, 4, 7, 8, 18, 19, 36, 37, 38, 39, 44, 45, 46, 47, 48, 52, 53, 59, 60, 62, 64, 67, 68, 70, 78, 81, - 85, 86, 89, 107, 118, 122, 123, 124, 125, 126, - 127, 135, 136, 68, 71, 132, 133, 134, 3, 4, - 46, 47, 70, 83, 84, 128, 136, 136, 136, 68, - 68, 70, 123, 136, 123, 123, 68, 125, 136, 1, - 114, 118, 49, 51, 127, 73, 75, 82, 91, 107, - 138, 142, 82, 87, 52, 10, 15, 41, 42, 43, - 54, 56, 57, 58, 120, 121, 12, 123, 59, 60, + 85, 87, 90, 108, 119, 123, 124, 125, 126, 127, + 128, 136, 137, 68, 71, 133, 134, 135, 3, 4, + 46, 47, 70, 83, 84, 129, 137, 137, 137, 68, + 68, 70, 124, 137, 124, 124, 68, 126, 137, 1, + 115, 119, 49, 51, 128, 73, 75, 82, 92, 108, + 139, 143, 82, 88, 52, 10, 15, 41, 42, 43, + 54, 56, 57, 58, 121, 122, 12, 124, 59, 60, 61, 62, 63, 66, 59, 60, 61, 62, 63, 66, - 13, 14, 44, 45, 53, 119, 1, 9, 88, 115, - 116, 117, 118, 114, 118, 17, 132, 50, 68, 57, - 109, 115, 115, 118, 44, 45, 137, 1, 56, 69, - 140, 144, 140, 1, 6, 79, 1, 6, 80, 107, - 108, 90, 108, 5, 88, 118, 135, 118, 118, 118, - 108, 118, 39, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 88, 14, 118, 140, 1, - 144, 72, 1, 4, 110, 111, 123, 140, 140, 118, - 108, 41, 1, 118, 1, 91, 1, 91, 1, 20, - 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 40, 74, 92, 93, 95, 102, 106, 118, - 138, 139, 142, 55, 118, 128, 117, 1, 117, 140, - 1, 144, 135, 68, 94, 4, 68, 68, 68, 108, - 68, 91, 91, 91, 112, 118, 91, 108, 91, 96, - 90, 141, 142, 108, 118, 108, 1, 4, 118, 112, - 97, 4, 118, 118, 92, 4, 95, 98, 91, 68, - 103, 113, 114, 139, 108, 140, 91, 129, 130, 131, - 132, 69, 140, 140, 27, 41, 142, 114, 11, 104, - 108, 17, 131, 108, 108, 68, 135, 108, 140, 105, - 92, 138, 92, 118, 140, 118, 142, 122, 21, 99, - 140, 108, 142, 108, 108, 1, 25, 26, 100, 108, - 108, 92, 108, 98, 92, 7, 8, 59, 60, 86, - 88, 101, 55, 143, 139, 98, 140, 7, 7, 143, - 108, 140, 108, 108, 90, 108, 92, 90, 92 + 13, 14, 44, 45, 53, 120, 1, 9, 89, 116, + 117, 118, 119, 115, 119, 17, 133, 50, 68, 57, + 110, 116, 116, 119, 44, 45, 138, 1, 56, 69, + 141, 145, 141, 1, 6, 79, 1, 6, 80, 108, + 109, 91, 109, 5, 89, 119, 136, 119, 119, 119, + 109, 119, 39, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 89, 14, 119, 141, 1, + 145, 72, 86, 124, 141, 141, 119, 109, 41, 1, + 119, 1, 92, 1, 92, 1, 20, 22, 23, 24, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, + 74, 93, 94, 96, 103, 107, 119, 139, 140, 143, + 55, 119, 129, 118, 1, 118, 1, 4, 111, 112, + 136, 68, 95, 4, 68, 68, 68, 109, 68, 92, + 92, 92, 113, 119, 92, 109, 92, 97, 91, 142, + 143, 109, 119, 141, 1, 145, 119, 113, 98, 4, + 119, 119, 93, 4, 96, 99, 92, 68, 104, 114, + 115, 140, 109, 109, 1, 4, 141, 92, 130, 131, + 132, 133, 69, 141, 141, 27, 41, 143, 115, 11, + 105, 109, 17, 132, 109, 109, 68, 136, 109, 141, + 106, 93, 139, 93, 119, 141, 119, 143, 123, 21, + 100, 141, 109, 143, 109, 109, 1, 25, 26, 101, + 109, 109, 93, 109, 99, 93, 7, 8, 59, 60, + 87, 89, 102, 55, 144, 140, 99, 141, 7, 7, + 144, 109, 141, 109, 109, 91, 109, 93, 91, 93 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1156,24 +1163,24 @@ static const yytype_uint8 yyr1[] = 0, 76, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 82, 83, 83, 83, 83, - 84, 84, 85, 87, 86, 88, 89, 89, 90, 90, - 90, 91, 91, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 93, 93, 93, 93, 93, 94, 93, - 93, 96, 95, 97, 95, 95, 95, 98, 98, 99, - 99, 99, 100, 100, 101, 101, 101, 101, 101, 101, - 102, 102, 103, 103, 104, 105, 104, 106, 106, 107, - 107, 108, 108, 109, 109, 110, 110, 111, 111, 111, - 111, 111, 112, 112, 113, 113, 114, 114, 114, 114, - 114, 114, 115, 115, 116, 116, 116, 116, 116, 116, - 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 119, 119, 119, 120, 120, 121, 121, 122, - 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, + 84, 84, 86, 85, 88, 87, 89, 90, 90, 91, + 91, 91, 92, 92, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 94, 94, 94, 94, 94, 95, + 94, 94, 97, 96, 98, 96, 96, 96, 99, 99, + 100, 100, 100, 101, 101, 102, 102, 102, 102, 102, + 102, 103, 103, 104, 104, 105, 106, 105, 107, 107, + 108, 108, 109, 109, 110, 110, 111, 111, 112, 112, + 112, 112, 112, 113, 113, 114, 114, 115, 115, 115, + 115, 115, 115, 116, 116, 117, 117, 117, 117, 117, + 117, 118, 118, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 120, 120, 120, 121, 121, 122, 122, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 126, 126, 127, 128, 128, 129, - 129, 130, 130, 131, 132, 133, 133, 134, 135, 135, - 136, 136, 137, 137, 137, 138, 139, 140, 141, 141, - 142, 143, 144 + 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, + 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 127, 127, 128, 129, 129, + 130, 130, 131, 131, 132, 133, 134, 134, 135, 136, + 136, 137, 137, 138, 138, 138, 139, 140, 141, 142, + 142, 143, 144, 145 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1182,24 +1189,24 @@ static const yytype_uint8 yyr2[] = 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 4, 4, 1, 2, 1, 1, 2, 1, 0, 1, 4, 1, 1, 1, 1, 5, 1, 1, 1, 2, - 1, 1, 6, 0, 3, 1, 1, 1, 0, 2, - 2, 1, 2, 2, 3, 1, 9, 6, 8, 8, - 12, 11, 1, 2, 2, 2, 2, 3, 0, 4, - 2, 0, 4, 0, 4, 4, 1, 0, 1, 0, - 2, 2, 5, 4, 1, 2, 2, 1, 1, 1, - 1, 1, 1, 3, 0, 0, 3, 6, 9, 1, - 2, 0, 1, 0, 2, 0, 1, 1, 3, 1, - 2, 3, 0, 1, 0, 1, 1, 3, 1, 2, - 3, 3, 0, 1, 1, 3, 1, 2, 3, 3, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 2, 1, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 5, 4, 3, 3, 3, 3, 3, 3, - 1, 2, 3, 4, 4, 1, 1, 1, 2, 2, - 1, 1, 2, 2, 1, 2, 4, 0, 1, 0, - 2, 1, 2, 1, 3, 1, 2, 2, 1, 2, - 1, 3, 1, 1, 0, 2, 2, 1, 0, 1, - 1, 1, 2 + 1, 1, 0, 7, 0, 3, 1, 1, 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 }; @@ -1876,24 +1883,24 @@ yyreduce: switch (yyn) { case 3: -#line 208 "awkgram.y" /* yacc.c:1646 */ +#line 213 "awkgram.y" /* yacc.c:1646 */ { rule = 0; yyerrok; } -#line 1885 "awkgram.c" /* yacc.c:1646 */ +#line 1892 "awkgram.c" /* yacc.c:1646 */ break; case 5: -#line 214 "awkgram.y" /* yacc.c:1646 */ +#line 219 "awkgram.y" /* yacc.c:1646 */ { next_sourcefile(); } -#line 1893 "awkgram.c" /* yacc.c:1646 */ +#line 1900 "awkgram.c" /* yacc.c:1646 */ break; case 6: -#line 218 "awkgram.y" /* yacc.c:1646 */ +#line 223 "awkgram.y" /* yacc.c:1646 */ { rule = 0; /* @@ -1902,20 +1909,20 @@ yyreduce: */ /* yyerrok; */ } -#line 1906 "awkgram.c" /* yacc.c:1646 */ +#line 1913 "awkgram.c" /* yacc.c:1646 */ break; case 7: -#line 230 "awkgram.y" /* yacc.c:1646 */ +#line 235 "awkgram.y" /* yacc.c:1646 */ { (void) append_rule((yyvsp[-1]), (yyvsp[0])); first_rule = false; } -#line 1915 "awkgram.c" /* yacc.c:1646 */ +#line 1922 "awkgram.c" /* yacc.c:1646 */ break; case 8: -#line 235 "awkgram.y" /* yacc.c:1646 */ +#line 240 "awkgram.y" /* yacc.c:1646 */ { if (rule != Rule) { msg(_("%s blocks must have an action part"), ruletab[rule]); @@ -1926,41 +1933,42 @@ yyreduce: } else /* pattern rule with non-empty pattern */ (void) append_rule((yyvsp[-1]), NULL); } -#line 1930 "awkgram.c" /* yacc.c:1646 */ +#line 1937 "awkgram.c" /* yacc.c:1646 */ break; case 9: -#line 246 "awkgram.y" /* yacc.c:1646 */ +#line 251 "awkgram.y" /* yacc.c:1646 */ { in_function = NULL; (void) mk_function((yyvsp[-1]), (yyvsp[0])); + want_param_names = DONT_CHECK; yyerrok; } -#line 1940 "awkgram.c" /* yacc.c:1646 */ +#line 1948 "awkgram.c" /* yacc.c:1646 */ break; case 10: -#line 252 "awkgram.y" /* yacc.c:1646 */ +#line 258 "awkgram.y" /* yacc.c:1646 */ { want_source = false; at_seen = false; yyerrok; } -#line 1950 "awkgram.c" /* yacc.c:1646 */ +#line 1958 "awkgram.c" /* yacc.c:1646 */ break; case 11: -#line 258 "awkgram.y" /* yacc.c:1646 */ +#line 264 "awkgram.y" /* yacc.c:1646 */ { want_source = false; at_seen = false; yyerrok; } -#line 1960 "awkgram.c" /* yacc.c:1646 */ +#line 1968 "awkgram.c" /* yacc.c:1646 */ break; case 12: -#line 267 "awkgram.y" /* yacc.c:1646 */ +#line 273 "awkgram.y" /* yacc.c:1646 */ { if (include_source((yyvsp[0])) < 0) YYABORT; @@ -1968,23 +1976,23 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = NULL; } -#line 1972 "awkgram.c" /* yacc.c:1646 */ +#line 1980 "awkgram.c" /* yacc.c:1646 */ break; case 13: -#line 275 "awkgram.y" /* yacc.c:1646 */ +#line 281 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 1978 "awkgram.c" /* yacc.c:1646 */ +#line 1986 "awkgram.c" /* yacc.c:1646 */ break; case 14: -#line 277 "awkgram.y" /* yacc.c:1646 */ +#line 283 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 1984 "awkgram.c" /* yacc.c:1646 */ +#line 1992 "awkgram.c" /* yacc.c:1646 */ break; case 15: -#line 282 "awkgram.y" /* yacc.c:1646 */ +#line 288 "awkgram.y" /* yacc.c:1646 */ { if (load_library((yyvsp[0])) < 0) YYABORT; @@ -1992,23 +2000,23 @@ yyreduce: bcfree((yyvsp[0])); (yyval) = NULL; } -#line 1996 "awkgram.c" /* yacc.c:1646 */ +#line 2004 "awkgram.c" /* yacc.c:1646 */ break; case 16: -#line 290 "awkgram.y" /* yacc.c:1646 */ +#line 296 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2002 "awkgram.c" /* yacc.c:1646 */ +#line 2010 "awkgram.c" /* yacc.c:1646 */ break; case 17: -#line 292 "awkgram.y" /* yacc.c:1646 */ +#line 298 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2008 "awkgram.c" /* yacc.c:1646 */ +#line 2016 "awkgram.c" /* yacc.c:1646 */ break; case 18: -#line 297 "awkgram.y" /* yacc.c:1646 */ +#line 303 "awkgram.y" /* yacc.c:1646 */ { rule = Rule; if (comment != NULL) { @@ -2017,11 +2025,11 @@ yyreduce: } else (yyval) = NULL; } -#line 2021 "awkgram.c" /* yacc.c:1646 */ +#line 2029 "awkgram.c" /* yacc.c:1646 */ break; case 19: -#line 306 "awkgram.y" /* yacc.c:1646 */ +#line 312 "awkgram.y" /* yacc.c:1646 */ { rule = Rule; if (comment != NULL) { @@ -2030,11 +2038,11 @@ yyreduce: } else (yyval) = (yyvsp[0]); } -#line 2034 "awkgram.c" /* yacc.c:1646 */ +#line 2042 "awkgram.c" /* yacc.c:1646 */ break; case 20: -#line 316 "awkgram.y" /* yacc.c:1646 */ +#line 322 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *tp; @@ -2064,11 +2072,11 @@ yyreduce: (yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp); rule = Rule; } -#line 2068 "awkgram.c" /* yacc.c:1646 */ +#line 2076 "awkgram.c" /* yacc.c:1646 */ break; case 21: -#line 346 "awkgram.y" /* yacc.c:1646 */ +#line 352 "awkgram.y" /* yacc.c:1646 */ { static int begin_seen = 0; @@ -2082,11 +2090,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2086 "awkgram.c" /* yacc.c:1646 */ +#line 2094 "awkgram.c" /* yacc.c:1646 */ break; case 22: -#line 360 "awkgram.y" /* yacc.c:1646 */ +#line 366 "awkgram.y" /* yacc.c:1646 */ { static int end_seen = 0; @@ -2100,11 +2108,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2104 "awkgram.c" /* yacc.c:1646 */ +#line 2112 "awkgram.c" /* yacc.c:1646 */ break; case 23: -#line 374 "awkgram.y" /* yacc.c:1646 */ +#line 380 "awkgram.y" /* yacc.c:1646 */ { func_first = false; (yyvsp[0])->in_rule = rule = BEGINFILE; @@ -2112,11 +2120,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2116 "awkgram.c" /* yacc.c:1646 */ +#line 2124 "awkgram.c" /* yacc.c:1646 */ break; case 24: -#line 382 "awkgram.y" /* yacc.c:1646 */ +#line 388 "awkgram.y" /* yacc.c:1646 */ { func_first = false; (yyvsp[0])->in_rule = rule = ENDFILE; @@ -2124,11 +2132,11 @@ yyreduce: check_comment(); (yyval) = (yyvsp[0]); } -#line 2128 "awkgram.c" /* yacc.c:1646 */ +#line 2136 "awkgram.c" /* yacc.c:1646 */ break; case 25: -#line 393 "awkgram.y" /* yacc.c:1646 */ +#line 399 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip; if ((yyvsp[-3]) == NULL) @@ -2137,42 +2145,48 @@ yyreduce: ip = (yyvsp[-3]); (yyval) = ip; } -#line 2141 "awkgram.c" /* yacc.c:1646 */ +#line 2149 "awkgram.c" /* yacc.c:1646 */ break; case 26: -#line 405 "awkgram.y" /* yacc.c:1646 */ +#line 411 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2147 "awkgram.c" /* yacc.c:1646 */ +#line 2155 "awkgram.c" /* yacc.c:1646 */ break; case 27: -#line 407 "awkgram.y" /* yacc.c:1646 */ +#line 413 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2153 "awkgram.c" /* yacc.c:1646 */ +#line 2161 "awkgram.c" /* yacc.c:1646 */ break; case 28: -#line 409 "awkgram.y" /* yacc.c:1646 */ +#line 415 "awkgram.y" /* yacc.c:1646 */ { yyerror(_("`%s' is a built-in function, it cannot be redefined"), tokstart); YYABORT; } -#line 2163 "awkgram.c" /* yacc.c:1646 */ +#line 2171 "awkgram.c" /* yacc.c:1646 */ break; case 29: -#line 415 "awkgram.y" /* yacc.c:1646 */ +#line 421 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); at_seen = false; } -#line 2172 "awkgram.c" /* yacc.c:1646 */ +#line 2180 "awkgram.c" /* yacc.c:1646 */ break; case 32: -#line 428 "awkgram.y" /* yacc.c:1646 */ +#line 433 "awkgram.y" /* yacc.c:1646 */ + { want_param_names = FUNC_HEADER; } +#line 2186 "awkgram.c" /* yacc.c:1646 */ + break; + + case 33: +#line 434 "awkgram.y" /* yacc.c:1646 */ { /* * treat any comments between BOF and the first function @@ -2190,26 +2204,27 @@ yyreduce: comment = NULL; } func_first = false; - (yyvsp[-5])->source_file = source; - if (install_function((yyvsp[-4])->lextok, (yyvsp[-5]), (yyvsp[-2])) < 0) + (yyvsp[-6])->source_file = source; + if (install_function((yyvsp[-5])->lextok, (yyvsp[-6]), (yyvsp[-2])) < 0) YYABORT; - in_function = (yyvsp[-4])->lextok; - (yyvsp[-4])->lextok = NULL; - bcfree((yyvsp[-4])); - /* $4 already free'd in install_function */ - (yyval) = (yyvsp[-5]); + in_function = (yyvsp[-5])->lextok; + (yyvsp[-5])->lextok = NULL; + bcfree((yyvsp[-5])); + /* $5 already free'd in install_function */ + (yyval) = (yyvsp[-6]); + want_param_names = FUNC_BODY; } -#line 2203 "awkgram.c" /* yacc.c:1646 */ +#line 2218 "awkgram.c" /* yacc.c:1646 */ break; - case 33: -#line 462 "awkgram.y" /* yacc.c:1646 */ + case 34: +#line 469 "awkgram.y" /* yacc.c:1646 */ { want_regexp = true; } -#line 2209 "awkgram.c" /* yacc.c:1646 */ +#line 2224 "awkgram.c" /* yacc.c:1646 */ break; - case 34: -#line 464 "awkgram.y" /* yacc.c:1646 */ + case 35: +#line 471 "awkgram.y" /* yacc.c:1646 */ { NODE *n, *exp; char *re; @@ -2238,11 +2253,11 @@ yyreduce: (yyval)->opcode = Op_match_rec; (yyval)->memory = n; } -#line 2242 "awkgram.c" /* yacc.c:1646 */ +#line 2257 "awkgram.c" /* yacc.c:1646 */ break; - case 35: -#line 496 "awkgram.y" /* yacc.c:1646 */ + case 36: +#line 503 "awkgram.y" /* yacc.c:1646 */ { NODE *n, *exp; char *re; @@ -2267,28 +2282,28 @@ yyreduce: #endif (yyval)->memory = n; } -#line 2271 "awkgram.c" /* yacc.c:1646 */ +#line 2286 "awkgram.c" /* yacc.c:1646 */ break; - case 36: -#line 523 "awkgram.y" /* yacc.c:1646 */ + case 37: +#line 530 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[0])); } -#line 2277 "awkgram.c" /* yacc.c:1646 */ +#line 2292 "awkgram.c" /* yacc.c:1646 */ break; - case 38: -#line 529 "awkgram.y" /* yacc.c:1646 */ + case 39: +#line 536 "awkgram.y" /* yacc.c:1646 */ { if (comment != NULL) { (yyval) = list_create(comment); comment = NULL; } else (yyval) = NULL; } -#line 2288 "awkgram.c" /* yacc.c:1646 */ +#line 2303 "awkgram.c" /* yacc.c:1646 */ break; - case 39: -#line 536 "awkgram.y" /* yacc.c:1646 */ + case 40: +#line 543 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0]) == NULL) { if (comment == NULL) @@ -2316,40 +2331,40 @@ yyreduce: } yyerrok; } -#line 2320 "awkgram.c" /* yacc.c:1646 */ +#line 2335 "awkgram.c" /* yacc.c:1646 */ break; - case 40: -#line 564 "awkgram.y" /* yacc.c:1646 */ + case 41: +#line 571 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2326 "awkgram.c" /* yacc.c:1646 */ +#line 2341 "awkgram.c" /* yacc.c:1646 */ break; - case 43: -#line 574 "awkgram.y" /* yacc.c:1646 */ + case 44: +#line 581 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2332 "awkgram.c" /* yacc.c:1646 */ +#line 2347 "awkgram.c" /* yacc.c:1646 */ break; - case 44: -#line 576 "awkgram.y" /* yacc.c:1646 */ + case 45: +#line 583 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 2338 "awkgram.c" /* yacc.c:1646 */ +#line 2353 "awkgram.c" /* yacc.c:1646 */ break; - case 45: -#line 578 "awkgram.y" /* yacc.c:1646 */ + case 46: +#line 585 "awkgram.y" /* yacc.c:1646 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2349 "awkgram.c" /* yacc.c:1646 */ +#line 2364 "awkgram.c" /* yacc.c:1646 */ break; - case 46: -#line 585 "awkgram.y" /* yacc.c:1646 */ + case 47: +#line 592 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt; INSTRUCTION *ip, *nextc, *tbreak; @@ -2439,11 +2454,11 @@ yyreduce: break_allowed--; fix_break_continue(ip, tbreak, NULL); } -#line 2443 "awkgram.c" /* yacc.c:1646 */ +#line 2458 "awkgram.c" /* yacc.c:1646 */ break; - case 47: -#line 675 "awkgram.y" /* yacc.c:1646 */ + case 48: +#line 682 "awkgram.y" /* yacc.c:1646 */ { /* * ----------------- @@ -2485,11 +2500,11 @@ yyreduce: continue_allowed--; fix_break_continue(ip, tbreak, tcont); } -#line 2489 "awkgram.c" /* yacc.c:1646 */ +#line 2504 "awkgram.c" /* yacc.c:1646 */ break; - case 48: -#line 717 "awkgram.y" /* yacc.c:1646 */ + case 49: +#line 724 "awkgram.y" /* yacc.c:1646 */ { /* * ----------------- @@ -2531,11 +2546,11 @@ yyreduce: } /* else $1 and $4 are NULLs */ } -#line 2535 "awkgram.c" /* yacc.c:1646 */ +#line 2550 "awkgram.c" /* yacc.c:1646 */ break; - case 49: -#line 759 "awkgram.y" /* yacc.c:1646 */ + case 50: +#line 766 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip; char *var_name = (yyvsp[-5])->lextok; @@ -2648,44 +2663,44 @@ regular_loop: break_allowed--; continue_allowed--; } -#line 2652 "awkgram.c" /* yacc.c:1646 */ +#line 2667 "awkgram.c" /* yacc.c:1646 */ break; - case 50: -#line 872 "awkgram.y" /* yacc.c:1646 */ + case 51: +#line 879 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), (yyvsp[-3]), (yyvsp[0])); break_allowed--; continue_allowed--; } -#line 2663 "awkgram.c" /* yacc.c:1646 */ +#line 2678 "awkgram.c" /* yacc.c:1646 */ break; - case 51: -#line 879 "awkgram.y" /* yacc.c:1646 */ + case 52: +#line 886 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION *) NULL, (yyvsp[-3]), (yyvsp[0])); break_allowed--; continue_allowed--; } -#line 2674 "awkgram.c" /* yacc.c:1646 */ +#line 2689 "awkgram.c" /* yacc.c:1646 */ break; - case 52: -#line 886 "awkgram.y" /* yacc.c:1646 */ + case 53: +#line 893 "awkgram.y" /* yacc.c:1646 */ { if (do_pretty_print) (yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count)); else (yyval) = (yyvsp[0]); } -#line 2685 "awkgram.c" /* yacc.c:1646 */ +#line 2700 "awkgram.c" /* yacc.c:1646 */ break; - case 53: -#line 896 "awkgram.y" /* yacc.c:1646 */ + case 54: +#line 903 "awkgram.y" /* yacc.c:1646 */ { if (! break_allowed) error_ln((yyvsp[-1])->source_line, @@ -2694,11 +2709,11 @@ regular_loop: (yyval) = list_create((yyvsp[-1])); } -#line 2698 "awkgram.c" /* yacc.c:1646 */ +#line 2713 "awkgram.c" /* yacc.c:1646 */ break; - case 54: -#line 905 "awkgram.y" /* yacc.c:1646 */ + case 55: +#line 912 "awkgram.y" /* yacc.c:1646 */ { if (! continue_allowed) error_ln((yyvsp[-1])->source_line, @@ -2707,11 +2722,11 @@ regular_loop: (yyval) = list_create((yyvsp[-1])); } -#line 2711 "awkgram.c" /* yacc.c:1646 */ +#line 2726 "awkgram.c" /* yacc.c:1646 */ break; - case 55: -#line 914 "awkgram.y" /* yacc.c:1646 */ + case 56: +#line 921 "awkgram.y" /* yacc.c:1646 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule && rule != Rule) @@ -2720,11 +2735,11 @@ regular_loop: (yyvsp[-1])->target_jmp = ip_rec; (yyval) = list_create((yyvsp[-1])); } -#line 2724 "awkgram.c" /* yacc.c:1646 */ +#line 2739 "awkgram.c" /* yacc.c:1646 */ break; - case 56: -#line 923 "awkgram.y" /* yacc.c:1646 */ + case 57: +#line 930 "awkgram.y" /* yacc.c:1646 */ { /* if inside function (rule = 0), resolve context at run-time */ if (rule == BEGIN || rule == END || rule == ENDFILE) @@ -2735,11 +2750,11 @@ regular_loop: (yyvsp[-1])->target_endfile = ip_endfile; (yyval) = list_create((yyvsp[-1])); } -#line 2739 "awkgram.c" /* yacc.c:1646 */ +#line 2754 "awkgram.c" /* yacc.c:1646 */ break; - case 57: -#line 934 "awkgram.y" /* yacc.c:1646 */ + case 58: +#line 941 "awkgram.y" /* yacc.c:1646 */ { /* Initialize the two possible jump targets, the actual target * is resolved at run-time. @@ -2754,20 +2769,20 @@ regular_loop: } else (yyval) = list_append((yyvsp[-1]), (yyvsp[-2])); } -#line 2758 "awkgram.c" /* yacc.c:1646 */ +#line 2773 "awkgram.c" /* yacc.c:1646 */ break; - case 58: -#line 949 "awkgram.y" /* yacc.c:1646 */ + case 59: +#line 956 "awkgram.y" /* yacc.c:1646 */ { if (! in_function) yyerror(_("`return' used outside function context")); } -#line 2767 "awkgram.c" /* yacc.c:1646 */ +#line 2782 "awkgram.c" /* yacc.c:1646 */ break; - case 59: -#line 952 "awkgram.y" /* yacc.c:1646 */ + case 60: +#line 959 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-1]) == NULL) { (yyval) = list_create((yyvsp[-3])); @@ -2788,17 +2803,17 @@ regular_loop: (yyval) = list_append((yyvsp[-1]), (yyvsp[-3])); } } -#line 2792 "awkgram.c" /* yacc.c:1646 */ +#line 2807 "awkgram.c" /* yacc.c:1646 */ break; - case 61: -#line 984 "awkgram.y" /* yacc.c:1646 */ + case 62: +#line 991 "awkgram.y" /* yacc.c:1646 */ { in_print = true; in_parens = 0; } -#line 2798 "awkgram.c" /* yacc.c:1646 */ +#line 2813 "awkgram.c" /* yacc.c:1646 */ break; - case 62: -#line 985 "awkgram.y" /* yacc.c:1646 */ + case 63: +#line 992 "awkgram.y" /* yacc.c:1646 */ { /* * Optimization: plain `print' has no expression list, so $3 is null. @@ -2895,17 +2910,17 @@ regular_print: } } } -#line 2899 "awkgram.c" /* yacc.c:1646 */ +#line 2914 "awkgram.c" /* yacc.c:1646 */ break; - case 63: -#line 1082 "awkgram.y" /* yacc.c:1646 */ + case 64: +#line 1089 "awkgram.y" /* yacc.c:1646 */ { sub_counter = 0; } -#line 2905 "awkgram.c" /* yacc.c:1646 */ +#line 2920 "awkgram.c" /* yacc.c:1646 */ break; - case 64: -#line 1083 "awkgram.y" /* yacc.c:1646 */ + case 65: +#line 1090 "awkgram.y" /* yacc.c:1646 */ { char *arr = (yyvsp[-2])->lextok; @@ -2938,11 +2953,11 @@ regular_print: (yyval) = list_append(list_append((yyvsp[0]), (yyvsp[-2])), (yyvsp[-3])); } } -#line 2942 "awkgram.c" /* yacc.c:1646 */ +#line 2957 "awkgram.c" /* yacc.c:1646 */ break; - case 65: -#line 1120 "awkgram.y" /* yacc.c:1646 */ + case 66: +#line 1127 "awkgram.y" /* yacc.c:1646 */ { static bool warned = false; char *arr = (yyvsp[-1])->lextok; @@ -2968,52 +2983,52 @@ regular_print: fatal(_("`delete' is not allowed with FUNCTAB")); } } -#line 2972 "awkgram.c" /* yacc.c:1646 */ +#line 2987 "awkgram.c" /* yacc.c:1646 */ break; - case 66: -#line 1146 "awkgram.y" /* yacc.c:1646 */ + case 67: +#line 1153 "awkgram.y" /* yacc.c:1646 */ { (yyval) = optimize_assignment((yyvsp[0])); } -#line 2978 "awkgram.c" /* yacc.c:1646 */ +#line 2993 "awkgram.c" /* yacc.c:1646 */ break; - case 67: -#line 1151 "awkgram.y" /* yacc.c:1646 */ + case 68: +#line 1158 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2984 "awkgram.c" /* yacc.c:1646 */ +#line 2999 "awkgram.c" /* yacc.c:1646 */ break; - case 68: -#line 1153 "awkgram.y" /* yacc.c:1646 */ + case 69: +#line 1160 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 2990 "awkgram.c" /* yacc.c:1646 */ +#line 3005 "awkgram.c" /* yacc.c:1646 */ break; - case 69: -#line 1158 "awkgram.y" /* yacc.c:1646 */ + case 70: +#line 1165 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 2996 "awkgram.c" /* yacc.c:1646 */ +#line 3011 "awkgram.c" /* yacc.c:1646 */ break; - case 70: -#line 1160 "awkgram.y" /* yacc.c:1646 */ + case 71: +#line 1167 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-1]) == NULL) (yyval) = list_create((yyvsp[0])); else (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0])); } -#line 3007 "awkgram.c" /* yacc.c:1646 */ +#line 3022 "awkgram.c" /* yacc.c:1646 */ break; - case 71: -#line 1167 "awkgram.y" /* yacc.c:1646 */ + case 72: +#line 1174 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3013 "awkgram.c" /* yacc.c:1646 */ +#line 3028 "awkgram.c" /* yacc.c:1646 */ break; - case 72: -#line 1172 "awkgram.y" /* yacc.c:1646 */ + case 73: +#line 1179 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3025,11 +3040,11 @@ regular_print: bcfree((yyvsp[-2])); (yyval) = (yyvsp[-4]); } -#line 3029 "awkgram.c" /* yacc.c:1646 */ +#line 3044 "awkgram.c" /* yacc.c:1646 */ break; - case 73: -#line 1184 "awkgram.y" /* yacc.c:1646 */ + case 74: +#line 1191 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *casestmt = (yyvsp[0]); if ((yyvsp[0]) == NULL) @@ -3040,17 +3055,17 @@ regular_print: (yyvsp[-3])->case_stmt = casestmt; (yyval) = (yyvsp[-3]); } -#line 3044 "awkgram.c" /* yacc.c:1646 */ +#line 3059 "awkgram.c" /* yacc.c:1646 */ break; - case 74: -#line 1198 "awkgram.y" /* yacc.c:1646 */ + case 75: +#line 1205 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3050 "awkgram.c" /* yacc.c:1646 */ +#line 3065 "awkgram.c" /* yacc.c:1646 */ break; - case 75: -#line 1200 "awkgram.y" /* yacc.c:1646 */ + case 76: +#line 1207 "awkgram.y" /* yacc.c:1646 */ { NODE *n = (yyvsp[0])->memory; (void) force_number(n); @@ -3058,26 +3073,26 @@ regular_print: bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3062 "awkgram.c" /* yacc.c:1646 */ +#line 3077 "awkgram.c" /* yacc.c:1646 */ break; - case 76: -#line 1208 "awkgram.y" /* yacc.c:1646 */ + case 77: +#line 1215 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3071 "awkgram.c" /* yacc.c:1646 */ +#line 3086 "awkgram.c" /* yacc.c:1646 */ break; - case 77: -#line 1213 "awkgram.y" /* yacc.c:1646 */ + case 78: +#line 1220 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3077 "awkgram.c" /* yacc.c:1646 */ +#line 3092 "awkgram.c" /* yacc.c:1646 */ break; - case 78: -#line 1215 "awkgram.y" /* yacc.c:1646 */ + case 79: +#line 1222 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->memory->type == Node_regex) (yyvsp[0])->opcode = Op_push_re; @@ -3085,57 +3100,57 @@ regular_print: (yyvsp[0])->opcode = Op_push; (yyval) = (yyvsp[0]); } -#line 3089 "awkgram.c" /* yacc.c:1646 */ +#line 3104 "awkgram.c" /* yacc.c:1646 */ break; - case 79: -#line 1223 "awkgram.y" /* yacc.c:1646 */ + case 80: +#line 1230 "awkgram.y" /* yacc.c:1646 */ { assert((yyvsp[0])->memory->type == Node_hardregex); (yyvsp[0])->opcode = Op_push_re; (yyval) = (yyvsp[0]); } -#line 3099 "awkgram.c" /* yacc.c:1646 */ +#line 3114 "awkgram.c" /* yacc.c:1646 */ break; - case 80: -#line 1232 "awkgram.y" /* yacc.c:1646 */ + case 81: +#line 1239 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3105 "awkgram.c" /* yacc.c:1646 */ +#line 3120 "awkgram.c" /* yacc.c:1646 */ break; - case 81: -#line 1234 "awkgram.y" /* yacc.c:1646 */ + case 82: +#line 1241 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3111 "awkgram.c" /* yacc.c:1646 */ +#line 3126 "awkgram.c" /* yacc.c:1646 */ break; - case 83: -#line 1244 "awkgram.y" /* yacc.c:1646 */ + case 84: +#line 1251 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3119 "awkgram.c" /* yacc.c:1646 */ +#line 3134 "awkgram.c" /* yacc.c:1646 */ break; - case 84: -#line 1251 "awkgram.y" /* yacc.c:1646 */ + case 85: +#line 1258 "awkgram.y" /* yacc.c:1646 */ { in_print = false; in_parens = 0; (yyval) = NULL; } -#line 3129 "awkgram.c" /* yacc.c:1646 */ +#line 3144 "awkgram.c" /* yacc.c:1646 */ break; - case 85: -#line 1256 "awkgram.y" /* yacc.c:1646 */ + case 86: +#line 1263 "awkgram.y" /* yacc.c:1646 */ { in_print = false; in_parens = 0; } -#line 3135 "awkgram.c" /* yacc.c:1646 */ +#line 3150 "awkgram.c" /* yacc.c:1646 */ break; - case 86: -#line 1257 "awkgram.y" /* yacc.c:1646 */ + case 87: +#line 1264 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->redir_type == redirect_twoway && (yyvsp[0])->lasti->opcode == Op_K_getline_redir @@ -3143,136 +3158,136 @@ regular_print: yyerror(_("multistage two-way pipelines don't work")); (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2])); } -#line 3147 "awkgram.c" /* yacc.c:1646 */ +#line 3162 "awkgram.c" /* yacc.c:1646 */ break; - case 87: -#line 1268 "awkgram.y" /* yacc.c:1646 */ + case 88: +#line 1275 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), NULL, NULL); } -#line 3155 "awkgram.c" /* yacc.c:1646 */ +#line 3170 "awkgram.c" /* yacc.c:1646 */ break; - case 88: -#line 1273 "awkgram.y" /* yacc.c:1646 */ + case 89: +#line 1280 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[0])); } -#line 3163 "awkgram.c" /* yacc.c:1646 */ +#line 3178 "awkgram.c" /* yacc.c:1646 */ break; - case 93: -#line 1290 "awkgram.y" /* yacc.c:1646 */ + case 94: +#line 1297 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3169 "awkgram.c" /* yacc.c:1646 */ +#line 3184 "awkgram.c" /* yacc.c:1646 */ break; - case 94: -#line 1292 "awkgram.y" /* yacc.c:1646 */ + case 95: +#line 1299 "awkgram.y" /* yacc.c:1646 */ { bcfree((yyvsp[-1])); (yyval) = (yyvsp[0]); } -#line 3178 "awkgram.c" /* yacc.c:1646 */ +#line 3193 "awkgram.c" /* yacc.c:1646 */ break; - case 95: -#line 1300 "awkgram.y" /* yacc.c:1646 */ + case 96: +#line 1307 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3184 "awkgram.c" /* yacc.c:1646 */ +#line 3199 "awkgram.c" /* yacc.c:1646 */ break; - case 96: -#line 1302 "awkgram.y" /* yacc.c:1646 */ + case 97: +#line 1309 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3190 "awkgram.c" /* yacc.c:1646 */ +#line 3205 "awkgram.c" /* yacc.c:1646 */ break; - case 97: -#line 1307 "awkgram.y" /* yacc.c:1646 */ + case 98: +#line 1314 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->param_count = 0; (yyval) = list_create((yyvsp[0])); } -#line 3199 "awkgram.c" /* yacc.c:1646 */ +#line 3214 "awkgram.c" /* yacc.c:1646 */ break; - case 98: -#line 1312 "awkgram.y" /* yacc.c:1646 */ + case 99: +#line 1319 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->param_count = (yyvsp[-2])->lasti->param_count + 1; (yyval) = list_append((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3209 "awkgram.c" /* yacc.c:1646 */ +#line 3224 "awkgram.c" /* yacc.c:1646 */ break; - case 99: -#line 1318 "awkgram.y" /* yacc.c:1646 */ + case 100: +#line 1325 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3215 "awkgram.c" /* yacc.c:1646 */ +#line 3230 "awkgram.c" /* yacc.c:1646 */ break; - case 100: -#line 1320 "awkgram.y" /* yacc.c:1646 */ + case 101: +#line 1327 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3221 "awkgram.c" /* yacc.c:1646 */ +#line 3236 "awkgram.c" /* yacc.c:1646 */ break; - case 101: -#line 1322 "awkgram.y" /* yacc.c:1646 */ + case 102: +#line 1329 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-2]); } -#line 3227 "awkgram.c" /* yacc.c:1646 */ +#line 3242 "awkgram.c" /* yacc.c:1646 */ break; - case 102: -#line 1328 "awkgram.y" /* yacc.c:1646 */ + case 103: +#line 1335 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3233 "awkgram.c" /* yacc.c:1646 */ +#line 3248 "awkgram.c" /* yacc.c:1646 */ break; - case 103: -#line 1330 "awkgram.y" /* yacc.c:1646 */ + case 104: +#line 1337 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3239 "awkgram.c" /* yacc.c:1646 */ +#line 3254 "awkgram.c" /* yacc.c:1646 */ break; - case 104: -#line 1335 "awkgram.y" /* yacc.c:1646 */ + case 105: +#line 1342 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3245 "awkgram.c" /* yacc.c:1646 */ +#line 3260 "awkgram.c" /* yacc.c:1646 */ break; - case 105: -#line 1337 "awkgram.y" /* yacc.c:1646 */ + case 106: +#line 1344 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3251 "awkgram.c" /* yacc.c:1646 */ +#line 3266 "awkgram.c" /* yacc.c:1646 */ break; - case 106: -#line 1342 "awkgram.y" /* yacc.c:1646 */ + case 107: +#line 1349 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3257 "awkgram.c" /* yacc.c:1646 */ +#line 3272 "awkgram.c" /* yacc.c:1646 */ break; - case 107: -#line 1344 "awkgram.y" /* yacc.c:1646 */ + case 108: +#line 1351 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3266 "awkgram.c" /* yacc.c:1646 */ +#line 3281 "awkgram.c" /* yacc.c:1646 */ break; - case 108: -#line 1349 "awkgram.y" /* yacc.c:1646 */ + case 109: +#line 1356 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3272 "awkgram.c" /* yacc.c:1646 */ +#line 3287 "awkgram.c" /* yacc.c:1646 */ break; - case 109: -#line 1351 "awkgram.y" /* yacc.c:1646 */ + case 110: +#line 1358 "awkgram.y" /* yacc.c:1646 */ { /* * Returning the expression list instead of NULL lets @@ -3280,62 +3295,62 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3284 "awkgram.c" /* yacc.c:1646 */ +#line 3299 "awkgram.c" /* yacc.c:1646 */ break; - case 110: -#line 1359 "awkgram.y" /* yacc.c:1646 */ + case 111: +#line 1366 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3293 "awkgram.c" /* yacc.c:1646 */ +#line 3308 "awkgram.c" /* yacc.c:1646 */ break; - case 111: -#line 1364 "awkgram.y" /* yacc.c:1646 */ + case 112: +#line 1371 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = (yyvsp[-2]); } -#line 3302 "awkgram.c" /* yacc.c:1646 */ +#line 3317 "awkgram.c" /* yacc.c:1646 */ break; - case 112: -#line 1372 "awkgram.y" /* yacc.c:1646 */ + case 113: +#line 1379 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3308 "awkgram.c" /* yacc.c:1646 */ +#line 3323 "awkgram.c" /* yacc.c:1646 */ break; - case 113: -#line 1374 "awkgram.y" /* yacc.c:1646 */ + case 114: +#line 1381 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3314 "awkgram.c" /* yacc.c:1646 */ +#line 3329 "awkgram.c" /* yacc.c:1646 */ break; - case 114: -#line 1379 "awkgram.y" /* yacc.c:1646 */ + case 115: +#line 1386 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list(NULL, (yyvsp[0])); } -#line 3320 "awkgram.c" /* yacc.c:1646 */ +#line 3335 "awkgram.c" /* yacc.c:1646 */ break; - case 115: -#line 1381 "awkgram.y" /* yacc.c:1646 */ + case 116: +#line 1388 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); yyerrok; } -#line 3329 "awkgram.c" /* yacc.c:1646 */ +#line 3344 "awkgram.c" /* yacc.c:1646 */ break; - case 116: -#line 1386 "awkgram.y" /* yacc.c:1646 */ + case 117: +#line 1393 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3335 "awkgram.c" /* yacc.c:1646 */ +#line 3350 "awkgram.c" /* yacc.c:1646 */ break; - case 117: -#line 1388 "awkgram.y" /* yacc.c:1646 */ + case 118: +#line 1395 "awkgram.y" /* yacc.c:1646 */ { /* * Returning the expression list instead of NULL lets @@ -3343,72 +3358,72 @@ regular_print: */ (yyval) = (yyvsp[-1]); } -#line 3347 "awkgram.c" /* yacc.c:1646 */ +#line 3362 "awkgram.c" /* yacc.c:1646 */ break; - case 118: -#line 1396 "awkgram.y" /* yacc.c:1646 */ + case 119: +#line 1403 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0])); } -#line 3356 "awkgram.c" /* yacc.c:1646 */ +#line 3371 "awkgram.c" /* yacc.c:1646 */ break; - case 119: -#line 1401 "awkgram.y" /* yacc.c:1646 */ + case 120: +#line 1408 "awkgram.y" /* yacc.c:1646 */ { /* Ditto */ (yyval) = (yyvsp[-2]); } -#line 3365 "awkgram.c" /* yacc.c:1646 */ +#line 3380 "awkgram.c" /* yacc.c:1646 */ break; - case 120: -#line 1408 "awkgram.y" /* yacc.c:1646 */ + case 121: +#line 1415 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3371 "awkgram.c" /* yacc.c:1646 */ +#line 3386 "awkgram.c" /* yacc.c:1646 */ break; - case 121: -#line 1409 "awkgram.y" /* yacc.c:1646 */ + case 122: +#line 1416 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3377 "awkgram.c" /* yacc.c:1646 */ +#line 3392 "awkgram.c" /* yacc.c:1646 */ break; - case 122: -#line 1415 "awkgram.y" /* yacc.c:1646 */ + case 123: +#line 1422 "awkgram.y" /* yacc.c:1646 */ { if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[-1])->source_line, _("regular expression on right of assignment")); (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3388 "awkgram.c" /* yacc.c:1646 */ +#line 3403 "awkgram.c" /* yacc.c:1646 */ break; - case 123: -#line 1422 "awkgram.y" /* yacc.c:1646 */ + case 124: +#line 1429 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), (yyvsp[-1])); } -#line 3396 "awkgram.c" /* yacc.c:1646 */ +#line 3411 "awkgram.c" /* yacc.c:1646 */ break; - case 124: -#line 1426 "awkgram.y" /* yacc.c:1646 */ + case 125: +#line 1433 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3402 "awkgram.c" /* yacc.c:1646 */ +#line 3417 "awkgram.c" /* yacc.c:1646 */ break; - case 125: -#line 1428 "awkgram.y" /* yacc.c:1646 */ + case 126: +#line 1435 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3408 "awkgram.c" /* yacc.c:1646 */ +#line 3423 "awkgram.c" /* yacc.c:1646 */ break; - case 126: -#line 1430 "awkgram.y" /* yacc.c:1646 */ + case 127: +#line 1437 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3421,11 +3436,11 @@ regular_print: bcfree((yyvsp[0])); (yyval) = list_append((yyvsp[-2]), (yyvsp[-1])); } -#line 3425 "awkgram.c" /* yacc.c:1646 */ +#line 3440 "awkgram.c" /* yacc.c:1646 */ break; - case 127: -#line 1443 "awkgram.y" /* yacc.c:1646 */ + case 128: +#line 1450 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[-2])->lasti->opcode == Op_match_rec) warning_ln((yyvsp[-1])->source_line, @@ -3442,11 +3457,11 @@ regular_print: (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } } -#line 3446 "awkgram.c" /* yacc.c:1646 */ +#line 3461 "awkgram.c" /* yacc.c:1646 */ break; - case 128: -#line 1460 "awkgram.y" /* yacc.c:1646 */ + case 129: +#line 1467 "awkgram.y" /* yacc.c:1646 */ { if (do_lint_old) warning_ln((yyvsp[-1])->source_line, @@ -3456,91 +3471,91 @@ regular_print: (yyvsp[-1])->expr_count = 1; (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } -#line 3460 "awkgram.c" /* yacc.c:1646 */ +#line 3475 "awkgram.c" /* yacc.c:1646 */ break; - case 129: -#line 1470 "awkgram.y" /* yacc.c:1646 */ + case 130: +#line 1477 "awkgram.y" /* yacc.c:1646 */ { if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec) lintwarn_ln((yyvsp[-1])->source_line, _("regular expression on right of comparison")); (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1])); } -#line 3471 "awkgram.c" /* yacc.c:1646 */ - break; - - case 130: -#line 1477 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } -#line 3477 "awkgram.c" /* yacc.c:1646 */ +#line 3486 "awkgram.c" /* yacc.c:1646 */ break; case 131: -#line 1479 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = (yyvsp[0]); } -#line 3483 "awkgram.c" /* yacc.c:1646 */ +#line 1484 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); } +#line 3492 "awkgram.c" /* yacc.c:1646 */ break; case 132: -#line 1484 "awkgram.y" /* yacc.c:1646 */ +#line 1486 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3489 "awkgram.c" /* yacc.c:1646 */ +#line 3498 "awkgram.c" /* yacc.c:1646 */ break; case 133: -#line 1486 "awkgram.y" /* yacc.c:1646 */ +#line 1491 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3495 "awkgram.c" /* yacc.c:1646 */ +#line 3504 "awkgram.c" /* yacc.c:1646 */ break; case 134: -#line 1488 "awkgram.y" /* yacc.c:1646 */ +#line 1493 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = (yyvsp[0]); } +#line 3510 "awkgram.c" /* yacc.c:1646 */ + break; + + case 135: +#line 1495 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_assign_quotient; (yyval) = (yyvsp[0]); } -#line 3504 "awkgram.c" /* yacc.c:1646 */ - break; - - case 135: -#line 1496 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = (yyvsp[0]); } -#line 3510 "awkgram.c" /* yacc.c:1646 */ +#line 3519 "awkgram.c" /* yacc.c:1646 */ break; case 136: -#line 1498 "awkgram.y" /* yacc.c:1646 */ +#line 1503 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3516 "awkgram.c" /* yacc.c:1646 */ +#line 3525 "awkgram.c" /* yacc.c:1646 */ break; case 137: -#line 1503 "awkgram.y" /* yacc.c:1646 */ +#line 1505 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3522 "awkgram.c" /* yacc.c:1646 */ +#line 3531 "awkgram.c" /* yacc.c:1646 */ break; case 138: -#line 1505 "awkgram.y" /* yacc.c:1646 */ +#line 1510 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3528 "awkgram.c" /* yacc.c:1646 */ +#line 3537 "awkgram.c" /* yacc.c:1646 */ break; case 139: -#line 1510 "awkgram.y" /* yacc.c:1646 */ +#line 1512 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3534 "awkgram.c" /* yacc.c:1646 */ +#line 3543 "awkgram.c" /* yacc.c:1646 */ break; case 140: -#line 1512 "awkgram.y" /* yacc.c:1646 */ +#line 1517 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3540 "awkgram.c" /* yacc.c:1646 */ +#line 3549 "awkgram.c" /* yacc.c:1646 */ break; case 141: -#line 1514 "awkgram.y" /* yacc.c:1646 */ +#line 1519 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = (yyvsp[0]); } +#line 3555 "awkgram.c" /* yacc.c:1646 */ + break; + + case 142: +#line 1521 "awkgram.y" /* yacc.c:1646 */ { int count = 2; bool is_simple_var = false; @@ -3569,7 +3584,7 @@ regular_print: n1 = force_string(n1); n2 = force_string(n2); nlen = n1->stlen + n2->stlen; - erealloc(n1->stptr, char *, nlen + 2, "constant fold"); + erealloc(n1->stptr, char *, nlen + 1, "constant fold"); memcpy(n1->stptr + n1->stlen, n2->stptr, n2->stlen); n1->stlen = nlen; n1->stptr[nlen] = '\0'; @@ -3587,47 +3602,47 @@ regular_print: max_args = count; } } -#line 3591 "awkgram.c" /* yacc.c:1646 */ - break; - - case 143: -#line 1566 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3597 "awkgram.c" /* yacc.c:1646 */ +#line 3606 "awkgram.c" /* yacc.c:1646 */ break; case 144: -#line 1568 "awkgram.y" /* yacc.c:1646 */ +#line 1573 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3603 "awkgram.c" /* yacc.c:1646 */ +#line 3612 "awkgram.c" /* yacc.c:1646 */ break; case 145: -#line 1570 "awkgram.y" /* yacc.c:1646 */ +#line 1575 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3609 "awkgram.c" /* yacc.c:1646 */ +#line 3618 "awkgram.c" /* yacc.c:1646 */ break; case 146: -#line 1572 "awkgram.y" /* yacc.c:1646 */ +#line 1577 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3615 "awkgram.c" /* yacc.c:1646 */ +#line 3624 "awkgram.c" /* yacc.c:1646 */ break; case 147: -#line 1574 "awkgram.y" /* yacc.c:1646 */ +#line 1579 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3621 "awkgram.c" /* yacc.c:1646 */ +#line 3630 "awkgram.c" /* yacc.c:1646 */ break; case 148: -#line 1576 "awkgram.y" /* yacc.c:1646 */ +#line 1581 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3627 "awkgram.c" /* yacc.c:1646 */ +#line 3636 "awkgram.c" /* yacc.c:1646 */ break; case 149: -#line 1578 "awkgram.y" /* yacc.c:1646 */ +#line 1583 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 3642 "awkgram.c" /* yacc.c:1646 */ + break; + + case 150: +#line 1585 "awkgram.y" /* yacc.c:1646 */ { /* * In BEGINFILE/ENDFILE, allow `getline [var] < file' @@ -3641,29 +3656,29 @@ regular_print: _("non-redirected `getline' undefined inside END action")); (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), redirect_input); } -#line 3645 "awkgram.c" /* yacc.c:1646 */ +#line 3660 "awkgram.c" /* yacc.c:1646 */ break; - case 150: -#line 1592 "awkgram.y" /* yacc.c:1646 */ + case 151: +#line 1599 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postincrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3654 "awkgram.c" /* yacc.c:1646 */ +#line 3669 "awkgram.c" /* yacc.c:1646 */ break; - case 151: -#line 1597 "awkgram.y" /* yacc.c:1646 */ + case 152: +#line 1604 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postdecrement; (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 3663 "awkgram.c" /* yacc.c:1646 */ +#line 3678 "awkgram.c" /* yacc.c:1646 */ break; - case 152: -#line 1602 "awkgram.y" /* yacc.c:1646 */ + case 153: +#line 1609 "awkgram.y" /* yacc.c:1646 */ { if (do_lint_old) { warning_ln((yyvsp[-1])->source_line, @@ -3683,64 +3698,64 @@ regular_print: (yyval) = list_append(list_merge(t, (yyvsp[0])), (yyvsp[-1])); } } -#line 3687 "awkgram.c" /* yacc.c:1646 */ +#line 3702 "awkgram.c" /* yacc.c:1646 */ break; - case 153: -#line 1627 "awkgram.y" /* yacc.c:1646 */ + case 154: +#line 1634 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), (yyvsp[-2])->redir_type); bcfree((yyvsp[-2])); } -#line 3696 "awkgram.c" /* yacc.c:1646 */ - break; - - case 154: -#line 1633 "awkgram.y" /* yacc.c:1646 */ - { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3702 "awkgram.c" /* yacc.c:1646 */ +#line 3711 "awkgram.c" /* yacc.c:1646 */ break; case 155: -#line 1635 "awkgram.y" /* yacc.c:1646 */ +#line 1640 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3708 "awkgram.c" /* yacc.c:1646 */ +#line 3717 "awkgram.c" /* yacc.c:1646 */ break; case 156: -#line 1637 "awkgram.y" /* yacc.c:1646 */ +#line 1642 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3714 "awkgram.c" /* yacc.c:1646 */ +#line 3723 "awkgram.c" /* yacc.c:1646 */ break; case 157: -#line 1639 "awkgram.y" /* yacc.c:1646 */ +#line 1644 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3720 "awkgram.c" /* yacc.c:1646 */ +#line 3729 "awkgram.c" /* yacc.c:1646 */ break; case 158: -#line 1641 "awkgram.y" /* yacc.c:1646 */ +#line 1646 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3726 "awkgram.c" /* yacc.c:1646 */ +#line 3735 "awkgram.c" /* yacc.c:1646 */ break; case 159: -#line 1643 "awkgram.y" /* yacc.c:1646 */ +#line 1648 "awkgram.y" /* yacc.c:1646 */ { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } -#line 3732 "awkgram.c" /* yacc.c:1646 */ +#line 3741 "awkgram.c" /* yacc.c:1646 */ break; case 160: -#line 1648 "awkgram.y" /* yacc.c:1646 */ +#line 1650 "awkgram.y" /* yacc.c:1646 */ + { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); } +#line 3747 "awkgram.c" /* yacc.c:1646 */ + break; + + case 161: +#line 1655 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3740 "awkgram.c" /* yacc.c:1646 */ +#line 3755 "awkgram.c" /* yacc.c:1646 */ break; - case 161: -#line 1652 "awkgram.y" /* yacc.c:1646 */ + case 162: +#line 1659 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->opcode == Op_match_rec) { (yyvsp[0])->opcode = Op_nomatch; @@ -3772,37 +3787,37 @@ regular_print: } } } -#line 3776 "awkgram.c" /* yacc.c:1646 */ +#line 3791 "awkgram.c" /* yacc.c:1646 */ break; - case 162: -#line 1684 "awkgram.y" /* yacc.c:1646 */ + case 163: +#line 1691 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3782 "awkgram.c" /* yacc.c:1646 */ +#line 3797 "awkgram.c" /* yacc.c:1646 */ break; - case 163: -#line 1686 "awkgram.y" /* yacc.c:1646 */ + case 164: +#line 1693 "awkgram.y" /* yacc.c:1646 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 3792 "awkgram.c" /* yacc.c:1646 */ +#line 3807 "awkgram.c" /* yacc.c:1646 */ break; - case 164: -#line 1692 "awkgram.y" /* yacc.c:1646 */ + case 165: +#line 1699 "awkgram.y" /* yacc.c:1646 */ { (yyval) = snode((yyvsp[-1]), (yyvsp[-3])); if ((yyval) == NULL) YYABORT; } -#line 3802 "awkgram.c" /* yacc.c:1646 */ +#line 3817 "awkgram.c" /* yacc.c:1646 */ break; - case 165: -#line 1698 "awkgram.y" /* yacc.c:1646 */ + case 166: +#line 1705 "awkgram.y" /* yacc.c:1646 */ { static bool warned = false; @@ -3815,45 +3830,45 @@ regular_print: if ((yyval) == NULL) YYABORT; } -#line 3819 "awkgram.c" /* yacc.c:1646 */ +#line 3834 "awkgram.c" /* yacc.c:1646 */ break; - case 168: -#line 1713 "awkgram.y" /* yacc.c:1646 */ + case 169: +#line 1720 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[-1])->opcode = Op_preincrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 3828 "awkgram.c" /* yacc.c:1646 */ +#line 3843 "awkgram.c" /* yacc.c:1646 */ break; - case 169: -#line 1718 "awkgram.y" /* yacc.c:1646 */ + case 170: +#line 1725 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[-1])->opcode = Op_predecrement; (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1])); } -#line 3837 "awkgram.c" /* yacc.c:1646 */ +#line 3852 "awkgram.c" /* yacc.c:1646 */ break; - case 170: -#line 1723 "awkgram.y" /* yacc.c:1646 */ + case 171: +#line 1730 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3845 "awkgram.c" /* yacc.c:1646 */ +#line 3860 "awkgram.c" /* yacc.c:1646 */ break; - case 171: -#line 1727 "awkgram.y" /* yacc.c:1646 */ + case 172: +#line 1734 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_create((yyvsp[0])); } -#line 3853 "awkgram.c" /* yacc.c:1646 */ +#line 3868 "awkgram.c" /* yacc.c:1646 */ break; - case 172: -#line 1731 "awkgram.y" /* yacc.c:1646 */ + case 173: +#line 1738 "awkgram.y" /* yacc.c:1646 */ { if ((yyvsp[0])->lasti->opcode == Op_push_i && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) == 0 @@ -3868,11 +3883,11 @@ regular_print: (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } } -#line 3872 "awkgram.c" /* yacc.c:1646 */ +#line 3887 "awkgram.c" /* yacc.c:1646 */ break; - case 173: -#line 1746 "awkgram.y" /* yacc.c:1646 */ + case 174: +#line 1753 "awkgram.y" /* yacc.c:1646 */ { /* * was: $$ = $2 @@ -3882,20 +3897,20 @@ regular_print: (yyvsp[-1])->memory = make_number(0.0); (yyval) = list_append((yyvsp[0]), (yyvsp[-1])); } -#line 3886 "awkgram.c" /* yacc.c:1646 */ +#line 3901 "awkgram.c" /* yacc.c:1646 */ break; - case 174: -#line 1759 "awkgram.y" /* yacc.c:1646 */ + case 175: +#line 1766 "awkgram.y" /* yacc.c:1646 */ { func_use((yyvsp[0])->lasti->func_name, FUNC_USE); (yyval) = (yyvsp[0]); } -#line 3895 "awkgram.c" /* yacc.c:1646 */ +#line 3910 "awkgram.c" /* yacc.c:1646 */ break; - case 175: -#line 1764 "awkgram.y" /* yacc.c:1646 */ + case 176: +#line 1771 "awkgram.y" /* yacc.c:1646 */ { /* indirect function call */ INSTRUCTION *f, *t; @@ -3929,11 +3944,11 @@ regular_print: (yyval) = list_prepend((yyvsp[0]), t); at_seen = false; } -#line 3933 "awkgram.c" /* yacc.c:1646 */ +#line 3948 "awkgram.c" /* yacc.c:1646 */ break; - case 176: -#line 1801 "awkgram.y" /* yacc.c:1646 */ + case 177: +#line 1808 "awkgram.y" /* yacc.c:1646 */ { NODE *n; @@ -3958,49 +3973,49 @@ regular_print: (yyval) = list_append(t, (yyvsp[-3])); } } -#line 3962 "awkgram.c" /* yacc.c:1646 */ +#line 3977 "awkgram.c" /* yacc.c:1646 */ break; - case 177: -#line 1829 "awkgram.y" /* yacc.c:1646 */ + case 178: +#line 1836 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3968 "awkgram.c" /* yacc.c:1646 */ +#line 3983 "awkgram.c" /* yacc.c:1646 */ break; - case 178: -#line 1831 "awkgram.y" /* yacc.c:1646 */ + case 179: +#line 1838 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3974 "awkgram.c" /* yacc.c:1646 */ +#line 3989 "awkgram.c" /* yacc.c:1646 */ break; - case 179: -#line 1836 "awkgram.y" /* yacc.c:1646 */ + case 180: +#line 1843 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 3980 "awkgram.c" /* yacc.c:1646 */ +#line 3995 "awkgram.c" /* yacc.c:1646 */ break; - case 180: -#line 1838 "awkgram.y" /* yacc.c:1646 */ + case 181: +#line 1845 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 3986 "awkgram.c" /* yacc.c:1646 */ +#line 4001 "awkgram.c" /* yacc.c:1646 */ break; - case 181: -#line 1843 "awkgram.y" /* yacc.c:1646 */ + case 182: +#line 1850 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 3992 "awkgram.c" /* yacc.c:1646 */ +#line 4007 "awkgram.c" /* yacc.c:1646 */ break; - case 182: -#line 1845 "awkgram.y" /* yacc.c:1646 */ + case 183: +#line 1852 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4000 "awkgram.c" /* yacc.c:1646 */ +#line 4015 "awkgram.c" /* yacc.c:1646 */ break; - case 183: -#line 1852 "awkgram.y" /* yacc.c:1646 */ + case 184: +#line 1859 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip = (yyvsp[0])->lasti; int count = ip->sub_count; /* # of SUBSEP-seperated expressions */ @@ -4014,11 +4029,11 @@ regular_print: sub_counter++; /* count # of dimensions */ (yyval) = (yyvsp[0]); } -#line 4018 "awkgram.c" /* yacc.c:1646 */ +#line 4033 "awkgram.c" /* yacc.c:1646 */ break; - case 184: -#line 1869 "awkgram.y" /* yacc.c:1646 */ + case 185: +#line 1876 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *t = (yyvsp[-1]); if ((yyvsp[-1]) == NULL) { @@ -4032,31 +4047,31 @@ regular_print: (yyvsp[0])->sub_count = count_expressions(&t, false); (yyval) = list_append(t, (yyvsp[0])); } -#line 4036 "awkgram.c" /* yacc.c:1646 */ +#line 4051 "awkgram.c" /* yacc.c:1646 */ break; - case 185: -#line 1886 "awkgram.y" /* yacc.c:1646 */ + case 186: +#line 1893 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); } -#line 4042 "awkgram.c" /* yacc.c:1646 */ +#line 4057 "awkgram.c" /* yacc.c:1646 */ break; - case 186: -#line 1888 "awkgram.y" /* yacc.c:1646 */ + case 187: +#line 1895 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_merge((yyvsp[-1]), (yyvsp[0])); } -#line 4050 "awkgram.c" /* yacc.c:1646 */ +#line 4065 "awkgram.c" /* yacc.c:1646 */ break; - case 187: -#line 1895 "awkgram.y" /* yacc.c:1646 */ + case 188: +#line 1902 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[-1]); } -#line 4056 "awkgram.c" /* yacc.c:1646 */ +#line 4071 "awkgram.c" /* yacc.c:1646 */ break; - case 188: -#line 1900 "awkgram.y" /* yacc.c:1646 */ + case 189: +#line 1907 "awkgram.y" /* yacc.c:1646 */ { char *var_name = (yyvsp[0])->lextok; @@ -4064,22 +4079,22 @@ regular_print: (yyvsp[0])->memory = variable((yyvsp[0])->source_line, var_name, Node_var_new); (yyval) = list_create((yyvsp[0])); } -#line 4068 "awkgram.c" /* yacc.c:1646 */ +#line 4083 "awkgram.c" /* yacc.c:1646 */ break; - case 189: -#line 1908 "awkgram.y" /* yacc.c:1646 */ + case 190: +#line 1915 "awkgram.y" /* yacc.c:1646 */ { char *arr = (yyvsp[-1])->lextok; (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, Node_var_new); (yyvsp[-1])->opcode = Op_push_array; (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1])); } -#line 4079 "awkgram.c" /* yacc.c:1646 */ +#line 4094 "awkgram.c" /* yacc.c:1646 */ break; - case 190: -#line 1918 "awkgram.y" /* yacc.c:1646 */ + case 191: +#line 1925 "awkgram.y" /* yacc.c:1646 */ { INSTRUCTION *ip = (yyvsp[0])->nexti; if (ip->opcode == Op_push @@ -4091,73 +4106,73 @@ regular_print: } else (yyval) = (yyvsp[0]); } -#line 4095 "awkgram.c" /* yacc.c:1646 */ +#line 4110 "awkgram.c" /* yacc.c:1646 */ break; - case 191: -#line 1930 "awkgram.y" /* yacc.c:1646 */ + case 192: +#line 1937 "awkgram.y" /* yacc.c:1646 */ { (yyval) = list_append((yyvsp[-1]), (yyvsp[-2])); if ((yyvsp[0]) != NULL) mk_assignment((yyvsp[-1]), NULL, (yyvsp[0])); } -#line 4105 "awkgram.c" /* yacc.c:1646 */ +#line 4120 "awkgram.c" /* yacc.c:1646 */ break; - case 192: -#line 1939 "awkgram.y" /* yacc.c:1646 */ + case 193: +#line 1946 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postincrement; } -#line 4113 "awkgram.c" /* yacc.c:1646 */ +#line 4128 "awkgram.c" /* yacc.c:1646 */ break; - case 193: -#line 1943 "awkgram.y" /* yacc.c:1646 */ + case 194: +#line 1950 "awkgram.y" /* yacc.c:1646 */ { (yyvsp[0])->opcode = Op_postdecrement; } -#line 4121 "awkgram.c" /* yacc.c:1646 */ +#line 4136 "awkgram.c" /* yacc.c:1646 */ break; - case 194: -#line 1946 "awkgram.y" /* yacc.c:1646 */ + case 195: +#line 1953 "awkgram.y" /* yacc.c:1646 */ { (yyval) = NULL; } -#line 4127 "awkgram.c" /* yacc.c:1646 */ +#line 4142 "awkgram.c" /* yacc.c:1646 */ break; - case 196: -#line 1954 "awkgram.y" /* yacc.c:1646 */ + case 197: +#line 1961 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4133 "awkgram.c" /* yacc.c:1646 */ +#line 4148 "awkgram.c" /* yacc.c:1646 */ break; - case 197: -#line 1958 "awkgram.y" /* yacc.c:1646 */ + case 198: +#line 1965 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4139 "awkgram.c" /* yacc.c:1646 */ +#line 4154 "awkgram.c" /* yacc.c:1646 */ break; - case 200: -#line 1967 "awkgram.y" /* yacc.c:1646 */ + case 201: +#line 1974 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4145 "awkgram.c" /* yacc.c:1646 */ +#line 4160 "awkgram.c" /* yacc.c:1646 */ break; - case 201: -#line 1971 "awkgram.y" /* yacc.c:1646 */ + case 202: +#line 1978 "awkgram.y" /* yacc.c:1646 */ { (yyval) = (yyvsp[0]); yyerrok; } -#line 4151 "awkgram.c" /* yacc.c:1646 */ +#line 4166 "awkgram.c" /* yacc.c:1646 */ break; - case 202: -#line 1975 "awkgram.y" /* yacc.c:1646 */ + case 203: +#line 1982 "awkgram.y" /* yacc.c:1646 */ { yyerrok; } -#line 4157 "awkgram.c" /* yacc.c:1646 */ +#line 4172 "awkgram.c" /* yacc.c:1646 */ break; -#line 4161 "awkgram.c" /* yacc.c:1646 */ +#line 4176 "awkgram.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4385,7 +4400,7 @@ yyreturn: #endif return yyresult; } -#line 1977 "awkgram.y" /* yacc.c:1906 */ +#line 1984 "awkgram.y" /* yacc.c:1906 */ struct token { @@ -4687,7 +4702,6 @@ yyerror(const char *m, ...) char *buf; int count; static char end_of_file_line[] = "(END OF FILE)"; - char save; print_included_from(); @@ -4715,24 +4729,15 @@ yyerror(const char *m, ...) bp = thisline + strlen(thisline); } - /* - * Saving and restoring *bp keeps valgrind happy, - * since the guts of glibc uses strlen, even though - * we're passing an explict precision. Sigh. - * - * 8/2003: We may not need this anymore. - */ - save = *bp; - *bp = '\0'; - msg("%.*s", (int) (bp - thisline), thisline); - *bp = save; va_start(args, m); if (mesg == NULL) mesg = m; - count = (bp - thisline) + strlen(mesg) + 2 + 1; + count = strlen(mesg) + 1; + if (lexptr != NULL) + count += (lexeme - thisline) + 2; emalloc(buf, char *, count, "yyerror"); bp = buf; @@ -5730,21 +5735,24 @@ yylex(void) collect_regexp: if (want_regexp) { int in_brack = 0; /* count brackets, [[:alnum:]] allowed */ + int b_index = -1; + int cur_index = 0; + /* - * Counting brackets is non-trivial. [[] is ok, - * and so is [\]], with a point being that /[/]/ as a regexp - * constant has to work. + * Here is what's ok with brackets: * - * Do not count [ or ] if either one is preceded by a \. - * A `[' should be counted if - * a) it is the first one so far (in_brack == 0) - * b) it is the `[' in `[:' - * A ']' should be counted if not preceded by a \, since - * it is either closing `:]' or just a plain list. - * According to POSIX, []] is how you put a ] into a set. - * Try to handle that too. + * [[] [^[] []] [^]] [.../...] + * [...\[...] [...\]...] [...\/...] + * + * (Remember that all of the above are inside /.../) * - * The code for \ handles \[ and \]. + * The code for \ handles \[, \] and \/. + * + * Otherwise, track the first open [ position, and if + * an embedded [ or ] occurs, allow it to pass through + * if it's right after the first [ or after [^. + * + * Whew! */ want_regexp = false; @@ -5754,17 +5762,21 @@ collect_regexp: if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) { case '[': - /* one day check for `.' and `=' too */ - if (nextc(false) == ':' || in_brack == 0) - in_brack++; - pushback(); - break; case ']': - if (tok[-1] == '[' - || (tok[-2] == '[' && tok[-1] == '^')) - /* do nothing */; - else + cur_index = tok - tokstart; + if (in_brack > 0 + && (cur_index == b_index + 1 + || (cur_index == b_index + 2 && tok[-1] == '^'))) + ; /* do nothing */ + else if (c == '[') { + in_brack++; + if (in_brack == 1) + b_index = tok - tokstart; + } else { in_brack--; + if (in_brack == 0) + b_index = -1; + } break; case '\\': if ((c = nextc(false)) == END_FILE) { @@ -6414,6 +6426,27 @@ retry: && lasttok != '@') goto out; + /* allow parameter names to shadow the names of gawk extension built-ins */ + if ((tokentab[mid].flags & GAWKX) != 0) { + switch (want_param_names) { + case FUNC_HEADER: + /* in header, defining parameter names */ + goto out; + case FUNC_BODY: + /* in body, name must be in symbol table for it to be a parameter */ + if (lookup(tokstart) != NULL) + goto out; + /* else + fall through */ + case DONT_CHECK: + /* regular code */ + break; + default: + cant_happen(); + break; + } + } + if (do_lint) { if ((tokentab[mid].flags & GAWKX) != 0 && (warntab[mid] & GAWKX) == 0) { lintwarn(_("`%s' is a gawk extension"), |