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-1051-g941


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, print-exp, updated. gawk-4.1.0-1051-g941bfc7
Date: Tue, 20 Jan 2015 20:10:47 +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  941bfc7ad6fc022f9836d282328b7ffc5f70bcb8 (commit)
       via  4c01db1833a02173c910d463eaed77ad6ed66195 (commit)
       via  501f5c4fc53a1c74a8a4074832dcc2bd72224ed6 (commit)
       via  f1aae2393344a21675bc3d5f3c24f9b555c5744b (commit)
       via  611ebfe5c55849245d47b4c5878eb85b27861f12 (commit)
       via  f77c13a546af58cb8cdb593f49bbfa844b10dd7e (commit)
       via  d680707683794b92f2fc69e71dcb5b2a154598be (commit)
       via  a07103b076a9a88d89bf063396a74f2272749cf4 (commit)
       via  f25f9c52b1ab284ac1055b4f8321a2da33e81fcb (commit)
       via  85699a5cba88f4ee910e2c3ef42b5cc165102b51 (commit)
       via  28f563a6f54c8ea9c63537356966508c4685b538 (commit)
       via  a59a81a68ca26293f8e3df25da2cfe20e61d7c85 (commit)
       via  f18e168ff20217143bd922f158a1c56058795e89 (commit)
       via  c6cc60329c5bfc6c181cc45b09f30ac8a8a20b49 (commit)
       via  16d6377af8d1683a29b9dc7d7ab3e8d4bc1ebd48 (commit)
       via  976be25f6d3ea05f658a43abee336fe7e3bd419d (commit)
       via  0e829ea9a5062cac730f5a8368ab2062c1ef67fd (commit)
      from  a8db21f1aea3b7bbab39a423aad61571dbe2b0ec (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=941bfc7ad6fc022f9836d282328b7ffc5f70bcb8

commit 941bfc7ad6fc022f9836d282328b7ffc5f70bcb8
Merge: a8db21f 4c01db1
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Jan 20 22:10:38 2015 +0200

    Merge branch 'master' into print-exp

diff --cc awkgram.c
index 5116192,6cc7868..fa16c11
--- a/awkgram.c
+++ b/awkgram.c
@@@ -207,7 -201,7 +202,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- #line 211 "awkgram.c" /* yacc.c:339  */
 -#line 205 "awkgram.c" /* yacc.c:339  */
++#line 206 "awkgram.c" /* yacc.c:339  */
  
  # ifndef YY_NULLPTR
  #  if defined __cplusplus && 201103L <= __cplusplus
@@@ -365,7 -355,7 +360,7 @@@ int yyparse (void)
  
  /* Copy the second part of user declarations.  */
  
- #line 369 "awkgram.c" /* yacc.c:358  */
 -#line 359 "awkgram.c" /* yacc.c:358  */
++#line 364 "awkgram.c" /* yacc.c:358  */
  
  #ifdef short
  # undef short
@@@ -668,26 -657,25 +663,26 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        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
 -       0,   204,   204,   206,   211,   212,   216,   228,   233,   244,
 -     250,   255,   263,   271,   273,   278,   286,   288,   294,   302,
 -     312,   342,   356,   370,   378,   389,   401,   403,   405,   411,
 -     416,   417,   421,   456,   455,   489,   491,   496,   502,   530,
 -     535,   536,   540,   542,   544,   551,   641,   683,   725,   838,
 -     845,   852,   862,   871,   880,   889,   900,   916,   915,   939,
 -     951,   951,  1049,  1049,  1082,  1112,  1118,  1119,  1125,  1126,
 -    1133,  1138,  1150,  1164,  1166,  1174,  1179,  1181,  1189,  1191,
 -    1200,  1201,  1209,  1214,  1214,  1225,  1229,  1237,  1238,  1241,
 -    1243,  1248,  1249,  1258,  1259,  1264,  1269,  1275,  1277,  1279,
 -    1286,  1287,  1293,  1294,  1299,  1301,  1306,  1308,  1316,  1321,
 -    1330,  1337,  1339,  1341,  1357,  1367,  1374,  1376,  1381,  1383,
 -    1385,  1393,  1395,  1400,  1402,  1407,  1409,  1411,  1461,  1463,
 -    1465,  1467,  1469,  1471,  1473,  1475,  1489,  1494,  1499,  1524,
 -    1530,  1532,  1534,  1536,  1538,  1540,  1545,  1549,  1581,  1583,
 -    1589,  1595,  1608,  1609,  1610,  1615,  1620,  1624,  1628,  1643,
 -    1656,  1661,  1697,  1715,  1716,  1722,  1723,  1728,  1730,  1737,
 -    1754,  1771,  1773,  1780,  1785,  1793,  1803,  1815,  1824,  1828,
 -    1832,  1836,  1840,  1844,  1847,  1849,  1853,  1857,  1861
++       0,   206,   206,   208,   213,   214,   218,   230,   235,   246,
++     252,   257,   265,   273,   275,   280,   288,   290,   296,   304,
++     314,   344,   358,   372,   380,   391,   403,   405,   407,   413,
++     418,   419,   423,   458,   457,   491,   493,   498,   504,   532,
++     537,   538,   542,   544,   546,   553,   643,   685,   727,   840,
++     847,   854,   864,   873,   882,   891,   902,   918,   917,   941,
++     945,   945,   960,   960,   965,   965,   998,  1028,  1034,  1035,
++    1041,  1042,  1049,  1054,  1066,  1080,  1082,  1090,  1095,  1097,
++    1105,  1107,  1112,  1114,  1123,  1124,  1132,  1137,  1137,  1148,
++    1152,  1160,  1161,  1164,  1166,  1171,  1172,  1181,  1182,  1187,
++    1192,  1198,  1200,  1202,  1209,  1210,  1216,  1217,  1222,  1224,
++    1229,  1231,  1239,  1244,  1253,  1260,  1262,  1264,  1280,  1290,
++    1297,  1299,  1301,  1306,  1308,  1310,  1318,  1320,  1325,  1327,
++    1332,  1334,  1336,  1386,  1388,  1390,  1392,  1394,  1396,  1398,
++    1400,  1414,  1419,  1424,  1449,  1455,  1457,  1459,  1461,  1463,
++    1465,  1470,  1474,  1506,  1508,  1514,  1520,  1533,  1534,  1535,
++    1540,  1545,  1549,  1553,  1568,  1581,  1586,  1622,  1640,  1641,
++    1647,  1648,  1653,  1655,  1662,  1679,  1696,  1698,  1705,  1710,
++    1718,  1728,  1740,  1749,  1753,  1757,  1761,  1765,  1769,  1772,
++    1774,  1778,  1782,  1786
  };
  #endif
  
@@@ -1907,26 -1848,24 +1902,24 @@@ yyreduce
    switch (yyn)
      {
          case 3:
- #line 214 "awkgram.y" /* yacc.c:1646  */
 -#line 207 "awkgram.y" /* yacc.c:1646  */
++#line 209 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                yyerrok;
          }
- #line 1916 "awkgram.c" /* yacc.c:1646  */
 -#line 1857 "awkgram.c" /* yacc.c:1646  */
++#line 1911 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 5:
- #line 220 "awkgram.y" /* yacc.c:1646  */
 -#line 213 "awkgram.y" /* yacc.c:1646  */
++#line 215 "awkgram.y" /* yacc.c:1646  */
      {
                next_sourcefile();
-               if (sourcefile == srcfiles)
-                       process_deferred();
          }
- #line 1926 "awkgram.c" /* yacc.c:1646  */
 -#line 1865 "awkgram.c" /* yacc.c:1646  */
++#line 1919 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 6:
- #line 226 "awkgram.y" /* yacc.c:1646  */
 -#line 217 "awkgram.y" /* yacc.c:1646  */
++#line 219 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                /*
@@@ -1935,19 -1874,20 +1928,20 @@@
                 */
                /* yyerrok; */
          }
- #line 1939 "awkgram.c" /* yacc.c:1646  */
 -#line 1878 "awkgram.c" /* yacc.c:1646  */
++#line 1932 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 7:
- #line 238 "awkgram.y" /* yacc.c:1646  */
 -#line 229 "awkgram.y" /* yacc.c:1646  */
++#line 231 "awkgram.y" /* yacc.c:1646  */
      {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
+               first_rule = false;
          }
- #line 1947 "awkgram.c" /* yacc.c:1646  */
 -#line 1887 "awkgram.c" /* yacc.c:1646  */
++#line 1941 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 8:
- #line 242 "awkgram.y" /* yacc.c:1646  */
 -#line 234 "awkgram.y" /* yacc.c:1646  */
++#line 236 "awkgram.y" /* yacc.c:1646  */
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -1958,39 -1898,39 +1952,39 @@@
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
- #line 1962 "awkgram.c" /* yacc.c:1646  */
 -#line 1902 "awkgram.c" /* yacc.c:1646  */
++#line 1956 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 9:
- #line 253 "awkgram.y" /* yacc.c:1646  */
 -#line 245 "awkgram.y" /* yacc.c:1646  */
++#line 247 "awkgram.y" /* yacc.c:1646  */
      {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
- #line 1972 "awkgram.c" /* yacc.c:1646  */
 -#line 1912 "awkgram.c" /* yacc.c:1646  */
++#line 1966 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 10:
- #line 259 "awkgram.y" /* yacc.c:1646  */
 -#line 251 "awkgram.y" /* yacc.c:1646  */
++#line 253 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1981 "awkgram.c" /* yacc.c:1646  */
 -#line 1921 "awkgram.c" /* yacc.c:1646  */
++#line 1975 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 11:
- #line 264 "awkgram.y" /* yacc.c:1646  */
 -#line 256 "awkgram.y" /* yacc.c:1646  */
++#line 258 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1990 "awkgram.c" /* yacc.c:1646  */
 -#line 1930 "awkgram.c" /* yacc.c:1646  */
++#line 1984 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 12:
- #line 272 "awkgram.y" /* yacc.c:1646  */
 -#line 264 "awkgram.y" /* yacc.c:1646  */
++#line 266 "awkgram.y" /* yacc.c:1646  */
      {
                if (include_source((yyvsp[0])) < 0)
                        YYABORT;
@@@ -1998,48 -1938,47 +1992,47 @@@
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 2002 "awkgram.c" /* yacc.c:1646  */
 -#line 1942 "awkgram.c" /* yacc.c:1646  */
++#line 1996 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 13:
- #line 280 "awkgram.y" /* yacc.c:1646  */
 -#line 272 "awkgram.y" /* yacc.c:1646  */
++#line 274 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2008 "awkgram.c" /* yacc.c:1646  */
 -#line 1948 "awkgram.c" /* yacc.c:1646  */
++#line 2002 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 14:
- #line 282 "awkgram.y" /* yacc.c:1646  */
 -#line 274 "awkgram.y" /* yacc.c:1646  */
++#line 276 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2014 "awkgram.c" /* yacc.c:1646  */
 -#line 1954 "awkgram.c" /* yacc.c:1646  */
++#line 2008 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 15:
- #line 287 "awkgram.y" /* yacc.c:1646  */
 -#line 279 "awkgram.y" /* yacc.c:1646  */
++#line 281 "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 2027 "awkgram.c" /* yacc.c:1646  */
 -#line 1966 "awkgram.c" /* yacc.c:1646  */
++#line 2020 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 16:
- #line 296 "awkgram.y" /* yacc.c:1646  */
 -#line 287 "awkgram.y" /* yacc.c:1646  */
++#line 289 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2033 "awkgram.c" /* yacc.c:1646  */
 -#line 1972 "awkgram.c" /* yacc.c:1646  */
++#line 2026 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 17:
- #line 298 "awkgram.y" /* yacc.c:1646  */
 -#line 289 "awkgram.y" /* yacc.c:1646  */
++#line 291 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2039 "awkgram.c" /* yacc.c:1646  */
 -#line 1978 "awkgram.c" /* yacc.c:1646  */
++#line 2032 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 18:
- #line 303 "awkgram.y" /* yacc.c:1646  */
 -#line 294 "awkgram.y" /* yacc.c:1646  */
++#line 296 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -2048,11 -1987,11 +2041,11 @@@
                } else
                        (yyval) = NULL;
          }
- #line 2052 "awkgram.c" /* yacc.c:1646  */
 -#line 1991 "awkgram.c" /* yacc.c:1646  */
++#line 2045 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 19:
- #line 312 "awkgram.y" /* yacc.c:1646  */
 -#line 303 "awkgram.y" /* yacc.c:1646  */
