gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, print-exp, updated. gawk-4.1.0-1034-ga8d


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, print-exp, updated. gawk-4.1.0-1034-ga8db21f
Date: Wed, 07 Jan 2015 20:37:42 +0000

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

The branch, print-exp has been updated
       via  a8db21f1aea3b7bbab39a423aad61571dbe2b0ec (commit)
       via  2ff844d50c0ecbc4dc660cf7e8989476f56fb3e7 (commit)
       via  b1f63ac08d7da89ac7e8af4df5ca835527fc5b24 (commit)
       via  f70399532bd105c5f42ca040846aa537a8fa27bc (commit)
       via  385f22a32c3794615d713e519ae290eb09b2c4d2 (commit)
       via  9fc264e33c0fcc77ed18860a47bea824d75daebd (commit)
      from  a88f91fd9c89c618ea91150d79937f97626d7ef1 (commit)

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

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

commit a8db21f1aea3b7bbab39a423aad61571dbe2b0ec
Merge: a88f91f 2ff844d
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:37:34 2015 +0200

    Merge branch 'master' into print-exp

diff --cc ChangeLog
index ba7c032,f3af860..3335da3
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,45 -1,21 +1,62 @@@
- <<<<<<< HEAD
+ 2015-01-07         Arnold D. Robbins     <address@hidden>
+ 
+       * configure.ac: Update debug flags if developing.
+       * awkgram.y (yylex): Regex parsing bug fix for bracket expressions.
+       Thanks to Mike Brennan for the report.
+       * builtin.c (format_tree): Catch non-use of count$ for dynamic
+       field width or precision.
+ 
+       Unrelated:
+ 
+       Load deferred variables if extensions are used; they might
+       want to access PROCINFO and/or ENVIRON. Thanks to Andrew Schorr
+       for pointing out the issue.
+ 
+       * awkgram.y (extensions_used): New variable. Set it on @load.
+       (do_add_scrfile): Set it on -l.
+       (process_deferred): Check it also.
+ 
 +2014-12-09         Arnold D. Robbins     <address@hidden>
 +
 +      * builtin.c (do_printf): Allow for error return from redirect, pass
 +      in the can_fatal value.
 +      (do_print_rec, do_print): Ditto.
 +      * interpret.h (run_print_command): New function.
 +      (r_interpret): Use it in the right places.
 +      * io.c (redirect): Add boolean allow_fatal parameter. Use it.
 +      * profile.c (pprint): Handle expression versions of print - stack
 +      the results if needed.
 +
 +2014-12-08         Arnold D. Robbins     <address@hidden>
 +
 +      * awk.h: Additional codes for the expression versions of print,
 +      printf, and print_rec.
 +      (do_print, do_printf, do_print_rec): Return NODE *, take additional
 +      boolean parameter.
 +      * awkgram.y (yylex): Improve scanner hack some.
 +      (mk_print): Use the right opcodes.
 +      * builtin.c (efwrite): Return ssize_t which is number of bytes written.
 +      Add a parameter for if can fatal or not.
 +      (do_print): Return NODE with number bytes written; fatal based
 +      parameter setting.
 +      (do_printf): Ditto.
 +      (do_print_rec): Ditto.
 +      * eval.c (optypetab): Update.
 +      * interpret.h (r_interpret): Handle the different versions of
 +      print/printf: expression vs. statement. This could be cleaned
 +      up a bit more.
 +
 +2014-12-06         Arnold D. Robbins     <address@hidden>
 +
 +      Start on changes to allow print/printf to return a value.
 +
 +      * awkgram.y (LEX_PRINT_EXP, LEX_PRINTF_EXP): New tokens.
 +      (print_expression, print_exp): New non-terminals.
 +      (mk_print): New function.
 +      (exp -> print_expression): Add new production.
 +      (yylex): Ugly hack on the scanner to return the expression version
 +      of the tokens if not in a statement sort of context.
- =======
++
  2014-12-24         Arnold D. Robbins     <address@hidden>
  
        * profile.c (pprint): Be sure to set ip2 in all paths
diff --cc awkgram.c
index 433ca3a,4051b75..5116192
--- a/awkgram.c
+++ b/awkgram.c
@@@ -206,7 -206,7 +207,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
--#line 210 "awkgram.c" /* yacc.c:339  */
++#line 211 "awkgram.c" /* yacc.c:339  */
  
  # ifndef YY_NULLPTR
  #  if defined __cplusplus && 201103L <= __cplusplus
@@@ -364,7 -360,7 +365,7 @@@ int yyparse (void)
  
  /* Copy the second part of user declarations.  */
  
- #line 368 "awkgram.c" /* yacc.c:358  */
 -#line 364 "awkgram.c" /* yacc.c:358  */
++#line 369 "awkgram.c" /* yacc.c:358  */
  
  #ifdef short
  # undef short
@@@ -667,26 -662,25 +668,26 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   210,   210,   212,   217,   218,   224,   236,   240,   251,
-      257,   262,   270,   278,   280,   285,   293,   295,   301,   309,
-      319,   349,   363,   377,   385,   396,   408,   410,   412,   418,
-      423,   424,   428,   463,   462,   496,   498,   503,   509,   537,
-      542,   543,   547,   549,   551,   558,   648,   690,   732,   845,
-      852,   859,   869,   878,   887,   896,   907,   923,   922,   946,
-      950,   950,   965,   965,   970,   970,  1003,  1033,  1039,  1040,
-     1046,  1047,  1054,  1059,  1071,  1085,  1087,  1095,  1100,  1102,
-     1110,  1112,  1117,  1119,  1128,  1129,  1137,  1142,  1142,  1153,
-     1157,  1165,  1166,  1169,  1171,  1176,  1177,  1186,  1187,  1192,
-     1197,  1203,  1205,  1207,  1214,  1215,  1221,  1222,  1227,  1229,
-     1234,  1236,  1244,  1249,  1258,  1265,  1267,  1269,  1285,  1295,
-     1302,  1304,  1306,  1311,  1313,  1315,  1323,  1325,  1330,  1332,
-     1337,  1339,  1341,  1391,  1393,  1395,  1397,  1399,  1401,  1403,
-     1405,  1419,  1424,  1429,  1454,  1460,  1462,  1464,  1466,  1468,
-     1470,  1475,  1479,  1511,  1513,  1519,  1525,  1538,  1539,  1540,
-     1545,  1550,  1554,  1558,  1573,  1586,  1591,  1627,  1645,  1646,
-     1652,  1653,  1658,  1660,  1667,  1684,  1701,  1703,  1710,  1715,
-     1723,  1733,  1745,  1754,  1758,  1762,  1766,  1770,  1774,  1777,
-     1779,  1783,  1787,  1791
 -       0,   209,   209,   211,   216,   217,   223,   235,   239,   250,
 -     256,   261,   269,   277,   279,   284,   293,   295,   301,   309,
 -     319,   349,   363,   377,   385,   396,   408,   410,   412,   418,
 -     423,   424,   428,   463,   462,   496,   498,   503,   509,   537,
 -     542,   543,   547,   549,   551,   558,   648,   690,   732,   845,
 -     852,   859,   869,   878,   887,   896,   907,   923,   922,   946,
 -     958,   958,  1056,  1056,  1089,  1119,  1125,  1126,  1132,  1133,
 -    1140,  1145,  1157,  1171,  1173,  1181,  1186,  1188,  1196,  1198,
 -    1207,  1208,  1216,  1221,  1221,  1232,  1236,  1244,  1245,  1248,
 -    1250,  1255,  1256,  1265,  1266,  1271,  1276,  1282,  1284,  1286,
 -    1293,  1294,  1300,  1301,  1306,  1308,  1313,  1315,  1323,  1328,
 -    1337,  1344,  1346,  1348,  1364,  1374,  1381,  1383,  1388,  1390,
 -    1392,  1400,  1402,  1407,  1409,  1414,  1416,  1418,  1468,  1470,
 -    1472,  1474,  1476,  1478,  1480,  1482,  1496,  1501,  1506,  1531,
 -    1537,  1539,  1541,  1543,  1545,  1547,  1552,  1556,  1588,  1590,
 -    1596,  1602,  1615,  1616,  1617,  1622,  1627,  1631,  1635,  1650,
 -    1663,  1668,  1704,  1722,  1723,  1729,  1730,  1735,  1737,  1744,
 -    1761,  1778,  1780,  1787,  1792,  1800,  1810,  1822,  1831,  1835,
 -    1839,  1843,  1847,  1851,  1854,  1856,  1860,  1864,  1868
++       0,   211,   211,   213,   218,   219,   225,   237,   241,   252,
++     258,   263,   271,   279,   281,   286,   295,   297,   303,   311,
++     321,   351,   365,   379,   387,   398,   410,   412,   414,   420,
++     425,   426,   430,   465,   464,   498,   500,   505,   511,   539,
++     544,   545,   549,   551,   553,   560,   650,   692,   734,   847,
++     854,   861,   871,   880,   889,   898,   909,   925,   924,   948,
++     952,   952,   967,   967,   972,   972,  1005,  1035,  1041,  1042,
++    1048,  1049,  1056,  1061,  1073,  1087,  1089,  1097,  1102,  1104,
++    1112,  1114,  1119,  1121,  1130,  1131,  1139,  1144,  1144,  1155,
++    1159,  1167,  1168,  1171,  1173,  1178,  1179,  1188,  1189,  1194,
++    1199,  1205,  1207,  1209,  1216,  1217,  1223,  1224,  1229,  1231,
++    1236,  1238,  1246,  1251,  1260,  1267,  1269,  1271,  1287,  1297,
++    1304,  1306,  1308,  1313,  1315,  1317,  1325,  1327,  1332,  1334,
++    1339,  1341,  1343,  1393,  1395,  1397,  1399,  1401,  1403,  1405,
++    1407,  1421,  1426,  1431,  1456,  1462,  1464,  1466,  1468,  1470,
++    1472,  1477,  1481,  1513,  1515,  1521,  1527,  1540,  1541,  1542,
++    1547,  1552,  1556,  1560,  1575,  1588,  1593,  1629,  1647,  1648,
++    1654,  1655,  1660,  1662,  1669,  1686,  1703,  1705,  1712,  1717,
++    1725,  1735,  1747,  1756,  1760,  1764,  1768,  1772,  1776,  1779,
++    1781,  1785,  1789,  1793
  };
  #endif
  
