aboutsummaryrefslogtreecommitdiffstats
path: root/awkgram.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2018-10-16 21:09:13 +0300
committerArnold D. Robbins <arnold@skeeve.com>2018-10-16 21:09:13 +0300
commit8848f21e0a2e0223a3963f84cf24aa1bbf4f7e55 (patch)
tree2b48d30843fdf2c3b523683b42fae9ad8c878129 /awkgram.c
parent19ecd045e33ad66f27d859034141ccf09c8032b9 (diff)
downloadegawk-8848f21e0a2e0223a3963f84cf24aa1bbf4f7e55.tar.gz
egawk-8848f21e0a2e0223a3963f84cf24aa1bbf4f7e55.tar.bz2
egawk-8848f21e0a2e0223a3963f84cf24aa1bbf4f7e55.zip
Continue with comments, especially case and default.
Diffstat (limited to 'awkgram.c')
-rw-r--r--awkgram.c866
1 files changed, 453 insertions, 413 deletions
diff --git a/awkgram.c b/awkgram.c
index 5097cfaf..d191b154 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -62,7 +62,7 @@
/* Copy the first part of user declarations. */
-#line 45 "awkgram.y" /* yacc.c:339 */
+#line 44 "awkgram.y" /* yacc.c:339 */
#ifdef GAWKDEBUG
#define YYDEBUG 12
@@ -662,27 +662,27 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 228, 228, 229, 234, 242, 246, 258, 263, 274,
- 281, 291, 304, 312, 314, 319, 327, 329, 335, 339,
- 344, 374, 387, 400, 407, 417, 429, 431, 433, 439,
- 447, 448, 452, 452, 486, 485, 519, 534, 536, 541,
- 542, 556, 561, 562, 566, 577, 581, 588, 696, 747,
- 797, 911, 918, 925, 935, 943, 951, 960, 971, 987,
- 986, 998, 1010, 1010, 1108, 1108, 1141, 1171, 1179, 1180,
- 1186, 1187, 1194, 1199, 1211, 1225, 1227, 1235, 1242, 1244,
- 1252, 1261, 1263, 1272, 1273, 1281, 1286, 1286, 1299, 1305,
- 1317, 1318, 1340, 1341, 1347, 1348, 1357, 1358, 1363, 1368,
- 1385, 1387, 1389, 1396, 1397, 1403, 1404, 1409, 1411, 1416,
- 1418, 1426, 1431, 1440, 1441, 1446, 1448, 1453, 1455, 1463,
- 1468, 1476, 1477, 1482, 1489, 1493, 1495, 1497, 1510, 1527,
- 1537, 1544, 1546, 1551, 1553, 1555, 1563, 1565, 1570, 1572,
- 1577, 1579, 1581, 1638, 1640, 1642, 1644, 1646, 1648, 1650,
- 1652, 1666, 1671, 1676, 1701, 1707, 1709, 1711, 1713, 1715,
- 1717, 1722, 1726, 1758, 1766, 1772, 1778, 1791, 1792, 1793,
- 1798, 1803, 1807, 1811, 1826, 1847, 1852, 1889, 1918, 1919,
- 1925, 1926, 1931, 1933, 1940, 1957, 1974, 1976, 1983, 1988,
- 1996, 2006, 2018, 2027, 2031, 2036, 2040, 2044, 2048, 2053,
- 2054, 2058, 2062, 2066
+ 0, 227, 227, 228, 233, 241, 245, 257, 262, 276,
+ 283, 293, 306, 314, 316, 321, 329, 331, 337, 341,
+ 346, 376, 389, 402, 409, 419, 431, 433, 435, 441,
+ 449, 450, 454, 454, 488, 487, 521, 536, 538, 543,
+ 544, 558, 563, 564, 568, 579, 583, 590, 698, 749,
+ 799, 919, 926, 933, 943, 953, 963, 974, 987, 1005,
+ 1004, 1018, 1036, 1036, 1134, 1134, 1167, 1197, 1205, 1206,
+ 1212, 1213, 1220, 1225, 1238, 1253, 1255, 1263, 1270, 1272,
+ 1280, 1289, 1291, 1300, 1301, 1309, 1314, 1314, 1327, 1333,
+ 1345, 1346, 1368, 1369, 1375, 1376, 1385, 1386, 1391, 1396,
+ 1413, 1415, 1417, 1424, 1425, 1431, 1432, 1437, 1439, 1444,
+ 1446, 1454, 1459, 1468, 1469, 1474, 1476, 1481, 1483, 1491,
+ 1496, 1504, 1505, 1510, 1517, 1521, 1523, 1525, 1538, 1555,
+ 1565, 1572, 1574, 1579, 1581, 1583, 1591, 1593, 1598, 1600,
+ 1605, 1607, 1609, 1666, 1668, 1670, 1672, 1674, 1676, 1678,
+ 1680, 1694, 1699, 1704, 1729, 1735, 1737, 1739, 1741, 1743,
+ 1745, 1750, 1754, 1786, 1794, 1800, 1806, 1819, 1820, 1821,
+ 1826, 1831, 1835, 1839, 1854, 1875, 1880, 1917, 1946, 1947,
+ 1953, 1954, 1959, 1961, 1968, 1985, 2002, 2004, 2011, 2016,
+ 2024, 2034, 2046, 2055, 2059, 2064, 2068, 2072, 2076, 2081,
+ 2082, 2086, 2090, 2094
};
#endif
@@ -1881,13 +1881,13 @@ yyreduce:
switch (yyn)
{
case 2:
-#line 228 "awkgram.y" /* yacc.c:1651 */
+#line 227 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
#line 1887 "awkgram.c" /* yacc.c:1651 */
break;
case 3:
-#line 230 "awkgram.y" /* yacc.c:1651 */
+#line 229 "awkgram.y" /* yacc.c:1651 */
{
rule = 0;
yyerrok;
@@ -1896,7 +1896,7 @@ yyreduce:
break;
case 4:
-#line 235 "awkgram.y" /* yacc.c:1651 */
+#line 234 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0]) != NULL) {
merge_comments((yyvsp[0]), NULL);
@@ -1908,7 +1908,7 @@ yyreduce:
break;
case 5:
-#line 243 "awkgram.y" /* yacc.c:1651 */
+#line 242 "awkgram.y" /* yacc.c:1651 */
{
next_sourcefile();
}
@@ -1916,7 +1916,7 @@ yyreduce:
break;
case 6:
-#line 247 "awkgram.y" /* yacc.c:1651 */
+#line 246 "awkgram.y" /* yacc.c:1651 */
{
rule = 0;
/*
@@ -1929,7 +1929,7 @@ yyreduce:
break;
case 7:
-#line 259 "awkgram.y" /* yacc.c:1651 */
+#line 258 "awkgram.y" /* yacc.c:1651 */
{
(void) append_rule((yyvsp[-1]), (yyvsp[0]));
first_rule = false;
@@ -1938,7 +1938,7 @@ yyreduce:
break;
case 8:
-#line 264 "awkgram.y" /* yacc.c:1651 */
+#line 263 "awkgram.y" /* yacc.c:1651 */
{
if (rule != Rule) {
msg(_("%s blocks must have an action part"), ruletab[rule]);
@@ -1946,53 +1946,56 @@ yyreduce:
} else if ((yyvsp[-1]) == NULL) {
msg(_("each rule must have a pattern or an action part"));
errcount++;
- } else /* pattern rule with non-empty pattern */
+ } else { /* pattern rule with non-empty pattern */
+ if ((yyvsp[0]) != NULL)
+ list_append((yyvsp[-1]), (yyvsp[0]));
(void) append_rule((yyvsp[-1]), NULL);
+ }
}
-#line 1953 "awkgram.c" /* yacc.c:1651 */
+#line 1956 "awkgram.c" /* yacc.c:1651 */
break;
case 9:
-#line 275 "awkgram.y" /* yacc.c:1651 */
+#line 277 "awkgram.y" /* yacc.c:1651 */
{
in_function = NULL;
(void) mk_function((yyvsp[-1]), (yyvsp[0]));
want_param_names = DONT_CHECK;
yyerrok;
}
-#line 1964 "awkgram.c" /* yacc.c:1651 */
+#line 1967 "awkgram.c" /* yacc.c:1651 */
break;
case 10:
-#line 282 "awkgram.y" /* yacc.c:1651 */
+#line 284 "awkgram.y" /* yacc.c:1651 */
{
want_source = false;
at_seen = false;
if ((yyvsp[0]) != NULL) {
warning(_("comments on `@include' statements will be lost"));
- /* FIXME: Free memory, it should be a list */
+ bcfree((yyvsp[0]));
}
yyerrok;
}
-#line 1978 "awkgram.c" /* yacc.c:1651 */
+#line 1981 "awkgram.c" /* yacc.c:1651 */
break;
case 11:
-#line 292 "awkgram.y" /* yacc.c:1651 */
+#line 294 "awkgram.y" /* yacc.c:1651 */
{
want_source = false;
at_seen = false;
if ((yyvsp[0]) != NULL) {
warning(_("comments on `@load' statements will be lost"));
- /* FIXME: Free memory, it should be a list */
+ bcfree((yyvsp[0]));
}
yyerrok;
}
-#line 1992 "awkgram.c" /* yacc.c:1651 */
+#line 1995 "awkgram.c" /* yacc.c:1651 */
break;
case 12:
-#line 305 "awkgram.y" /* yacc.c:1651 */
+#line 307 "awkgram.y" /* yacc.c:1651 */
{
if (include_source((yyvsp[0])) < 0)
YYABORT;
@@ -2000,23 +2003,23 @@ yyreduce:
bcfree((yyvsp[0]));
(yyval) = NULL;
}
-#line 2004 "awkgram.c" /* yacc.c:1651 */
+#line 2007 "awkgram.c" /* yacc.c:1651 */
break;
case 13:
-#line 313 "awkgram.y" /* yacc.c:1651 */
+#line 315 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2010 "awkgram.c" /* yacc.c:1651 */
+#line 2013 "awkgram.c" /* yacc.c:1651 */
break;
case 14:
-#line 315 "awkgram.y" /* yacc.c:1651 */
+#line 317 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2016 "awkgram.c" /* yacc.c:1651 */
+#line 2019 "awkgram.c" /* yacc.c:1651 */
break;
case 15:
-#line 320 "awkgram.y" /* yacc.c:1651 */
+#line 322 "awkgram.y" /* yacc.c:1651 */
{
if (load_library((yyvsp[0])) < 0)
YYABORT;
@@ -2024,40 +2027,40 @@ yyreduce:
bcfree((yyvsp[0]));
(yyval) = NULL;
}
-#line 2028 "awkgram.c" /* yacc.c:1651 */
+#line 2031 "awkgram.c" /* yacc.c:1651 */
break;
case 16:
-#line 328 "awkgram.y" /* yacc.c:1651 */
+#line 330 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2034 "awkgram.c" /* yacc.c:1651 */
+#line 2037 "awkgram.c" /* yacc.c:1651 */
break;
case 17:
-#line 330 "awkgram.y" /* yacc.c:1651 */
+#line 332 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2040 "awkgram.c" /* yacc.c:1651 */
+#line 2043 "awkgram.c" /* yacc.c:1651 */
break;
case 18:
-#line 335 "awkgram.y" /* yacc.c:1651 */
+#line 337 "awkgram.y" /* yacc.c:1651 */
{
rule = Rule;
(yyval) = NULL;
}
-#line 2049 "awkgram.c" /* yacc.c:1651 */
+#line 2052 "awkgram.c" /* yacc.c:1651 */
break;
case 19:
-#line 340 "awkgram.y" /* yacc.c:1651 */
+#line 342 "awkgram.y" /* yacc.c:1651 */
{
rule = Rule;
}
-#line 2057 "awkgram.c" /* yacc.c:1651 */
+#line 2060 "awkgram.c" /* yacc.c:1651 */
break;
case 20:
-#line 345 "awkgram.y" /* yacc.c:1651 */
+#line 347 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *tp;
@@ -2087,11 +2090,11 @@ yyreduce:
(yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp);
rule = Rule;
}
-#line 2091 "awkgram.c" /* yacc.c:1651 */
+#line 2094 "awkgram.c" /* yacc.c:1651 */
break;
case 21:
-#line 375 "awkgram.y" /* yacc.c:1651 */
+#line 377 "awkgram.y" /* yacc.c:1651 */
{
static int begin_seen = 0;
@@ -2104,11 +2107,11 @@ yyreduce:
(yyvsp[0])->source_file = source;
(yyval) = (yyvsp[0]);
}
-#line 2108 "awkgram.c" /* yacc.c:1651 */
+#line 2111 "awkgram.c" /* yacc.c:1651 */
break;
case 22:
-#line 388 "awkgram.y" /* yacc.c:1651 */
+#line 390 "awkgram.y" /* yacc.c:1651 */
{
static int end_seen = 0;
@@ -2121,33 +2124,33 @@ yyreduce:
(yyvsp[0])->source_file = source;
(yyval) = (yyvsp[0]);
}
-#line 2125 "awkgram.c" /* yacc.c:1651 */
+#line 2128 "awkgram.c" /* yacc.c:1651 */
break;
case 23:
-#line 401 "awkgram.y" /* yacc.c:1651 */
+#line 403 "awkgram.y" /* yacc.c:1651 */
{
func_first = false;
(yyvsp[0])->in_rule = rule = BEGINFILE;
(yyvsp[0])->source_file = source;
(yyval) = (yyvsp[0]);
}
-#line 2136 "awkgram.c" /* yacc.c:1651 */
+#line 2139 "awkgram.c" /* yacc.c:1651 */
break;
case 24:
-#line 408 "awkgram.y" /* yacc.c:1651 */
+#line 410 "awkgram.y" /* yacc.c:1651 */
{
func_first = false;
(yyvsp[0])->in_rule = rule = ENDFILE;
(yyvsp[0])->source_file = source;
(yyval) = (yyvsp[0]);
}
-#line 2147 "awkgram.c" /* yacc.c:1651 */
+#line 2150 "awkgram.c" /* yacc.c:1651 */
break;
case 25:
-#line 418 "awkgram.y" /* yacc.c:1651 */
+#line 420 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *ip = make_braced_statements((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]));
@@ -2156,48 +2159,48 @@ yyreduce:
(yyval) = ip;
}
-#line 2160 "awkgram.c" /* yacc.c:1651 */
+#line 2163 "awkgram.c" /* yacc.c:1651 */
break;
case 26:
-#line 430 "awkgram.y" /* yacc.c:1651 */
+#line 432 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 2166 "awkgram.c" /* yacc.c:1651 */
+#line 2169 "awkgram.c" /* yacc.c:1651 */
break;
case 27:
-#line 432 "awkgram.y" /* yacc.c:1651 */
+#line 434 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 2172 "awkgram.c" /* yacc.c:1651 */
+#line 2175 "awkgram.c" /* yacc.c:1651 */
break;
case 28:
-#line 434 "awkgram.y" /* yacc.c:1651 */
+#line 436 "awkgram.y" /* yacc.c:1651 */
{
yyerror(_("`%s' is a built-in function, it cannot be redefined"),
tokstart);
YYABORT;
}
-#line 2182 "awkgram.c" /* yacc.c:1651 */
+#line 2185 "awkgram.c" /* yacc.c:1651 */
break;
case 29:
-#line 440 "awkgram.y" /* yacc.c:1651 */
+#line 442 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = (yyvsp[0]);
at_seen = false;
}
-#line 2191 "awkgram.c" /* yacc.c:1651 */
+#line 2194 "awkgram.c" /* yacc.c:1651 */
break;
case 32:
-#line 452 "awkgram.y" /* yacc.c:1651 */
+#line 454 "awkgram.y" /* yacc.c:1651 */
{ want_param_names = FUNC_HEADER; }
-#line 2197 "awkgram.c" /* yacc.c:1651 */
+#line 2200 "awkgram.c" /* yacc.c:1651 */
break;
case 33:
-#line 453 "awkgram.y" /* yacc.c:1651 */
+#line 455 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *func_comment = NULL;
// Merge any comments found in the parameter list with those
@@ -2223,17 +2226,17 @@ yyreduce:
(yyval) = (yyvsp[-6]);
want_param_names = FUNC_BODY;
}
-#line 2227 "awkgram.c" /* yacc.c:1651 */
+#line 2230 "awkgram.c" /* yacc.c:1651 */
break;
case 34:
-#line 486 "awkgram.y" /* yacc.c:1651 */
+#line 488 "awkgram.y" /* yacc.c:1651 */
{ want_regexp = true; }
-#line 2233 "awkgram.c" /* yacc.c:1651 */
+#line 2236 "awkgram.c" /* yacc.c:1651 */
break;
case 35:
-#line 488 "awkgram.y" /* yacc.c:1651 */
+#line 490 "awkgram.y" /* yacc.c:1651 */
{
NODE *n, *exp;
char *re;
@@ -2262,11 +2265,11 @@ yyreduce:
(yyval)->opcode = Op_match_rec;
(yyval)->memory = n;
}
-#line 2266 "awkgram.c" /* yacc.c:1651 */
+#line 2269 "awkgram.c" /* yacc.c:1651 */
break;
case 36:
-#line 520 "awkgram.y" /* yacc.c:1651 */
+#line 522 "awkgram.y" /* yacc.c:1651 */
{
char *re;
size_t len;
@@ -2279,23 +2282,23 @@ yyreduce:
(yyval)->opcode = Op_push_re;
(yyval)->memory = make_typed_regex(re, len);
}
-#line 2283 "awkgram.c" /* yacc.c:1651 */
+#line 2286 "awkgram.c" /* yacc.c:1651 */
break;
case 37:
-#line 535 "awkgram.y" /* yacc.c:1651 */
+#line 537 "awkgram.y" /* yacc.c:1651 */
{ bcfree((yyvsp[0])); }
-#line 2289 "awkgram.c" /* yacc.c:1651 */
+#line 2292 "awkgram.c" /* yacc.c:1651 */
break;
case 39:
-#line 541 "awkgram.y" /* yacc.c:1651 */
+#line 543 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2295 "awkgram.c" /* yacc.c:1651 */
+#line 2298 "awkgram.c" /* yacc.c:1651 */
break;
case 40:
-#line 543 "awkgram.y" /* yacc.c:1651 */
+#line 545 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0]) == NULL) {
(yyval) = (yyvsp[-1]);
@@ -2309,29 +2312,29 @@ yyreduce:
}
yyerrok;
}
-#line 2313 "awkgram.c" /* yacc.c:1651 */
+#line 2316 "awkgram.c" /* yacc.c:1651 */
break;
case 41:
-#line 557 "awkgram.y" /* yacc.c:1651 */
+#line 559 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 2319 "awkgram.c" /* yacc.c:1651 */
+#line 2322 "awkgram.c" /* yacc.c:1651 */
break;
case 42:
-#line 561 "awkgram.y" /* yacc.c:1651 */
+#line 563 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 2325 "awkgram.c" /* yacc.c:1651 */
+#line 2328 "awkgram.c" /* yacc.c:1651 */
break;
case 43:
-#line 562 "awkgram.y" /* yacc.c:1651 */
+#line 564 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 2331 "awkgram.c" /* yacc.c:1651 */
+#line 2334 "awkgram.c" /* yacc.c:1651 */
break;
case 44:
-#line 567 "awkgram.y" /* yacc.c:1651 */
+#line 569 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0]) != NULL) {
INSTRUCTION *ip;
@@ -2342,30 +2345,30 @@ yyreduce:
} else
(yyval) = NULL;
}
-#line 2346 "awkgram.c" /* yacc.c:1651 */
+#line 2349 "awkgram.c" /* yacc.c:1651 */
break;
case 45:
-#line 578 "awkgram.y" /* yacc.c:1651 */
+#line 580 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = make_braced_statements((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]));
}
-#line 2354 "awkgram.c" /* yacc.c:1651 */
+#line 2357 "awkgram.c" /* yacc.c:1651 */
break;
case 46:
-#line 582 "awkgram.y" /* yacc.c:1651 */
+#line 584 "awkgram.y" /* yacc.c:1651 */
{
if (do_pretty_print)
(yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count));
else
(yyval) = (yyvsp[0]);
}
-#line 2365 "awkgram.c" /* yacc.c:1651 */
+#line 2368 "awkgram.c" /* yacc.c:1651 */
break;
case 47:
-#line 589 "awkgram.y" /* yacc.c:1651 */
+#line 591 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
INSTRUCTION *ip, *nextc, *tbreak;
@@ -2473,11 +2476,11 @@ yyreduce:
break_allowed--;
fix_break_continue(ip, tbreak, NULL);
}
-#line 2477 "awkgram.c" /* yacc.c:1651 */
+#line 2480 "awkgram.c" /* yacc.c:1651 */
break;
case 48:
-#line 697 "awkgram.y" /* yacc.c:1651 */
+#line 699 "awkgram.y" /* yacc.c:1651 */
{
/*
* -----------------
@@ -2528,11 +2531,11 @@ yyreduce:
continue_allowed--;
fix_break_continue(ip, tbreak, tcont);
}
-#line 2532 "awkgram.c" /* yacc.c:1651 */
+#line 2535 "awkgram.c" /* yacc.c:1651 */
break;
case 49:
-#line 748 "awkgram.y" /* yacc.c:1651 */
+#line 750 "awkgram.y" /* yacc.c:1651 */
{
/*
* -----------------
@@ -2582,11 +2585,11 @@ yyreduce:
/* else
$1 and $4 are NULLs */
}
-#line 2586 "awkgram.c" /* yacc.c:1651 */
+#line 2589 "awkgram.c" /* yacc.c:1651 */
break;
case 50:
-#line 798 "awkgram.y" /* yacc.c:1651 */
+#line 800 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *ip;
char *var_name = (yyvsp[-5])->lextok;
@@ -2631,6 +2634,8 @@ yyreduce:
bcfree((yyvsp[-5]));
bcfree((yyvsp[-4]));
bcfree((yyvsp[-3]));
+ if ((yyvsp[-1]) != NULL)
+ (yyvsp[0]) = list_prepend((yyvsp[0]), (yyvsp[-1]));
(yyval) = (yyvsp[0]);
} else
goto regular_loop;
@@ -2688,8 +2693,12 @@ regular_loop:
((yyvsp[-7]) + 1)->forloop_body = ip->lasti;
}
- if ((yyvsp[0]) != NULL)
+ if ((yyvsp[0]) != NULL) {
+ if ((yyvsp[-1]) != NULL)
+ (yyvsp[0]) = list_prepend((yyvsp[0]), (yyvsp[-1]));
(void) list_merge(ip, (yyvsp[0]));
+ } else if ((yyvsp[-1]) != NULL)
+ (void) list_append(ip, (yyvsp[-1]));
(void) list_append(ip, instruction(Op_jmp));
ip->lasti->target_jmp = (yyvsp[-4]);
@@ -2700,68 +2709,72 @@ regular_loop:
break_allowed--;
continue_allowed--;
}
-#line 2704 "awkgram.c" /* yacc.c:1651 */
+#line 2713 "awkgram.c" /* yacc.c:1651 */
break;
case 51:
-#line 912 "awkgram.y" /* yacc.c:1651 */
+#line 920 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), (yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
-#line 2715 "awkgram.c" /* yacc.c:1651 */
+#line 2724 "awkgram.c" /* yacc.c:1651 */
break;
case 52:
-#line 919 "awkgram.y" /* yacc.c:1651 */
+#line 927 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION *) NULL, (yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
-#line 2726 "awkgram.c" /* yacc.c:1651 */
+#line 2735 "awkgram.c" /* yacc.c:1651 */
break;
case 53:
-#line 926 "awkgram.y" /* yacc.c:1651 */
+#line 934 "awkgram.y" /* yacc.c:1651 */
{
if (do_pretty_print)
(yyval) = list_prepend((yyvsp[0]), instruction(Op_exec_count));
else
(yyval) = (yyvsp[0]);
}
-#line 2737 "awkgram.c" /* yacc.c:1651 */
+#line 2746 "awkgram.c" /* yacc.c:1651 */
break;
case 54:
-#line 936 "awkgram.y" /* yacc.c:1651 */
+#line 944 "awkgram.y" /* yacc.c:1651 */
{
if (! break_allowed)
error_ln((yyvsp[-1])->source_line,
_("`break' is not allowed outside a loop or switch"));
(yyvsp[-1])->target_jmp = NULL;
(yyval) = list_create((yyvsp[-1]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
}
-#line 2749 "awkgram.c" /* yacc.c:1651 */
+#line 2760 "awkgram.c" /* yacc.c:1651 */
break;
case 55:
-#line 944 "awkgram.y" /* yacc.c:1651 */
+#line 954 "awkgram.y" /* yacc.c:1651 */
{
if (! continue_allowed)
error_ln((yyvsp[-1])->source_line,
_("`continue' is not allowed outside a loop"));
(yyvsp[-1])->target_jmp = NULL;
(yyval) = list_create((yyvsp[-1]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
}
-#line 2761 "awkgram.c" /* yacc.c:1651 */
+#line 2774 "awkgram.c" /* yacc.c:1651 */
break;
case 56:
-#line 952 "awkgram.y" /* yacc.c:1651 */
+#line 964 "awkgram.y" /* yacc.c:1651 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule && rule != Rule)
@@ -2769,12 +2782,14 @@ regular_loop:
_("`next' used in %s action"), ruletab[rule]);
(yyvsp[-1])->target_jmp = ip_rec;
(yyval) = list_create((yyvsp[-1]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
}
-#line 2774 "awkgram.c" /* yacc.c:1651 */
+#line 2789 "awkgram.c" /* yacc.c:1651 */
break;
case 57:
-#line 961 "awkgram.y" /* yacc.c:1651 */
+#line 975 "awkgram.y" /* yacc.c:1651 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2784,12 +2799,14 @@ regular_loop:
(yyvsp[-1])->target_newfile = ip_newfile;
(yyvsp[-1])->target_endfile = ip_endfile;
(yyval) = list_create((yyvsp[-1]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
}
-#line 2789 "awkgram.c" /* yacc.c:1651 */
+#line 2806 "awkgram.c" /* yacc.c:1651 */
break;
case 58:
-#line 972 "awkgram.y" /* yacc.c:1651 */
+#line 988 "awkgram.y" /* yacc.c:1651 */
{
/* Initialize the two possible jump targets, the actual target
* is resolved at run-time.
@@ -2803,21 +2820,23 @@ regular_loop:
(yyval)->nexti->memory = dupnode(Nnull_string);
} else
(yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
}
-#line 2808 "awkgram.c" /* yacc.c:1651 */
+#line 2827 "awkgram.c" /* yacc.c:1651 */
break;
case 59:
-#line 987 "awkgram.y" /* yacc.c:1651 */
+#line 1005 "awkgram.y" /* yacc.c:1651 */
{
if (! in_function)
yyerror(_("`return' used outside function context"));
}
-#line 2817 "awkgram.c" /* yacc.c:1651 */
+#line 2836 "awkgram.c" /* yacc.c:1651 */
break;
case 60:
-#line 990 "awkgram.y" /* yacc.c:1651 */
+#line 1008 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-1]) == NULL) {
(yyval) = list_create((yyvsp[-3]));
@@ -2825,18 +2844,31 @@ regular_loop:
(yyval)->nexti->memory = dupnode(Nnull_string);
} else
(yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyval), (yyvsp[0]));
+ }
+#line 2851 "awkgram.c" /* yacc.c:1651 */
+ break;
+
+ case 61:
+#line 1019 "awkgram.y" /* yacc.c:1651 */
+ {
+ if ((yyvsp[0]) != NULL)
+ (yyval) = list_append((yyvsp[-1]), (yyvsp[0]));
+ else
+ (yyval) = (yyvsp[-1]);
}
-#line 2830 "awkgram.c" /* yacc.c:1651 */
+#line 2862 "awkgram.c" /* yacc.c:1651 */
break;
case 62:
-#line 1010 "awkgram.y" /* yacc.c:1651 */
+#line 1036 "awkgram.y" /* yacc.c:1651 */
{ in_print = true; in_parens = 0; }
-#line 2836 "awkgram.c" /* yacc.c:1651 */
+#line 2868 "awkgram.c" /* yacc.c:1651 */
break;
case 63:
-#line 1011 "awkgram.y" /* yacc.c:1651 */
+#line 1037 "awkgram.y" /* yacc.c:1651 */
{
/*
* Optimization: plain `print' has no expression list, so $3 is null.
@@ -2933,17 +2965,17 @@ regular_print:
}
}
}
-#line 2937 "awkgram.c" /* yacc.c:1651 */
+#line 2969 "awkgram.c" /* yacc.c:1651 */
break;
case 64:
-#line 1108 "awkgram.y" /* yacc.c:1651 */
+#line 1134 "awkgram.y" /* yacc.c:1651 */
{ sub_counter = 0; }
-#line 2943 "awkgram.c" /* yacc.c:1651 */
+#line 2975 "awkgram.c" /* yacc.c:1651 */
break;
case 65:
-#line 1109 "awkgram.y" /* yacc.c:1651 */
+#line 1135 "awkgram.y" /* yacc.c:1651 */
{
char *arr = (yyvsp[-2])->lextok;
@@ -2976,11 +3008,11 @@ regular_print:
(yyval) = list_append(list_append((yyvsp[0]), (yyvsp[-2])), (yyvsp[-3]));
}
}
-#line 2980 "awkgram.c" /* yacc.c:1651 */
+#line 3012 "awkgram.c" /* yacc.c:1651 */
break;
case 66:
-#line 1146 "awkgram.y" /* yacc.c:1651 */
+#line 1172 "awkgram.y" /* yacc.c:1651 */
{
static bool warned = false;
char *arr = (yyvsp[-1])->lextok;
@@ -3006,54 +3038,54 @@ regular_print:
fatal(_("`delete' is not allowed with FUNCTAB"));
}
}
-#line 3010 "awkgram.c" /* yacc.c:1651 */
+#line 3042 "awkgram.c" /* yacc.c:1651 */
break;
case 67:
-#line 1172 "awkgram.y" /* yacc.c:1651 */
+#line 1198 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = optimize_assignment((yyvsp[0]));
}
-#line 3018 "awkgram.c" /* yacc.c:1651 */
+#line 3050 "awkgram.c" /* yacc.c:1651 */
break;
case 68:
-#line 1179 "awkgram.y" /* yacc.c:1651 */
+#line 1205 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3024 "awkgram.c" /* yacc.c:1651 */
+#line 3056 "awkgram.c" /* yacc.c:1651 */
break;
case 69:
-#line 1181 "awkgram.y" /* yacc.c:1651 */
+#line 1207 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3030 "awkgram.c" /* yacc.c:1651 */
+#line 3062 "awkgram.c" /* yacc.c:1651 */
break;
case 70:
-#line 1186 "awkgram.y" /* yacc.c:1651 */
+#line 1212 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3036 "awkgram.c" /* yacc.c:1651 */
+#line 3068 "awkgram.c" /* yacc.c:1651 */
break;
case 71:
-#line 1188 "awkgram.y" /* yacc.c:1651 */
+#line 1214 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-1]) == NULL)
(yyval) = list_create((yyvsp[0]));
else
(yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
}
-#line 3047 "awkgram.c" /* yacc.c:1651 */
+#line 3079 "awkgram.c" /* yacc.c:1651 */
break;
case 72:
-#line 1195 "awkgram.y" /* yacc.c:1651 */
+#line 1221 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3053 "awkgram.c" /* yacc.c:1651 */
+#line 3085 "awkgram.c" /* yacc.c:1651 */
break;
case 73:
-#line 1200 "awkgram.y" /* yacc.c:1651 */
+#line 1226 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *casestmt = (yyvsp[0]);
if ((yyvsp[0]) == NULL)
@@ -3062,14 +3094,15 @@ regular_print:
(void) list_prepend(casestmt, instruction(Op_exec_count));
(yyvsp[-4])->case_exp = (yyvsp[-3]);
(yyvsp[-4])->case_stmt = casestmt;
+ (yyvsp[-4])->comment = (yyvsp[-1]);
bcfree((yyvsp[-2]));
(yyval) = (yyvsp[-4]);
}
-#line 3069 "awkgram.c" /* yacc.c:1651 */
+#line 3102 "awkgram.c" /* yacc.c:1651 */
break;
case 74:
-#line 1212 "awkgram.y" /* yacc.c:1651 */
+#line 1239 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *casestmt = (yyvsp[0]);
if ((yyvsp[0]) == NULL)
@@ -3078,19 +3111,20 @@ regular_print:
(void) list_prepend(casestmt, instruction(Op_exec_count));
bcfree((yyvsp[-2]));
(yyvsp[-3])->case_stmt = casestmt;
+ (yyvsp[-3])->comment = (yyvsp[-1]);
(yyval) = (yyvsp[-3]);
}
-#line 3084 "awkgram.c" /* yacc.c:1651 */
+#line 3118 "awkgram.c" /* yacc.c:1651 */
break;
case 75:
-#line 1226 "awkgram.y" /* yacc.c:1651 */
+#line 1254 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3090 "awkgram.c" /* yacc.c:1651 */
+#line 3124 "awkgram.c" /* yacc.c:1651 */
break;
case 76:
-#line 1228 "awkgram.y" /* yacc.c:1651 */
+#line 1256 "awkgram.y" /* yacc.c:1651 */
{
NODE *n = (yyvsp[0])->memory;
(void) force_number(n);
@@ -3098,28 +3132,28 @@ regular_print:
bcfree((yyvsp[-1]));
(yyval) = (yyvsp[0]);
}
-#line 3102 "awkgram.c" /* yacc.c:1651 */
+#line 3136 "awkgram.c" /* yacc.c:1651 */
break;
case 77:
-#line 1236 "awkgram.y" /* yacc.c:1651 */
+#line 1264 "awkgram.y" /* yacc.c:1651 */
{
NODE *n = (yyvsp[0])->lasti->memory;
bcfree((yyvsp[-1]));
add_sign_to_num(n, '+');
(yyval) = (yyvsp[0]);
}
-#line 3113 "awkgram.c" /* yacc.c:1651 */
+#line 3147 "awkgram.c" /* yacc.c:1651 */
break;
case 78:
-#line 1243 "awkgram.y" /* yacc.c:1651 */
+#line 1271 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3119 "awkgram.c" /* yacc.c:1651 */
+#line 3153 "awkgram.c" /* yacc.c:1651 */
break;
case 79:
-#line 1245 "awkgram.y" /* yacc.c:1651 */
+#line 1273 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0])->memory->type == Node_regex)
(yyvsp[0])->opcode = Op_push_re;
@@ -3127,57 +3161,57 @@ regular_print:
(yyvsp[0])->opcode = Op_push;
(yyval) = (yyvsp[0]);
}
-#line 3131 "awkgram.c" /* yacc.c:1651 */
+#line 3165 "awkgram.c" /* yacc.c:1651 */
break;
case 80:
-#line 1253 "awkgram.y" /* yacc.c:1651 */
+#line 1281 "awkgram.y" /* yacc.c:1651 */
{
assert(((yyvsp[0])->memory->flags & REGEX) == REGEX);
(yyvsp[0])->opcode = Op_push_re;
(yyval) = (yyvsp[0]);
}
-#line 3141 "awkgram.c" /* yacc.c:1651 */
+#line 3175 "awkgram.c" /* yacc.c:1651 */
break;
case 81:
-#line 1262 "awkgram.y" /* yacc.c:1651 */
+#line 1290 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3147 "awkgram.c" /* yacc.c:1651 */
+#line 3181 "awkgram.c" /* yacc.c:1651 */
break;
case 82:
-#line 1264 "awkgram.y" /* yacc.c:1651 */
+#line 1292 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3153 "awkgram.c" /* yacc.c:1651 */
+#line 3187 "awkgram.c" /* yacc.c:1651 */
break;
case 84:
-#line 1274 "awkgram.y" /* yacc.c:1651 */
+#line 1302 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = (yyvsp[-1]);
}
-#line 3161 "awkgram.c" /* yacc.c:1651 */
+#line 3195 "awkgram.c" /* yacc.c:1651 */
break;
case 85:
-#line 1281 "awkgram.y" /* yacc.c:1651 */
+#line 1309 "awkgram.y" /* yacc.c:1651 */
{
in_print = false;
in_parens = 0;
(yyval) = NULL;
}
-#line 3171 "awkgram.c" /* yacc.c:1651 */
+#line 3205 "awkgram.c" /* yacc.c:1651 */
break;
case 86:
-#line 1286 "awkgram.y" /* yacc.c:1651 */
+#line 1314 "awkgram.y" /* yacc.c:1651 */
{ in_print = false; in_parens = 0; }
-#line 3177 "awkgram.c" /* yacc.c:1651 */
+#line 3211 "awkgram.c" /* yacc.c:1651 */
break;
case 87:
-#line 1287 "awkgram.y" /* yacc.c:1651 */
+#line 1315 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-2])->redir_type == redirect_twoway
&& (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3187,21 +3221,21 @@ regular_print:
lintwarn(_("concatenation as I/O `>' redirection target is ambiguous"));
(yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
}
-#line 3191 "awkgram.c" /* yacc.c:1651 */
+#line 3225 "awkgram.c" /* yacc.c:1651 */
break;
case 88:
-#line 1300 "awkgram.y" /* yacc.c:1651 */
+#line 1328 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-1]) != NULL)
(yyvsp[-5])->comment = (yyvsp[-1]);
(yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), NULL, NULL);
}
-#line 3201 "awkgram.c" /* yacc.c:1651 */
+#line 3235 "awkgram.c" /* yacc.c:1651 */
break;
case 89:
-#line 1307 "awkgram.y" /* yacc.c:1651 */
+#line 1335 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-4]) != NULL)
(yyvsp[-8])->comment = (yyvsp[-4]);
@@ -3209,17 +3243,17 @@ regular_print:
(yyvsp[-2])->comment = (yyvsp[-1]);
(yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[0]));
}
-#line 3213 "awkgram.c" /* yacc.c:1651 */
+#line 3247 "awkgram.c" /* yacc.c:1651 */
break;
case 90:
-#line 1317 "awkgram.y" /* yacc.c:1651 */
+#line 1345 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3219 "awkgram.c" /* yacc.c:1651 */
+#line 3253 "awkgram.c" /* yacc.c:1651 */
break;
case 91:
-#line 1319 "awkgram.y" /* yacc.c:1651 */
+#line 1347 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-1]) != NULL && (yyvsp[0]) != NULL) {
if ((yyvsp[-1])->memory->comment_type == EOL_COMMENT) {
@@ -3237,59 +3271,59 @@ regular_print:
} else
(yyval) = NULL;
}
-#line 3241 "awkgram.c" /* yacc.c:1651 */
+#line 3275 "awkgram.c" /* yacc.c:1651 */
break;
case 92:
-#line 1340 "awkgram.y" /* yacc.c:1651 */
+#line 1368 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3247 "awkgram.c" /* yacc.c:1651 */
+#line 3281 "awkgram.c" /* yacc.c:1651 */
break;
case 93:
-#line 1342 "awkgram.y" /* yacc.c:1651 */
+#line 1370 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3253 "awkgram.c" /* yacc.c:1651 */
+#line 3287 "awkgram.c" /* yacc.c:1651 */
break;
case 94:
-#line 1347 "awkgram.y" /* yacc.c:1651 */
+#line 1375 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3259 "awkgram.c" /* yacc.c:1651 */
+#line 3293 "awkgram.c" /* yacc.c:1651 */
break;
case 95:
-#line 1349 "awkgram.y" /* yacc.c:1651 */
+#line 1377 "awkgram.y" /* yacc.c:1651 */
{
bcfree((yyvsp[-1]));
(yyval) = (yyvsp[0]);
}
-#line 3268 "awkgram.c" /* yacc.c:1651 */
+#line 3302 "awkgram.c" /* yacc.c:1651 */
break;
case 96:
-#line 1357 "awkgram.y" /* yacc.c:1651 */
+#line 1385 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3274 "awkgram.c" /* yacc.c:1651 */
+#line 3308 "awkgram.c" /* yacc.c:1651 */
break;
case 97:
-#line 1359 "awkgram.y" /* yacc.c:1651 */
+#line 1387 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3280 "awkgram.c" /* yacc.c:1651 */
+#line 3314 "awkgram.c" /* yacc.c:1651 */
break;
case 98:
-#line 1364 "awkgram.y" /* yacc.c:1651 */
+#line 1392 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->param_count = 0;
(yyval) = list_create((yyvsp[0]));
}
-#line 3289 "awkgram.c" /* yacc.c:1651 */
+#line 3323 "awkgram.c" /* yacc.c:1651 */
break;
case 99:
-#line 1369 "awkgram.y" /* yacc.c:1651 */
+#line 1397 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
(yyvsp[0])->param_count = (yyvsp[-2])->lasti->param_count + 1;
@@ -3306,74 +3340,74 @@ regular_print:
} else
(yyval) = NULL;
}
-#line 3310 "awkgram.c" /* yacc.c:1651 */
+#line 3344 "awkgram.c" /* yacc.c:1651 */
break;
case 100:
-#line 1386 "awkgram.y" /* yacc.c:1651 */
+#line 1414 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3316 "awkgram.c" /* yacc.c:1651 */
+#line 3350 "awkgram.c" /* yacc.c:1651 */
break;
case 101:
-#line 1388 "awkgram.y" /* yacc.c:1651 */
+#line 1416 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[-1]); }
-#line 3322 "awkgram.c" /* yacc.c:1651 */
+#line 3356 "awkgram.c" /* yacc.c:1651 */
break;
case 102:
-#line 1390 "awkgram.y" /* yacc.c:1651 */
+#line 1418 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[-2]); }
-#line 3328 "awkgram.c" /* yacc.c:1651 */
+#line 3362 "awkgram.c" /* yacc.c:1651 */
break;
case 103:
-#line 1396 "awkgram.y" /* yacc.c:1651 */
+#line 1424 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3334 "awkgram.c" /* yacc.c:1651 */
+#line 3368 "awkgram.c" /* yacc.c:1651 */
break;
case 104:
-#line 1398 "awkgram.y" /* yacc.c:1651 */
+#line 1426 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3340 "awkgram.c" /* yacc.c:1651 */
+#line 3374 "awkgram.c" /* yacc.c:1651 */
break;
case 105:
-#line 1403 "awkgram.y" /* yacc.c:1651 */
+#line 1431 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3346 "awkgram.c" /* yacc.c:1651 */
+#line 3380 "awkgram.c" /* yacc.c:1651 */
break;
case 106:
-#line 1405 "awkgram.y" /* yacc.c:1651 */
+#line 1433 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3352 "awkgram.c" /* yacc.c:1651 */
+#line 3386 "awkgram.c" /* yacc.c:1651 */
break;
case 107:
-#line 1410 "awkgram.y" /* yacc.c:1651 */
+#line 1438 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3358 "awkgram.c" /* yacc.c:1651 */
+#line 3392 "awkgram.c" /* yacc.c:1651 */
break;
case 108:
-#line 1412 "awkgram.y" /* yacc.c:1651 */
+#line 1440 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
-#line 3367 "awkgram.c" /* yacc.c:1651 */
+#line 3401 "awkgram.c" /* yacc.c:1651 */
break;
case 109:
-#line 1417 "awkgram.y" /* yacc.c:1651 */
+#line 1445 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3373 "awkgram.c" /* yacc.c:1651 */
+#line 3407 "awkgram.c" /* yacc.c:1651 */
break;
case 110:
-#line 1419 "awkgram.y" /* yacc.c:1651 */
+#line 1447 "awkgram.y" /* yacc.c:1651 */
{
/*
* Returning the expression list instead of NULL lets
@@ -3381,62 +3415,62 @@ regular_print:
*/
(yyval) = (yyvsp[-1]);
}
-#line 3385 "awkgram.c" /* yacc.c:1651 */
+#line 3419 "awkgram.c" /* yacc.c:1651 */
break;
case 111:
-#line 1427 "awkgram.y" /* yacc.c:1651 */
+#line 1455 "awkgram.y" /* yacc.c:1651 */
{
/* Ditto */
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
}
-#line 3394 "awkgram.c" /* yacc.c:1651 */
+#line 3428 "awkgram.c" /* yacc.c:1651 */
break;
case 112:
-#line 1432 "awkgram.y" /* yacc.c:1651 */
+#line 1460 "awkgram.y" /* yacc.c:1651 */
{
/* Ditto */
(yyval) = (yyvsp[-2]);
}
-#line 3403 "awkgram.c" /* yacc.c:1651 */
+#line 3437 "awkgram.c" /* yacc.c:1651 */
break;
case 113:
-#line 1440 "awkgram.y" /* yacc.c:1651 */
+#line 1468 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3409 "awkgram.c" /* yacc.c:1651 */
+#line 3443 "awkgram.c" /* yacc.c:1651 */
break;
case 114:
-#line 1442 "awkgram.y" /* yacc.c:1651 */
+#line 1470 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3415 "awkgram.c" /* yacc.c:1651 */
+#line 3449 "awkgram.c" /* yacc.c:1651 */
break;
case 115:
-#line 1447 "awkgram.y" /* yacc.c:1651 */
+#line 1475 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3421 "awkgram.c" /* yacc.c:1651 */
+#line 3455 "awkgram.c" /* yacc.c:1651 */
break;
case 116:
-#line 1449 "awkgram.y" /* yacc.c:1651 */
+#line 1477 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
-#line 3430 "awkgram.c" /* yacc.c:1651 */
+#line 3464 "awkgram.c" /* yacc.c:1651 */
break;
case 117:
-#line 1454 "awkgram.y" /* yacc.c:1651 */
+#line 1482 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 3436 "awkgram.c" /* yacc.c:1651 */
+#line 3470 "awkgram.c" /* yacc.c:1651 */
break;
case 118:
-#line 1456 "awkgram.y" /* yacc.c:1651 */
+#line 1484 "awkgram.y" /* yacc.c:1651 */
{
/*
* Returning the expression list instead of NULL lets
@@ -3444,72 +3478,72 @@ regular_print:
*/
(yyval) = (yyvsp[-1]);
}
-#line 3448 "awkgram.c" /* yacc.c:1651 */
+#line 3482 "awkgram.c" /* yacc.c:1651 */
break;
case 119:
-#line 1464 "awkgram.y" /* yacc.c:1651 */
+#line 1492 "awkgram.y" /* yacc.c:1651 */
{
/* Ditto */
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
}
-#line 3457 "awkgram.c" /* yacc.c:1651 */
+#line 3491 "awkgram.c" /* yacc.c:1651 */
break;
case 120:
-#line 1469 "awkgram.y" /* yacc.c:1651 */
+#line 1497 "awkgram.y" /* yacc.c:1651 */
{
/* Ditto */
(yyval) = (yyvsp[-2]);
}
-#line 3466 "awkgram.c" /* yacc.c:1651 */
+#line 3500 "awkgram.c" /* yacc.c:1651 */
break;
case 121:
-#line 1476 "awkgram.y" /* yacc.c:1651 */
+#line 1504 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3472 "awkgram.c" /* yacc.c:1651 */
+#line 3506 "awkgram.c" /* yacc.c:1651 */
break;
case 122:
-#line 1477 "awkgram.y" /* yacc.c:1651 */
+#line 1505 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = list_create((yyvsp[0])); }
-#line 3478 "awkgram.c" /* yacc.c:1651 */
+#line 3512 "awkgram.c" /* yacc.c:1651 */
break;
case 123:
-#line 1483 "awkgram.y" /* yacc.c:1651 */
+#line 1511 "awkgram.y" /* yacc.c:1651 */
{
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 3489 "awkgram.c" /* yacc.c:1651 */
+#line 3523 "awkgram.c" /* yacc.c:1651 */
break;
case 124:
-#line 1490 "awkgram.y" /* yacc.c:1651 */
+#line 1518 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), (yyvsp[-1]));
}
-#line 3497 "awkgram.c" /* yacc.c:1651 */
+#line 3531 "awkgram.c" /* yacc.c:1651 */
break;
case 125:
-#line 1494 "awkgram.y" /* yacc.c:1651 */
+#line 1522 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3503 "awkgram.c" /* yacc.c:1651 */
+#line 3537 "awkgram.c" /* yacc.c:1651 */
break;
case 126:
-#line 1496 "awkgram.y" /* yacc.c:1651 */
+#line 1524 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3509 "awkgram.c" /* yacc.c:1651 */
+#line 3543 "awkgram.c" /* yacc.c:1651 */
break;
case 127:
-#line 1498 "awkgram.y" /* yacc.c:1651 */
+#line 1526 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
warning_ln((yyvsp[-1])->source_line,
@@ -3522,11 +3556,11 @@ regular_print:
bcfree((yyvsp[0]));
(yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
}
-#line 3526 "awkgram.c" /* yacc.c:1651 */
+#line 3560 "awkgram.c" /* yacc.c:1651 */
break;
case 128:
-#line 1511 "awkgram.y" /* yacc.c:1651 */
+#line 1539 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
warning_ln((yyvsp[-1])->source_line,
@@ -3543,11 +3577,11 @@ regular_print:
(yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1]));
}
}
-#line 3547 "awkgram.c" /* yacc.c:1651 */
+#line 3581 "awkgram.c" /* yacc.c:1651 */
break;
case 129:
-#line 1528 "awkgram.y" /* yacc.c:1651 */
+#line 1556 "awkgram.y" /* yacc.c:1651 */
{
if (do_lint_old)
warning_ln((yyvsp[-1])->source_line,
@@ -3557,91 +3591,91 @@ regular_print:
(yyvsp[-1])->expr_count = 1;
(yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), (yyvsp[-1]));
}
-#line 3561 "awkgram.c" /* yacc.c:1651 */
+#line 3595 "awkgram.c" /* yacc.c:1651 */
break;
case 130:
-#line 1538 "awkgram.y" /* yacc.c:1651 */
+#line 1566 "awkgram.y" /* yacc.c:1651 */
{
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 3572 "awkgram.c" /* yacc.c:1651 */
+#line 3606 "awkgram.c" /* yacc.c:1651 */
break;
case 131:
-#line 1545 "awkgram.y" /* yacc.c:1651 */
+#line 1573 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0])); }
-#line 3578 "awkgram.c" /* yacc.c:1651 */
+#line 3612 "awkgram.c" /* yacc.c:1651 */
break;
case 132:
-#line 1547 "awkgram.y" /* yacc.c:1651 */
+#line 1575 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3584 "awkgram.c" /* yacc.c:1651 */
+#line 3618 "awkgram.c" /* yacc.c:1651 */
break;
case 133:
-#line 1552 "awkgram.y" /* yacc.c:1651 */
+#line 1580 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3590 "awkgram.c" /* yacc.c:1651 */
+#line 3624 "awkgram.c" /* yacc.c:1651 */
break;
case 134:
-#line 1554 "awkgram.y" /* yacc.c:1651 */
+#line 1582 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3596 "awkgram.c" /* yacc.c:1651 */
+#line 3630 "awkgram.c" /* yacc.c:1651 */
break;
case 135:
-#line 1556 "awkgram.y" /* yacc.c:1651 */
+#line 1584 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->opcode = Op_assign_quotient;
(yyval) = (yyvsp[0]);
}
-#line 3605 "awkgram.c" /* yacc.c:1651 */
+#line 3639 "awkgram.c" /* yacc.c:1651 */
break;
case 136:
-#line 1564 "awkgram.y" /* yacc.c:1651 */
+#line 1592 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3611 "awkgram.c" /* yacc.c:1651 */
+#line 3645 "awkgram.c" /* yacc.c:1651 */
break;
case 137:
-#line 1566 "awkgram.y" /* yacc.c:1651 */
+#line 1594 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3617 "awkgram.c" /* yacc.c:1651 */
+#line 3651 "awkgram.c" /* yacc.c:1651 */
break;
case 138:
-#line 1571 "awkgram.y" /* yacc.c:1651 */
+#line 1599 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3623 "awkgram.c" /* yacc.c:1651 */
+#line 3657 "awkgram.c" /* yacc.c:1651 */
break;
case 139:
-#line 1573 "awkgram.y" /* yacc.c:1651 */
+#line 1601 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3629 "awkgram.c" /* yacc.c:1651 */
+#line 3663 "awkgram.c" /* yacc.c:1651 */
break;
case 140:
-#line 1578 "awkgram.y" /* yacc.c:1651 */
+#line 1606 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3635 "awkgram.c" /* yacc.c:1651 */
+#line 3669 "awkgram.c" /* yacc.c:1651 */
break;
case 141:
-#line 1580 "awkgram.y" /* yacc.c:1651 */
+#line 1608 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 3641 "awkgram.c" /* yacc.c:1651 */
+#line 3675 "awkgram.c" /* yacc.c:1651 */
break;
case 142:
-#line 1582 "awkgram.y" /* yacc.c:1651 */
+#line 1610 "awkgram.y" /* yacc.c:1651 */
{
int count = 2;
bool is_simple_var = false;
@@ -3695,47 +3729,47 @@ regular_print:
max_args = count;
}
}
-#line 3699 "awkgram.c" /* yacc.c:1651 */
+#line 3733 "awkgram.c" /* yacc.c:1651 */
break;
case 144:
-#line 1641 "awkgram.y" /* yacc.c:1651 */
+#line 1669 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3705 "awkgram.c" /* yacc.c:1651 */
+#line 3739 "awkgram.c" /* yacc.c:1651 */
break;
case 145:
-#line 1643 "awkgram.y" /* yacc.c:1651 */
+#line 1671 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3711 "awkgram.c" /* yacc.c:1651 */
+#line 3745 "awkgram.c" /* yacc.c:1651 */
break;
case 146:
-#line 1645 "awkgram.y" /* yacc.c:1651 */
+#line 1673 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3717 "awkgram.c" /* yacc.c:1651 */
+#line 3751 "awkgram.c" /* yacc.c:1651 */
break;
case 147:
-#line 1647 "awkgram.y" /* yacc.c:1651 */
+#line 1675 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3723 "awkgram.c" /* yacc.c:1651 */
+#line 3757 "awkgram.c" /* yacc.c:1651 */
break;
case 148:
-#line 1649 "awkgram.y" /* yacc.c:1651 */
+#line 1677 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3729 "awkgram.c" /* yacc.c:1651 */
+#line 3763 "awkgram.c" /* yacc.c:1651 */
break;
case 149:
-#line 1651 "awkgram.y" /* yacc.c:1651 */
+#line 1679 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3735 "awkgram.c" /* yacc.c:1651 */
+#line 3769 "awkgram.c" /* yacc.c:1651 */
break;
case 150:
-#line 1653 "awkgram.y" /* yacc.c:1651 */
+#line 1681 "awkgram.y" /* yacc.c:1651 */
{
/*
* In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3749,29 +3783,29 @@ regular_print:
_("non-redirected `getline' undefined inside END action"));
(yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), redirect_input);
}
-#line 3753 "awkgram.c" /* yacc.c:1651 */
+#line 3787 "awkgram.c" /* yacc.c:1651 */
break;
case 151:
-#line 1667 "awkgram.y" /* yacc.c:1651 */
+#line 1695 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->opcode = Op_postincrement;
(yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 3762 "awkgram.c" /* yacc.c:1651 */
+#line 3796 "awkgram.c" /* yacc.c:1651 */
break;
case 152:
-#line 1672 "awkgram.y" /* yacc.c:1651 */
+#line 1700 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->opcode = Op_postdecrement;
(yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 3771 "awkgram.c" /* yacc.c:1651 */
+#line 3805 "awkgram.c" /* yacc.c:1651 */
break;
case 153:
-#line 1677 "awkgram.y" /* yacc.c:1651 */
+#line 1705 "awkgram.y" /* yacc.c:1651 */
{
if (do_lint_old) {
warning_ln((yyvsp[-1])->source_line,
@@ -3791,64 +3825,64 @@ regular_print:
(yyval) = list_append(list_merge(t, (yyvsp[0])), (yyvsp[-1]));
}
}
-#line 3795 "awkgram.c" /* yacc.c:1651 */
+#line 3829 "awkgram.c" /* yacc.c:1651 */
break;
case 154:
-#line 1702 "awkgram.y" /* yacc.c:1651 */
+#line 1730 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), (yyvsp[-2])->redir_type);
bcfree((yyvsp[-2]));
}
-#line 3804 "awkgram.c" /* yacc.c:1651 */
+#line 3838 "awkgram.c" /* yacc.c:1651 */
break;
case 155:
-#line 1708 "awkgram.y" /* yacc.c:1651 */
+#line 1736 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3810 "awkgram.c" /* yacc.c:1651 */
+#line 3844 "awkgram.c" /* yacc.c:1651 */
break;
case 156:
-#line 1710 "awkgram.y" /* yacc.c:1651 */
+#line 1738 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3816 "awkgram.c" /* yacc.c:1651 */
+#line 3850 "awkgram.c" /* yacc.c:1651 */
break;
case 157:
-#line 1712 "awkgram.y" /* yacc.c:1651 */
+#line 1740 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3822 "awkgram.c" /* yacc.c:1651 */
+#line 3856 "awkgram.c" /* yacc.c:1651 */
break;
case 158:
-#line 1714 "awkgram.y" /* yacc.c:1651 */
+#line 1742 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3828 "awkgram.c" /* yacc.c:1651 */
+#line 3862 "awkgram.c" /* yacc.c:1651 */
break;
case 159:
-#line 1716 "awkgram.y" /* yacc.c:1651 */
+#line 1744 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3834 "awkgram.c" /* yacc.c:1651 */
+#line 3868 "awkgram.c" /* yacc.c:1651 */
break;
case 160:
-#line 1718 "awkgram.y" /* yacc.c:1651 */
+#line 1746 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3840 "awkgram.c" /* yacc.c:1651 */
+#line 3874 "awkgram.c" /* yacc.c:1651 */
break;
case 161:
-#line 1723 "awkgram.y" /* yacc.c:1651 */
+#line 1751 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3848 "awkgram.c" /* yacc.c:1651 */
+#line 3882 "awkgram.c" /* yacc.c:1651 */
break;
case 162:
-#line 1727 "awkgram.y" /* yacc.c:1651 */
+#line 1755 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0])->opcode == Op_match_rec) {
(yyvsp[0])->opcode = Op_nomatch;
@@ -3880,11 +3914,11 @@ regular_print:
}
}
}
-#line 3884 "awkgram.c" /* yacc.c:1651 */
+#line 3918 "awkgram.c" /* yacc.c:1651 */
break;
case 163:
-#line 1759 "awkgram.y" /* yacc.c:1651 */
+#line 1787 "awkgram.y" /* yacc.c:1651 */
{
// Always include. Allows us to lint warn on
// print "foo" > "bar" 1
@@ -3892,31 +3926,31 @@ regular_print:
// print "foo" > ("bar" 1)
(yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 1, sourceline));
}
-#line 3896 "awkgram.c" /* yacc.c:1651 */
+#line 3930 "awkgram.c" /* yacc.c:1651 */
break;
case 164:
-#line 1767 "awkgram.y" /* yacc.c:1651 */
+#line 1795 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
-#line 3906 "awkgram.c" /* yacc.c:1651 */
+#line 3940 "awkgram.c" /* yacc.c:1651 */
break;
case 165:
-#line 1773 "awkgram.y" /* yacc.c:1651 */
+#line 1801 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
-#line 3916 "awkgram.c" /* yacc.c:1651 */
+#line 3950 "awkgram.c" /* yacc.c:1651 */
break;
case 166:
-#line 1779 "awkgram.y" /* yacc.c:1651 */
+#line 1807 "awkgram.y" /* yacc.c:1651 */
{
static bool warned = false;
@@ -3929,45 +3963,45 @@ regular_print:
if ((yyval) == NULL)
YYABORT;
}
-#line 3933 "awkgram.c" /* yacc.c:1651 */
+#line 3967 "awkgram.c" /* yacc.c:1651 */
break;
case 169:
-#line 1794 "awkgram.y" /* yacc.c:1651 */
+#line 1822 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[-1])->opcode = Op_preincrement;
(yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
-#line 3942 "awkgram.c" /* yacc.c:1651 */
+#line 3976 "awkgram.c" /* yacc.c:1651 */
break;
case 170:
-#line 1799 "awkgram.y" /* yacc.c:1651 */
+#line 1827 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[-1])->opcode = Op_predecrement;
(yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
-#line 3951 "awkgram.c" /* yacc.c:1651 */
+#line 3985 "awkgram.c" /* yacc.c:1651 */
break;
case 171:
-#line 1804 "awkgram.y" /* yacc.c:1651 */
+#line 1832 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3959 "awkgram.c" /* yacc.c:1651 */
+#line 3993 "awkgram.c" /* yacc.c:1651 */
break;
case 172:
-#line 1808 "awkgram.y" /* yacc.c:1651 */
+#line 1836 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3967 "awkgram.c" /* yacc.c:1651 */
+#line 4001 "awkgram.c" /* yacc.c:1651 */
break;
case 173:
-#line 1812 "awkgram.y" /* yacc.c:1651 */
+#line 1840 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0])->lasti->opcode == Op_push_i
&& ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3982,11 +4016,11 @@ regular_print:
(yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
-#line 3986 "awkgram.c" /* yacc.c:1651 */
+#line 4020 "awkgram.c" /* yacc.c:1651 */
break;
case 174:
-#line 1827 "awkgram.y" /* yacc.c:1651 */
+#line 1855 "awkgram.y" /* yacc.c:1651 */
{
if ((yyvsp[0])->lasti->opcode == Op_push_i
&& ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -4004,20 +4038,20 @@ regular_print:
(yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
-#line 4008 "awkgram.c" /* yacc.c:1651 */
+#line 4042 "awkgram.c" /* yacc.c:1651 */
break;
case 175:
-#line 1848 "awkgram.y" /* yacc.c:1651 */
+#line 1876 "awkgram.y" /* yacc.c:1651 */
{
func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
(yyval) = (yyvsp[0]);
}
-#line 4017 "awkgram.c" /* yacc.c:1651 */
+#line 4051 "awkgram.c" /* yacc.c:1651 */
break;
case 176:
-#line 1853 "awkgram.y" /* yacc.c:1651 */
+#line 1881 "awkgram.y" /* yacc.c:1651 */
{
/* indirect function call */
INSTRUCTION *f, *t;
@@ -4051,11 +4085,11 @@ regular_print:
(yyval) = list_prepend((yyvsp[0]), t);
at_seen = false;
}
-#line 4055 "awkgram.c" /* yacc.c:1651 */
+#line 4089 "awkgram.c" /* yacc.c:1651 */
break;
case 177:
-#line 1890 "awkgram.y" /* yacc.c:1651 */
+#line 1918 "awkgram.y" /* yacc.c:1651 */
{
NODE *n;
@@ -4080,49 +4114,49 @@ regular_print:
(yyval) = list_append(t, (yyvsp[-3]));
}
}
-#line 4084 "awkgram.c" /* yacc.c:1651 */
+#line 4118 "awkgram.c" /* yacc.c:1651 */
break;
case 178:
-#line 1918 "awkgram.y" /* yacc.c:1651 */
+#line 1946 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 4090 "awkgram.c" /* yacc.c:1651 */
+#line 4124 "awkgram.c" /* yacc.c:1651 */
break;
case 179:
-#line 1920 "awkgram.y" /* yacc.c:1651 */
+#line 1948 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 4096 "awkgram.c" /* yacc.c:1651 */
+#line 4130 "awkgram.c" /* yacc.c:1651 */
break;
case 180:
-#line 1925 "awkgram.y" /* yacc.c:1651 */
+#line 1953 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 4102 "awkgram.c" /* yacc.c:1651 */
+#line 4136 "awkgram.c" /* yacc.c:1651 */
break;
case 181:
-#line 1927 "awkgram.y" /* yacc.c:1651 */
+#line 1955 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[-1]); }
-#line 4108 "awkgram.c" /* yacc.c:1651 */
+#line 4142 "awkgram.c" /* yacc.c:1651 */
break;
case 182:
-#line 1932 "awkgram.y" /* yacc.c:1651 */
+#line 1960 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 4114 "awkgram.c" /* yacc.c:1651 */
+#line 4148 "awkgram.c" /* yacc.c:1651 */
break;
case 183:
-#line 1934 "awkgram.y" /* yacc.c:1651 */
+#line 1962 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
-#line 4122 "awkgram.c" /* yacc.c:1651 */
+#line 4156 "awkgram.c" /* yacc.c:1651 */
break;
case 184:
-#line 1941 "awkgram.y" /* yacc.c:1651 */
+#line 1969 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *ip = (yyvsp[0])->lasti;
int count = ip->sub_count; /* # of SUBSEP-seperated expressions */
@@ -4136,11 +4170,11 @@ regular_print:
sub_counter++; /* count # of dimensions */
(yyval) = (yyvsp[0]);
}
-#line 4140 "awkgram.c" /* yacc.c:1651 */
+#line 4174 "awkgram.c" /* yacc.c:1651 */
break;
case 185:
-#line 1958 "awkgram.y" /* yacc.c:1651 */
+#line 1986 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *t = (yyvsp[-1]);
if ((yyvsp[-1]) == NULL) {
@@ -4154,31 +4188,31 @@ regular_print:
(yyvsp[0])->sub_count = count_expressions(&t, false);
(yyval) = list_append(t, (yyvsp[0]));
}
-#line 4158 "awkgram.c" /* yacc.c:1651 */
+#line 4192 "awkgram.c" /* yacc.c:1651 */
break;
case 186:
-#line 1975 "awkgram.y" /* yacc.c:1651 */
+#line 2003 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 4164 "awkgram.c" /* yacc.c:1651 */
+#line 4198 "awkgram.c" /* yacc.c:1651 */
break;
case 187:
-#line 1977 "awkgram.y" /* yacc.c:1651 */
+#line 2005 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
-#line 4172 "awkgram.c" /* yacc.c:1651 */
+#line 4206 "awkgram.c" /* yacc.c:1651 */
break;
case 188:
-#line 1984 "awkgram.y" /* yacc.c:1651 */
+#line 2012 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[-1]); }
-#line 4178 "awkgram.c" /* yacc.c:1651 */
+#line 4212 "awkgram.c" /* yacc.c:1651 */
break;
case 189:
-#line 1989 "awkgram.y" /* yacc.c:1651 */
+#line 2017 "awkgram.y" /* yacc.c:1651 */
{
char *var_name = (yyvsp[0])->lextok;
@@ -4186,22 +4220,22 @@ regular_print:
(yyvsp[0])->memory = variable((yyvsp[0])->source_line, var_name, Node_var_new);
(yyval) = list_create((yyvsp[0]));
}
-#line 4190 "awkgram.c" /* yacc.c:1651 */
+#line 4224 "awkgram.c" /* yacc.c:1651 */
break;
case 190:
-#line 1997 "awkgram.y" /* yacc.c:1651 */
+#line 2025 "awkgram.y" /* yacc.c:1651 */
{
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 4201 "awkgram.c" /* yacc.c:1651 */
+#line 4235 "awkgram.c" /* yacc.c:1651 */
break;
case 191:
-#line 2007 "awkgram.y" /* yacc.c:1651 */
+#line 2035 "awkgram.y" /* yacc.c:1651 */
{
INSTRUCTION *ip = (yyvsp[0])->nexti;
if (ip->opcode == Op_push
@@ -4213,85 +4247,85 @@ regular_print:
} else
(yyval) = (yyvsp[0]);
}
-#line 4217 "awkgram.c" /* yacc.c:1651 */
+#line 4251 "awkgram.c" /* yacc.c:1651 */
break;
case 192:
-#line 2019 "awkgram.y" /* yacc.c:1651 */
+#line 2047 "awkgram.y" /* yacc.c:1651 */
{
(yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
if ((yyvsp[0]) != NULL)
mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 4227 "awkgram.c" /* yacc.c:1651 */
+#line 4261 "awkgram.c" /* yacc.c:1651 */
break;
case 193:
-#line 2028 "awkgram.y" /* yacc.c:1651 */
+#line 2056 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->opcode = Op_postincrement;
}
-#line 4235 "awkgram.c" /* yacc.c:1651 */
+#line 4269 "awkgram.c" /* yacc.c:1651 */
break;
case 194:
-#line 2032 "awkgram.y" /* yacc.c:1651 */
+#line 2060 "awkgram.y" /* yacc.c:1651 */
{
(yyvsp[0])->opcode = Op_postdecrement;
}
-#line 4243 "awkgram.c" /* yacc.c:1651 */
+#line 4277 "awkgram.c" /* yacc.c:1651 */
break;
case 195:
-#line 2036 "awkgram.y" /* yacc.c:1651 */
+#line 2064 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 4249 "awkgram.c" /* yacc.c:1651 */
+#line 4283 "awkgram.c" /* yacc.c:1651 */
break;
case 196:
-#line 2040 "awkgram.y" /* yacc.c:1651 */
+#line 2068 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); }
-#line 4255 "awkgram.c" /* yacc.c:1651 */
+#line 4289 "awkgram.c" /* yacc.c:1651 */
break;
case 197:
-#line 2044 "awkgram.y" /* yacc.c:1651 */
+#line 2072 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); yyerrok; }
-#line 4261 "awkgram.c" /* yacc.c:1651 */
+#line 4295 "awkgram.c" /* yacc.c:1651 */
break;
case 198:
-#line 2048 "awkgram.y" /* yacc.c:1651 */
+#line 2076 "awkgram.y" /* yacc.c:1651 */
{ yyerrok; }
-#line 4267 "awkgram.c" /* yacc.c:1651 */
+#line 4301 "awkgram.c" /* yacc.c:1651 */
break;
case 199:
-#line 2053 "awkgram.y" /* yacc.c:1651 */
+#line 2081 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = NULL; }
-#line 4273 "awkgram.c" /* yacc.c:1651 */
+#line 4307 "awkgram.c" /* yacc.c:1651 */
break;
case 201:
-#line 2058 "awkgram.y" /* yacc.c:1651 */
+#line 2086 "awkgram.y" /* yacc.c:1651 */
{ yyerrok; }
-#line 4279 "awkgram.c" /* yacc.c:1651 */
+#line 4313 "awkgram.c" /* yacc.c:1651 */
break;
case 202:
-#line 2062 "awkgram.y" /* yacc.c:1651 */
+#line 2090 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); yyerrok; }
-#line 4285 "awkgram.c" /* yacc.c:1651 */
+#line 4319 "awkgram.c" /* yacc.c:1651 */
break;
case 203:
-#line 2066 "awkgram.y" /* yacc.c:1651 */
+#line 2094 "awkgram.y" /* yacc.c:1651 */
{ (yyval) = (yyvsp[0]); yyerrok; }
-#line 4291 "awkgram.c" /* yacc.c:1651 */
+#line 4325 "awkgram.c" /* yacc.c:1651 */
break;
-#line 4295 "awkgram.c" /* yacc.c:1651 */
+#line 4329 "awkgram.c" /* yacc.c:1651 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -4519,7 +4553,7 @@ yyreturn:
#endif
return yyresult;
}
-#line 2068 "awkgram.y" /* yacc.c:1910 */
+#line 2096 "awkgram.y" /* yacc.c:1910 */
struct token {
@@ -5811,6 +5845,7 @@ yylex(void)
bool intlstr = false;
AWKNUM d;
bool collecting_typed_regexp = false;
+ static int qm_col_count = 0;
#define GET_INSTRUCTION(op) bcalloc(op, 1, sourceline)
@@ -6062,13 +6097,18 @@ retry:
}
break;
- case ':':
case '?':
+ qm_col_count++;
+ // fall through
+ case ':':
yylval = GET_INSTRUCTION(Op_cond_exp);
- if (! do_posix) {
- INSTRUCTION *new_comment = NULL;
- allow_newline(& new_comment);
- yylval->comment = new_comment;
+ if (c == ':' && qm_col_count > 0) {
+ if (do_posix) {
+ INSTRUCTION *new_comment = NULL;
+ allow_newline(& new_comment);
+ yylval->comment = new_comment;
+ }
+ qm_col_count--;
}
return lasttok = c;