++#line 305 "awkgram.y" /* yacc.c:1646  */
      {
                rule = Rule;
                if (comment != NULL) {
@@@ -2061,11 -2000,11 +2054,11 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 2065 "awkgram.c" /* yacc.c:1646  */
 -#line 2004 "awkgram.c" /* yacc.c:1646  */
++#line 2058 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 20:
- #line 322 "awkgram.y" /* yacc.c:1646  */
 -#line 313 "awkgram.y" /* yacc.c:1646  */
++#line 315 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *tp;
  
@@@ -2095,11 -2034,11 +2088,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
- #line 2099 "awkgram.c" /* yacc.c:1646  */
 -#line 2038 "awkgram.c" /* yacc.c:1646  */
++#line 2092 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 21:
- #line 352 "awkgram.y" /* yacc.c:1646  */
 -#line 343 "awkgram.y" /* yacc.c:1646  */
++#line 345 "awkgram.y" /* yacc.c:1646  */
      {
                static int begin_seen = 0;
  
@@@ -2113,11 -2052,11 +2106,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2117 "awkgram.c" /* yacc.c:1646  */
 -#line 2056 "awkgram.c" /* yacc.c:1646  */
++#line 2110 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 22:
- #line 366 "awkgram.y" /* yacc.c:1646  */
 -#line 357 "awkgram.y" /* yacc.c:1646  */
++#line 359 "awkgram.y" /* yacc.c:1646  */
      {
                static int end_seen = 0;
  
@@@ -2131,11 -2070,11 +2124,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2135 "awkgram.c" /* yacc.c:1646  */
 -#line 2074 "awkgram.c" /* yacc.c:1646  */
++#line 2128 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 23:
- #line 380 "awkgram.y" /* yacc.c:1646  */
 -#line 371 "awkgram.y" /* yacc.c:1646  */
++#line 373 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = BEGINFILE;
@@@ -2143,11 -2082,11 +2136,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2147 "awkgram.c" /* yacc.c:1646  */
 -#line 2086 "awkgram.c" /* yacc.c:1646  */
++#line 2140 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 24:
- #line 388 "awkgram.y" /* yacc.c:1646  */
 -#line 379 "awkgram.y" /* yacc.c:1646  */
++#line 381 "awkgram.y" /* yacc.c:1646  */
      {
                func_first = false;
                (yyvsp[0])->in_rule = rule = ENDFILE;
@@@ -2155,11 -2094,11 +2148,11 @@@
                check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2159 "awkgram.c" /* yacc.c:1646  */
 -#line 2098 "awkgram.c" /* yacc.c:1646  */
++#line 2152 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 25:
- #line 399 "awkgram.y" /* yacc.c:1646  */
 -#line 390 "awkgram.y" /* yacc.c:1646  */
++#line 392 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                if ((yyvsp[-3]) == NULL)
@@@ -2168,39 -2107,39 +2161,39 @@@
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
- #line 2172 "awkgram.c" /* yacc.c:1646  */
 -#line 2111 "awkgram.c" /* yacc.c:1646  */
++#line 2165 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 26:
- #line 411 "awkgram.y" /* yacc.c:1646  */
 -#line 402 "awkgram.y" /* yacc.c:1646  */
++#line 404 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2178 "awkgram.c" /* yacc.c:1646  */
 -#line 2117 "awkgram.c" /* yacc.c:1646  */
++#line 2171 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 27:
- #line 413 "awkgram.y" /* yacc.c:1646  */
 -#line 404 "awkgram.y" /* yacc.c:1646  */
++#line 406 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2184 "awkgram.c" /* yacc.c:1646  */
 -#line 2123 "awkgram.c" /* yacc.c:1646  */
++#line 2177 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 28:
- #line 415 "awkgram.y" /* yacc.c:1646  */
 -#line 406 "awkgram.y" /* yacc.c:1646  */
++#line 408 "awkgram.y" /* yacc.c:1646  */
      {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2194 "awkgram.c" /* yacc.c:1646  */
 -#line 2133 "awkgram.c" /* yacc.c:1646  */
++#line 2187 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 29:
- #line 421 "awkgram.y" /* yacc.c:1646  */
 -#line 412 "awkgram.y" /* yacc.c:1646  */
++#line 414 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2200 "awkgram.c" /* yacc.c:1646  */
 -#line 2139 "awkgram.c" /* yacc.c:1646  */
++#line 2193 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 32:
- #line 431 "awkgram.y" /* yacc.c:1646  */
 -#line 422 "awkgram.y" /* yacc.c:1646  */
++#line 424 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *  treat any comments between BOF and the first function
@@@ -2227,17 -2166,17 +2220,17 @@@
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
- #line 2231 "awkgram.c" /* yacc.c:1646  */
 -#line 2170 "awkgram.c" /* yacc.c:1646  */
++#line 2224 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 33:
- #line 465 "awkgram.y" /* yacc.c:1646  */
 -#line 456 "awkgram.y" /* yacc.c:1646  */
++#line 458 "awkgram.y" /* yacc.c:1646  */
      { want_regexp = true; }
- #line 2237 "awkgram.c" /* yacc.c:1646  */
 -#line 2176 "awkgram.c" /* yacc.c:1646  */
++#line 2230 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 34:
- #line 467 "awkgram.y" /* yacc.c:1646  */
 -#line 458 "awkgram.y" /* yacc.c:1646  */
++#line 460 "awkgram.y" /* yacc.c:1646  */
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2266,28 -2205,28 +2259,28 @@@
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
- #line 2270 "awkgram.c" /* yacc.c:1646  */
 -#line 2209 "awkgram.c" /* yacc.c:1646  */
++#line 2263 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 35:
- #line 499 "awkgram.y" /* yacc.c:1646  */
 -#line 490 "awkgram.y" /* yacc.c:1646  */
++#line 492 "awkgram.y" /* yacc.c:1646  */
      { bcfree((yyvsp[0])); }
- #line 2276 "awkgram.c" /* yacc.c:1646  */
 -#line 2215 "awkgram.c" /* yacc.c:1646  */
++#line 2269 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 37:
- #line 505 "awkgram.y" /* yacc.c:1646  */
 -#line 496 "awkgram.y" /* yacc.c:1646  */
++#line 498 "awkgram.y" /* yacc.c:1646  */
      {
                if (comment != NULL) {
                        (yyval) = list_create(comment);
                        comment = NULL;
                } else (yyval) = NULL;
          }
- #line 2287 "awkgram.c" /* yacc.c:1646  */
 -#line 2226 "awkgram.c" /* yacc.c:1646  */
++#line 2280 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 38:
- #line 512 "awkgram.y" /* yacc.c:1646  */
 -#line 503 "awkgram.y" /* yacc.c:1646  */
++#line 505 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0]) == NULL) {
                        if (comment == NULL)
@@@ -2315,40 -2254,40 +2308,40 @@@
                }
                yyerrok;
          }
- #line 2319 "awkgram.c" /* yacc.c:1646  */
 -#line 2258 "awkgram.c" /* yacc.c:1646  */
++#line 2312 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 39:
- #line 540 "awkgram.y" /* yacc.c:1646  */
 -#line 531 "awkgram.y" /* yacc.c:1646  */
++#line 533 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2325 "awkgram.c" /* yacc.c:1646  */
 -#line 2264 "awkgram.c" /* yacc.c:1646  */
++#line 2318 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 42:
- #line 550 "awkgram.y" /* yacc.c:1646  */
 -#line 541 "awkgram.y" /* yacc.c:1646  */
++#line 543 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2331 "awkgram.c" /* yacc.c:1646  */
 -#line 2270 "awkgram.c" /* yacc.c:1646  */
++#line 2324 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 43:
- #line 552 "awkgram.y" /* yacc.c:1646  */
 -#line 543 "awkgram.y" /* yacc.c:1646  */
++#line 545 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 2337 "awkgram.c" /* yacc.c:1646  */
 -#line 2276 "awkgram.c" /* yacc.c:1646  */
++#line 2330 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 44:
- #line 554 "awkgram.y" /* yacc.c:1646  */
 -#line 545 "awkgram.y" /* yacc.c:1646  */
++#line 547 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2348 "awkgram.c" /* yacc.c:1646  */
 -#line 2287 "awkgram.c" /* yacc.c:1646  */
++#line 2341 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 45:
- #line 561 "awkgram.y" /* yacc.c:1646  */
 -#line 552 "awkgram.y" /* yacc.c:1646  */
++#line 554 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2438,11 -2377,11 +2431,11 @@@
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2442 "awkgram.c" /* yacc.c:1646  */
 -#line 2381 "awkgram.c" /* yacc.c:1646  */
++#line 2435 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 46:
- #line 651 "awkgram.y" /* yacc.c:1646  */
 -#line 642 "awkgram.y" /* yacc.c:1646  */
++#line 644 "awkgram.y" /* yacc.c:1646  */
      { 
                /*
                 *    -----------------
@@@ -2484,11 -2423,11 +2477,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2488 "awkgram.c" /* yacc.c:1646  */
 -#line 2427 "awkgram.c" /* yacc.c:1646  */
++#line 2481 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 47:
- #line 693 "awkgram.y" /* yacc.c:1646  */
 -#line 684 "awkgram.y" /* yacc.c:1646  */
++#line 686 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *    -----------------
@@@ -2530,11 -2469,11 +2523,11 @@@
                } /* else
                        $1 and $4 are NULLs */
          }
- #line 2534 "awkgram.c" /* yacc.c:1646  */
 -#line 2473 "awkgram.c" /* yacc.c:1646  */
++#line 2527 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 48:
- #line 735 "awkgram.y" /* yacc.c:1646  */
 -#line 726 "awkgram.y" /* yacc.c:1646  */
++#line 728 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@@ -2647,44 -2586,44 +2640,44 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2651 "awkgram.c" /* yacc.c:1646  */
 -#line 2590 "awkgram.c" /* yacc.c:1646  */
++#line 2644 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 49:
- #line 848 "awkgram.y" /* yacc.c:1646  */
 -#line 839 "awkgram.y" /* yacc.c:1646  */
++#line 841 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2662 "awkgram.c" /* yacc.c:1646  */
 -#line 2601 "awkgram.c" /* yacc.c:1646  */
++#line 2655 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 50:
- #line 855 "awkgram.y" /* yacc.c:1646  */
 -#line 846 "awkgram.y" /* yacc.c:1646  */
++#line 848 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2673 "awkgram.c" /* yacc.c:1646  */
 -#line 2612 "awkgram.c" /* yacc.c:1646  */
++#line 2666 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 51:
- #line 862 "awkgram.y" /* yacc.c:1646  */
 -#line 853 "awkgram.y" /* yacc.c:1646  */
++#line 855 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2684 "awkgram.c" /* yacc.c:1646  */
 -#line 2623 "awkgram.c" /* yacc.c:1646  */
++#line 2677 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 52:
- #line 872 "awkgram.y" /* yacc.c:1646  */
 -#line 863 "awkgram.y" /* yacc.c:1646  */
++#line 865 "awkgram.y" /* yacc.c:1646  */
      { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2693,11 -2632,11 +2686,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2697 "awkgram.c" /* yacc.c:1646  */
 -#line 2636 "awkgram.c" /* yacc.c:1646  */
++#line 2690 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 53:
- #line 881 "awkgram.y" /* yacc.c:1646  */
 -#line 872 "awkgram.y" /* yacc.c:1646  */
++#line 874 "awkgram.y" /* yacc.c:1646  */
      {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2706,11 -2645,11 +2699,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2710 "awkgram.c" /* yacc.c:1646  */
 -#line 2649 "awkgram.c" /* yacc.c:1646  */
++#line 2703 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 54:
- #line 890 "awkgram.y" /* yacc.c:1646  */
 -#line 881 "awkgram.y" /* yacc.c:1646  */
++#line 883 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2719,11 -2658,11 +2712,11 @@@
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2723 "awkgram.c" /* yacc.c:1646  */
 -#line 2662 "awkgram.c" /* yacc.c:1646  */
++#line 2716 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 55:
- #line 899 "awkgram.y" /* yacc.c:1646  */
 -#line 890 "awkgram.y" /* yacc.c:1646  */
++#line 892 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2734,11 -2673,11 +2727,11 @@@
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2738 "awkgram.c" /* yacc.c:1646  */
 -#line 2677 "awkgram.c" /* yacc.c:1646  */
++#line 2731 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 56:
- #line 910 "awkgram.y" /* yacc.c:1646  */
 -#line 901 "awkgram.y" /* yacc.c:1646  */
++#line 903 "awkgram.y" /* yacc.c:1646  */
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2753,20 -2692,20 +2746,20 @@@
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
- #line 2757 "awkgram.c" /* yacc.c:1646  */
 -#line 2696 "awkgram.c" /* yacc.c:1646  */
++#line 2750 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 57:
- #line 925 "awkgram.y" /* yacc.c:1646  */
 -#line 916 "awkgram.y" /* yacc.c:1646  */
++#line 918 "awkgram.y" /* yacc.c:1646  */
      {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 2766 "awkgram.c" /* yacc.c:1646  */
 -#line 2705 "awkgram.c" /* yacc.c:1646  */
++#line 2759 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 58:
- #line 928 "awkgram.y" /* yacc.c:1646  */
 -#line 919 "awkgram.y" /* yacc.c:1646  */
++#line 921 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@@ -2787,45 -2726,124 +2780,45 @@@
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
- #line 2791 "awkgram.c" /* yacc.c:1646  */
 -#line 2730 "awkgram.c" /* yacc.c:1646  */
++#line 2784 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 60:
- #line 952 "awkgram.y" /* yacc.c:1646  */
 -#line 951 "awkgram.y" /* yacc.c:1646  */
++#line 945 "awkgram.y" /* yacc.c:1646  */
      { in_print = true; in_parens = 0; }
- #line 2797 "awkgram.c" /* yacc.c:1646  */
 -#line 2736 "awkgram.c" /* yacc.c:1646  */
++#line 2790 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 61:
- #line 953 "awkgram.y" /* yacc.c:1646  */
 -#line 952 "awkgram.y" /* yacc.c:1646  */
++#line 946 "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 2805 "awkgram.c" /* yacc.c:1646  */
++#line 2798 "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 967 "awkgram.y" /* yacc.c:1646  */
++#line 960 "awkgram.y" /* yacc.c:1646  */
 +    { in_print = true; in_parens = 0; }
- #line 2811 "awkgram.c" /* yacc.c:1646  */
++#line 2804 "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 968 "awkgram.y" /* yacc.c:1646  */
++#line 961 "awkgram.y" /* yacc.c:1646  */
 +    {
 +              (yyval) = mk_print((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
          }
- #line 2819 "awkgram.c" /* yacc.c:1646  */
 -#line 2837 "awkgram.c" /* yacc.c:1646  */
++#line 2812 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 62:
 -#line 1049 "awkgram.y" /* yacc.c:1646  */
 +  case 64:
- #line 972 "awkgram.y" /* yacc.c:1646  */
++#line 965 "awkgram.y" /* yacc.c:1646  */
      { sub_counter = 0; }
- #line 2825 "awkgram.c" /* yacc.c:1646  */
 -#line 2843 "awkgram.c" /* yacc.c:1646  */
++#line 2818 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 63:
 -#line 1050 "awkgram.y" /* yacc.c:1646  */
 +  case 65:
- #line 973 "awkgram.y" /* yacc.c:1646  */
++#line 966 "awkgram.y" /* yacc.c:1646  */
      {
                char *arr = (yyvsp[-2])->lextok;
  
@@@ -2858,11 -2876,11 +2851,11 @@@
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
- #line 2862 "awkgram.c" /* yacc.c:1646  */
 -#line 2880 "awkgram.c" /* yacc.c:1646  */
++#line 2855 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 64:
 -#line 1087 "awkgram.y" /* yacc.c:1646  */
 +  case 66:
- #line 1010 "awkgram.y" /* yacc.c:1646  */
++#line 1003 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@@ -2888,52 -2906,52 +2881,52 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 2892 "awkgram.c" /* yacc.c:1646  */
 -#line 2910 "awkgram.c" /* yacc.c:1646  */
++#line 2885 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 65:
 -#line 1113 "awkgram.y" /* yacc.c:1646  */
 +  case 67:
- #line 1036 "awkgram.y" /* yacc.c:1646  */
++#line 1029 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = optimize_assignment((yyvsp[0])); }
- #line 2898 "awkgram.c" /* yacc.c:1646  */
 -#line 2916 "awkgram.c" /* yacc.c:1646  */
++#line 2891 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 66:
 -#line 1118 "awkgram.y" /* yacc.c:1646  */
 +  case 68:
- #line 1041 "awkgram.y" /* yacc.c:1646  */
++#line 1034 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2904 "awkgram.c" /* yacc.c:1646  */
 -#line 2922 "awkgram.c" /* yacc.c:1646  */
++#line 2897 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 67:
 -#line 1120 "awkgram.y" /* yacc.c:1646  */
 +  case 69:
- #line 1043 "awkgram.y" /* yacc.c:1646  */
++#line 1036 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2910 "awkgram.c" /* yacc.c:1646  */
 -#line 2928 "awkgram.c" /* yacc.c:1646  */
++#line 2903 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 68:
 -#line 1125 "awkgram.y" /* yacc.c:1646  */
 +  case 70:
- #line 1048 "awkgram.y" /* yacc.c:1646  */
++#line 1041 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2916 "awkgram.c" /* yacc.c:1646  */
 -#line 2934 "awkgram.c" /* yacc.c:1646  */
++#line 2909 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 69:
 -#line 1127 "awkgram.y" /* yacc.c:1646  */
 +  case 71:
- #line 1050 "awkgram.y" /* yacc.c:1646  */
++#line 1043 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
- #line 2927 "awkgram.c" /* yacc.c:1646  */
 -#line 2945 "awkgram.c" /* yacc.c:1646  */
++#line 2920 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 70:
 -#line 1134 "awkgram.y" /* yacc.c:1646  */
 +  case 72:
- #line 1057 "awkgram.y" /* yacc.c:1646  */
++#line 1050 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2933 "awkgram.c" /* yacc.c:1646  */
 -#line 2951 "awkgram.c" /* yacc.c:1646  */
++#line 2926 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 71:
 -#line 1139 "awkgram.y" /* yacc.c:1646  */
 +  case 73:
- #line 1062 "awkgram.y" /* yacc.c:1646  */
++#line 1055 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2945,11 -2963,11 +2938,11 @@@
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
- #line 2949 "awkgram.c" /* yacc.c:1646  */
 -#line 2967 "awkgram.c" /* yacc.c:1646  */
++#line 2942 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 72:
 -#line 1151 "awkgram.y" /* yacc.c:1646  */
 +  case 74:
- #line 1074 "awkgram.y" /* yacc.c:1646  */
++#line 1067 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2960,17 -2978,17 +2953,17 @@@
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
- #line 2964 "awkgram.c" /* yacc.c:1646  */
 -#line 2982 "awkgram.c" /* yacc.c:1646  */
++#line 2957 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 73:
 -#line 1165 "awkgram.y" /* yacc.c:1646  */
 +  case 75:
- #line 1088 "awkgram.y" /* yacc.c:1646  */
++#line 1081 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2970 "awkgram.c" /* yacc.c:1646  */
 -#line 2988 "awkgram.c" /* yacc.c:1646  */
++#line 2963 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 74:
 -#line 1167 "awkgram.y" /* yacc.c:1646  */
 +  case 76:
- #line 1090 "awkgram.y" /* yacc.c:1646  */
++#line 1083 "awkgram.y" /* yacc.c:1646  */
      { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@@ -2978,83 -2996,71 +2971,83 @@@
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 2982 "awkgram.c" /* yacc.c:1646  */
 -#line 3000 "awkgram.c" /* yacc.c:1646  */
++#line 2975 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 75:
 -#line 1175 "awkgram.y" /* yacc.c:1646  */
 +  case 77:
- #line 1098 "awkgram.y" /* yacc.c:1646  */
++#line 1091 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 2991 "awkgram.c" /* yacc.c:1646  */
 -#line 3009 "awkgram.c" /* yacc.c:1646  */
++#line 2984 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 76:
 -#line 1180 "awkgram.y" /* yacc.c:1646  */
 +  case 78:
- #line 1103 "awkgram.y" /* yacc.c:1646  */
++#line 1096 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2997 "awkgram.c" /* yacc.c:1646  */
 -#line 3015 "awkgram.c" /* yacc.c:1646  */
++#line 2990 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 77:
 -#line 1182 "awkgram.y" /* yacc.c:1646  */
 +  case 79:
- #line 1105 "awkgram.y" /* yacc.c:1646  */
++#line 1098 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
- #line 3006 "awkgram.c" /* yacc.c:1646  */
 -#line 3024 "awkgram.c" /* yacc.c:1646  */
++#line 2999 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 78:
 -#line 1190 "awkgram.y" /* yacc.c:1646  */
 +  case 80:
- #line 1113 "awkgram.y" /* yacc.c:1646  */
++#line 1106 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3012 "awkgram.c" /* yacc.c:1646  */
 -#line 3030 "awkgram.c" /* yacc.c:1646  */
++#line 3005 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 79:
 -#line 1192 "awkgram.y" /* yacc.c:1646  */
 +  case 81:
- #line 1115 "awkgram.y" /* yacc.c:1646  */
++#line 1108 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3018 "awkgram.c" /* yacc.c:1646  */
 -#line 3036 "awkgram.c" /* yacc.c:1646  */
++#line 3011 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 81:
 -#line 1202 "awkgram.y" /* yacc.c:1646  */
 +  case 82:
- #line 1120 "awkgram.y" /* yacc.c:1646  */
++#line 1113 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3024 "awkgram.c" /* yacc.c:1646  */
++#line 3017 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 83:
- #line 1122 "awkgram.y" /* yacc.c:1646  */
++#line 1115 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3030 "awkgram.c" /* yacc.c:1646  */
++#line 3023 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 85:
- #line 1132 "awkgram.y" /* yacc.c:1646  */
++#line 1125 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = (yyvsp[-1]);
          }
- #line 3038 "awkgram.c" /* yacc.c:1646  */
 -#line 3044 "awkgram.c" /* yacc.c:1646  */
++#line 3031 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 82:
 -#line 1209 "awkgram.y" /* yacc.c:1646  */
 +  case 86:
- #line 1139 "awkgram.y" /* yacc.c:1646  */
++#line 1132 "awkgram.y" /* yacc.c:1646  */
      {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
- #line 3048 "awkgram.c" /* yacc.c:1646  */
 -#line 3054 "awkgram.c" /* yacc.c:1646  */
++#line 3041 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 83:
 -#line 1214 "awkgram.y" /* yacc.c:1646  */
 +  case 87:
- #line 1144 "awkgram.y" /* yacc.c:1646  */
++#line 1137 "awkgram.y" /* yacc.c:1646  */
      { in_print = false; in_parens = 0; }
- #line 3054 "awkgram.c" /* yacc.c:1646  */
 -#line 3060 "awkgram.c" /* yacc.c:1646  */
++#line 3047 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 84:
 -#line 1215 "awkgram.y" /* yacc.c:1646  */
 +  case 88:
- #line 1145 "awkgram.y" /* yacc.c:1646  */
++#line 1138 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@@ -3062,136 -3068,136 +3055,136 @@@
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3066 "awkgram.c" /* yacc.c:1646  */
 -#line 3072 "awkgram.c" /* yacc.c:1646  */
++#line 3059 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 85:
 -#line 1226 "awkgram.y" /* yacc.c:1646  */
 +  case 89:
- #line 1156 "awkgram.y" /* yacc.c:1646  */
++#line 1149 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3074 "awkgram.c" /* yacc.c:1646  */
 -#line 3080 "awkgram.c" /* yacc.c:1646  */
++#line 3067 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 86:
 -#line 1231 "awkgram.y" /* yacc.c:1646  */
 +  case 90:
- #line 1161 "awkgram.y" /* yacc.c:1646  */
++#line 1154 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3082 "awkgram.c" /* yacc.c:1646  */
 -#line 3088 "awkgram.c" /* yacc.c:1646  */
++#line 3075 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 91:
 -#line 1248 "awkgram.y" /* yacc.c:1646  */
 +  case 95:
- #line 1178 "awkgram.y" /* yacc.c:1646  */
++#line 1171 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3088 "awkgram.c" /* yacc.c:1646  */
 -#line 3094 "awkgram.c" /* yacc.c:1646  */
++#line 3081 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 92:
 -#line 1250 "awkgram.y" /* yacc.c:1646  */
 +  case 96:
- #line 1180 "awkgram.y" /* yacc.c:1646  */
++#line 1173 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3097 "awkgram.c" /* yacc.c:1646  */
 -#line 3103 "awkgram.c" /* yacc.c:1646  */
++#line 3090 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 93:
 -#line 1258 "awkgram.y" /* yacc.c:1646  */
 +  case 97:
- #line 1188 "awkgram.y" /* yacc.c:1646  */
++#line 1181 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3103 "awkgram.c" /* yacc.c:1646  */
 -#line 3109 "awkgram.c" /* yacc.c:1646  */
++#line 3096 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 94:
 -#line 1260 "awkgram.y" /* yacc.c:1646  */
 +  case 98:
- #line 1190 "awkgram.y" /* yacc.c:1646  */
++#line 1183 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3109 "awkgram.c" /* yacc.c:1646  */
 -#line 3115 "awkgram.c" /* yacc.c:1646  */
++#line 3102 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 95:
 -#line 1265 "awkgram.y" /* yacc.c:1646  */
 +  case 99:
- #line 1195 "awkgram.y" /* yacc.c:1646  */
++#line 1188 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3118 "awkgram.c" /* yacc.c:1646  */
 -#line 3124 "awkgram.c" /* yacc.c:1646  */
++#line 3111 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 96:
 -#line 1270 "awkgram.y" /* yacc.c:1646  */
 +  case 100:
- #line 1200 "awkgram.y" /* yacc.c:1646  */
++#line 1193 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3128 "awkgram.c" /* yacc.c:1646  */
 -#line 3134 "awkgram.c" /* yacc.c:1646  */
++#line 3121 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 97:
 -#line 1276 "awkgram.y" /* yacc.c:1646  */
 +  case 101:
- #line 1206 "awkgram.y" /* yacc.c:1646  */
++#line 1199 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3134 "awkgram.c" /* yacc.c:1646  */
 -#line 3140 "awkgram.c" /* yacc.c:1646  */
++#line 3127 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 98:
 -#line 1278 "awkgram.y" /* yacc.c:1646  */
 +  case 102:
- #line 1208 "awkgram.y" /* yacc.c:1646  */
++#line 1201 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3140 "awkgram.c" /* yacc.c:1646  */
 -#line 3146 "awkgram.c" /* yacc.c:1646  */
++#line 3133 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 99:
 -#line 1280 "awkgram.y" /* yacc.c:1646  */
 +  case 103:
- #line 1210 "awkgram.y" /* yacc.c:1646  */
++#line 1203 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-2]); }
- #line 3146 "awkgram.c" /* yacc.c:1646  */
 -#line 3152 "awkgram.c" /* yacc.c:1646  */
++#line 3139 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 100:
 -#line 1286 "awkgram.y" /* yacc.c:1646  */
 +  case 104:
- #line 1216 "awkgram.y" /* yacc.c:1646  */
++#line 1209 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3152 "awkgram.c" /* yacc.c:1646  */
 -#line 3158 "awkgram.c" /* yacc.c:1646  */
++#line 3145 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 101:
 -#line 1288 "awkgram.y" /* yacc.c:1646  */
 +  case 105:
- #line 1218 "awkgram.y" /* yacc.c:1646  */
++#line 1211 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3158 "awkgram.c" /* yacc.c:1646  */
 -#line 3164 "awkgram.c" /* yacc.c:1646  */
++#line 3151 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 102:
 -#line 1293 "awkgram.y" /* yacc.c:1646  */
 +  case 106:
- #line 1223 "awkgram.y" /* yacc.c:1646  */
++#line 1216 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3164 "awkgram.c" /* yacc.c:1646  */
 -#line 3170 "awkgram.c" /* yacc.c:1646  */
++#line 3157 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 103:
 -#line 1295 "awkgram.y" /* yacc.c:1646  */
 +  case 107:
- #line 1225 "awkgram.y" /* yacc.c:1646  */
++#line 1218 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3170 "awkgram.c" /* yacc.c:1646  */
 -#line 3176 "awkgram.c" /* yacc.c:1646  */
++#line 3163 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 104:
 -#line 1300 "awkgram.y" /* yacc.c:1646  */
 +  case 108:
- #line 1230 "awkgram.y" /* yacc.c:1646  */
++#line 1223 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3176 "awkgram.c" /* yacc.c:1646  */
 -#line 3182 "awkgram.c" /* yacc.c:1646  */
++#line 3169 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 105:
 -#line 1302 "awkgram.y" /* yacc.c:1646  */
 +  case 109:
- #line 1232 "awkgram.y" /* yacc.c:1646  */
++#line 1225 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3185 "awkgram.c" /* yacc.c:1646  */
 -#line 3191 "awkgram.c" /* yacc.c:1646  */
++#line 3178 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 106:
 -#line 1307 "awkgram.y" /* yacc.c:1646  */
 +  case 110:
- #line 1237 "awkgram.y" /* yacc.c:1646  */
++#line 1230 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3191 "awkgram.c" /* yacc.c:1646  */
 -#line 3197 "awkgram.c" /* yacc.c:1646  */
++#line 3184 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 107:
 -#line 1309 "awkgram.y" /* yacc.c:1646  */
 +  case 111:
- #line 1239 "awkgram.y" /* yacc.c:1646  */
++#line 1232 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3199,52 -3205,52 +3192,52 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3203 "awkgram.c" /* yacc.c:1646  */
 -#line 3209 "awkgram.c" /* yacc.c:1646  */
++#line 3196 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 108:
 -#line 1317 "awkgram.y" /* yacc.c:1646  */
 +  case 112:
- #line 1247 "awkgram.y" /* yacc.c:1646  */
++#line 1240 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3212 "awkgram.c" /* yacc.c:1646  */
 -#line 3218 "awkgram.c" /* yacc.c:1646  */
++#line 3205 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 109:
 -#line 1322 "awkgram.y" /* yacc.c:1646  */
 +  case 113:
- #line 1252 "awkgram.y" /* yacc.c:1646  */
++#line 1245 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3221 "awkgram.c" /* yacc.c:1646  */
 -#line 3227 "awkgram.c" /* yacc.c:1646  */
++#line 3214 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 110:
 -#line 1331 "awkgram.y" /* yacc.c:1646  */
 +  case 114:
- #line 1261 "awkgram.y" /* yacc.c:1646  */
++#line 1254 "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 3232 "awkgram.c" /* yacc.c:1646  */
 -#line 3238 "awkgram.c" /* yacc.c:1646  */
++#line 3225 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 111:
 -#line 1338 "awkgram.y" /* yacc.c:1646  */
 +  case 115:
- #line 1268 "awkgram.y" /* yacc.c:1646  */
++#line 1261 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3238 "awkgram.c" /* yacc.c:1646  */
 -#line 3244 "awkgram.c" /* yacc.c:1646  */
++#line 3231 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 112:
 -#line 1340 "awkgram.y" /* yacc.c:1646  */
 +  case 116:
- #line 1270 "awkgram.y" /* yacc.c:1646  */
++#line 1263 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3244 "awkgram.c" /* yacc.c:1646  */
 -#line 3250 "awkgram.c" /* yacc.c:1646  */
++#line 3237 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 113:
 -#line 1342 "awkgram.y" /* yacc.c:1646  */
 +  case 117:
- #line 1272 "awkgram.y" /* yacc.c:1646  */
++#line 1265 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3260,11 -3266,11 +3253,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3264 "awkgram.c" /* yacc.c:1646  */
 -#line 3270 "awkgram.c" /* yacc.c:1646  */
++#line 3257 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 114:
 -#line 1358 "awkgram.y" /* yacc.c:1646  */
 +  case 118:
- #line 1288 "awkgram.y" /* yacc.c:1646  */
++#line 1281 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3274,97 -3280,91 +3267,97 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3278 "awkgram.c" /* yacc.c:1646  */
 -#line 3284 "awkgram.c" /* yacc.c:1646  */
++#line 3271 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 115:
 -#line 1368 "awkgram.y" /* yacc.c:1646  */
 +  case 119:
- #line 1298 "awkgram.y" /* yacc.c:1646  */
++#line 1291 "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 3289 "awkgram.c" /* yacc.c:1646  */
 -#line 3295 "awkgram.c" /* yacc.c:1646  */
++#line 3282 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 116:
 -#line 1375 "awkgram.y" /* yacc.c:1646  */
 +  case 120:
- #line 1305 "awkgram.y" /* yacc.c:1646  */
++#line 1298 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3295 "awkgram.c" /* yacc.c:1646  */
 -#line 3301 "awkgram.c" /* yacc.c:1646  */
++#line 3288 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 117:
 -#line 1377 "awkgram.y" /* yacc.c:1646  */
 +  case 121:
- #line 1307 "awkgram.y" /* yacc.c:1646  */
++#line 1300 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3301 "awkgram.c" /* yacc.c:1646  */
 -#line 3307 "awkgram.c" /* yacc.c:1646  */
++#line 3294 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 118:
 -#line 1382 "awkgram.y" /* yacc.c:1646  */
 +  case 122:
- #line 1309 "awkgram.y" /* yacc.c:1646  */
++#line 1302 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3307 "awkgram.c" /* yacc.c:1646  */
 -#line 3313 "awkgram.c" /* yacc.c:1646  */
++#line 3300 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 119:
 -#line 1384 "awkgram.y" /* yacc.c:1646  */
 +  case 123:
- #line 1314 "awkgram.y" /* yacc.c:1646  */
++#line 1307 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3313 "awkgram.c" /* yacc.c:1646  */
 -#line 3319 "awkgram.c" /* yacc.c:1646  */
++#line 3306 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 120:
 -#line 1386 "awkgram.y" /* yacc.c:1646  */
 +  case 124:
- #line 1316 "awkgram.y" /* yacc.c:1646  */
++#line 1309 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3319 "awkgram.c" /* yacc.c:1646  */
++#line 3312 "awkgram.c" /* yacc.c:1646  */
 +    break;
 +
 +  case 125:
- #line 1318 "awkgram.y" /* yacc.c:1646  */
++#line 1311 "awkgram.y" /* yacc.c:1646  */
      { 
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
--#line 3328 "awkgram.c" /* yacc.c:1646  */
++#line 3321 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 121:
 -#line 1394 "awkgram.y" /* yacc.c:1646  */
 +  case 126:
- #line 1326 "awkgram.y" /* yacc.c:1646  */
++#line 1319 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3334 "awkgram.c" /* yacc.c:1646  */
++#line 3327 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 122:
 -#line 1396 "awkgram.y" /* yacc.c:1646  */
 +  case 127:
- #line 1328 "awkgram.y" /* yacc.c:1646  */
++#line 1321 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3340 "awkgram.c" /* yacc.c:1646  */
++#line 3333 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 123:
 -#line 1401 "awkgram.y" /* yacc.c:1646  */
 +  case 128:
- #line 1333 "awkgram.y" /* yacc.c:1646  */
++#line 1326 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3346 "awkgram.c" /* yacc.c:1646  */
++#line 3339 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 124:
 -#line 1403 "awkgram.y" /* yacc.c:1646  */
 +  case 129:
- #line 1335 "awkgram.y" /* yacc.c:1646  */
++#line 1328 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3352 "awkgram.c" /* yacc.c:1646  */
++#line 3345 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 125:
 -#line 1408 "awkgram.y" /* yacc.c:1646  */
 +  case 130:
- #line 1340 "awkgram.y" /* yacc.c:1646  */
++#line 1333 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3358 "awkgram.c" /* yacc.c:1646  */
++#line 3351 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 126:
 -#line 1410 "awkgram.y" /* yacc.c:1646  */
 +  case 131:
- #line 1342 "awkgram.y" /* yacc.c:1646  */
++#line 1335 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3364 "awkgram.c" /* yacc.c:1646  */
++#line 3357 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 127:
 -#line 1412 "awkgram.y" /* yacc.c:1646  */
 +  case 132:
- #line 1344 "awkgram.y" /* yacc.c:1646  */
++#line 1337 "awkgram.y" /* yacc.c:1646  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3411,47 -3411,47 +3404,47 @@@
                                max_args = count;
                }
          }
--#line 3415 "awkgram.c" /* yacc.c:1646  */
++#line 3408 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 129:
 -#line 1464 "awkgram.y" /* yacc.c:1646  */
 +  case 134:
- #line 1396 "awkgram.y" /* yacc.c:1646  */
++#line 1389 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3421 "awkgram.c" /* yacc.c:1646  */
++#line 3414 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 130:
 -#line 1466 "awkgram.y" /* yacc.c:1646  */
 +  case 135:
- #line 1398 "awkgram.y" /* yacc.c:1646  */
++#line 1391 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3427 "awkgram.c" /* yacc.c:1646  */
++#line 3420 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 131:
 -#line 1468 "awkgram.y" /* yacc.c:1646  */
 +  case 136:
- #line 1400 "awkgram.y" /* yacc.c:1646  */
++#line 1393 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3433 "awkgram.c" /* yacc.c:1646  */
++#line 3426 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 132:
 -#line 1470 "awkgram.y" /* yacc.c:1646  */
 +  case 137:
- #line 1402 "awkgram.y" /* yacc.c:1646  */
++#line 1395 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3439 "awkgram.c" /* yacc.c:1646  */
++#line 3432 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 133:
 -#line 1472 "awkgram.y" /* yacc.c:1646  */
 +  case 138:
- #line 1404 "awkgram.y" /* yacc.c:1646  */
++#line 1397 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3445 "awkgram.c" /* yacc.c:1646  */
++#line 3438 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 134:
 -#line 1474 "awkgram.y" /* yacc.c:1646  */
 +  case 139:
- #line 1406 "awkgram.y" /* yacc.c:1646  */
++#line 1399 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3451 "awkgram.c" /* yacc.c:1646  */
++#line 3444 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 135:
 -#line 1476 "awkgram.y" /* yacc.c:1646  */
 +  case 140:
- #line 1408 "awkgram.y" /* yacc.c:1646  */
++#line 1401 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3465,29 -3465,29 +3458,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
--#line 3469 "awkgram.c" /* yacc.c:1646  */
++#line 3462 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 136:
 -#line 1490 "awkgram.y" /* yacc.c:1646  */
 +  case 141:
- #line 1422 "awkgram.y" /* yacc.c:1646  */
++#line 1415 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
--#line 3478 "awkgram.c" /* yacc.c:1646  */
++#line 3471 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 137:
 -#line 1495 "awkgram.y" /* yacc.c:1646  */
 +  case 142:
- #line 1427 "awkgram.y" /* yacc.c:1646  */
++#line 1420 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
--#line 3487 "awkgram.c" /* yacc.c:1646  */
++#line 3480 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 138:
 -#line 1500 "awkgram.y" /* yacc.c:1646  */
 +  case 143:
- #line 1432 "awkgram.y" /* yacc.c:1646  */
++#line 1425 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3507,64 -3507,64 +3500,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
--#line 3511 "awkgram.c" /* yacc.c:1646  */
++#line 3504 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 139:
 -#line 1525 "awkgram.y" /* yacc.c:1646  */
 +  case 144:
- #line 1457 "awkgram.y" /* yacc.c:1646  */
++#line 1450 "awkgram.y" /* yacc.c:1646  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
--#line 3520 "awkgram.c" /* yacc.c:1646  */
++#line 3513 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 140:
 -#line 1531 "awkgram.y" /* yacc.c:1646  */
 +  case 145:
- #line 1463 "awkgram.y" /* yacc.c:1646  */
++#line 1456 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3526 "awkgram.c" /* yacc.c:1646  */
++#line 3519 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 141:
 -#line 1533 "awkgram.y" /* yacc.c:1646  */
 +  case 146:
- #line 1465 "awkgram.y" /* yacc.c:1646  */
++#line 1458 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3532 "awkgram.c" /* yacc.c:1646  */
++#line 3525 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 142:
 -#line 1535 "awkgram.y" /* yacc.c:1646  */
 +  case 147:
- #line 1467 "awkgram.y" /* yacc.c:1646  */
++#line 1460 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3538 "awkgram.c" /* yacc.c:1646  */
++#line 3531 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 143:
 -#line 1537 "awkgram.y" /* yacc.c:1646  */
 +  case 148:
- #line 1469 "awkgram.y" /* yacc.c:1646  */
++#line 1462 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3544 "awkgram.c" /* yacc.c:1646  */
++#line 3537 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 144:
 -#line 1539 "awkgram.y" /* yacc.c:1646  */
 +  case 149:
- #line 1471 "awkgram.y" /* yacc.c:1646  */
++#line 1464 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3550 "awkgram.c" /* yacc.c:1646  */
++#line 3543 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 145:
 -#line 1541 "awkgram.y" /* yacc.c:1646  */
 +  case 150:
- #line 1473 "awkgram.y" /* yacc.c:1646  */
++#line 1466 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
--#line 3556 "awkgram.c" /* yacc.c:1646  */
++#line 3549 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 146:
 -#line 1546 "awkgram.y" /* yacc.c:1646  */
 +  case 151:
- #line 1478 "awkgram.y" /* yacc.c:1646  */
++#line 1471 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
--#line 3564 "awkgram.c" /* yacc.c:1646  */
++#line 3557 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 147:
 -#line 1550 "awkgram.y" /* yacc.c:1646  */
 +  case 152:
- #line 1482 "awkgram.y" /* yacc.c:1646  */
++#line 1475 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3596,37 -3596,37 +3589,37 @@@
                        }
                }
           }
--#line 3600 "awkgram.c" /* yacc.c:1646  */
++#line 3593 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 148:
 -#line 1582 "awkgram.y" /* yacc.c:1646  */
 +  case 153:
- #line 1514 "awkgram.y" /* yacc.c:1646  */
++#line 1507 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
--#line 3606 "awkgram.c" /* yacc.c:1646  */
++#line 3599 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 149:
 -#line 1584 "awkgram.y" /* yacc.c:1646  */
 +  case 154:
- #line 1516 "awkgram.y" /* yacc.c:1646  */
++#line 1509 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
--#line 3616 "awkgram.c" /* yacc.c:1646  */
++#line 3609 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 150:
 -#line 1590 "awkgram.y" /* yacc.c:1646  */
 +  case 155:
- #line 1522 "awkgram.y" /* yacc.c:1646  */
++#line 1515 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
--#line 3626 "awkgram.c" /* yacc.c:1646  */
++#line 3619 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 151:
 -#line 1596 "awkgram.y" /* yacc.c:1646  */
 +  case 156:
- #line 1528 "awkgram.y" /* yacc.c:1646  */
++#line 1521 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
  
@@@ -3639,45 -3639,45 +3632,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
--#line 3643 "awkgram.c" /* yacc.c:1646  */
++#line 3636 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 154:
 -#line 1611 "awkgram.y" /* yacc.c:1646  */
 +  case 159:
- #line 1543 "awkgram.y" /* yacc.c:1646  */
++#line 1536 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
--#line 3652 "awkgram.c" /* yacc.c:1646  */
++#line 3645 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 155:
 -#line 1616 "awkgram.y" /* yacc.c:1646  */
 +  case 160:
- #line 1548 "awkgram.y" /* yacc.c:1646  */
++#line 1541 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
--#line 3661 "awkgram.c" /* yacc.c:1646  */
++#line 3654 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 156:
 -#line 1621 "awkgram.y" /* yacc.c:1646  */
 +  case 161:
- #line 1553 "awkgram.y" /* yacc.c:1646  */
++#line 1546 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
--#line 3669 "awkgram.c" /* yacc.c:1646  */
++#line 3662 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 157:
 -#line 1625 "awkgram.y" /* yacc.c:1646  */
 +  case 162:
- #line 1557 "awkgram.y" /* yacc.c:1646  */
++#line 1550 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
--#line 3677 "awkgram.c" /* yacc.c:1646  */
++#line 3670 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 158:
 -#line 1629 "awkgram.y" /* yacc.c:1646  */
 +  case 163:
- #line 1561 "awkgram.y" /* yacc.c:1646  */
++#line 1554 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@@ -3692,11 -3692,11 +3685,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
--#line 3696 "awkgram.c" /* yacc.c:1646  */
++#line 3689 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 159:
 -#line 1644 "awkgram.y" /* yacc.c:1646  */
 +  case 164:
- #line 1576 "awkgram.y" /* yacc.c:1646  */
++#line 1569 "awkgram.y" /* yacc.c:1646  */
      {
            /*
             * was: $$ = $2
@@@ -3706,20 -3706,20 +3699,20 @@@
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
--#line 3710 "awkgram.c" /* yacc.c:1646  */
++#line 3703 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 160:
 -#line 1657 "awkgram.y" /* yacc.c:1646  */
 +  case 165:
- #line 1589 "awkgram.y" /* yacc.c:1646  */
++#line 1582 "awkgram.y" /* yacc.c:1646  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
--#line 3719 "awkgram.c" /* yacc.c:1646  */
++#line 3712 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 161:
 -#line 1662 "awkgram.y" /* yacc.c:1646  */
 +  case 166:
- #line 1594 "awkgram.y" /* yacc.c:1646  */
++#line 1587 "awkgram.y" /* yacc.c:1646  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3752,11 -3752,11 +3745,11 @@@
  
                (yyval) = list_prepend((yyvsp[0]), t);
          }
--#line 3756 "awkgram.c" /* yacc.c:1646  */
++#line 3749 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 162:
 -#line 1698 "awkgram.y" /* yacc.c:1646  */
 +  case 167:
- #line 1630 "awkgram.y" /* yacc.c:1646  */
++#line 1623 "awkgram.y" /* yacc.c:1646  */
      {
                param_sanity((yyvsp[-1]));
                (yyvsp[-3])->opcode = Op_func_call;
@@@ -3770,49 -3770,49 +3763,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
--#line 3774 "awkgram.c" /* yacc.c:1646  */
++#line 3767 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 163:
 -#line 1715 "awkgram.y" /* yacc.c:1646  */
 +  case 168:
- #line 1647 "awkgram.y" /* yacc.c:1646  */
++#line 1640 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
--#line 3780 "awkgram.c" /* yacc.c:1646  */
++#line 3773 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 164:
 -#line 1717 "awkgram.y" /* yacc.c:1646  */
 +  case 169:
- #line 1649 "awkgram.y" /* yacc.c:1646  */
++#line 1642 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3786 "awkgram.c" /* yacc.c:1646  */
++#line 3779 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 165:
 -#line 1722 "awkgram.y" /* yacc.c:1646  */
 +  case 170:
- #line 1654 "awkgram.y" /* yacc.c:1646  */
++#line 1647 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
--#line 3792 "awkgram.c" /* yacc.c:1646  */
++#line 3785 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 166:
 -#line 1724 "awkgram.y" /* yacc.c:1646  */
 +  case 171:
- #line 1656 "awkgram.y" /* yacc.c:1646  */
++#line 1649 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
--#line 3798 "awkgram.c" /* yacc.c:1646  */
++#line 3791 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 167:
 -#line 1729 "awkgram.y" /* yacc.c:1646  */
 +  case 172:
- #line 1661 "awkgram.y" /* yacc.c:1646  */
++#line 1654 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3804 "awkgram.c" /* yacc.c:1646  */
++#line 3797 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 168:
 -#line 1731 "awkgram.y" /* yacc.c:1646  */
 +  case 173:
- #line 1663 "awkgram.y" /* yacc.c:1646  */
++#line 1656 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
--#line 3812 "awkgram.c" /* yacc.c:1646  */
++#line 3805 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 169:
 -#line 1738 "awkgram.y" /* yacc.c:1646  */
 +  case 174:
- #line 1670 "awkgram.y" /* yacc.c:1646  */
++#line 1663 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3826,11 -3826,11 +3819,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
--#line 3830 "awkgram.c" /* yacc.c:1646  */
++#line 3823 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 170:
 -#line 1755 "awkgram.y" /* yacc.c:1646  */
 +  case 175:
- #line 1687 "awkgram.y" /* yacc.c:1646  */
++#line 1680 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -3844,31 -3844,31 +3837,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
--#line 3848 "awkgram.c" /* yacc.c:1646  */
++#line 3841 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 171:
 -#line 1772 "awkgram.y" /* yacc.c:1646  */
 +  case 176:
- #line 1704 "awkgram.y" /* yacc.c:1646  */
++#line 1697 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
--#line 3854 "awkgram.c" /* yacc.c:1646  */
++#line 3847 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 172:
 -#line 1774 "awkgram.y" /* yacc.c:1646  */
 +  case 177:
- #line 1706 "awkgram.y" /* yacc.c:1646  */
++#line 1699 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
--#line 3862 "awkgram.c" /* yacc.c:1646  */
++#line 3855 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 173:
 -#line 1781 "awkgram.y" /* yacc.c:1646  */
 +  case 178:
- #line 1713 "awkgram.y" /* yacc.c:1646  */
++#line 1706 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
--#line 3868 "awkgram.c" /* yacc.c:1646  */
++#line 3861 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 174:
 -#line 1786 "awkgram.y" /* yacc.c:1646  */
 +  case 179:
- #line 1718 "awkgram.y" /* yacc.c:1646  */
++#line 1711 "awkgram.y" /* yacc.c:1646  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -3876,22 -3876,22 +3869,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
--#line 3880 "awkgram.c" /* yacc.c:1646  */
++#line 3873 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 175:
 -#line 1794 "awkgram.y" /* yacc.c:1646  */
 +  case 180:
- #line 1726 "awkgram.y" /* yacc.c:1646  */
++#line 1719 "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 3891 "awkgram.c" /* yacc.c:1646  */
++#line 3884 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 176:
 -#line 1804 "awkgram.y" /* yacc.c:1646  */
 +  case 181:
- #line 1736 "awkgram.y" /* yacc.c:1646  */
++#line 1729 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -3903,73 -3903,73 +3896,73 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
--#line 3907 "awkgram.c" /* yacc.c:1646  */
++#line 3900 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 177:
 -#line 1816 "awkgram.y" /* yacc.c:1646  */
 +  case 182:
- #line 1748 "awkgram.y" /* yacc.c:1646  */
++#line 1741 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
--#line 3917 "awkgram.c" /* yacc.c:1646  */
++#line 3910 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 178:
 -#line 1825 "awkgram.y" /* yacc.c:1646  */
 +  case 183:
- #line 1757 "awkgram.y" /* yacc.c:1646  */
++#line 1750 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
--#line 3925 "awkgram.c" /* yacc.c:1646  */
++#line 3918 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 179:
 -#line 1829 "awkgram.y" /* yacc.c:1646  */
 +  case 184:
- #line 1761 "awkgram.y" /* yacc.c:1646  */
++#line 1754 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
--#line 3933 "awkgram.c" /* yacc.c:1646  */
++#line 3926 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 180:
 -#line 1832 "awkgram.y" /* yacc.c:1646  */
 +  case 185:
- #line 1764 "awkgram.y" /* yacc.c:1646  */
++#line 1757 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
--#line 3939 "awkgram.c" /* yacc.c:1646  */
++#line 3932 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 182:
 -#line 1840 "awkgram.y" /* yacc.c:1646  */
 +  case 187:
- #line 1772 "awkgram.y" /* yacc.c:1646  */
++#line 1765 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
--#line 3945 "awkgram.c" /* yacc.c:1646  */
++#line 3938 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 183:
 -#line 1844 "awkgram.y" /* yacc.c:1646  */
 +  case 188:
- #line 1776 "awkgram.y" /* yacc.c:1646  */
++#line 1769 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
--#line 3951 "awkgram.c" /* yacc.c:1646  */
++#line 3944 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 186:
 -#line 1853 "awkgram.y" /* yacc.c:1646  */
 +  case 191:
- #line 1785 "awkgram.y" /* yacc.c:1646  */
++#line 1778 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
--#line 3957 "awkgram.c" /* yacc.c:1646  */
++#line 3950 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 187:
 -#line 1857 "awkgram.y" /* yacc.c:1646  */
 +  case 192:
- #line 1789 "awkgram.y" /* yacc.c:1646  */
++#line 1782 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); yyerrok; }
--#line 3963 "awkgram.c" /* yacc.c:1646  */
++#line 3956 "awkgram.c" /* yacc.c:1646  */
      break;
  
 -  case 188:
 -#line 1861 "awkgram.y" /* yacc.c:1646  */
 +  case 193:
- #line 1793 "awkgram.y" /* yacc.c:1646  */
++#line 1786 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
--#line 3969 "awkgram.c" /* yacc.c:1646  */
++#line 3962 "awkgram.c" /* yacc.c:1646  */
      break;
  
  
--#line 3973 "awkgram.c" /* yacc.c:1646  */
++#line 3966 "awkgram.c" /* yacc.c:1646  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4197,7 -4197,7 +4190,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 1795 "awkgram.y" /* yacc.c:1906  */
 -#line 1863 "awkgram.y" /* yacc.c:1906  */
++#line 1788 "awkgram.y" /* yacc.c:1906  */
  
  
  struct token {
diff --cc doc/gawk.info
index 26dc45e,fe51de5..1c6a74f
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -34470,560 -34453,559 +34469,560 @@@ Inde
  Tag Table:
  Node: Top1204
  Node: Foreword342225
- Node: Foreword446667
- Node: Preface48189
- Ref: Preface-Footnote-151060
- Ref: Preface-Footnote-251167
- Ref: Preface-Footnote-351400
- Node: History51542
- Node: Names53888
- Ref: Names-Footnote-154982
- Node: This Manual55128
- Ref: This Manual-Footnote-161615
- Node: Conventions61715
- Node: Manual History64053
- Ref: Manual History-Footnote-167035
- Ref: Manual History-Footnote-267076
- Node: How To Contribute67150
- Node: Acknowledgments68279
- Node: Getting Started73084
- Node: Running gawk75517
- Node: One-shot76707
- Node: Read Terminal77955
- Node: Long79982
- Node: Executable Scripts81498
- Ref: Executable Scripts-Footnote-184287
- Node: Comments84390
- Node: Quoting86872
- Node: DOS Quoting92396
- Node: Sample Data Files93071
- Node: Very Simple95666
- Node: Two Rules100564
- Node: More Complex102450
- Node: Statements/Lines105312
- Ref: Statements/Lines-Footnote-1109767
- Node: Other Features110032
- Node: When110963
- Ref: When-Footnote-1112717
- Node: Intro Summary112782
- Node: Invoking Gawk113665
- Node: Command Line115179
- Node: Options115977
- Ref: Options-Footnote-1131781
- Ref: Options-Footnote-2132010
- Node: Other Arguments132035
- Node: Naming Standard Input134983
- Node: Environment Variables136076
- Node: AWKPATH Variable136634
- Ref: AWKPATH Variable-Footnote-1140047
- Ref: AWKPATH Variable-Footnote-2140092
- Node: AWKLIBPATH Variable140352
- Node: Other Environment Variables141608
- Node: Exit Status145096
- Node: Include Files145772
- Node: Loading Shared Libraries149369
- Node: Obsolete150796
- Node: Undocumented151493
- Node: Invoking Summary151760
- Node: Regexp153424
- Node: Regexp Usage154878
- Node: Escape Sequences156915
- Node: Regexp Operators163156
- Ref: Regexp Operators-Footnote-1170582
- Ref: Regexp Operators-Footnote-2170729
- Node: Bracket Expressions170827
- Ref: table-char-classes172842
- Node: Leftmost Longest175766
- Node: Computed Regexps177068
- Node: GNU Regexp Operators180465
- Node: Case-sensitivity184138
- Ref: Case-sensitivity-Footnote-1187023
- Ref: Case-sensitivity-Footnote-2187258
- Node: Regexp Summary187366
- Node: Reading Files188833
- Node: Records190927
- Node: awk split records191660
- Node: gawk split records196575
- Ref: gawk split records-Footnote-1201119
- Node: Fields201156
- Ref: Fields-Footnote-1203932
- Node: Nonconstant Fields204018
- Ref: Nonconstant Fields-Footnote-1206261
- Node: Changing Fields206465
- Node: Field Separators212394
- Node: Default Field Splitting215099
- Node: Regexp Field Splitting216216
- Node: Single Character Fields219566
- Node: Command Line Field Separator220625
- Node: Full Line Fields223837
- Ref: Full Line Fields-Footnote-1225354
- Ref: Full Line Fields-Footnote-2225400
- Node: Field Splitting Summary225501
- Node: Constant Size227575
- Node: Splitting By Content232164
- Ref: Splitting By Content-Footnote-1236158
- Node: Multiple Line236321
- Ref: Multiple Line-Footnote-1242207
- Node: Getline242386
- Node: Plain Getline244598
- Node: Getline/Variable247238
- Node: Getline/File248386
- Node: Getline/Variable/File249770
- Ref: Getline/Variable/File-Footnote-1251373
- Node: Getline/Pipe251460
- Node: Getline/Variable/Pipe254143
- Node: Getline/Coprocess255274
- Node: Getline/Variable/Coprocess256526
- Node: Getline Notes257265
- Node: Getline Summary260057
- Ref: table-getline-variants260469
- Node: Read Timeout261298
- Ref: Read Timeout-Footnote-1265123
- Node: Command-line directories265181
- Node: Input Summary266086
- Node: Input Exercises269387
- Node: Printing270115
- Node: Print271952
- Node: Print Examples273409
- Node: Output Separators276188
- Node: OFMT278206
- Node: Printf279560
- Node: Basic Printf280345
- Node: Control Letters281915
- Node: Format Modifiers285898
- Node: Printf Examples291907
- Node: Redirection294393
- Node: Special FD301234
- Ref: Special FD-Footnote-1304394
- Node: Special Files304468
- Node: Other Inherited Files305085
- Node: Special Network306085
- Node: Special Caveats306947
- Node: Close Files And Pipes307898
- Ref: Close Files And Pipes-Footnote-1315085
- Ref: Close Files And Pipes-Footnote-2315233
- Node: Print Return Values315383
- Node: Output Summary315937
- Node: Output Exercises316933
- Node: Expressions317613
- Node: Values318798
- Node: Constants319476
- Node: Scalar Constants320167
- Ref: Scalar Constants-Footnote-1321026
- Node: Nondecimal-numbers321276
- Node: Regexp Constants324294
- Node: Using Constant Regexps324819
- Node: Variables327962
- Node: Using Variables328617
- Node: Assignment Options330528
- Node: Conversion332403
- Node: Strings And Numbers332927
- Ref: Strings And Numbers-Footnote-1335992
- Node: Locale influences conversions336101
- Ref: table-locale-affects338848
- Node: All Operators339436
- Node: Arithmetic Ops340066
- Node: Concatenation342571
- Ref: Concatenation-Footnote-1345390
- Node: Assignment Ops345496
- Ref: table-assign-ops350475
- Node: Increment Ops351747
- Node: Truth Values and Conditions355185
- Node: Truth Values356270
- Node: Typing and Comparison357319
- Node: Variable Typing358129
- Node: Comparison Operators361782
- Ref: table-relational-ops362192
- Node: POSIX String Comparison365687
- Ref: POSIX String Comparison-Footnote-1366759
- Node: Boolean Ops366897
- Ref: Boolean Ops-Footnote-1371376
- Node: Conditional Exp371467
- Node: Function Calls373194
- Node: Precedence377074
- Node: Locales380735
- Node: Expressions Summary382367
- Node: Patterns and Actions384927
- Node: Pattern Overview386047
- Node: Regexp Patterns387726
- Node: Expression Patterns388269
- Node: Ranges391979
- Node: BEGIN/END395085
- Node: Using BEGIN/END395846
- Ref: Using BEGIN/END-Footnote-1398580
- Node: I/O And BEGIN/END398686
- Node: BEGINFILE/ENDFILE401000
- Node: Empty403901
- Node: Using Shell Variables404218
- Node: Action Overview406491
- Node: Statements408817
- Node: If Statement410665
- Node: While Statement412160
- Node: Do Statement414189
- Node: For Statement415333
- Node: Switch Statement418490
- Node: Break Statement420872
- Node: Continue Statement422913
- Node: Next Statement424740
- Node: Nextfile Statement427121
- Node: Exit Statement429751
- Node: Built-in Variables432154
- Node: User-modified433287
- Ref: User-modified-Footnote-1440968
- Node: Auto-set441030
- Ref: Auto-set-Footnote-1454722
- Ref: Auto-set-Footnote-2454927
- Node: ARGC and ARGV454983
- Node: Pattern Action Summary459201
- Node: Arrays461628
- Node: Array Basics462957
- Node: Array Intro463801
- Ref: figure-array-elements465765
- Ref: Array Intro-Footnote-1468291
- Node: Reference to Elements468419
- Node: Assigning Elements470871
- Node: Array Example471362
- Node: Scanning an Array473120
- Node: Controlling Scanning476136
- Ref: Controlling Scanning-Footnote-1481332
- Node: Numeric Array Subscripts481648
- Node: Uninitialized Subscripts483833
- Node: Delete485450
- Ref: Delete-Footnote-1488193
- Node: Multidimensional488250
- Node: Multiscanning491347
- Node: Arrays of Arrays492936
- Node: Arrays Summary497695
- Node: Functions499787
- Node: Built-in500686
- Node: Calling Built-in501764
- Node: Numeric Functions503755
- Ref: Numeric Functions-Footnote-1508574
- Ref: Numeric Functions-Footnote-2508931
- Ref: Numeric Functions-Footnote-3508979
- Node: String Functions509251
- Ref: String Functions-Footnote-1532726
- Ref: String Functions-Footnote-2532855
- Ref: String Functions-Footnote-3533103
- Node: Gory Details533190
- Ref: table-sub-escapes534971
- Ref: table-sub-proposed536491
- Ref: table-posix-sub537855
- Ref: table-gensub-escapes539391
- Ref: Gory Details-Footnote-1540223
- Node: I/O Functions540374
- Ref: I/O Functions-Footnote-1547592
- Node: Time Functions547739
- Ref: Time Functions-Footnote-1558227
- Ref: Time Functions-Footnote-2558295
- Ref: Time Functions-Footnote-3558453
- Ref: Time Functions-Footnote-4558564
- Ref: Time Functions-Footnote-5558676
- Ref: Time Functions-Footnote-6558903
- Node: Bitwise Functions559169
- Ref: table-bitwise-ops559731
- Ref: Bitwise Functions-Footnote-1564040
- Node: Type Functions564209
- Node: I18N Functions565360
- Node: User-defined567005
- Node: Definition Syntax567810
- Ref: Definition Syntax-Footnote-1573217
- Node: Function Example573288
- Ref: Function Example-Footnote-1576207
- Node: Function Caveats576229
- Node: Calling A Function576747
- Node: Variable Scope577705
- Node: Pass By Value/Reference580693
- Node: Return Statement584188
- Node: Dynamic Typing587169
- Node: Indirect Calls588098
- Ref: Indirect Calls-Footnote-1599400
- Node: Functions Summary599528
- Node: Library Functions602230
- Ref: Library Functions-Footnote-1605839
- Ref: Library Functions-Footnote-2605982
- Node: Library Names606153
- Ref: Library Names-Footnote-1609607
- Ref: Library Names-Footnote-2609830
- Node: General Functions609916
- Node: Strtonum Function611019
- Node: Assert Function614041
- Node: Round Function617365
- Node: Cliff Random Function618906
- Node: Ordinal Functions619922
- Ref: Ordinal Functions-Footnote-1622985
- Ref: Ordinal Functions-Footnote-2623237
- Node: Join Function623448
- Ref: Join Function-Footnote-1625217
- Node: Getlocaltime Function625417
- Node: Readfile Function629161
- Node: Shell Quoting631131
- Node: Data File Management632532
- Node: Filetrans Function633164
- Node: Rewind Function637220
- Node: File Checking638607
- Ref: File Checking-Footnote-1639939
- Node: Empty Files640140
- Node: Ignoring Assigns642119
- Node: Getopt Function643670
- Ref: Getopt Function-Footnote-1655132
- Node: Passwd Functions655332
- Ref: Passwd Functions-Footnote-1664169
- Node: Group Functions664257
- Ref: Group Functions-Footnote-1672151
- Node: Walking Arrays672364
- Node: Library Functions Summary673967
- Node: Library Exercises675368
- Node: Sample Programs676648
- Node: Running Examples677418
- Node: Clones678146
- Node: Cut Program679370
- Node: Egrep Program689089
- Ref: Egrep Program-Footnote-1696587
- Node: Id Program696697
- Node: Split Program700342
- Ref: Split Program-Footnote-1703790
- Node: Tee Program703918
- Node: Uniq Program706707
- Node: Wc Program714126
- Ref: Wc Program-Footnote-1718376
- Node: Miscellaneous Programs718470
- Node: Dupword Program719683
- Node: Alarm Program721714
- Node: Translate Program726518
- Ref: Translate Program-Footnote-1731083
- Node: Labels Program731353
- Ref: Labels Program-Footnote-1734704
- Node: Word Sorting734788
- Node: History Sorting738859
- Node: Extract Program740695
- Node: Simple Sed748220
- Node: Igawk Program751288
- Ref: Igawk Program-Footnote-1765612
- Ref: Igawk Program-Footnote-2765813
- Ref: Igawk Program-Footnote-3765935
- Node: Anagram Program766050
- Node: Signature Program769107
- Node: Programs Summary770354
- Node: Programs Exercises771547
- Ref: Programs Exercises-Footnote-1775678
- Node: Advanced Features775769
- Node: Nondecimal Data777717
- Node: Array Sorting779307
- Node: Controlling Array Traversal780004
- Ref: Controlling Array Traversal-Footnote-1788337
- Node: Array Sorting Functions788455
- Ref: Array Sorting Functions-Footnote-1792344
- Node: Two-way I/O792540
- Ref: Two-way I/O-Footnote-1797485
- Ref: Two-way I/O-Footnote-2797671
- Node: TCP/IP Networking797753
- Node: Profiling800626
- Node: Advanced Features Summary808903
- Node: Internationalization810836
- Node: I18N and L10N812316
- Node: Explaining gettext813002
- Ref: Explaining gettext-Footnote-1818027
- Ref: Explaining gettext-Footnote-2818211
- Node: Programmer i18n818376
- Ref: Programmer i18n-Footnote-1823242
- Node: Translator i18n823291
- Node: String Extraction824085
- Ref: String Extraction-Footnote-1825216
- Node: Printf Ordering825302
- Ref: Printf Ordering-Footnote-1828088
- Node: I18N Portability828152
- Ref: I18N Portability-Footnote-1830607
- Node: I18N Example830670
- Ref: I18N Example-Footnote-1833473
- Node: Gawk I18N833545
- Node: I18N Summary834183
- Node: Debugger835522
- Node: Debugging836544
- Node: Debugging Concepts836985
- Node: Debugging Terms838838
- Node: Awk Debugging841410
- Node: Sample Debugging Session842304
- Node: Debugger Invocation842824
- Node: Finding The Bug844208
- Node: List of Debugger Commands850683
- Node: Breakpoint Control852016
- Node: Debugger Execution Control855712
- Node: Viewing And Changing Data859076
- Node: Execution Stack862454
- Node: Debugger Info864091
- Node: Miscellaneous Debugger Commands868108
- Node: Readline Support873137
- Node: Limitations874029
- Node: Debugging Summary876143
- Node: Arbitrary Precision Arithmetic877311
- Node: Computer Arithmetic878727
- Ref: table-numeric-ranges882325
- Ref: Computer Arithmetic-Footnote-1883184
- Node: Math Definitions883241
- Ref: table-ieee-formats886529
- Ref: Math Definitions-Footnote-1887133
- Node: MPFR features887238
- Node: FP Math Caution888909
- Ref: FP Math Caution-Footnote-1889959
- Node: Inexactness of computations890328
- Node: Inexact representation891287
- Node: Comparing FP Values892644
- Node: Errors accumulate893726
- Node: Getting Accuracy895159
- Node: Try To Round897821
- Node: Setting precision898720
- Ref: table-predefined-precision-strings899404
- Node: Setting the rounding mode901193
- Ref: table-gawk-rounding-modes901557
- Ref: Setting the rounding mode-Footnote-1905012
- Node: Arbitrary Precision Integers905191
- Ref: Arbitrary Precision Integers-Footnote-1910090
- Node: POSIX Floating Point Problems910239
- Ref: POSIX Floating Point Problems-Footnote-1914112
- Node: Floating point summary914150
- Node: Dynamic Extensions916344
- Node: Extension Intro917896
- Node: Plugin License919162
- Node: Extension Mechanism Outline919959
- Ref: figure-load-extension920387
- Ref: figure-register-new-function921867
- Ref: figure-call-new-function922871
- Node: Extension API Description924857
- Node: Extension API Functions Introduction926307
- Node: General Data Types931131
- Ref: General Data Types-Footnote-1936870
- Node: Memory Allocation Functions937169
- Ref: Memory Allocation Functions-Footnote-1940008
- Node: Constructor Functions940104
- Node: Registration Functions941838
- Node: Extension Functions942523
- Node: Exit Callback Functions944820
- Node: Extension Version String946068
- Node: Input Parsers946733
- Node: Output Wrappers956612
- Node: Two-way processors961127
- Node: Printing Messages963331
- Ref: Printing Messages-Footnote-1964407
- Node: Updating `ERRNO'964559
- Node: Requesting Values965299
- Ref: table-value-types-returned966027
- Node: Accessing Parameters966984
- Node: Symbol Table Access968215
- Node: Symbol table by name968729
- Node: Symbol table by cookie970710
- Ref: Symbol table by cookie-Footnote-1974854
- Node: Cached values974917
- Ref: Cached values-Footnote-1978416
- Node: Array Manipulation978507
- Ref: Array Manipulation-Footnote-1979605
- Node: Array Data Types979642
- Ref: Array Data Types-Footnote-1982297
- Node: Array Functions982389
- Node: Flattening Arrays986243
- Node: Creating Arrays993135
- Node: Extension API Variables997906
- Node: Extension Versioning998542
- Node: Extension API Informational Variables1000443
- Node: Extension API Boilerplate1001508
- Node: Finding Extensions1005317
- Node: Extension Example1005877
- Node: Internal File Description1006649
- Node: Internal File Ops1010716
- Ref: Internal File Ops-Footnote-11022386
- Node: Using Internal File Ops1022526
- Ref: Using Internal File Ops-Footnote-11024909
- Node: Extension Samples1025182
- Node: Extension Sample File Functions1026708
- Node: Extension Sample Fnmatch1034346
- Node: Extension Sample Fork1035837
- Node: Extension Sample Inplace1037052
- Node: Extension Sample Ord1038727
- Node: Extension Sample Readdir1039563
- Ref: table-readdir-file-types1040439
- Node: Extension Sample Revout1041250
- Node: Extension Sample Rev2way1041840
- Node: Extension Sample Read write array1042580
- Node: Extension Sample Readfile1044520
- Node: Extension Sample Time1045615
- Node: Extension Sample API Tests1046964
- Node: gawkextlib1047455
- Node: Extension summary1050113
- Node: Extension Exercises1053802
- Node: Language History1054524
- Node: V7/SVR3.11056180
- Node: SVR41058361
- Node: POSIX1059806
- Node: BTL1061195
- Node: POSIX/GNU1061929
- Node: Feature History1067553
- Node: Common Extensions1080651
- Node: Ranges and Locales1081975
- Ref: Ranges and Locales-Footnote-11086593
- Ref: Ranges and Locales-Footnote-21086620
- Ref: Ranges and Locales-Footnote-31086854
- Node: Contributors1087075
- Node: History summary1092616
- Node: Installation1093986
- Node: Gawk Distribution1094932
- Node: Getting1095416
- Node: Extracting1096239
- Node: Distribution contents1097874
- Node: Unix Installation1103939
- Node: Quick Installation1104622
- Node: Shell Startup Files1107033
- Node: Additional Configuration Options1108112
- Node: Configuration Philosophy1109851
- Node: Non-Unix Installation1112220
- Node: PC Installation1112678
- Node: PC Binary Installation1113997
- Node: PC Compiling1115845
- Ref: PC Compiling-Footnote-11118866
- Node: PC Testing1118975
- Node: PC Using1120151
- Node: Cygwin1124266
- Node: MSYS1125089
- Node: VMS Installation1125589
- Node: VMS Compilation1126381
- Ref: VMS Compilation-Footnote-11127603
- Node: VMS Dynamic Extensions1127661
- Node: VMS Installation Details1129345
- Node: VMS Running1131597
- Node: VMS GNV1134433
- Node: VMS Old Gawk1135167
- Node: Bugs1135637
- Node: Other Versions1139520
- Node: Installation summary1145948
- Node: Notes1147004
- Node: Compatibility Mode1147869
- Node: Additions1148651
- Node: Accessing The Source1149576
- Node: Adding Code1151012
- Node: New Ports1157177
- Node: Derived Files1161659
- Ref: Derived Files-Footnote-11167134
- Ref: Derived Files-Footnote-21167168
- Ref: Derived Files-Footnote-31167764
- Node: Future Extensions1167878
- Node: Implementation Limitations1168484
- Node: Extension Design1169732
- Node: Old Extension Problems1170886
- Ref: Old Extension Problems-Footnote-11172403
- Node: Extension New Mechanism Goals1172460
- Ref: Extension New Mechanism Goals-Footnote-11175820
- Node: Extension Other Design Decisions1176009
- Node: Extension Future Growth1178117
- Node: Old Extension Mechanism1178953
- Node: Notes summary1180715
- Node: Basic Concepts1181901
- Node: Basic High Level1182582
- Ref: figure-general-flow1182854
- Ref: figure-process-flow1183453
- Ref: Basic High Level-Footnote-11186682
- Node: Basic Data Typing1186867
- Node: Glossary1190195
- Node: Copying1215353
- Node: GNU Free Documentation License1252909
- Node: Index1278045
+ Node: Foreword446669
+ Node: Preface48200
+ Ref: Preface-Footnote-151071
+ Ref: Preface-Footnote-251178
+ Ref: Preface-Footnote-351411
+ Node: History51553
+ Node: Names53904
+ Ref: Names-Footnote-154997
+ Node: This Manual55143
+ Ref: This Manual-Footnote-161643
+ Node: Conventions61743
+ Node: Manual History64080
+ Ref: Manual History-Footnote-167073
+ Ref: Manual History-Footnote-267114
+ Node: How To Contribute67188
+ Node: Acknowledgments68317
+ Node: Getting Started73134
+ Node: Running gawk75573
+ Node: One-shot76763
+ Node: Read Terminal78027
+ Node: Long80058
+ Node: Executable Scripts81571
+ Ref: Executable Scripts-Footnote-184360
+ Node: Comments84463
+ Node: Quoting86945
+ Node: DOS Quoting92463
+ Node: Sample Data Files93138
+ Node: Very Simple95733
+ Node: Two Rules100632
+ Node: More Complex102518
+ Node: Statements/Lines105380
+ Ref: Statements/Lines-Footnote-1109835
+ Node: Other Features110100
+ Node: When111031
+ Ref: When-Footnote-1112785
+ Node: Intro Summary112850
+ Node: Invoking Gawk113733
+ Node: Command Line115247
+ Node: Options116045
+ Ref: Options-Footnote-1131849
+ Ref: Options-Footnote-2132078
+ Node: Other Arguments132103
+ Node: Naming Standard Input135051
+ Node: Environment Variables136144
+ Node: AWKPATH Variable136702
+ Ref: AWKPATH Variable-Footnote-1140115
+ Ref: AWKPATH Variable-Footnote-2140160
+ Node: AWKLIBPATH Variable140420
+ Node: Other Environment Variables141676
+ Node: Exit Status145164
+ Node: Include Files145840
+ Node: Loading Shared Libraries149437
+ Node: Obsolete150864
+ Node: Undocumented151561
+ Node: Invoking Summary151828
+ Node: Regexp153492
+ Node: Regexp Usage154946
+ Node: Escape Sequences156983
+ Node: Regexp Operators163224
+ Ref: Regexp Operators-Footnote-1170650
+ Ref: Regexp Operators-Footnote-2170797
+ Node: Bracket Expressions170895
+ Ref: table-char-classes172910
+ Node: Leftmost Longest175834
+ Node: Computed Regexps177136
+ Node: GNU Regexp Operators180533
+ Node: Case-sensitivity184206
+ Ref: Case-sensitivity-Footnote-1187091
+ Ref: Case-sensitivity-Footnote-2187326
+ Node: Regexp Summary187434
+ Node: Reading Files188901
+ Node: Records190995
+ Node: awk split records191728
+ Node: gawk split records196643
+ Ref: gawk split records-Footnote-1201187
+ Node: Fields201224
+ Ref: Fields-Footnote-1204000
+ Node: Nonconstant Fields204086
+ Ref: Nonconstant Fields-Footnote-1206329
+ Node: Changing Fields206533
+ Node: Field Separators212462
+ Node: Default Field Splitting215167
+ Node: Regexp Field Splitting216284
+ Node: Single Character Fields219634
+ Node: Command Line Field Separator220693
+ Node: Full Line Fields223905
+ Ref: Full Line Fields-Footnote-1225422
+ Ref: Full Line Fields-Footnote-2225468
+ Node: Field Splitting Summary225569
+ Node: Constant Size227643
+ Node: Splitting By Content232232
+ Ref: Splitting By Content-Footnote-1236226
+ Node: Multiple Line236389
+ Ref: Multiple Line-Footnote-1242275
+ Node: Getline242454
+ Node: Plain Getline244666
+ Node: Getline/Variable247306
+ Node: Getline/File248454
+ Node: Getline/Variable/File249838
+ Ref: Getline/Variable/File-Footnote-1251441
+ Node: Getline/Pipe251528
+ Node: Getline/Variable/Pipe254211
+ Node: Getline/Coprocess255342
+ Node: Getline/Variable/Coprocess256594
+ Node: Getline Notes257333
+ Node: Getline Summary260125
+ Ref: table-getline-variants260537
+ Node: Read Timeout261366
+ Ref: Read Timeout-Footnote-1265190
+ Node: Command-line directories265248
+ Node: Input Summary266153
+ Node: Input Exercises269454
+ Node: Printing270182
 -Node: Print271959
 -Node: Print Examples273416
 -Node: Output Separators276195
 -Node: OFMT278213
 -Node: Printf279567
 -Node: Basic Printf280352
 -Node: Control Letters281922
 -Node: Format Modifiers285905
 -Node: Printf Examples291914
 -Node: Redirection294400
 -Node: Special FD301241
 -Ref: Special FD-Footnote-1304401
 -Node: Special Files304475
 -Node: Other Inherited Files305092
 -Node: Special Network306092
 -Node: Special Caveats306954
 -Node: Close Files And Pipes307905
 -Ref: Close Files And Pipes-Footnote-1315087
 -Ref: Close Files And Pipes-Footnote-2315235
 -Node: Output Summary315385
 -Node: Output Exercises316383
 -Node: Expressions317063
 -Node: Values318248
 -Node: Constants318926
 -Node: Scalar Constants319617
 -Ref: Scalar Constants-Footnote-1320476
 -Node: Nondecimal-numbers320726
 -Node: Regexp Constants323744
 -Node: Using Constant Regexps324269
 -Node: Variables327412
 -Node: Using Variables328067
 -Node: Assignment Options329978
 -Node: Conversion331853
 -Node: Strings And Numbers332377
 -Ref: Strings And Numbers-Footnote-1335442
 -Node: Locale influences conversions335551
 -Ref: table-locale-affects338298
 -Node: All Operators338886
 -Node: Arithmetic Ops339516
 -Node: Concatenation342021
 -Ref: Concatenation-Footnote-1344840
 -Node: Assignment Ops344946
 -Ref: table-assign-ops349925
 -Node: Increment Ops351197
 -Node: Truth Values and Conditions354635
 -Node: Truth Values355720
 -Node: Typing and Comparison356769
 -Node: Variable Typing357579
 -Node: Comparison Operators361232
 -Ref: table-relational-ops361642
 -Node: POSIX String Comparison365137
 -Ref: POSIX String Comparison-Footnote-1366209
 -Node: Boolean Ops366347
 -Ref: Boolean Ops-Footnote-1370826
 -Node: Conditional Exp370917
 -Node: Function Calls372644
 -Node: Precedence376524
 -Node: Locales380185
 -Node: Expressions Summary381817
 -Node: Patterns and Actions384377
 -Node: Pattern Overview385497
 -Node: Regexp Patterns387176
 -Node: Expression Patterns387719
 -Node: Ranges391429
 -Node: BEGIN/END394535
 -Node: Using BEGIN/END395296
 -Ref: Using BEGIN/END-Footnote-1398030
 -Node: I/O And BEGIN/END398136
 -Node: BEGINFILE/ENDFILE400450
 -Node: Empty403351
 -Node: Using Shell Variables403668
 -Node: Action Overview405941
 -Node: Statements408267
 -Node: If Statement410115
 -Node: While Statement411610
 -Node: Do Statement413639
 -Node: For Statement414783
 -Node: Switch Statement417940
 -Node: Break Statement420322
 -Node: Continue Statement422363
 -Node: Next Statement424190
 -Node: Nextfile Statement426571
 -Node: Exit Statement429201
 -Node: Built-in Variables431604
 -Node: User-modified432737
 -Ref: User-modified-Footnote-1440418
 -Node: Auto-set440480
 -Ref: Auto-set-Footnote-1454172
 -Ref: Auto-set-Footnote-2454377
 -Node: ARGC and ARGV454433
 -Node: Pattern Action Summary458651
 -Node: Arrays461078
 -Node: Array Basics462407
 -Node: Array Intro463251
 -Ref: figure-array-elements465215
 -Ref: Array Intro-Footnote-1467741
 -Node: Reference to Elements467869
 -Node: Assigning Elements470321
 -Node: Array Example470812
 -Node: Scanning an Array472570
 -Node: Controlling Scanning475586
 -Ref: Controlling Scanning-Footnote-1480782
 -Node: Numeric Array Subscripts481098
 -Node: Uninitialized Subscripts483283
 -Node: Delete484900
 -Ref: Delete-Footnote-1487643
 -Node: Multidimensional487700
 -Node: Multiscanning490797
 -Node: Arrays of Arrays492386
 -Node: Arrays Summary497145
 -Node: Functions499237
 -Node: Built-in500136
 -Node: Calling Built-in501214
 -Node: Numeric Functions503205
 -Ref: Numeric Functions-Footnote-1508024
 -Ref: Numeric Functions-Footnote-2508381
 -Ref: Numeric Functions-Footnote-3508429
 -Node: String Functions508701
 -Ref: String Functions-Footnote-1532176
 -Ref: String Functions-Footnote-2532305
 -Ref: String Functions-Footnote-3532553
 -Node: Gory Details532640
 -Ref: table-sub-escapes534421
 -Ref: table-sub-proposed535941
 -Ref: table-posix-sub537305
 -Ref: table-gensub-escapes538841
 -Ref: Gory Details-Footnote-1539673
 -Node: I/O Functions539824
 -Ref: I/O Functions-Footnote-1547042
 -Node: Time Functions547189
 -Ref: Time Functions-Footnote-1557677
 -Ref: Time Functions-Footnote-2557745
 -Ref: Time Functions-Footnote-3557903
 -Ref: Time Functions-Footnote-4558014
 -Ref: Time Functions-Footnote-5558126
 -Ref: Time Functions-Footnote-6558353
 -Node: Bitwise Functions558619
 -Ref: table-bitwise-ops559181
 -Ref: Bitwise Functions-Footnote-1563490
 -Node: Type Functions563659
 -Node: I18N Functions564810
 -Node: User-defined566455
 -Node: Definition Syntax567260
 -Ref: Definition Syntax-Footnote-1572667
 -Node: Function Example572738
 -Ref: Function Example-Footnote-1575657
 -Node: Function Caveats575679
 -Node: Calling A Function576197
 -Node: Variable Scope577155
 -Node: Pass By Value/Reference580143
 -Node: Return Statement583638
 -Node: Dynamic Typing586619
 -Node: Indirect Calls587548
 -Ref: Indirect Calls-Footnote-1598850
 -Node: Functions Summary598978
 -Node: Library Functions601680
 -Ref: Library Functions-Footnote-1605289
 -Ref: Library Functions-Footnote-2605432
 -Node: Library Names605603
 -Ref: Library Names-Footnote-1609057
 -Ref: Library Names-Footnote-2609280
 -Node: General Functions609366
 -Node: Strtonum Function610469
 -Node: Assert Function613491
 -Node: Round Function616815
 -Node: Cliff Random Function618356
 -Node: Ordinal Functions619372
 -Ref: Ordinal Functions-Footnote-1622435
 -Ref: Ordinal Functions-Footnote-2622687
 -Node: Join Function622898
 -Ref: Join Function-Footnote-1624667
 -Node: Getlocaltime Function624867
 -Node: Readfile Function628611
 -Node: Shell Quoting630581
 -Node: Data File Management631982
 -Node: Filetrans Function632614
 -Node: Rewind Function636670
 -Node: File Checking638057
 -Ref: File Checking-Footnote-1639389
 -Node: Empty Files639590
 -Node: Ignoring Assigns641569
 -Node: Getopt Function643120
 -Ref: Getopt Function-Footnote-1654582
 -Node: Passwd Functions654782
 -Ref: Passwd Functions-Footnote-1663619
 -Node: Group Functions663707
 -Ref: Group Functions-Footnote-1671601
 -Node: Walking Arrays671814
 -Node: Library Functions Summary673417
 -Node: Library Exercises674818
 -Node: Sample Programs676098
 -Node: Running Examples676868
 -Node: Clones677596
 -Node: Cut Program678820
 -Node: Egrep Program688539
 -Ref: Egrep Program-Footnote-1696037
 -Node: Id Program696147
 -Node: Split Program699792
 -Ref: Split Program-Footnote-1703240
 -Node: Tee Program703368
 -Node: Uniq Program706157
 -Node: Wc Program713576
 -Ref: Wc Program-Footnote-1717826
 -Node: Miscellaneous Programs717920
 -Node: Dupword Program719133
 -Node: Alarm Program721164
 -Node: Translate Program725968
 -Ref: Translate Program-Footnote-1730533
 -Node: Labels Program730803
 -Ref: Labels Program-Footnote-1734154
 -Node: Word Sorting734238
 -Node: History Sorting738309
 -Node: Extract Program740145
 -Node: Simple Sed747670
 -Node: Igawk Program750738
 -Ref: Igawk Program-Footnote-1765062
 -Ref: Igawk Program-Footnote-2765263
 -Ref: Igawk Program-Footnote-3765385
 -Node: Anagram Program765500
 -Node: Signature Program768557
 -Node: Programs Summary769804
 -Node: Programs Exercises770997
 -Ref: Programs Exercises-Footnote-1775128
 -Node: Advanced Features775219
 -Node: Nondecimal Data777167
 -Node: Array Sorting778757
 -Node: Controlling Array Traversal779454
 -Ref: Controlling Array Traversal-Footnote-1787787
 -Node: Array Sorting Functions787905
 -Ref: Array Sorting Functions-Footnote-1791794
 -Node: Two-way I/O791990
 -Ref: Two-way I/O-Footnote-1796935
 -Ref: Two-way I/O-Footnote-2797121
 -Node: TCP/IP Networking797203
 -Node: Profiling800076
 -Node: Advanced Features Summary808353
 -Node: Internationalization810286
 -Node: I18N and L10N811766
 -Node: Explaining gettext812452
 -Ref: Explaining gettext-Footnote-1817477
 -Ref: Explaining gettext-Footnote-2817661
 -Node: Programmer i18n817826
 -Ref: Programmer i18n-Footnote-1822692
 -Node: Translator i18n822741
 -Node: String Extraction823535
 -Ref: String Extraction-Footnote-1824666
 -Node: Printf Ordering824752
 -Ref: Printf Ordering-Footnote-1827538
 -Node: I18N Portability827602
 -Ref: I18N Portability-Footnote-1830057
 -Node: I18N Example830120
 -Ref: I18N Example-Footnote-1832923
 -Node: Gawk I18N832995
 -Node: I18N Summary833633
 -Node: Debugger834972
 -Node: Debugging835994
 -Node: Debugging Concepts836435
 -Node: Debugging Terms838288
 -Node: Awk Debugging840860
 -Node: Sample Debugging Session841754
 -Node: Debugger Invocation842274
 -Node: Finding The Bug843658
 -Node: List of Debugger Commands850133
 -Node: Breakpoint Control851466
 -Node: Debugger Execution Control855162
 -Node: Viewing And Changing Data858526
 -Node: Execution Stack861904
 -Node: Debugger Info863541
 -Node: Miscellaneous Debugger Commands867558
 -Node: Readline Support872587
 -Node: Limitations873479
 -Node: Debugging Summary875593
 -Node: Arbitrary Precision Arithmetic876761
 -Node: Computer Arithmetic878177
 -Ref: table-numeric-ranges881775
 -Ref: Computer Arithmetic-Footnote-1882634
 -Node: Math Definitions882691
 -Ref: table-ieee-formats885979
 -Ref: Math Definitions-Footnote-1886583
 -Node: MPFR features886688
 -Node: FP Math Caution888359
 -Ref: FP Math Caution-Footnote-1889409
 -Node: Inexactness of computations889778
 -Node: Inexact representation890737
 -Node: Comparing FP Values892094
 -Node: Errors accumulate893176
 -Node: Getting Accuracy894609
 -Node: Try To Round897271
 -Node: Setting precision898170
 -Ref: table-predefined-precision-strings898854
 -Node: Setting the rounding mode900643
 -Ref: table-gawk-rounding-modes901007
 -Ref: Setting the rounding mode-Footnote-1904462
 -Node: Arbitrary Precision Integers904641
 -Ref: Arbitrary Precision Integers-Footnote-1909540
 -Node: POSIX Floating Point Problems909689
 -Ref: POSIX Floating Point Problems-Footnote-1913562
 -Node: Floating point summary913600
 -Node: Dynamic Extensions915794
 -Node: Extension Intro917346
 -Node: Plugin License918612
 -Node: Extension Mechanism Outline919409
 -Ref: figure-load-extension919837
 -Ref: figure-register-new-function921317
 -Ref: figure-call-new-function922321
 -Node: Extension API Description924307
 -Node: Extension API Functions Introduction925757
 -Node: General Data Types930581
 -Ref: General Data Types-Footnote-1936320
 -Node: Memory Allocation Functions936619
 -Ref: Memory Allocation Functions-Footnote-1939458
 -Node: Constructor Functions939554
 -Node: Registration Functions941288
 -Node: Extension Functions941973
 -Node: Exit Callback Functions944270
 -Node: Extension Version String945518
 -Node: Input Parsers946183
 -Node: Output Wrappers956062
 -Node: Two-way processors960577
 -Node: Printing Messages962781
 -Ref: Printing Messages-Footnote-1963857
 -Node: Updating `ERRNO'964009
 -Node: Requesting Values964749
 -Ref: table-value-types-returned965477
 -Node: Accessing Parameters966434
 -Node: Symbol Table Access967665
 -Node: Symbol table by name968179
 -Node: Symbol table by cookie970160
 -Ref: Symbol table by cookie-Footnote-1974304
 -Node: Cached values974367
 -Ref: Cached values-Footnote-1977866
 -Node: Array Manipulation977957
 -Ref: Array Manipulation-Footnote-1979055
 -Node: Array Data Types979092
 -Ref: Array Data Types-Footnote-1981747
 -Node: Array Functions981839
 -Node: Flattening Arrays985693
 -Node: Creating Arrays992585
 -Node: Extension API Variables997356
 -Node: Extension Versioning997992
 -Node: Extension API Informational Variables999893
 -Node: Extension API Boilerplate1000958
 -Node: Finding Extensions1004767
 -Node: Extension Example1005327
 -Node: Internal File Description1006099
 -Node: Internal File Ops1010166
 -Ref: Internal File Ops-Footnote-11021836
 -Node: Using Internal File Ops1021976
 -Ref: Using Internal File Ops-Footnote-11024359
 -Node: Extension Samples1024632
 -Node: Extension Sample File Functions1026158
 -Node: Extension Sample Fnmatch1033796
 -Node: Extension Sample Fork1035287
 -Node: Extension Sample Inplace1036502
 -Node: Extension Sample Ord1038177
 -Node: Extension Sample Readdir1039013
 -Ref: table-readdir-file-types1039889
 -Node: Extension Sample Revout1040700
 -Node: Extension Sample Rev2way1041290
 -Node: Extension Sample Read write array1042030
 -Node: Extension Sample Readfile1043970
 -Node: Extension Sample Time1045065
 -Node: Extension Sample API Tests1046414
 -Node: gawkextlib1046905
 -Node: Extension summary1049563
 -Node: Extension Exercises1053252
 -Node: Language History1053974
 -Node: V7/SVR3.11055630
 -Node: SVR41057811
 -Node: POSIX1059256
 -Node: BTL1060645
 -Node: POSIX/GNU1061379
 -Node: Feature History1067003
 -Node: Common Extensions1080101
 -Node: Ranges and Locales1081425
 -Ref: Ranges and Locales-Footnote-11086043
 -Ref: Ranges and Locales-Footnote-21086070
 -Ref: Ranges and Locales-Footnote-31086304
 -Node: Contributors1086525
 -Node: History summary1092066
 -Node: Installation1093436
 -Node: Gawk Distribution1094382
 -Node: Getting1094866
 -Node: Extracting1095689
 -Node: Distribution contents1097324
 -Node: Unix Installation1103389
 -Node: Quick Installation1104072
 -Node: Shell Startup Files1106483
 -Node: Additional Configuration Options1107562
 -Node: Configuration Philosophy1109301
 -Node: Non-Unix Installation1111670
 -Node: PC Installation1112128
 -Node: PC Binary Installation1113447
 -Node: PC Compiling1115295
 -Ref: PC Compiling-Footnote-11118316
 -Node: PC Testing1118425
 -Node: PC Using1119601
 -Node: Cygwin1123716
 -Node: MSYS1124539
 -Node: VMS Installation1125039
 -Node: VMS Compilation1125831
 -Ref: VMS Compilation-Footnote-11127053
 -Node: VMS Dynamic Extensions1127111
 -Node: VMS Installation Details1128795
 -Node: VMS Running1131047
 -Node: VMS GNV1133883
 -Node: VMS Old Gawk1134617
 -Node: Bugs1135087
 -Node: Other Versions1138970
 -Node: Installation summary1145398
 -Node: Notes1146454
 -Node: Compatibility Mode1147319
 -Node: Additions1148101
 -Node: Accessing The Source1149026
 -Node: Adding Code1150462
 -Node: New Ports1156627
 -Node: Derived Files1161109
 -Ref: Derived Files-Footnote-11166584
 -Ref: Derived Files-Footnote-21166618
 -Ref: Derived Files-Footnote-31167214
 -Node: Future Extensions1167328
 -Node: Implementation Limitations1167934
 -Node: Extension Design1169182
 -Node: Old Extension Problems1170336
 -Ref: Old Extension Problems-Footnote-11171853
 -Node: Extension New Mechanism Goals1171910
 -Ref: Extension New Mechanism Goals-Footnote-11175270
 -Node: Extension Other Design Decisions1175459
 -Node: Extension Future Growth1177567
 -Node: Old Extension Mechanism1178403
 -Node: Notes summary1180165
 -Node: Basic Concepts1181351
 -Node: Basic High Level1182032
 -Ref: figure-general-flow1182304
 -Ref: figure-process-flow1182903
 -Ref: Basic High Level-Footnote-11186132
 -Node: Basic Data Typing1186317
 -Node: Glossary1189645
 -Node: Copying1214803
 -Node: GNU Free Documentation License1252359
 -Node: Index1277495
++Node: Print272019
++Node: Print Examples273476
++Node: Output Separators276255
++Node: OFMT278273
++Node: Printf279627
++Node: Basic Printf280412
++Node: Control Letters281982
++Node: Format Modifiers285965
++Node: Printf Examples291974
++Node: Redirection294460
++Node: Special FD301301
++Ref: Special FD-Footnote-1304461
++Node: Special Files304535
++Node: Other Inherited Files305152
++Node: Special Network306152
++Node: Special Caveats307014
++Node: Close Files And Pipes307965
++Ref: Close Files And Pipes-Footnote-1315152
++Ref: Close Files And Pipes-Footnote-2315300
++Node: Print Return Values315450
++Node: Output Summary316004
++Node: Output Exercises317000
++Node: Expressions317680
++Node: Values318865
++Node: Constants319543
++Node: Scalar Constants320234
++Ref: Scalar Constants-Footnote-1321093
++Node: Nondecimal-numbers321343
++Node: Regexp Constants324361
++Node: Using Constant Regexps324886
++Node: Variables328029
++Node: Using Variables328684
++Node: Assignment Options330595
++Node: Conversion332470
++Node: Strings And Numbers332994
++Ref: Strings And Numbers-Footnote-1336059
++Node: Locale influences conversions336168
++Ref: table-locale-affects338915
++Node: All Operators339503
++Node: Arithmetic Ops340133
++Node: Concatenation342638
++Ref: Concatenation-Footnote-1345457
++Node: Assignment Ops345563
++Ref: table-assign-ops350542
++Node: Increment Ops351814
++Node: Truth Values and Conditions355252
++Node: Truth Values356337
++Node: Typing and Comparison357386
++Node: Variable Typing358196
++Node: Comparison Operators361849
++Ref: table-relational-ops362259
++Node: POSIX String Comparison365754
++Ref: POSIX String Comparison-Footnote-1366826
++Node: Boolean Ops366964
++Ref: Boolean Ops-Footnote-1371443
++Node: Conditional Exp371534
++Node: Function Calls373261
++Node: Precedence377141
++Node: Locales380802
++Node: Expressions Summary382434
++Node: Patterns and Actions384994
++Node: Pattern Overview386114
++Node: Regexp Patterns387793
++Node: Expression Patterns388336
++Node: Ranges392046
++Node: BEGIN/END395152
++Node: Using BEGIN/END395913
++Ref: Using BEGIN/END-Footnote-1398647
++Node: I/O And BEGIN/END398753
++Node: BEGINFILE/ENDFILE401067
++Node: Empty403968
++Node: Using Shell Variables404285
++Node: Action Overview406558
++Node: Statements408884
++Node: If Statement410732
++Node: While Statement412227
++Node: Do Statement414256
++Node: For Statement415400
++Node: Switch Statement418557
++Node: Break Statement420939
++Node: Continue Statement422980
++Node: Next Statement424807
++Node: Nextfile Statement427188
++Node: Exit Statement429818
++Node: Built-in Variables432221
++Node: User-modified433354
++Ref: User-modified-Footnote-1441035
++Node: Auto-set441097
++Ref: Auto-set-Footnote-1454789
++Ref: Auto-set-Footnote-2454994
++Node: ARGC and ARGV455050
++Node: Pattern Action Summary459268
++Node: Arrays461695
++Node: Array Basics463024
++Node: Array Intro463868
++Ref: figure-array-elements465832
++Ref: Array Intro-Footnote-1468358
++Node: Reference to Elements468486
++Node: Assigning Elements470938
++Node: Array Example471429
++Node: Scanning an Array473187
++Node: Controlling Scanning476203
++Ref: Controlling Scanning-Footnote-1481399
++Node: Numeric Array Subscripts481715
++Node: Uninitialized Subscripts483900
++Node: Delete485517
++Ref: Delete-Footnote-1488260
++Node: Multidimensional488317
++Node: Multiscanning491414
++Node: Arrays of Arrays493003
++Node: Arrays Summary497762
++Node: Functions499854
++Node: Built-in500753
++Node: Calling Built-in501831
++Node: Numeric Functions503822
++Ref: Numeric Functions-Footnote-1508641
++Ref: Numeric Functions-Footnote-2508998
++Ref: Numeric Functions-Footnote-3509046
++Node: String Functions509318
++Ref: String Functions-Footnote-1532793
++Ref: String Functions-Footnote-2532922
++Ref: String Functions-Footnote-3533170
++Node: Gory Details533257
++Ref: table-sub-escapes535038
++Ref: table-sub-proposed536558
++Ref: table-posix-sub537922
++Ref: table-gensub-escapes539458
++Ref: Gory Details-Footnote-1540290
++Node: I/O Functions540441
++Ref: I/O Functions-Footnote-1547659
++Node: Time Functions547806
++Ref: Time Functions-Footnote-1558294
++Ref: Time Functions-Footnote-2558362
++Ref: Time Functions-Footnote-3558520
++Ref: Time Functions-Footnote-4558631
++Ref: Time Functions-Footnote-5558743
++Ref: Time Functions-Footnote-6558970
++Node: Bitwise Functions559236
++Ref: table-bitwise-ops559798
++Ref: Bitwise Functions-Footnote-1564107
++Node: Type Functions564276
++Node: I18N Functions565427
++Node: User-defined567072
++Node: Definition Syntax567877
++Ref: Definition Syntax-Footnote-1573284
++Node: Function Example573355
++Ref: Function Example-Footnote-1576274
++Node: Function Caveats576296
++Node: Calling A Function576814
++Node: Variable Scope577772
++Node: Pass By Value/Reference580760
++Node: Return Statement584255
++Node: Dynamic Typing587236
++Node: Indirect Calls588165
++Ref: Indirect Calls-Footnote-1599467
++Node: Functions Summary599595
++Node: Library Functions602297
++Ref: Library Functions-Footnote-1605906
++Ref: Library Functions-Footnote-2606049
++Node: Library Names606220
++Ref: Library Names-Footnote-1609674
++Ref: Library Names-Footnote-2609897
++Node: General Functions609983
++Node: Strtonum Function611086
++Node: Assert Function614108
++Node: Round Function617432
++Node: Cliff Random Function618973
++Node: Ordinal Functions619989
++Ref: Ordinal Functions-Footnote-1623052
++Ref: Ordinal Functions-Footnote-2623304
++Node: Join Function623515
++Ref: Join Function-Footnote-1625284
++Node: Getlocaltime Function625484
++Node: Readfile Function629228
++Node: Shell Quoting631198
++Node: Data File Management632599
++Node: Filetrans Function633231
++Node: Rewind Function637287
++Node: File Checking638674
++Ref: File Checking-Footnote-1640006
++Node: Empty Files640207
++Node: Ignoring Assigns642186
++Node: Getopt Function643737
++Ref: Getopt Function-Footnote-1655199
++Node: Passwd Functions655399
++Ref: Passwd Functions-Footnote-1664236
++Node: Group Functions664324
++Ref: Group Functions-Footnote-1672218
++Node: Walking Arrays672431
++Node: Library Functions Summary674034
++Node: Library Exercises675435
++Node: Sample Programs676715
++Node: Running Examples677485
++Node: Clones678213
++Node: Cut Program679437
++Node: Egrep Program689156
++Ref: Egrep Program-Footnote-1696654
++Node: Id Program696764
++Node: Split Program700409
++Ref: Split Program-Footnote-1703857
++Node: Tee Program703985
++Node: Uniq Program706774
++Node: Wc Program714193
++Ref: Wc Program-Footnote-1718443
++Node: Miscellaneous Programs718537
++Node: Dupword Program719750
++Node: Alarm Program721781
++Node: Translate Program726585
++Ref: Translate Program-Footnote-1731150
++Node: Labels Program731420
++Ref: Labels Program-Footnote-1734771
++Node: Word Sorting734855
++Node: History Sorting738926
++Node: Extract Program740762
++Node: Simple Sed748287
++Node: Igawk Program751355
++Ref: Igawk Program-Footnote-1765679
++Ref: Igawk Program-Footnote-2765880
++Ref: Igawk Program-Footnote-3766002
++Node: Anagram Program766117
++Node: Signature Program769174
++Node: Programs Summary770421
++Node: Programs Exercises771614
++Ref: Programs Exercises-Footnote-1775745
++Node: Advanced Features775836
++Node: Nondecimal Data777784
++Node: Array Sorting779374
++Node: Controlling Array Traversal780071
++Ref: Controlling Array Traversal-Footnote-1788404
++Node: Array Sorting Functions788522
++Ref: Array Sorting Functions-Footnote-1792411
++Node: Two-way I/O792607
++Ref: Two-way I/O-Footnote-1797552
++Ref: Two-way I/O-Footnote-2797738
++Node: TCP/IP Networking797820
++Node: Profiling800693
++Node: Advanced Features Summary808970
++Node: Internationalization810903
++Node: I18N and L10N812383
++Node: Explaining gettext813069
++Ref: Explaining gettext-Footnote-1818094
++Ref: Explaining gettext-Footnote-2818278
++Node: Programmer i18n818443
++Ref: Programmer i18n-Footnote-1823309
++Node: Translator i18n823358
++Node: String Extraction824152
++Ref: String Extraction-Footnote-1825283
++Node: Printf Ordering825369
++Ref: Printf Ordering-Footnote-1828155
++Node: I18N Portability828219
++Ref: I18N Portability-Footnote-1830674
++Node: I18N Example830737
++Ref: I18N Example-Footnote-1833540
++Node: Gawk I18N833612
++Node: I18N Summary834250
++Node: Debugger835589
++Node: Debugging836611
++Node: Debugging Concepts837052
++Node: Debugging Terms838905
++Node: Awk Debugging841477
++Node: Sample Debugging Session842371
++Node: Debugger Invocation842891
++Node: Finding The Bug844275
++Node: List of Debugger Commands850750
++Node: Breakpoint Control852083
++Node: Debugger Execution Control855779
++Node: Viewing And Changing Data859143
++Node: Execution Stack862521
++Node: Debugger Info864158
++Node: Miscellaneous Debugger Commands868175
++Node: Readline Support873204
++Node: Limitations874096
++Node: Debugging Summary876210
++Node: Arbitrary Precision Arithmetic877378
++Node: Computer Arithmetic878794
++Ref: table-numeric-ranges882392
++Ref: Computer Arithmetic-Footnote-1883251
++Node: Math Definitions883308
++Ref: table-ieee-formats886596
++Ref: Math Definitions-Footnote-1887200
++Node: MPFR features887305
++Node: FP Math Caution888976
++Ref: FP Math Caution-Footnote-1890026
++Node: Inexactness of computations890395
++Node: Inexact representation891354
++Node: Comparing FP Values892711
++Node: Errors accumulate893793
++Node: Getting Accuracy895226
++Node: Try To Round897888
++Node: Setting precision898787
++Ref: table-predefined-precision-strings899471
++Node: Setting the rounding mode901260
++Ref: table-gawk-rounding-modes901624
++Ref: Setting the rounding mode-Footnote-1905079
++Node: Arbitrary Precision Integers905258
++Ref: Arbitrary Precision Integers-Footnote-1910157
++Node: POSIX Floating Point Problems910306
++Ref: POSIX Floating Point Problems-Footnote-1914179
++Node: Floating point summary914217
++Node: Dynamic Extensions916411
++Node: Extension Intro917963
++Node: Plugin License919229
++Node: Extension Mechanism Outline920026
++Ref: figure-load-extension920454
++Ref: figure-register-new-function921934
++Ref: figure-call-new-function922938
++Node: Extension API Description924924
++Node: Extension API Functions Introduction926374
++Node: General Data Types931198
++Ref: General Data Types-Footnote-1936937
++Node: Memory Allocation Functions937236
++Ref: Memory Allocation Functions-Footnote-1940075
++Node: Constructor Functions940171
++Node: Registration Functions941905
++Node: Extension Functions942590
++Node: Exit Callback Functions944887
++Node: Extension Version String946135
++Node: Input Parsers946800
++Node: Output Wrappers956679
++Node: Two-way processors961194
++Node: Printing Messages963398
++Ref: Printing Messages-Footnote-1964474
++Node: Updating `ERRNO'964626
++Node: Requesting Values965366
++Ref: table-value-types-returned966094
++Node: Accessing Parameters967051
++Node: Symbol Table Access968282
++Node: Symbol table by name968796
++Node: Symbol table by cookie970777
++Ref: Symbol table by cookie-Footnote-1974921
++Node: Cached values974984
++Ref: Cached values-Footnote-1978483
++Node: Array Manipulation978574
++Ref: Array Manipulation-Footnote-1979672
++Node: Array Data Types979709
++Ref: Array Data Types-Footnote-1982364
++Node: Array Functions982456
++Node: Flattening Arrays986310
++Node: Creating Arrays993202
++Node: Extension API Variables997973
++Node: Extension Versioning998609
++Node: Extension API Informational Variables1000510
++Node: Extension API Boilerplate1001575
++Node: Finding Extensions1005384
++Node: Extension Example1005944
++Node: Internal File Description1006716
++Node: Internal File Ops1010783
++Ref: Internal File Ops-Footnote-11022453
++Node: Using Internal File Ops1022593
++Ref: Using Internal File Ops-Footnote-11024976
++Node: Extension Samples1025249
++Node: Extension Sample File Functions1026775
++Node: Extension Sample Fnmatch1034413
++Node: Extension Sample Fork1035904
++Node: Extension Sample Inplace1037119
++Node: Extension Sample Ord1038794
++Node: Extension Sample Readdir1039630
++Ref: table-readdir-file-types1040506
++Node: Extension Sample Revout1041317
++Node: Extension Sample Rev2way1041907
++Node: Extension Sample Read write array1042647
++Node: Extension Sample Readfile1044587
++Node: Extension Sample Time1045682
++Node: Extension Sample API Tests1047031
++Node: gawkextlib1047522
++Node: Extension summary1050180
++Node: Extension Exercises1053869
++Node: Language History1054591
++Node: V7/SVR3.11056247
++Node: SVR41058428
++Node: POSIX1059873
++Node: BTL1061262
++Node: POSIX/GNU1061996
++Node: Feature History1067620
++Node: Common Extensions1080718
++Node: Ranges and Locales1082042
++Ref: Ranges and Locales-Footnote-11086660
++Ref: Ranges and Locales-Footnote-21086687
++Ref: Ranges and Locales-Footnote-31086921
++Node: Contributors1087142
++Node: History summary1092683
++Node: Installation1094053
++Node: Gawk Distribution1094999
++Node: Getting1095483
++Node: Extracting1096306
++Node: Distribution contents1097941
++Node: Unix Installation1104006
++Node: Quick Installation1104689
++Node: Shell Startup Files1107100
++Node: Additional Configuration Options1108179
++Node: Configuration Philosophy1109918
++Node: Non-Unix Installation1112287
++Node: PC Installation1112745
++Node: PC Binary Installation1114064
++Node: PC Compiling1115912
++Ref: PC Compiling-Footnote-11118933
++Node: PC Testing1119042
++Node: PC Using1120218
++Node: Cygwin1124333
++Node: MSYS1125156
++Node: VMS Installation1125656
++Node: VMS Compilation1126448
++Ref: VMS Compilation-Footnote-11127670
++Node: VMS Dynamic Extensions1127728
++Node: VMS Installation Details1129412
++Node: VMS Running1131664
++Node: VMS GNV1134500
++Node: VMS Old Gawk1135234
++Node: Bugs1135704
++Node: Other Versions1139587
++Node: Installation summary1146015
++Node: Notes1147071
++Node: Compatibility Mode1147936
++Node: Additions1148718
++Node: Accessing The Source1149643
++Node: Adding Code1151079
++Node: New Ports1157244
++Node: Derived Files1161726
++Ref: Derived Files-Footnote-11167201
++Ref: Derived Files-Footnote-21167235
++Ref: Derived Files-Footnote-31167831
++Node: Future Extensions1167945
++Node: Implementation Limitations1168551
++Node: Extension Design1169799
++Node: Old Extension Problems1170953
++Ref: Old Extension Problems-Footnote-11172470
++Node: Extension New Mechanism Goals1172527
++Ref: Extension New Mechanism Goals-Footnote-11175887
++Node: Extension Other Design Decisions1176076
++Node: Extension Future Growth1178184
++Node: Old Extension Mechanism1179020
++Node: Notes summary1180782
++Node: Basic Concepts1181968
++Node: Basic High Level1182649
++Ref: figure-general-flow1182921
++Ref: figure-process-flow1183520
++Ref: Basic High Level-Footnote-11186749
++Node: Basic Data Typing1186934
++Node: Glossary1190262
++Node: Copying1215420
++Node: GNU Free Documentation License1252976
++Node: Index1278112
  
  End Tag Table

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

Summary of changes:
 ChangeLog         |   37 ++-
 NEWS              |    3 +-
 TODO              |    4 -
 awk.h             |    1 -
 awkgram.c         |  835 ++++++++++++++++-------------------
 awkgram.y         |   89 +----
 builtin.c         |    3 +
 command.c         |    6 +-
 dfa.c             |    2 +-
 dfa.h             |    2 +-
 doc/ChangeLog     |    9 +
 doc/gawk.info     | 1285 ++++++++++++++++++++++++++---------------------------
 doc/gawk.texi     |  138 +++---
 doc/gawkinet.info |    6 +-
 doc/gawkinet.texi |    2 +-
 doc/gawktexi.in   |  138 +++---
 gawkapi.c         |    1 -
 getopt.c          |    4 +-
 getopt.h          |    2 +-
 getopt1.c         |    2 +-
 getopt_int.h      |    2 +-
 main.c            |    6 +-
 symbol.c          |    1 -
 test/ChangeLog    |   16 +
 test/Makefile.am  |   12 +-
 test/Makefile.in  |   12 +-
 test/id.ok        |    1 +
 test/profile8.awk |    9 +
 test/profile8.ok  |   14 +
 29 files changed, 1294 insertions(+), 1348 deletions(-)
 create mode 100644 test/profile8.awk
 create mode 100644 test/profile8.ok


hooks/post-receive
-- 
gawk



reply via email to

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