@@@ -1906,26 -1853,26 +1907,26 @@@ yyreduce
    switch (yyn)
      {
          case 3:
- #line 213 "awkgram.y" /* yacc.c:1646  */
 -#line 212 "awkgram.y" /* yacc.c:1646  */
++#line 214 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                yyerrok;
          }
- #line 1915 "awkgram.c" /* yacc.c:1646  */
 -#line 1862 "awkgram.c" /* yacc.c:1646  */
++#line 1916 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 5:
- #line 219 "awkgram.y" /* yacc.c:1646  */
 -#line 218 "awkgram.y" /* yacc.c:1646  */
++#line 220 "awkgram.y" /* yacc.c:1646  */
      {
                next_sourcefile();
                if (sourcefile == srcfiles)
                        process_deferred();
          }
- #line 1925 "awkgram.c" /* yacc.c:1646  */
 -#line 1872 "awkgram.c" /* yacc.c:1646  */
++#line 1926 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 6:
- #line 225 "awkgram.y" /* yacc.c:1646  */
 -#line 224 "awkgram.y" /* yacc.c:1646  */
++#line 226 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                /*
@@@ -1934,19 -1881,19 +1935,19 @@@
                 */
                /* yyerrok; */
          }
- #line 1938 "awkgram.c" /* yacc.c:1646  */
 -#line 1885 "awkgram.c" /* yacc.c:1646  */
++#line 1939 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 7:
- #line 237 "awkgram.y" /* yacc.c:1646  */
 -#line 236 "awkgram.y" /* yacc.c:1646  */
++#line 238 "awkgram.y" /* yacc.c:1646  */
      {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
          }
- #line 1946 "awkgram.c" /* yacc.c:1646  */
 -#line 1893 "awkgram.c" /* yacc.c:1646  */
++#line 1947 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 8:
- #line 241 "awkgram.y" /* yacc.c:1646  */
 -#line 240 "awkgram.y" /* yacc.c:1646  */
++#line 242 "awkgram.y" /* yacc.c:1646  */
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -1957,39 -1904,39 +1958,39 @@@
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
- #line 1961 "awkgram.c" /* yacc.c:1646  */
 -#line 1908 "awkgram.c" /* yacc.c:1646  */
++#line 1962 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 9:
- #line 252 "awkgram.y" /* yacc.c:1646  */
 -#line 251 "awkgram.y" /* yacc.c:1646  */
++#line 253 "awkgram.y" /* yacc.c:1646  */
      {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
- #line 1971 "awkgram.c" /* yacc.c:1646  */
 -#line 1918 "awkgram.c" /* yacc.c:1646  */
++#line 1972 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 10:
- #line 258 "awkgram.y" /* yacc.c:1646  */
 -#line 257 "awkgram.y" /* yacc.c:1646  */
++#line 259 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1980 "awkgram.c" /* yacc.c:1646  */
 -#line 1927 "awkgram.c" /* yacc.c:1646  */
++#line 1981 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 11:
- #line 263 "awkgram.y" /* yacc.c:1646  */
 -#line 262 "awkgram.y" /* yacc.c:1646  */
++#line 264 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1989 "awkgram.c" /* yacc.c:1646  */
 -#line 1936 "awkgram.c" /* yacc.c:1646  */
++#line 1990 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 12:
- #line 271 "awkgram.y" /* yacc.c:1646  */
 -#line 270 "awkgram.y" /* yacc.c:1646  */
++#line 272 "awkgram.y" /* yacc.c:1646  */
      {
                if (include_source((yyvsp[0])) < 0)
                        YYABORT;
@@@ -1997,47 -1944,48 +1998,48 @@@
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 2001 "awkgram.c" /* yacc.c:1646  */
 -#line 1948 "awkgram.c" /* yacc.c:1646  */
++#line 2002 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 13:
- #line 279 "awkgram.y" /* yacc.c:1646  */
 -#line 278 "awkgram.y" /* yacc.c:1646  */
++#line 280 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2007 "awkgram.c" /* yacc.c:1646  */
 -#line 1954 "awkgram.c" /* yacc.c:1646  */
++#line 2008 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 14:
- #line 281 "awkgram.y" /* yacc.c:1646  */
 -#line 280 "awkgram.y" /* yacc.c:1646  */
++#line 282 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2013 "awkgram.c" /* yacc.c:1646  */
 -#line 1960 "awkgram.c" /* yacc.c:1646  */
++#line 2014 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 15:
- #line 286 "awkgram.y" /* yacc.c:1646  */
 -#line 285 "awkgram.y" /* yacc.c:1646  */
++#line 287 "awkgram.y" /* yacc.c:1646  */
      {
+               extensions_used = true;
                if (load_library((yyvsp[0])) < 0)
                        YYABORT;
                efree((yyvsp[0])->lextok);
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 2025 "awkgram.c" /* yacc.c:1646  */
 -#line 1973 "awkgram.c" /* yacc.c:1646  */
++#line 2027 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 16:
--#line 294 "awkgram.y" /* yacc.c:1646  */
++#line 296 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2031 "awkgram.c" /* yacc.c:1646  */
 -#line 1979 "awkgram.c" /* yacc.c:1646  */
++#line 2033 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 17:
--#line 296 "awkgram.y" /* yacc.c:1646  */
++#line 298 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2037 "awkgram.c" /* yacc.c:1646  */
 -#line 1985 "awkgram.c" /* yacc.c:1646  */
++#line 2039 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 18:
--#line 301 "awkgram.y" /* yacc.c:1646  */
++#line 303 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -2046,11 -1994,11 +2048,11 @@@
                } else
                        (yyval) = NULL;
          }
- #line 2050 "awkgram.c" /* yacc.c:1646  */
 -#line 1998 "awkgram.c" /* yacc.c:1646  */
++#line 2052 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 19:
--#line 310 "awkgram.y" /* yacc.c:1646  */
++#line 312 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -2059,11 -2007,11 +2061,11 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 2063 "awkgram.c" /* yacc.c:1646  */
 -#line 2011 "awkgram.c" /* yacc.c:1646  */
++#line 2065 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 20:
--#line 320 "awkgram.y" /* yacc.c:1646  */
++#line 322 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *tp;
  
@@@ -2093,11 -2041,11 +2095,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
- #line 2097 "awkgram.c" /* yacc.c:1646  */
 -#line 2045 "awkgram.c" /* yacc.c:1646  */
++#line 2099 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 21:
--#line 350 "awkgram.y" /* yacc.c:1646  */
++#line 352 "awkgram.y" /* yacc.c:1646  */
      {
                static int begin_seen = 0;
  
@@@ -2111,11 -2059,11 +2113,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2115 "awkgram.c" /* yacc.c:1646  */
 -#line 2063 "awkgram.c" /* yacc.c:1646  */
++#line 2117 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 22:
--#line 364 "awkgram.y" /* yacc.c:1646  */
++#line 366 "awkgram.y" /* yacc.c:1646  */
      {
                static int end_seen = 0;
  
@@@ -2129,11 -2077,11 +2131,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2133 "awkgram.c" /* yacc.c:1646  */
 -#line 2081 "awkgram.c" /* yacc.c:1646  */
++#line 2135 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 23:
--#line 378 "awkgram.y" /* yacc.c:1646  */
++#line 380 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = BEGINFILE;
@@@ -2141,11 -2089,11 +2143,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2145 "awkgram.c" /* yacc.c:1646  */
 -#line 2093 "awkgram.c" /* yacc.c:1646  */
++#line 2147 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 24:
--#line 386 "awkgram.y" /* yacc.c:1646  */
++#line 388 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = ENDFILE;
@@@ -2153,11 -2101,11 +2155,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2157 "awkgram.c" /* yacc.c:1646  */
 -#line 2105 "awkgram.c" /* yacc.c:1646  */
++#line 2159 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 25:
--#line 397 "awkgram.y" /* yacc.c:1646  */
++#line 399 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                if ((yyvsp[-3]) == NULL)
@@@ -2166,39 -2114,39 +2168,39 @@@
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
- #line 2170 "awkgram.c" /* yacc.c:1646  */
 -#line 2118 "awkgram.c" /* yacc.c:1646  */
++#line 2172 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 26:
--#line 409 "awkgram.y" /* yacc.c:1646  */
++#line 411 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2176 "awkgram.c" /* yacc.c:1646  */
 -#line 2124 "awkgram.c" /* yacc.c:1646  */
++#line 2178 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 27:
--#line 411 "awkgram.y" /* yacc.c:1646  */
++#line 413 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2182 "awkgram.c" /* yacc.c:1646  */
 -#line 2130 "awkgram.c" /* yacc.c:1646  */
++#line 2184 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 28:
--#line 413 "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 2192 "awkgram.c" /* yacc.c:1646  */
 -#line 2140 "awkgram.c" /* yacc.c:1646  */
++#line 2194 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 29:
--#line 419 "awkgram.y" /* yacc.c:1646  */
++#line 421 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2198 "awkgram.c" /* yacc.c:1646  */
 -#line 2146 "awkgram.c" /* yacc.c:1646  */
++#line 2200 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 32:
--#line 429 "awkgram.y" /* yacc.c:1646  */
++#line 431 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *  treat any comments between BOF and the first function
@@@ -2225,17 -2173,17 +2227,17 @@@
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
- #line 2229 "awkgram.c" /* yacc.c:1646  */
 -#line 2177 "awkgram.c" /* yacc.c:1646  */
++#line 2231 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 33:
--#line 463 "awkgram.y" /* yacc.c:1646  */
++#line 465 "awkgram.y" /* yacc.c:1646  */
      { want_regexp = true; }
- #line 2235 "awkgram.c" /* yacc.c:1646  */
 -#line 2183 "awkgram.c" /* yacc.c:1646  */
++#line 2237 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 34:
--#line 465 "awkgram.y" /* yacc.c:1646  */
++#line 467 "awkgram.y" /* yacc.c:1646  */
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2264,28 -2212,28 +2266,28 @@@
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
- #line 2268 "awkgram.c" /* yacc.c:1646  */
 -#line 2216 "awkgram.c" /* yacc.c:1646  */
++#line 2270 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 35:
--#line 497 "awkgram.y" /* yacc.c:1646  */
++#line 499 "awkgram.y" /* yacc.c:1646  */
      { bcfree((yyvsp[0])); }
- #line 2274 "awkgram.c" /* yacc.c:1646  */
 -#line 2222 "awkgram.c" /* yacc.c:1646  */
++#line 2276 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 37:
--#line 503 "awkgram.y" /* yacc.c:1646  */
++#line 505 "awkgram.y" /* yacc.c:1646  */
      {
                if (comment != NULL) {
                        (yyval) = list_create(comment);
                        comment = NULL;
                } else (yyval) = NULL;
          }
- #line 2285 "awkgram.c" /* yacc.c:1646  */
 -#line 2233 "awkgram.c" /* yacc.c:1646  */
++#line 2287 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 38:
--#line 510 "awkgram.y" /* yacc.c:1646  */
++#line 512 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0]) == NULL) {
                        if (comment == NULL)
@@@ -2313,40 -2261,40 +2315,40 @@@
                }
                yyerrok;
          }
- #line 2317 "awkgram.c" /* yacc.c:1646  */
 -#line 2265 "awkgram.c" /* yacc.c:1646  */
++#line 2319 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 39:
--#line 538 "awkgram.y" /* yacc.c:1646  */
++#line 540 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2323 "awkgram.c" /* yacc.c:1646  */
 -#line 2271 "awkgram.c" /* yacc.c:1646  */
++#line 2325 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 42:
--#line 548 "awkgram.y" /* yacc.c:1646  */
++#line 550 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2329 "awkgram.c" /* yacc.c:1646  */
 -#line 2277 "awkgram.c" /* yacc.c:1646  */
++#line 2331 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 43:
--#line 550 "awkgram.y" /* yacc.c:1646  */
++#line 552 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 2335 "awkgram.c" /* yacc.c:1646  */
 -#line 2283 "awkgram.c" /* yacc.c:1646  */
++#line 2337 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 44:
--#line 552 "awkgram.y" /* yacc.c:1646  */
++#line 554 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2346 "awkgram.c" /* yacc.c:1646  */
 -#line 2294 "awkgram.c" /* yacc.c:1646  */
++#line 2348 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 45:
--#line 559 "awkgram.y" /* yacc.c:1646  */
++#line 561 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2436,11 -2384,11 +2438,11 @@@
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2440 "awkgram.c" /* yacc.c:1646  */
 -#line 2388 "awkgram.c" /* yacc.c:1646  */
++#line 2442 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 46:
--#line 649 "awkgram.y" /* yacc.c:1646  */
++#line 651 "awkgram.y" /* yacc.c:1646  */
      { 
                /*
                 *    -----------------
@@@ -2482,11 -2430,11 +2484,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2486 "awkgram.c" /* yacc.c:1646  */
 -#line 2434 "awkgram.c" /* yacc.c:1646  */
++#line 2488 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 47:
--#line 691 "awkgram.y" /* yacc.c:1646  */
++#line 693 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *    -----------------
@@@ -2528,11 -2476,11 +2530,11 @@@
                } /* else
                        $1 and $4 are NULLs */
          }
- #line 2532 "awkgram.c" /* yacc.c:1646  */
 -#line 2480 "awkgram.c" /* yacc.c:1646  */
++#line 2534 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 48:
--#line 733 "awkgram.y" /* yacc.c:1646  */
++#line 735 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@@ -2645,44 -2593,44 +2647,44 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2649 "awkgram.c" /* yacc.c:1646  */
 -#line 2597 "awkgram.c" /* yacc.c:1646  */
++#line 2651 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 49:
--#line 846 "awkgram.y" /* yacc.c:1646  */
++#line 848 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2660 "awkgram.c" /* yacc.c:1646  */
 -#line 2608 "awkgram.c" /* yacc.c:1646  */
++#line 2662 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 50:
--#line 853 "awkgram.y" /* yacc.c:1646  */
++#line 855 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2671 "awkgram.c" /* yacc.c:1646  */
 -#line 2619 "awkgram.c" /* yacc.c:1646  */
++#line 2673 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 51:
--#line 860 "awkgram.y" /* yacc.c:1646  */
++#line 862 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2682 "awkgram.c" /* yacc.c:1646  */
 -#line 2630 "awkgram.c" /* yacc.c:1646  */
++#line 2684 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 52:
--#line 870 "awkgram.y" /* yacc.c:1646  */
++#line 872 "awkgram.y" /* yacc.c:1646  */
      { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2691,11 -2639,11 +2693,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2695 "awkgram.c" /* yacc.c:1646  */
 -#line 2643 "awkgram.c" /* yacc.c:1646  */
++#line 2697 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 53:
--#line 879 "awkgram.y" /* yacc.c:1646  */
++#line 881 "awkgram.y" /* yacc.c:1646  */
      {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2704,11 -2652,11 +2706,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2708 "awkgram.c" /* yacc.c:1646  */
 -#line 2656 "awkgram.c" /* yacc.c:1646  */
++#line 2710 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 54:
--#line 888 "awkgram.y" /* yacc.c:1646  */
++#line 890 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2717,11 -2665,11 +2719,11 @@@
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2721 "awkgram.c" /* yacc.c:1646  */
 -#line 2669 "awkgram.c" /* yacc.c:1646  */
++#line 2723 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 55:
--#line 897 "awkgram.y" /* yacc.c:1646  */
++#line 899 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2732,11 -2680,11 +2734,11 @@@
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2736 "awkgram.c" /* yacc.c:1646  */
 -#line 2684 "awkgram.c" /* yacc.c:1646  */
++#line 2738 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 56:
--#line 908 "awkgram.y" /* yacc.c:1646  */
++#line 910 "awkgram.y" /* yacc.c:1646  */
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2751,20 -2699,20 +2753,20 @@@
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
- #line 2755 "awkgram.c" /* yacc.c:1646  */
 -#line 2703 "awkgram.c" /* yacc.c:1646  */
++#line 2757 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 57:
--#line 923 "awkgram.y" /* yacc.c:1646  */
++#line 925 "awkgram.y" /* yacc.c:1646  */
      {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 2764 "awkgram.c" /* yacc.c:1646  */
 -#line 2712 "awkgram.c" /* yacc.c:1646  */
++#line 2766 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 58:
--#line 926 "awkgram.y" /* yacc.c:1646  */
++#line 928 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@@ -2785,45 -2733,124 +2787,45 @@@
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
- #line 2789 "awkgram.c" /* yacc.c:1646  */
 -#line 2737 "awkgram.c" /* yacc.c:1646  */
++#line 2791 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 60:
- #line 950 "awkgram.y" /* yacc.c:1646  */
 -#line 958 "awkgram.y" /* yacc.c:1646  */
++#line 952 "awkgram.y" /* yacc.c:1646  */
      { in_print = true; in_parens = 0; }
- #line 2795 "awkgram.c" /* yacc.c:1646  */
 -#line 2743 "awkgram.c" /* yacc.c:1646  */
++#line 2797 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 61:
- #line 951 "awkgram.y" /* yacc.c:1646  */
 -#line 959 "awkgram.y" /* yacc.c:1646  */
++#line 953 "awkgram.y" /* yacc.c:1646  */
      {
 -              /*
 -               * Optimization: plain `print' has no expression list, so $3 is 
null.
 -               * If $3 is NULL or is a bytecode list for $0 use 
Op_K_print_rec,
 -               * which is faster for these two cases.
 -               */
 -
 -              if ((yyvsp[-3])->opcode == Op_K_print &&
 -                      ((yyvsp[-1]) == NULL
 -                              || ((yyvsp[-1])->lasti->opcode == Op_field_spec
 -                                      && (yyvsp[-1])->nexti->nexti->nexti == 
(yyvsp[-1])->lasti
 -                                      && (yyvsp[-1])->nexti->nexti->opcode == 
Op_push_i
 -                                      && 
(yyvsp[-1])->nexti->nexti->memory->type == Node_val)
 -                      )
 -              ) {
 -                      static bool warned = false;
 -                      /*   -----------------
 -                       *      output_redir
 -                       *    [ redirect exp ]
 -                       *   -----------------
 -                       *     expression_list
 -                       *   ------------------
 -                       *    [Op_K_print_rec | NULL | redir_type | expr_count]
 -                       */
 -
 -                      if ((yyvsp[-1]) != NULL) {
 -                              NODE *n = (yyvsp[-1])->nexti->nexti->memory;
 -
 -                              if (! iszero(n))
 -                                      goto regular_print;
 +              (yyval) = mk_print((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
 +        }
- #line 2803 "awkgram.c" /* yacc.c:1646  */
++#line 2805 "awkgram.c" /* yacc.c:1646  */
 +    break;
  
 -                              bcfree((yyvsp[-1])->lasti);                     
/* Op_field_spec */
 -                              unref(n);                               /* 
Node_val */
 -                              bcfree((yyvsp[-1])->nexti->nexti);              
/* Op_push_i */
 -                              bcfree((yyvsp[-1])->nexti);                     
/* Op_list */
 -                              bcfree((yyvsp[-1]));                            
/* Op_list */
 -                      } else {
 -                              if (do_lint && (rule == BEGIN || rule == END) 
&& ! warned) {
 -                                      warned = true;
 -                                      lintwarn_ln((yyvsp[-3])->source_line,
 -              _("plain `print' in BEGIN or END rule should probably be `print 
\"\"'"));
 -                              }
 -                      }
 +  case 62:
- #line 965 "awkgram.y" /* yacc.c:1646  */
++#line 967 "awkgram.y" /* yacc.c:1646  */
 +    { in_print = true; in_parens = 0; }
- #line 2809 "awkgram.c" /* yacc.c:1646  */
++#line 2811 "awkgram.c" /* yacc.c:1646  */
 +    break;
  
 -                      (yyvsp[-3])->expr_count = 0;
 -                      (yyvsp[-3])->opcode = Op_K_print_rec;
 -                      if ((yyvsp[0]) == NULL) {    /* no redircetion */
 -                              (yyvsp[-3])->redir_type = redirect_none;
 -                              (yyval) = list_create((yyvsp[-3]));
 -                      } else {
 -                              INSTRUCTION *ip;
 -                              ip = (yyvsp[0])->nexti;
 -                              (yyvsp[-3])->redir_type = ip->redir_type;
 -                              (yyvsp[0])->nexti = ip->nexti;
 -                              bcfree(ip);
 -                              (yyval) = list_append((yyvsp[0]), (yyvsp[-3]));
 -                      }
 -              } else {
 -                      /*   -----------------
 -                       *    [ output_redir    ]
 -                       *    [ redirect exp    ]
 -                       *   -----------------
 -                       *    [ expression_list ]
 -                       *   ------------------
 -                       *    [$1 | NULL | redir_type | expr_count]
 -                       *
 -                       */
 -regular_print:         
 -                      if ((yyvsp[0]) == NULL) {               /* no 
redirection */
 -                              if ((yyvsp[-1]) == NULL)        {       /* 
printf without arg */
 -                                      (yyvsp[-3])->expr_count = 0;
 -                                      (yyvsp[-3])->redir_type = redirect_none;
 -                                      (yyval) = list_create((yyvsp[-3]));
 -                              } else {
 -                                      INSTRUCTION *t = (yyvsp[-1]);
 -                                      (yyvsp[-3])->expr_count = 
count_expressions(&t, false);
 -                                      (yyvsp[-3])->redir_type = redirect_none;
 -                                      (yyval) = list_append(t, (yyvsp[-3]));
 -                              }
 -                      } else {
 -                              INSTRUCTION *ip;
 -                              ip = (yyvsp[0])->nexti;
 -                              (yyvsp[-3])->redir_type = ip->redir_type;
 -                              (yyvsp[0])->nexti = ip->nexti;
 -                              bcfree(ip);
 -                              if ((yyvsp[-1]) == NULL) {
 -                                      (yyvsp[-3])->expr_count = 0;
 -                                      (yyval) = list_append((yyvsp[0]), 
(yyvsp[-3]));
 -                              } else {
 -                                      INSTRUCTION *t = (yyvsp[-1]);
 -                                      (yyvsp[-3])->expr_count = 
count_expressions(&t, false);
 -                                      (yyval) = 
list_append(list_merge((yyvsp[0]), t), (yyvsp[-3]));
 -                              }
 -                      }
 -              }
 +  case 63:
- #line 966 "awkgram.y" /* yacc.c:1646  */
++#line 968 "awkgram.y" /* yacc.c:1646  */
 +    {
 +              (yyval) = mk_print((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
          }
- #line 2817 "awkgram.c" /* yacc.c:1646  */
 -#line 2844 "awkgram.c" /* yacc.c:1646  */
++#line 2819 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 62:
 -#line 1056 "awkgram.y" /* yacc.c:1646  */
 +  case 64:
- #line 970 "awkgram.y" /* yacc.c:1646  */
++#line 972 "awkgram.y" /* yacc.c:1646  */
      { sub_counter = 0; }
- #line 2823 "awkgram.c" /* yacc.c:1646  */
 -#line 2850 "awkgram.c" /* yacc.c:1646  */
++#line 2825 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 63:
 -#line 1057 "awkgram.y" /* yacc.c:1646  */
 +  case 65:
- #line 971 "awkgram.y" /* yacc.c:1646  */
++#line 973 "awkgram.y" /* yacc.c:1646  */
      {
                char *arr = (yyvsp[-2])->lextok;
  
@@@ -2856,11 -2883,11 +2858,11 @@@
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
- #line 2860 "awkgram.c" /* yacc.c:1646  */
 -#line 2887 "awkgram.c" /* yacc.c:1646  */
++#line 2862 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 64:
 -#line 1094 "awkgram.y" /* yacc.c:1646  */
 +  case 66:
- #line 1008 "awkgram.y" /* yacc.c:1646  */
++#line 1010 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@@ -2886,52 -2913,52 +2888,52 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 2890 "awkgram.c" /* yacc.c:1646  */
 -#line 2917 "awkgram.c" /* yacc.c:1646  */
++#line 2892 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 65:
 -#line 1120 "awkgram.y" /* yacc.c:1646  */
 +  case 67:
- #line 1034 "awkgram.y" /* yacc.c:1646  */
++#line 1036 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = optimize_assignment((yyvsp[0])); }
- #line 2896 "awkgram.c" /* yacc.c:1646  */
 -#line 2923 "awkgram.c" /* yacc.c:1646  */
++#line 2898 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 66:
 -#line 1125 "awkgram.y" /* yacc.c:1646  */
 +  case 68:
- #line 1039 "awkgram.y" /* yacc.c:1646  */
++#line 1041 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2902 "awkgram.c" /* yacc.c:1646  */
 -#line 2929 "awkgram.c" /* yacc.c:1646  */
++#line 2904 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 67:
 -#line 1127 "awkgram.y" /* yacc.c:1646  */
 +  case 69:
- #line 1041 "awkgram.y" /* yacc.c:1646  */
++#line 1043 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2908 "awkgram.c" /* yacc.c:1646  */
 -#line 2935 "awkgram.c" /* yacc.c:1646  */
++#line 2910 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 68:
 -#line 1132 "awkgram.y" /* yacc.c:1646  */
 +  case 70:
- #line 1046 "awkgram.y" /* yacc.c:1646  */
++#line 1048 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2914 "awkgram.c" /* yacc.c:1646  */
 -#line 2941 "awkgram.c" /* yacc.c:1646  */
++#line 2916 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 69:
 -#line 1134 "awkgram.y" /* yacc.c:1646  */
 +  case 71:
- #line 1048 "awkgram.y" /* yacc.c:1646  */
++#line 1050 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
- #line 2925 "awkgram.c" /* yacc.c:1646  */
 -#line 2952 "awkgram.c" /* yacc.c:1646  */
++#line 2927 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 70:
 -#line 1141 "awkgram.y" /* yacc.c:1646  */
 +  case 72:
- #line 1055 "awkgram.y" /* yacc.c:1646  */
++#line 1057 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2931 "awkgram.c" /* yacc.c:1646  */
 -#line 2958 "awkgram.c" /* yacc.c:1646  */
++#line 2933 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 71:
 -#line 1146 "awkgram.y" /* yacc.c:1646  */
 +  case 73:
- #line 1060 "awkgram.y" /* yacc.c:1646  */
++#line 1062 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2943,11 -2970,11 +2945,11 @@@
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
- #line 2947 "awkgram.c" /* yacc.c:1646  */
 -#line 2974 "awkgram.c" /* yacc.c:1646  */
++#line 2949 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 72:
 -#line 1158 "awkgram.y" /* yacc.c:1646  */
 +  case 74:
- #line 1072 "awkgram.y" /* yacc.c:1646  */
++#line 1074 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2958,17 -2985,17 +2960,17 @@@
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
- #line 2962 "awkgram.c" /* yacc.c:1646  */
 -#line 2989 "awkgram.c" /* yacc.c:1646  */
++#line 2964 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 73:
 -#line 1172 "awkgram.y" /* yacc.c:1646  */
 +  case 75:
- #line 1086 "awkgram.y" /* yacc.c:1646  */
++#line 1088 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2968 "awkgram.c" /* yacc.c:1646  */
 -#line 2995 "awkgram.c" /* yacc.c:1646  */
++#line 2970 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 74:
 -#line 1174 "awkgram.y" /* yacc.c:1646  */
 +  case 76:
- #line 1088 "awkgram.y" /* yacc.c:1646  */
++#line 1090 "awkgram.y" /* yacc.c:1646  */
      { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@@ -2976,83 -3003,71 +2978,83 @@@
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 2980 "awkgram.c" /* yacc.c:1646  */
 -#line 3007 "awkgram.c" /* yacc.c:1646  */
++#line 2982 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 75:
 -#line 1182 "awkgram.y" /* yacc.c:1646  */
 +  case 77:
- #line 1096 "awkgram.y" /* yacc.c:1646  */
++#line 1098 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 2989 "awkgram.c" /* yacc.c:1646  */
 -#line 3016 "awkgram.c" /* yacc.c:1646  */
++#line 2991 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 76:
 -#line 1187 "awkgram.y" /* yacc.c:1646  */
 +  case 78:
- #line 1101 "awkgram.y" /* yacc.c:1646  */
++#line 1103 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2995 "awkgram.c" /* yacc.c:1646  */
 -#line 3022 "awkgram.c" /* yacc.c:1646  */
++#line 2997 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 77:
 -#line 1189 "awkgram.y" /* yacc.c:1646  */
 +  case 79:
- #line 1103 "awkgram.y" /* yacc.c:1646  */
++#line 1105 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
- #line 3004 "awkgram.c" /* yacc.c:1646  */
 -#line 3031 "awkgram.c" /* yacc.c:1646  */
++#line 3006 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 78:
 -#line 1197 "awkgram.y" /* yacc.c:1646  */
 +  case 80:
- #line 1111 "awkgram.y" /* yacc.c:1646  */
++#line 1113 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3010 "awkgram.c" /* yacc.c:1646  */
 -#line 3037 "awkgram.c" /* yacc.c:1646  */
++#line 3012 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 79:
 -#line 1199 "awkgram.y" /* yacc.c:1646  */
 +  case 81:
- #line 1113 "awkgram.y" /* yacc.c:1646  */
++#line 1115 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3016 "awkgram.c" /* yacc.c:1646  */
 -#line 3043 "awkgram.c" /* yacc.c:1646  */
++#line 3018 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 81:
 -#line 1209 "awkgram.y" /* yacc.c:1646  */
 +  case 82:
- #line 1118 "awkgram.y" /* yacc.c:1646  */
++#line 1120 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3022 "awkgram.c" /* yacc.c:1646  */
++#line 3024 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 83:
- #line 1120 "awkgram.y" /* yacc.c:1646  */
++#line 1122 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3028 "awkgram.c" /* yacc.c:1646  */
++#line 3030 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 85:
- #line 1130 "awkgram.y" /* yacc.c:1646  */
++#line 1132 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = (yyvsp[-1]);
          }
- #line 3036 "awkgram.c" /* yacc.c:1646  */
 -#line 3051 "awkgram.c" /* yacc.c:1646  */
++#line 3038 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 82:
 -#line 1216 "awkgram.y" /* yacc.c:1646  */
 +  case 86:
- #line 1137 "awkgram.y" /* yacc.c:1646  */
++#line 1139 "awkgram.y" /* yacc.c:1646  */
      {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
- #line 3046 "awkgram.c" /* yacc.c:1646  */
 -#line 3061 "awkgram.c" /* yacc.c:1646  */
++#line 3048 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 83:
 -#line 1221 "awkgram.y" /* yacc.c:1646  */
 +  case 87:
- #line 1142 "awkgram.y" /* yacc.c:1646  */
++#line 1144 "awkgram.y" /* yacc.c:1646  */
      { in_print = false; in_parens = 0; }
- #line 3052 "awkgram.c" /* yacc.c:1646  */
 -#line 3067 "awkgram.c" /* yacc.c:1646  */
++#line 3054 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 84:
 -#line 1222 "awkgram.y" /* yacc.c:1646  */
 +  case 88:
- #line 1143 "awkgram.y" /* yacc.c:1646  */
++#line 1145 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@@ -3060,136 -3075,136 +3062,136 @@@
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3064 "awkgram.c" /* yacc.c:1646  */
 -#line 3079 "awkgram.c" /* yacc.c:1646  */
++#line 3066 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 85:
 -#line 1233 "awkgram.y" /* yacc.c:1646  */
 +  case 89:
- #line 1154 "awkgram.y" /* yacc.c:1646  */
++#line 1156 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3072 "awkgram.c" /* yacc.c:1646  */
 -#line 3087 "awkgram.c" /* yacc.c:1646  */
++#line 3074 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 86:
 -#line 1238 "awkgram.y" /* yacc.c:1646  */
 +  case 90:
- #line 1159 "awkgram.y" /* yacc.c:1646  */
++#line 1161 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3080 "awkgram.c" /* yacc.c:1646  */
 -#line 3095 "awkgram.c" /* yacc.c:1646  */
++#line 3082 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 91:
 -#line 1255 "awkgram.y" /* yacc.c:1646  */
 +  case 95:
- #line 1176 "awkgram.y" /* yacc.c:1646  */
++#line 1178 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3086 "awkgram.c" /* yacc.c:1646  */
 -#line 3101 "awkgram.c" /* yacc.c:1646  */
++#line 3088 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 92:
 -#line 1257 "awkgram.y" /* yacc.c:1646  */
 +  case 96:
- #line 1178 "awkgram.y" /* yacc.c:1646  */
++#line 1180 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3095 "awkgram.c" /* yacc.c:1646  */
 -#line 3110 "awkgram.c" /* yacc.c:1646  */
++#line 3097 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 93:
 -#line 1265 "awkgram.y" /* yacc.c:1646  */
 +  case 97:
- #line 1186 "awkgram.y" /* yacc.c:1646  */
++#line 1188 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3101 "awkgram.c" /* yacc.c:1646  */
 -#line 3116 "awkgram.c" /* yacc.c:1646  */
++#line 3103 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 94:
 -#line 1267 "awkgram.y" /* yacc.c:1646  */
 +  case 98:
- #line 1188 "awkgram.y" /* yacc.c:1646  */
++#line 1190 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3107 "awkgram.c" /* yacc.c:1646  */
 -#line 3122 "awkgram.c" /* yacc.c:1646  */
++#line 3109 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 95:
 -#line 1272 "awkgram.y" /* yacc.c:1646  */
 +  case 99:
- #line 1193 "awkgram.y" /* yacc.c:1646  */
++#line 1195 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3116 "awkgram.c" /* yacc.c:1646  */
 -#line 3131 "awkgram.c" /* yacc.c:1646  */
++#line 3118 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 96:
 -#line 1277 "awkgram.y" /* yacc.c:1646  */
 +  case 100:
- #line 1198 "awkgram.y" /* yacc.c:1646  */
++#line 1200 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3126 "awkgram.c" /* yacc.c:1646  */
 -#line 3141 "awkgram.c" /* yacc.c:1646  */
++#line 3128 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 97:
 -#line 1283 "awkgram.y" /* yacc.c:1646  */
 +  case 101:
- #line 1204 "awkgram.y" /* yacc.c:1646  */
++#line 1206 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3132 "awkgram.c" /* yacc.c:1646  */
 -#line 3147 "awkgram.c" /* yacc.c:1646  */
++#line 3134 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 98:
 -#line 1285 "awkgram.y" /* yacc.c:1646  */
 +  case 102:
- #line 1206 "awkgram.y" /* yacc.c:1646  */
++#line 1208 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3138 "awkgram.c" /* yacc.c:1646  */
 -#line 3153 "awkgram.c" /* yacc.c:1646  */
++#line 3140 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 99:
 -#line 1287 "awkgram.y" /* yacc.c:1646  */
 +  case 103:
- #line 1208 "awkgram.y" /* yacc.c:1646  */
++#line 1210 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-2]); }
- #line 3144 "awkgram.c" /* yacc.c:1646  */
 -#line 3159 "awkgram.c" /* yacc.c:1646  */
++#line 3146 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 100:
 -#line 1293 "awkgram.y" /* yacc.c:1646  */
 +  case 104:
- #line 1214 "awkgram.y" /* yacc.c:1646  */
++#line 1216 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3150 "awkgram.c" /* yacc.c:1646  */
 -#line 3165 "awkgram.c" /* yacc.c:1646  */
++#line 3152 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 101:
 -#line 1295 "awkgram.y" /* yacc.c:1646  */
 +  case 105:
- #line 1216 "awkgram.y" /* yacc.c:1646  */
++#line 1218 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3156 "awkgram.c" /* yacc.c:1646  */
 -#line 3171 "awkgram.c" /* yacc.c:1646  */
++#line 3158 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 102:
 -#line 1300 "awkgram.y" /* yacc.c:1646  */
 +  case 106:
- #line 1221 "awkgram.y" /* yacc.c:1646  */
++#line 1223 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3162 "awkgram.c" /* yacc.c:1646  */
 -#line 3177 "awkgram.c" /* yacc.c:1646  */
++#line 3164 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 103:
 -#line 1302 "awkgram.y" /* yacc.c:1646  */
 +  case 107:
- #line 1223 "awkgram.y" /* yacc.c:1646  */
++#line 1225 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3168 "awkgram.c" /* yacc.c:1646  */
 -#line 3183 "awkgram.c" /* yacc.c:1646  */
++#line 3170 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 104:
 -#line 1307 "awkgram.y" /* yacc.c:1646  */
 +  case 108:
- #line 1228 "awkgram.y" /* yacc.c:1646  */
++#line 1230 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3174 "awkgram.c" /* yacc.c:1646  */
 -#line 3189 "awkgram.c" /* yacc.c:1646  */
++#line 3176 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 105:
 -#line 1309 "awkgram.y" /* yacc.c:1646  */
 +  case 109:
- #line 1230 "awkgram.y" /* yacc.c:1646  */
++#line 1232 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3183 "awkgram.c" /* yacc.c:1646  */
 -#line 3198 "awkgram.c" /* yacc.c:1646  */
++#line 3185 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 106:
 -#line 1314 "awkgram.y" /* yacc.c:1646  */
 +  case 110:
- #line 1235 "awkgram.y" /* yacc.c:1646  */
++#line 1237 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3189 "awkgram.c" /* yacc.c:1646  */
 -#line 3204 "awkgram.c" /* yacc.c:1646  */
++#line 3191 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 107:
 -#line 1316 "awkgram.y" /* yacc.c:1646  */
 +  case 111:
- #line 1237 "awkgram.y" /* yacc.c:1646  */
++#line 1239 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3197,52 -3212,52 +3199,52 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3201 "awkgram.c" /* yacc.c:1646  */
 -#line 3216 "awkgram.c" /* yacc.c:1646  */
++#line 3203 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 108:
 -#line 1324 "awkgram.y" /* yacc.c:1646  */
 +  case 112:
- #line 1245 "awkgram.y" /* yacc.c:1646  */
++#line 1247 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3210 "awkgram.c" /* yacc.c:1646  */
 -#line 3225 "awkgram.c" /* yacc.c:1646  */
++#line 3212 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 109:
 -#line 1329 "awkgram.y" /* yacc.c:1646  */
 +  case 113:
- #line 1250 "awkgram.y" /* yacc.c:1646  */
++#line 1252 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3219 "awkgram.c" /* yacc.c:1646  */
 -#line 3234 "awkgram.c" /* yacc.c:1646  */
++#line 3221 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 110:
 -#line 1338 "awkgram.y" /* yacc.c:1646  */
 +  case 114:
- #line 1259 "awkgram.y" /* yacc.c:1646  */
++#line 1261 "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 3230 "awkgram.c" /* yacc.c:1646  */
 -#line 3245 "awkgram.c" /* yacc.c:1646  */
++#line 3232 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 111:
 -#line 1345 "awkgram.y" /* yacc.c:1646  */
 +  case 115:
- #line 1266 "awkgram.y" /* yacc.c:1646  */
++#line 1268 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3236 "awkgram.c" /* yacc.c:1646  */
 -#line 3251 "awkgram.c" /* yacc.c:1646  */
++#line 3238 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 112:
 -#line 1347 "awkgram.y" /* yacc.c:1646  */
 +  case 116:
- #line 1268 "awkgram.y" /* yacc.c:1646  */
++#line 1270 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3242 "awkgram.c" /* yacc.c:1646  */
 -#line 3257 "awkgram.c" /* yacc.c:1646  */
++#line 3244 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 113:
 -#line 1349 "awkgram.y" /* yacc.c:1646  */
 +  case 117:
- #line 1270 "awkgram.y" /* yacc.c:1646  */
++#line 1272 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3258,11 -3273,11 +3260,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3262 "awkgram.c" /* yacc.c:1646  */
 -#line 3277 "awkgram.c" /* yacc.c:1646  */
++#line 3264 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 114:
 -#line 1365 "awkgram.y" /* yacc.c:1646  */
 +  case 118:
- #line 1286 "awkgram.y" /* yacc.c:1646  */
++#line 1288 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3272,97 -3287,91 +3274,97 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3276 "awkgram.c" /* yacc.c:1646  */
 -#line 3291 "awkgram.c" /* yacc.c:1646  */
++#line 3278 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 115:
 -#line 1375 "awkgram.y" /* yacc.c:1646  */
 +  case 119:
- #line 1296 "awkgram.y" /* yacc.c:1646  */
++#line 1298 "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 3287 "awkgram.c" /* yacc.c:1646  */
 -#line 3302 "awkgram.c" /* yacc.c:1646  */
++#line 3289 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 116:
 -#line 1382 "awkgram.y" /* yacc.c:1646  */
 +  case 120:
- #line 1303 "awkgram.y" /* yacc.c:1646  */
++#line 1305 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3293 "awkgram.c" /* yacc.c:1646  */
 -#line 3308 "awkgram.c" /* yacc.c:1646  */
++#line 3295 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 117:
 -#line 1384 "awkgram.y" /* yacc.c:1646  */
 +  case 121:
- #line 1305 "awkgram.y" /* yacc.c:1646  */
++#line 1307 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3299 "awkgram.c" /* yacc.c:1646  */
 -#line 3314 "awkgram.c" /* yacc.c:1646  */
++#line 3301 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 118:
 -#line 1389 "awkgram.y" /* yacc.c:1646  */
 +  case 122:
- #line 1307 "awkgram.y" /* yacc.c:1646  */
++#line 1309 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3305 "awkgram.c" /* yacc.c:1646  */
 -#line 3320 "awkgram.c" /* yacc.c:1646  */
++#line 3307 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 119:
 -#line 1391 "awkgram.y" /* yacc.c:1646  */
 +  case 123:
- #line 1312 "awkgram.y" /* yacc.c:1646  */
++#line 1314 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3311 "awkgram.c" /* yacc.c:1646  */
 -#line 3326 "awkgram.c" /* yacc.c:1646  */
++#line 3313 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 120:
 -#line 1393 "awkgram.y" /* yacc.c:1646  */
 +  case 124:
- #line 1314 "awkgram.y" /* yacc.c:1646  */
++#line 1316 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3317 "awkgram.c" /* yacc.c:1646  */
++#line 3319 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 125:
- #line 1316 "awkgram.y" /* yacc.c:1646  */
++#line 1318 "awkgram.y" /* yacc.c:1646  */
      { 
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
- #line 3326 "awkgram.c" /* yacc.c:1646  */
 -#line 3335 "awkgram.c" /* yacc.c:1646  */
++#line 3328 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 121:
 -#line 1401 "awkgram.y" /* yacc.c:1646  */
 +  case 126:
- #line 1324 "awkgram.y" /* yacc.c:1646  */
++#line 1326 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3332 "awkgram.c" /* yacc.c:1646  */
 -#line 3341 "awkgram.c" /* yacc.c:1646  */
++#line 3334 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 122:
 -#line 1403 "awkgram.y" /* yacc.c:1646  */
 +  case 127:
- #line 1326 "awkgram.y" /* yacc.c:1646  */
++#line 1328 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3338 "awkgram.c" /* yacc.c:1646  */
 -#line 3347 "awkgram.c" /* yacc.c:1646  */
++#line 3340 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 123:
 -#line 1408 "awkgram.y" /* yacc.c:1646  */
 +  case 128:
- #line 1331 "awkgram.y" /* yacc.c:1646  */
++#line 1333 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3344 "awkgram.c" /* yacc.c:1646  */
 -#line 3353 "awkgram.c" /* yacc.c:1646  */
++#line 3346 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 124:
 -#line 1410 "awkgram.y" /* yacc.c:1646  */
 +  case 129:
- #line 1333 "awkgram.y" /* yacc.c:1646  */
++#line 1335 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3350 "awkgram.c" /* yacc.c:1646  */
 -#line 3359 "awkgram.c" /* yacc.c:1646  */
++#line 3352 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 125:
 -#line 1415 "awkgram.y" /* yacc.c:1646  */
 +  case 130:
- #line 1338 "awkgram.y" /* yacc.c:1646  */
++#line 1340 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3356 "awkgram.c" /* yacc.c:1646  */
 -#line 3365 "awkgram.c" /* yacc.c:1646  */
++#line 3358 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 126:
 -#line 1417 "awkgram.y" /* yacc.c:1646  */
 +  case 131:
- #line 1340 "awkgram.y" /* yacc.c:1646  */
++#line 1342 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3362 "awkgram.c" /* yacc.c:1646  */
 -#line 3371 "awkgram.c" /* yacc.c:1646  */
++#line 3364 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 127:
 -#line 1419 "awkgram.y" /* yacc.c:1646  */
 +  case 132:
- #line 1342 "awkgram.y" /* yacc.c:1646  */
++#line 1344 "awkgram.y" /* yacc.c:1646  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3409,47 -3418,47 +3411,47 @@@
                                max_args = count;
                }
          }
- #line 3413 "awkgram.c" /* yacc.c:1646  */
 -#line 3422 "awkgram.c" /* yacc.c:1646  */
++#line 3415 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 129:
 -#line 1471 "awkgram.y" /* yacc.c:1646  */
 +  case 134:
- #line 1394 "awkgram.y" /* yacc.c:1646  */
++#line 1396 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3419 "awkgram.c" /* yacc.c:1646  */
 -#line 3428 "awkgram.c" /* yacc.c:1646  */
++#line 3421 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 130:
 -#line 1473 "awkgram.y" /* yacc.c:1646  */
 +  case 135:
- #line 1396 "awkgram.y" /* yacc.c:1646  */
++#line 1398 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3425 "awkgram.c" /* yacc.c:1646  */
 -#line 3434 "awkgram.c" /* yacc.c:1646  */
++#line 3427 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 131:
 -#line 1475 "awkgram.y" /* yacc.c:1646  */
 +  case 136:
- #line 1398 "awkgram.y" /* yacc.c:1646  */
++#line 1400 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3431 "awkgram.c" /* yacc.c:1646  */
 -#line 3440 "awkgram.c" /* yacc.c:1646  */
++#line 3433 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 132:
 -#line 1477 "awkgram.y" /* yacc.c:1646  */
 +  case 137:
- #line 1400 "awkgram.y" /* yacc.c:1646  */
++#line 1402 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3437 "awkgram.c" /* yacc.c:1646  */
 -#line 3446 "awkgram.c" /* yacc.c:1646  */
++#line 3439 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 133:
 -#line 1479 "awkgram.y" /* yacc.c:1646  */
 +  case 138:
- #line 1402 "awkgram.y" /* yacc.c:1646  */
++#line 1404 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3443 "awkgram.c" /* yacc.c:1646  */
 -#line 3452 "awkgram.c" /* yacc.c:1646  */
++#line 3445 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 134:
 -#line 1481 "awkgram.y" /* yacc.c:1646  */
 +  case 139:
- #line 1404 "awkgram.y" /* yacc.c:1646  */
++#line 1406 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3449 "awkgram.c" /* yacc.c:1646  */
 -#line 3458 "awkgram.c" /* yacc.c:1646  */
++#line 3451 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 135:
 -#line 1483 "awkgram.y" /* yacc.c:1646  */
 +  case 140:
- #line 1406 "awkgram.y" /* yacc.c:1646  */
++#line 1408 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3463,29 -3472,29 +3465,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
- #line 3467 "awkgram.c" /* yacc.c:1646  */
 -#line 3476 "awkgram.c" /* yacc.c:1646  */
++#line 3469 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 136:
 -#line 1497 "awkgram.y" /* yacc.c:1646  */
 +  case 141:
- #line 1420 "awkgram.y" /* yacc.c:1646  */
++#line 1422 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3476 "awkgram.c" /* yacc.c:1646  */
 -#line 3485 "awkgram.c" /* yacc.c:1646  */
++#line 3478 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 137:
 -#line 1502 "awkgram.y" /* yacc.c:1646  */
 +  case 142:
- #line 1425 "awkgram.y" /* yacc.c:1646  */
++#line 1427 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3485 "awkgram.c" /* yacc.c:1646  */
 -#line 3494 "awkgram.c" /* yacc.c:1646  */
++#line 3487 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 138:
 -#line 1507 "awkgram.y" /* yacc.c:1646  */
 +  case 143:
- #line 1430 "awkgram.y" /* yacc.c:1646  */
++#line 1432 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3505,64 -3514,64 +3507,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
- #line 3509 "awkgram.c" /* yacc.c:1646  */
 -#line 3518 "awkgram.c" /* yacc.c:1646  */
++#line 3511 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 139:
 -#line 1532 "awkgram.y" /* yacc.c:1646  */
 +  case 144:
- #line 1455 "awkgram.y" /* yacc.c:1646  */
++#line 1457 "awkgram.y" /* yacc.c:1646  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
- #line 3518 "awkgram.c" /* yacc.c:1646  */
 -#line 3527 "awkgram.c" /* yacc.c:1646  */
++#line 3520 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 140:
 -#line 1538 "awkgram.y" /* yacc.c:1646  */
 +  case 145:
- #line 1461 "awkgram.y" /* yacc.c:1646  */
++#line 1463 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3524 "awkgram.c" /* yacc.c:1646  */
 -#line 3533 "awkgram.c" /* yacc.c:1646  */
++#line 3526 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 141:
 -#line 1540 "awkgram.y" /* yacc.c:1646  */
 +  case 146:
- #line 1463 "awkgram.y" /* yacc.c:1646  */
++#line 1465 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3530 "awkgram.c" /* yacc.c:1646  */
 -#line 3539 "awkgram.c" /* yacc.c:1646  */
++#line 3532 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 142:
 -#line 1542 "awkgram.y" /* yacc.c:1646  */
 +  case 147:
- #line 1465 "awkgram.y" /* yacc.c:1646  */
++#line 1467 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3536 "awkgram.c" /* yacc.c:1646  */
 -#line 3545 "awkgram.c" /* yacc.c:1646  */
++#line 3538 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 143:
 -#line 1544 "awkgram.y" /* yacc.c:1646  */
 +  case 148:
- #line 1467 "awkgram.y" /* yacc.c:1646  */
++#line 1469 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3542 "awkgram.c" /* yacc.c:1646  */
 -#line 3551 "awkgram.c" /* yacc.c:1646  */
++#line 3544 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 144:
 -#line 1546 "awkgram.y" /* yacc.c:1646  */
 +  case 149:
- #line 1469 "awkgram.y" /* yacc.c:1646  */
++#line 1471 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3548 "awkgram.c" /* yacc.c:1646  */
 -#line 3557 "awkgram.c" /* yacc.c:1646  */
++#line 3550 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 145:
 -#line 1548 "awkgram.y" /* yacc.c:1646  */
 +  case 150:
- #line 1471 "awkgram.y" /* yacc.c:1646  */
++#line 1473 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3554 "awkgram.c" /* yacc.c:1646  */
 -#line 3563 "awkgram.c" /* yacc.c:1646  */
++#line 3556 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 146:
 -#line 1553 "awkgram.y" /* yacc.c:1646  */
 +  case 151:
- #line 1476 "awkgram.y" /* yacc.c:1646  */
++#line 1478 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3562 "awkgram.c" /* yacc.c:1646  */
 -#line 3571 "awkgram.c" /* yacc.c:1646  */
++#line 3564 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 147:
 -#line 1557 "awkgram.y" /* yacc.c:1646  */
 +  case 152:
- #line 1480 "awkgram.y" /* yacc.c:1646  */
++#line 1482 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3594,37 -3603,37 +3596,37 @@@
                        }
                }
           }
- #line 3598 "awkgram.c" /* yacc.c:1646  */
 -#line 3607 "awkgram.c" /* yacc.c:1646  */
++#line 3600 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 148:
 -#line 1589 "awkgram.y" /* yacc.c:1646  */
 +  case 153:
- #line 1512 "awkgram.y" /* yacc.c:1646  */
++#line 1514 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3604 "awkgram.c" /* yacc.c:1646  */
 -#line 3613 "awkgram.c" /* yacc.c:1646  */
++#line 3606 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 149:
 -#line 1591 "awkgram.y" /* yacc.c:1646  */
 +  case 154:
- #line 1514 "awkgram.y" /* yacc.c:1646  */
++#line 1516 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3614 "awkgram.c" /* yacc.c:1646  */
 -#line 3623 "awkgram.c" /* yacc.c:1646  */
++#line 3616 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 150:
 -#line 1597 "awkgram.y" /* yacc.c:1646  */
 +  case 155:
- #line 1520 "awkgram.y" /* yacc.c:1646  */
++#line 1522 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3624 "awkgram.c" /* yacc.c:1646  */
 -#line 3633 "awkgram.c" /* yacc.c:1646  */
++#line 3626 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 151:
 -#line 1603 "awkgram.y" /* yacc.c:1646  */
 +  case 156:
- #line 1526 "awkgram.y" /* yacc.c:1646  */
++#line 1528 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
  
@@@ -3637,45 -3646,45 +3639,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3641 "awkgram.c" /* yacc.c:1646  */
 -#line 3650 "awkgram.c" /* yacc.c:1646  */
++#line 3643 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 154:
 -#line 1618 "awkgram.y" /* yacc.c:1646  */
 +  case 159:
- #line 1541 "awkgram.y" /* yacc.c:1646  */
++#line 1543 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3650 "awkgram.c" /* yacc.c:1646  */
 -#line 3659 "awkgram.c" /* yacc.c:1646  */
++#line 3652 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 155:
 -#line 1623 "awkgram.y" /* yacc.c:1646  */
 +  case 160:
- #line 1546 "awkgram.y" /* yacc.c:1646  */
++#line 1548 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3659 "awkgram.c" /* yacc.c:1646  */
 -#line 3668 "awkgram.c" /* yacc.c:1646  */
++#line 3661 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 156:
 -#line 1628 "awkgram.y" /* yacc.c:1646  */
 +  case 161:
- #line 1551 "awkgram.y" /* yacc.c:1646  */
++#line 1553 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3667 "awkgram.c" /* yacc.c:1646  */
 -#line 3676 "awkgram.c" /* yacc.c:1646  */
++#line 3669 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 157:
 -#line 1632 "awkgram.y" /* yacc.c:1646  */
 +  case 162:
- #line 1555 "awkgram.y" /* yacc.c:1646  */
++#line 1557 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3675 "awkgram.c" /* yacc.c:1646  */
 -#line 3684 "awkgram.c" /* yacc.c:1646  */
++#line 3677 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 158:
 -#line 1636 "awkgram.y" /* yacc.c:1646  */
 +  case 163:
- #line 1559 "awkgram.y" /* yacc.c:1646  */
++#line 1561 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@@ -3690,11 -3699,11 +3692,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3694 "awkgram.c" /* yacc.c:1646  */
 -#line 3703 "awkgram.c" /* yacc.c:1646  */
++#line 3696 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 159:
 -#line 1651 "awkgram.y" /* yacc.c:1646  */
 +  case 164:
- #line 1574 "awkgram.y" /* yacc.c:1646  */
++#line 1576 "awkgram.y" /* yacc.c:1646  */
      {
            /*
             * was: $$ = $2
@@@ -3704,20 -3713,20 +3706,20 @@@
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
- #line 3708 "awkgram.c" /* yacc.c:1646  */
 -#line 3717 "awkgram.c" /* yacc.c:1646  */
++#line 3710 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 160:
 -#line 1664 "awkgram.y" /* yacc.c:1646  */
 +  case 165:
- #line 1587 "awkgram.y" /* yacc.c:1646  */
++#line 1589 "awkgram.y" /* yacc.c:1646  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
- #line 3717 "awkgram.c" /* yacc.c:1646  */
 -#line 3726 "awkgram.c" /* yacc.c:1646  */
++#line 3719 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 161:
 -#line 1669 "awkgram.y" /* yacc.c:1646  */
 +  case 166:
- #line 1592 "awkgram.y" /* yacc.c:1646  */
++#line 1594 "awkgram.y" /* yacc.c:1646  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3750,11 -3759,11 +3752,11 @@@
  
                (yyval) = list_prepend((yyvsp[0]), t);
          }
- #line 3754 "awkgram.c" /* yacc.c:1646  */
 -#line 3763 "awkgram.c" /* yacc.c:1646  */
++#line 3756 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 162:
 -#line 1705 "awkgram.y" /* yacc.c:1646  */
 +  case 167:
- #line 1628 "awkgram.y" /* yacc.c:1646  */
++#line 1630 "awkgram.y" /* yacc.c:1646  */
      {
                param_sanity((yyvsp[-1]));
                (yyvsp[-3])->opcode = Op_func_call;
@@@ -3768,49 -3777,49 +3770,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
- #line 3772 "awkgram.c" /* yacc.c:1646  */
 -#line 3781 "awkgram.c" /* yacc.c:1646  */
++#line 3774 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 163:
 -#line 1722 "awkgram.y" /* yacc.c:1646  */
 +  case 168:
- #line 1645 "awkgram.y" /* yacc.c:1646  */
++#line 1647 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3778 "awkgram.c" /* yacc.c:1646  */
 -#line 3787 "awkgram.c" /* yacc.c:1646  */
++#line 3780 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 164:
 -#line 1724 "awkgram.y" /* yacc.c:1646  */
 +  case 169:
- #line 1647 "awkgram.y" /* yacc.c:1646  */
++#line 1649 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3784 "awkgram.c" /* yacc.c:1646  */
 -#line 3793 "awkgram.c" /* yacc.c:1646  */
++#line 3786 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 165:
 -#line 1729 "awkgram.y" /* yacc.c:1646  */
 +  case 170:
- #line 1652 "awkgram.y" /* yacc.c:1646  */
++#line 1654 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3790 "awkgram.c" /* yacc.c:1646  */
 -#line 3799 "awkgram.c" /* yacc.c:1646  */
++#line 3792 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 166:
 -#line 1731 "awkgram.y" /* yacc.c:1646  */
 +  case 171:
- #line 1654 "awkgram.y" /* yacc.c:1646  */
++#line 1656 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3796 "awkgram.c" /* yacc.c:1646  */
 -#line 3805 "awkgram.c" /* yacc.c:1646  */
++#line 3798 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 167:
 -#line 1736 "awkgram.y" /* yacc.c:1646  */
 +  case 172:
- #line 1659 "awkgram.y" /* yacc.c:1646  */
++#line 1661 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3802 "awkgram.c" /* yacc.c:1646  */
 -#line 3811 "awkgram.c" /* yacc.c:1646  */
++#line 3804 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 168:
 -#line 1738 "awkgram.y" /* yacc.c:1646  */
 +  case 173:
- #line 1661 "awkgram.y" /* yacc.c:1646  */
++#line 1663 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3810 "awkgram.c" /* yacc.c:1646  */
 -#line 3819 "awkgram.c" /* yacc.c:1646  */
++#line 3812 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 169:
 -#line 1745 "awkgram.y" /* yacc.c:1646  */
 +  case 174:
- #line 1668 "awkgram.y" /* yacc.c:1646  */
++#line 1670 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3824,11 -3833,11 +3826,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
- #line 3828 "awkgram.c" /* yacc.c:1646  */
 -#line 3837 "awkgram.c" /* yacc.c:1646  */
++#line 3830 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 170:
 -#line 1762 "awkgram.y" /* yacc.c:1646  */
 +  case 175:
- #line 1685 "awkgram.y" /* yacc.c:1646  */
++#line 1687 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -3842,31 -3851,31 +3844,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
- #line 3846 "awkgram.c" /* yacc.c:1646  */
 -#line 3855 "awkgram.c" /* yacc.c:1646  */
++#line 3848 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 171:
 -#line 1779 "awkgram.y" /* yacc.c:1646  */
 +  case 176:
- #line 1702 "awkgram.y" /* yacc.c:1646  */
++#line 1704 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3852 "awkgram.c" /* yacc.c:1646  */
 -#line 3861 "awkgram.c" /* yacc.c:1646  */
++#line 3854 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 172:
 -#line 1781 "awkgram.y" /* yacc.c:1646  */
 +  case 177:
- #line 1704 "awkgram.y" /* yacc.c:1646  */
++#line 1706 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3860 "awkgram.c" /* yacc.c:1646  */
 -#line 3869 "awkgram.c" /* yacc.c:1646  */
++#line 3862 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 173:
 -#line 1788 "awkgram.y" /* yacc.c:1646  */
 +  case 178:
- #line 1711 "awkgram.y" /* yacc.c:1646  */
++#line 1713 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3866 "awkgram.c" /* yacc.c:1646  */
 -#line 3875 "awkgram.c" /* yacc.c:1646  */
++#line 3868 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 174:
 -#line 1793 "awkgram.y" /* yacc.c:1646  */
 +  case 179:
- #line 1716 "awkgram.y" /* yacc.c:1646  */
++#line 1718 "awkgram.y" /* yacc.c:1646  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -3874,22 -3883,22 +3876,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3878 "awkgram.c" /* yacc.c:1646  */
 -#line 3887 "awkgram.c" /* yacc.c:1646  */
++#line 3880 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 175:
 -#line 1801 "awkgram.y" /* yacc.c:1646  */
 +  case 180:
- #line 1724 "awkgram.y" /* yacc.c:1646  */
++#line 1726 "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 3889 "awkgram.c" /* yacc.c:1646  */
 -#line 3898 "awkgram.c" /* yacc.c:1646  */
++#line 3891 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 176:
 -#line 1811 "awkgram.y" /* yacc.c:1646  */
 +  case 181:
- #line 1734 "awkgram.y" /* yacc.c:1646  */
++#line 1736 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -3901,73 -3910,73 +3903,73 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 3905 "awkgram.c" /* yacc.c:1646  */
 -#line 3914 "awkgram.c" /* yacc.c:1646  */
++#line 3907 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 177:
 -#line 1823 "awkgram.y" /* yacc.c:1646  */
 +  case 182:
- #line 1746 "awkgram.y" /* yacc.c:1646  */
++#line 1748 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3915 "awkgram.c" /* yacc.c:1646  */
 -#line 3924 "awkgram.c" /* yacc.c:1646  */
++#line 3917 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 178:
 -#line 1832 "awkgram.y" /* yacc.c:1646  */
 +  case 183:
- #line 1755 "awkgram.y" /* yacc.c:1646  */
++#line 1757 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
- #line 3923 "awkgram.c" /* yacc.c:1646  */
 -#line 3932 "awkgram.c" /* yacc.c:1646  */
++#line 3925 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 179:
 -#line 1836 "awkgram.y" /* yacc.c:1646  */
 +  case 184:
- #line 1759 "awkgram.y" /* yacc.c:1646  */
++#line 1761 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
- #line 3931 "awkgram.c" /* yacc.c:1646  */
 -#line 3940 "awkgram.c" /* yacc.c:1646  */
++#line 3933 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 180:
 -#line 1839 "awkgram.y" /* yacc.c:1646  */
 +  case 185:
- #line 1762 "awkgram.y" /* yacc.c:1646  */
++#line 1764 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3937 "awkgram.c" /* yacc.c:1646  */
 -#line 3946 "awkgram.c" /* yacc.c:1646  */
++#line 3939 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 182:
 -#line 1847 "awkgram.y" /* yacc.c:1646  */
 +  case 187:
- #line 1770 "awkgram.y" /* yacc.c:1646  */
++#line 1772 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3943 "awkgram.c" /* yacc.c:1646  */
 -#line 3952 "awkgram.c" /* yacc.c:1646  */
++#line 3945 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 183:
 -#line 1851 "awkgram.y" /* yacc.c:1646  */
 +  case 188:
- #line 1774 "awkgram.y" /* yacc.c:1646  */
++#line 1776 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3949 "awkgram.c" /* yacc.c:1646  */
 -#line 3958 "awkgram.c" /* yacc.c:1646  */
++#line 3951 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 186:
 -#line 1860 "awkgram.y" /* yacc.c:1646  */
 +  case 191:
- #line 1783 "awkgram.y" /* yacc.c:1646  */
++#line 1785 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3955 "awkgram.c" /* yacc.c:1646  */
 -#line 3964 "awkgram.c" /* yacc.c:1646  */
++#line 3957 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 187:
 -#line 1864 "awkgram.y" /* yacc.c:1646  */
 +  case 192:
- #line 1787 "awkgram.y" /* yacc.c:1646  */
++#line 1789 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); yyerrok; }
- #line 3961 "awkgram.c" /* yacc.c:1646  */
 -#line 3970 "awkgram.c" /* yacc.c:1646  */
++#line 3963 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 188:
 -#line 1868 "awkgram.y" /* yacc.c:1646  */
 +  case 193:
- #line 1791 "awkgram.y" /* yacc.c:1646  */
++#line 1793 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3967 "awkgram.c" /* yacc.c:1646  */
 -#line 3976 "awkgram.c" /* yacc.c:1646  */
++#line 3969 "awkgram.c" /* yacc.c:1646  */
      break;
  
  
- #line 3971 "awkgram.c" /* yacc.c:1646  */
 -#line 3980 "awkgram.c" /* yacc.c:1646  */
++#line 3973 "awkgram.c" /* yacc.c:1646  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4195,7 -4204,7 +4197,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 1793 "awkgram.y" /* yacc.c:1906  */
 -#line 1870 "awkgram.y" /* yacc.c:1906  */
++#line 1795 "awkgram.y" /* yacc.c:1906  */
  
  
  struct token {

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

Summary of changes:
 ChangeLog                             |   21 +-
 awkgram.c                             |  762 +++++++++++++++++----------------
 awkgram.y                             |   24 +-
 builtin.c                             |    7 +-
 configure                             |    2 +-
 configure.ac                          |    4 +-
 extension/ChangeLog                   |    4 +
 extension/testext.c                   |    8 +-
 test/ChangeLog                        |   14 +
 test/Makefile.am                      |   11 +-
 test/Makefile.in                      |   21 +-
 test/Maketests                        |   10 +
 test/printfbad4.awk                   |    5 +
 test/printfbad4.ok                    |    2 +
 test/regexpbrack.awk                  |    2 +
 test/{arrayprm2.ok => regexpbrack.in} |    0
 test/{arrayprm2.ok => regexpbrack.ok} |    0
 test/testext.ok                       |    2 +-
 18 files changed, 490 insertions(+), 409 deletions(-)
 create mode 100644 test/printfbad4.awk
 create mode 100644 test/printfbad4.ok
 create mode 100644 test/regexpbrack.awk
 copy test/{arrayprm2.ok => regexpbrack.in} (100%)
 copy test/{arrayprm2.ok => regexpbrack.ok} (100%)


hooks/post-receive
-- 
gawk



reply via email to

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