gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, zos-debug, updated. gawk-4.1.0-4403-g31e26d67


From: Arnold Robbins
Subject: [SCM] gawk branch, zos-debug, updated. gawk-4.1.0-4403-g31e26d67
Date: Fri, 25 Feb 2022 05:36:05 -0500 (EST)

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, zos-debug has been updated
       via  31e26d679a23da53e38ac2bcde09b801501a9d28 (commit)
       via  d980a7923a612a5e50f20bc65ee87b1919ca7485 (commit)
       via  80de2f7c9bc519fb820033a530e1657977117a33 (commit)
       via  938afb4d7acb9974d5789dfe4e322c0ccce0541e (commit)
       via  438e6e6e6deb8f4831e84ffd17205dc14d3a2ebb (commit)
       via  0b94b68387b85310b7104bb669d7b698e92888d2 (commit)
       via  128a6b43506a530a44777c1156ba1940c4d8fba0 (commit)
       via  3aa562fe991728271b0f8d93f774195e8792d2ea (commit)
       via  313a4000d906aa233ce8b597031f660d6281f690 (commit)
       via  d96d55d7d23ee27c49cf7055956007de5f3432db (commit)
       via  71a50ec092b75ce2b2f969892c6cd443d44777a5 (commit)
       via  8bd2904afb35a19d48552b10d3215ba16fe4ce35 (commit)
       via  f285f960bdfb5acb50a8ec7ed4b98f17d0bd624a (commit)
       via  b1cfda80b2c341e8b8d26f1b693c6c2603c90741 (commit)
       via  ff3c50b94116b5a2a819883a4e9e0ba9ef83fdf7 (commit)
       via  6e872ca782a6fa480aedbef8205bba6b7ccaf307 (commit)
       via  cfa3ac1c6a0fcbe794df853f25c757e4acd5fcc0 (commit)
       via  09e98ee95fb453adc0f1783937477cd065611581 (commit)
       via  e03c8822c48bedfe6cc7fbd5a9382d9630de6494 (commit)
       via  7d8a75a766b17fe395c0a82050d314c2dea57f3e (commit)
       via  f77e1318c515d495ac9c08bdfdf2dadf79a9649f (commit)
       via  4285d605b8c0cbe4e0b15724af1b4bd223f25403 (commit)
       via  9eb357e008385176a44b695e6117f95b2ea104a7 (commit)
       via  5870bfcddf538fac3b87b65abc716d34766d94cf (commit)
       via  fb7e87e6660422c7cfb5c4c4a5180fdee67687a9 (commit)
       via  5dd74ca177fc6e748c0098da1af8c94228ee6e90 (commit)
       via  4a7a1509991bfa9b79816a04fbee3398e3be6841 (commit)
       via  5403687cb350d91f81991ad82721648e70651eb9 (commit)
       via  dc2613b0af11a8cf97232d55c322d40eda35c224 (commit)
       via  5fd15d010b98f179d117eb3a476e626b3d298aad (commit)
       via  bd92e255e0f3054d104583a60dae64e98d94c32d (commit)
       via  0ed67a4f4f043acc08e3982a2648e3082e1f245a (commit)
       via  e7468425dea5b5bc8bfb89158f5ad52b9789629e (commit)
       via  6eb946af4f5e07e400844dbab6ac38996946647a (commit)
       via  55e7531df0431b64d3554125190efaeea566885a (commit)
       via  b4e644ee2fd82d025052fab7b2902d230c5c89ca (commit)
       via  059cbb52719f58e1ac7943169d969bb7be67fc72 (commit)
       via  0e36f3675efeb5d1d551fe6883f297e038e12772 (commit)
       via  2b1fffef190f46f6c0da770bba2745f6574bebca (commit)
       via  5801fad6aa2459394c45d6cb19fac483e3251f5b (commit)
       via  d888ede0b14da65b233d0b9aac6ce981d9412af2 (commit)
       via  a46c43e02c4e4ae6a49056f831570b8b13b1b2e7 (commit)
       via  12f3e75d7bc0fd2af20b44d9643ca237f2e71e5b (commit)
       via  399f6e45acbda2dc5ca5eb24d1c648800be5006a (commit)
       via  019318f35c4d0955150e38c0af7944f2f1364bc5 (commit)
       via  12adb5636bc939f6f6005efef9885aa19ca432fc (commit)
       via  b8c16c0893bc1be06244387fb5f8db54f0b1578d (commit)
       via  7ff43db76864b12449ea4fe00c14a6bef4c98596 (commit)
       via  c6eab64cf55d91886c18c9fbb5ff564290759ed2 (commit)
       via  51181b9f13fe0b26135a448e2a5f3d4e4d82e151 (commit)
       via  3fc30463797c0ba8648e76ab6de76b883ce79a86 (commit)
       via  c9cccc5377c6c243f4ed8911455c42cda6b13b84 (commit)
       via  92fd9a46428f29daf3270008d39b0cc6b5e3d7b6 (commit)
       via  6ec425b587210dddba6dd1a0f3f009f7163ce081 (commit)
       via  6db264b1f346896f18fa705023594e5d4d789f04 (commit)
       via  589d91eeb99bf2c7dcd6a4310f5964739b9c8edb (commit)
       via  f1819adeb27379fd0199662b3daffcac4132e5b0 (commit)
       via  c0b6b5208927cb993245858accc8f6bb55e5ca34 (commit)
       via  07b751be9c2128ebe28e84634300c8fb3756437f (commit)
       via  855a184742eb87b24fc3f4fa49136c8fbfd09d0c (commit)
       via  99a610a84bb5f25e8105f65d928a772da3a66d5f (commit)
       via  b119426eb9db950752533dd410710a6389ee633a (commit)
       via  58431879b19a1b1cd5ff3a6575be07c46c73db39 (commit)
       via  d249840cccab9490a5fd9580ba5aa6181930bca5 (commit)
       via  f597ee8f9ac128f88f85639ffbce6d7248776f75 (commit)
       via  8d8cd2e6e75399b9f8b1e0517dcfdb1a80cd1e3f (commit)
       via  dbadc66270f407a367187b7189e543ca5591d160 (commit)
       via  16b40985e3b0e36834036efe412bf53c637bde4b (commit)
       via  0aa436242079ab162deec10459446acc33b6f8ee (commit)
       via  09fa9d26d41cc70e63469522d71674883bae5521 (commit)
       via  0304433c77311b42727485bf187d80665b0eb34c (commit)
       via  3b563cdcd4a34033aa855aeed579001c3913a1ae (commit)
       via  b5a955b904d420dfd3e9216bf360858488f2bada (commit)
       via  596cccc1d46931f2cdb2310505fc2c49895efda4 (commit)
       via  61efc3f6f5f43336c9a251f2d9206e22091bc01c (commit)
       via  46fdffd3de7e8c856a540056a1c7f97b00a03031 (commit)
       via  3708f83a7407fa33ee04f8f56f75151080da62f5 (commit)
       via  0bc02532d7fa333ac7067c1cb91506ad16485916 (commit)
       via  b62e78e6d7e4307678fa172488302375559dcbf2 (commit)
       via  dab291a6bd1b7a202758747da70fa125ffeb75ed (commit)
       via  3f87dfdb1fa3a54d4ca453a2cf00ec9ad42fc178 (commit)
       via  64ec54dcc2320d1f1b1e16068674c1333b0bf108 (commit)
       via  c89ce5850cf9dc9173364de62bb183b207826e96 (commit)
       via  769de8893a550b3439aabe7c754fbf9cafa45df8 (commit)
       via  1268bb345a96f3a11dc9d42f7580fffc264401a6 (commit)
       via  1b56dc2b0506573c4cade98611f97597e31ad980 (commit)
       via  a08cc63bc8d11343012b283c91cb383bc3fff90d (commit)
       via  29797edf10e09f27a81a77dd8db53f50b277a24a (commit)
       via  17652fe29a5decb9e722d9c544249333a7bd5aea (commit)
       via  50d91293b73ed7b9b50e1928ccf87a1f5281da1f (commit)
       via  4f7ec39c9d7a02b1ef483a78e7596390c049df53 (commit)
       via  dedc6b3d8512aca225d9b39a13b60dbd5c92d702 (commit)
       via  278cfe82e88d7899cb66bf79141fcc8b0a2727be (commit)
       via  f1752b8062123726a02d92eef990bce18ccd60d8 (commit)
       via  88ccf31386d4cede58a21a19d5ba74324b7d428b (commit)
       via  6901be47821084eb2de908cb10acf558b1c3a271 (commit)
       via  0e1761697d8ed24b07cf23035f5dd01d09056e3a (commit)
       via  6696453c1a733436cbb9ca41c7c75eeb4e0b428a (commit)
       via  9fd12edd4469c3cf227dfc271d9bc7544b5b8b49 (commit)
       via  585a9456283db7169ea53a328824e55deb998d8f (commit)
       via  2c4956a47393241a33e17fb26f0ecba78b0381bb (commit)
       via  59e758a8ee45b58c9a765a6ceed4da3775d78952 (commit)
       via  bcc0594e9b64c89b56e8ea6891c0a9f8b97c57d1 (commit)
      from  16780824a151506e0712bdde02384d90cc2cb0ad (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=31e26d679a23da53e38ac2bcde09b801501a9d28

commit 31e26d679a23da53e38ac2bcde09b801501a9d28
Merge: 16780824 d980a792
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Fri Feb 25 12:35:54 2022 +0200

    Merge branch 'gawk-5.1-stable' into zos-debug

diff --cc awkgram.c
index 15b62183,6ad01d6c..3546c64d
--- a/awkgram.c
+++ b/awkgram.c
@@@ -79,12 -79,8 +79,13 @@@
  #define signed /**/
  #endif
  
 +NODE *watched = NULL;
 +const char *_file;
 +int _line;
 +const char *_func;
 +
  static void yyerror(const char *m, ...) ATTRIBUTE_PRINTF_1;
+ #define  YYERROR_IS_DECLARED  1       /* for bison 3.8. sigh. */
  static void error_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
  static void lintwarn_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
  static void warning_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
@@@ -238,7 -235,7 +241,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- #line 242 "awkgram.c"
 -#line 239 "awkgram.c"
++#line 245 "awkgram.c"
  
  # ifndef YY_CAST
  #  ifdef __cplusplus
@@@ -929,30 -953,30 +959,30 @@@ static const yytype_int8 yytranslate[] 
  };
  
  #if YYDEBUG
-   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_int16 yyrline[] =
  {
-        0,   238,   238,   239,   244,   254,   258,   270,   278,   292,
-      303,   313,   323,   336,   346,   348,   353,   363,   365,   370,
-      372,   374,   380,   384,   389,   419,   431,   443,   449,   458,
-      476,   477,   488,   494,   502,   503,   507,   507,   542,   541,
-      575,   590,   592,   597,   598,   618,   623,   624,   628,   639,
-      644,   651,   759,   810,   860,   986,  1008,  1029,  1039,  1049,
-     1059,  1070,  1083,  1101,  1100,  1117,  1135,  1135,  1237,  1237,
 -       0,   235,   235,   236,   241,   251,   255,   267,   275,   289,
 -     300,   310,   320,   346,   356,   358,   363,   373,   375,   380,
 -     382,   384,   390,   394,   399,   429,   441,   453,   459,   468,
 -     486,   487,   498,   504,   512,   513,   517,   517,   551,   550,
 -     584,   599,   601,   606,   607,   627,   632,   633,   637,   648,
 -     653,   660,   768,   819,   869,   995,  1017,  1038,  1048,  1058,
 -    1068,  1079,  1092,  1110,  1109,  1126,  1144,  1144,  1246,  1246,
--    1279,  1309,  1317,  1318,  1324,  1325,  1332,  1337,  1350,  1365,
--    1367,  1375,  1382,  1384,  1392,  1401,  1403,  1412,  1413,  1421,
--    1426,  1426,  1439,  1446,  1459,  1463,  1485,  1486,  1492,  1493,
--    1502,  1503,  1508,  1513,  1530,  1532,  1534,  1541,  1542,  1548,
--    1549,  1554,  1556,  1563,  1565,  1573,  1578,  1589,  1590,  1595,
--    1597,  1604,  1606,  1614,  1619,  1629,  1630,  1635,  1636,  1641,
--    1648,  1652,  1654,  1656,  1669,  1686,  1696,  1703,  1705,  1710,
--    1712,  1714,  1722,  1724,  1729,  1731,  1736,  1738,  1740,  1797,
--    1799,  1801,  1803,  1805,  1807,  1809,  1811,  1825,  1830,  1835,
--    1861,  1867,  1869,  1871,  1873,  1875,  1877,  1882,  1886,  1918,
--    1926,  1932,  1938,  1951,  1952,  1953,  1958,  1963,  1967,  1971,
-     1986,  2007,  2012,  2049,  2087,  2088,  2094,  2095,  2100,  2102,
-     2109,  2126,  2143,  2145,  2152,  2157,  2163,  2174,  2186,  2195,
-     2199,  2204,  2208,  2212,  2216,  2221,  2222,  2226,  2230,  2234
 -    1986,  2007,  2012,  2049,  2086,  2087,  2093,  2094,  2099,  2101,
 -    2108,  2125,  2142,  2144,  2151,  2156,  2162,  2173,  2185,  2194,
 -    2198,  2203,  2207,  2211,  2215,  2220,  2221,  2225,  2229,  2233
++       0,   241,   241,   242,   247,   257,   261,   273,   281,   295,
++     306,   316,   326,   352,   362,   364,   369,   379,   381,   386,
++     388,   390,   396,   400,   405,   435,   447,   459,   465,   474,
++     492,   493,   504,   510,   518,   519,   523,   523,   558,   557,
++     591,   606,   608,   613,   614,   634,   639,   640,   644,   655,
++     660,   667,   775,   826,   876,  1002,  1024,  1045,  1055,  1065,
++    1075,  1086,  1099,  1117,  1116,  1133,  1151,  1151,  1253,  1253,
++    1295,  1325,  1333,  1334,  1340,  1341,  1348,  1353,  1366,  1381,
++    1383,  1391,  1398,  1400,  1408,  1417,  1419,  1428,  1429,  1437,
++    1442,  1442,  1455,  1462,  1475,  1479,  1501,  1502,  1508,  1509,
++    1518,  1519,  1524,  1529,  1546,  1548,  1550,  1557,  1558,  1564,
++    1565,  1570,  1572,  1579,  1581,  1589,  1594,  1605,  1606,  1611,
++    1613,  1620,  1622,  1630,  1635,  1645,  1646,  1651,  1652,  1657,
++    1664,  1668,  1670,  1672,  1685,  1702,  1712,  1719,  1721,  1726,
++    1728,  1730,  1738,  1740,  1745,  1747,  1752,  1754,  1756,  1813,
++    1815,  1817,  1819,  1821,  1823,  1825,  1827,  1841,  1846,  1851,
++    1877,  1883,  1885,  1887,  1889,  1891,  1893,  1898,  1902,  1934,
++    1942,  1948,  1954,  1967,  1968,  1969,  1974,  1979,  1983,  1987,
++    2002,  2023,  2028,  2065,  2103,  2104,  2110,  2111,  2116,  2118,
++    2125,  2142,  2159,  2161,  2168,  2173,  2179,  2190,  2202,  2211,
++    2215,  2220,  2224,  2228,  2232,  2237,  2238,  2242,  2246,  2250
  };
  #endif
  
@@@ -1954,22 -1958,22 +1964,22 @@@ yyreduce
    switch (yyn)
      {
    case 2: /* program: %empty  */
- #line 238 "awkgram.y"
 -#line 235 "awkgram.y"
++#line 241 "awkgram.y"
            { yyval = NULL; }
- #line 1960 "awkgram.c"
 -#line 1964 "awkgram.c"
++#line 1970 "awkgram.c"
      break;
  
    case 3: /* program: program rule  */
- #line 240 "awkgram.y"
 -#line 237 "awkgram.y"
++#line 243 "awkgram.y"
            {
                rule = 0;
                yyerrok;
          }
- #line 1969 "awkgram.c"
 -#line 1973 "awkgram.c"
++#line 1979 "awkgram.c"
      break;
  
    case 4: /* program: program nls  */
- #line 245 "awkgram.y"
 -#line 242 "awkgram.y"
++#line 248 "awkgram.y"
            {
                if (yyvsp[0] != NULL) {
                        if (yyvsp[-1] == NULL)
@@@ -1979,19 -1983,19 +1989,19 @@@
                }
                yyval = yyvsp[-1];
          }
- #line 1983 "awkgram.c"
 -#line 1987 "awkgram.c"
++#line 1993 "awkgram.c"
      break;
  
    case 5: /* program: program LEX_EOF  */
- #line 255 "awkgram.y"
 -#line 252 "awkgram.y"
++#line 258 "awkgram.y"
            {
                next_sourcefile();
          }
- #line 1991 "awkgram.c"
 -#line 1995 "awkgram.c"
++#line 2001 "awkgram.c"
      break;
  
    case 6: /* program: program error  */
- #line 259 "awkgram.y"
 -#line 256 "awkgram.y"
++#line 262 "awkgram.y"
            {
                rule = 0;
                /*
@@@ -2000,11 -2004,11 +2010,11 @@@
                 */
                /* yyerrok; */
          }
- #line 2004 "awkgram.c"
 -#line 2008 "awkgram.c"
++#line 2014 "awkgram.c"
      break;
  
    case 7: /* rule: pattern action  */
- #line 271 "awkgram.y"
 -#line 268 "awkgram.y"
++#line 274 "awkgram.y"
            {
                (void) append_rule(yyvsp[-1], yyvsp[0]);
                if (pending_comment != NULL) {
@@@ -2012,11 -2016,11 +2022,11 @@@
                        pending_comment = NULL;
                }
          }
- #line 2016 "awkgram.c"
 -#line 2020 "awkgram.c"
++#line 2026 "awkgram.c"
      break;
  
    case 8: /* rule: pattern statement_term  */
- #line 279 "awkgram.y"
 -#line 276 "awkgram.y"
++#line 282 "awkgram.y"
            {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -2030,11 -2034,11 +2040,11 @@@
                        (void) append_rule(yyvsp[-1], NULL);
                }
          }
- #line 2034 "awkgram.c"
 -#line 2038 "awkgram.c"
++#line 2044 "awkgram.c"
      break;
  
    case 9: /* rule: function_prologue action  */
- #line 293 "awkgram.y"
 -#line 290 "awkgram.y"
++#line 296 "awkgram.y"
            {
                in_function = false;
                (void) mk_function(yyvsp[-1], yyvsp[0]);
@@@ -2045,11 -2049,11 +2055,11 @@@
                }
                yyerrok;
          }
- #line 2049 "awkgram.c"
 -#line 2053 "awkgram.c"
++#line 2059 "awkgram.c"
      break;
  
    case 10: /* rule: '@' LEX_INCLUDE source statement_term  */
- #line 304 "awkgram.y"
 -#line 301 "awkgram.y"
++#line 307 "awkgram.y"
            {
                want_source = false;
                at_seen = false;
@@@ -2059,11 -2063,11 +2069,11 @@@
                }
                yyerrok;
          }
- #line 2063 "awkgram.c"
 -#line 2067 "awkgram.c"
++#line 2073 "awkgram.c"
      break;
  
    case 11: /* rule: '@' LEX_LOAD library statement_term  */
- #line 314 "awkgram.y"
 -#line 311 "awkgram.y"
++#line 317 "awkgram.y"
            {
                want_source = false;
                at_seen = false;
@@@ -2073,13 -2077,26 +2083,26 @@@
                }
                yyerrok;
          }
- #line 2077 "awkgram.c"
 -#line 2081 "awkgram.c"
++#line 2087 "awkgram.c"
      break;
  
    case 12: /* rule: '@' LEX_NAMESPACE namespace statement_term  */
- #line 324 "awkgram.y"
 -#line 321 "awkgram.y"
++#line 327 "awkgram.y"
            {
+               /*
+                * 1/2022:
+                * We have an interesting isssue here.  This production isn't
+                * reduced until after the token following the statement_term
+                * is seen. As a result, the change in namespace doesn't take
+                * effect until then. That's fine if the first token is 
'function'
+                * or BEGIN or some such, but it's a disaster if it's an 
identifer;
+                * that identifier will be in the previous namespace.
+                * Therefore, the actual setting of the namespace is done 
immediately
+                * down in the scanner.
+                */
+ 
                want_source = false;
+               want_namespace = false;
                at_seen = false;
  
                // this frees $3 storage in all cases
@@@ -2087,11 -2104,11 +2110,11 @@@
  
                yyerrok;
          }
- #line 2091 "awkgram.c"
 -#line 2108 "awkgram.c"
++#line 2114 "awkgram.c"
      break;
  
    case 13: /* source: FILENAME  */
- #line 337 "awkgram.y"
 -#line 347 "awkgram.y"
++#line 353 "awkgram.y"
            {
                void *srcfile = NULL;
  
@@@ -2101,23 -2118,23 +2124,23 @@@
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
- #line 2105 "awkgram.c"
 -#line 2122 "awkgram.c"
++#line 2128 "awkgram.c"
      break;
  
    case 14: /* source: FILENAME error  */
- #line 347 "awkgram.y"
 -#line 357 "awkgram.y"
++#line 363 "awkgram.y"
            { yyval = NULL; }
- #line 2111 "awkgram.c"
 -#line 2128 "awkgram.c"
++#line 2134 "awkgram.c"
      break;
  
    case 15: /* source: error  */
- #line 349 "awkgram.y"
 -#line 359 "awkgram.y"
++#line 365 "awkgram.y"
            { yyval = NULL; }
- #line 2117 "awkgram.c"
 -#line 2134 "awkgram.c"
++#line 2140 "awkgram.c"
      break;
  
    case 16: /* library: FILENAME  */
- #line 354 "awkgram.y"
 -#line 364 "awkgram.y"
++#line 370 "awkgram.y"
            {
                void *srcfile;
  
@@@ -2127,58 -2144,58 +2150,58 @@@
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
- #line 2131 "awkgram.c"
 -#line 2148 "awkgram.c"
++#line 2154 "awkgram.c"
      break;
  
    case 17: /* library: FILENAME error  */
- #line 364 "awkgram.y"
 -#line 374 "awkgram.y"
++#line 380 "awkgram.y"
            { yyval = NULL; }
- #line 2137 "awkgram.c"
 -#line 2154 "awkgram.c"
++#line 2160 "awkgram.c"
      break;
  
    case 18: /* library: error  */
- #line 366 "awkgram.y"
 -#line 376 "awkgram.y"
++#line 382 "awkgram.y"
            { yyval = NULL; }
- #line 2143 "awkgram.c"
 -#line 2160 "awkgram.c"
++#line 2166 "awkgram.c"
      break;
  
    case 19: /* namespace: FILENAME  */
- #line 371 "awkgram.y"
 -#line 381 "awkgram.y"
++#line 387 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 2149 "awkgram.c"
 -#line 2166 "awkgram.c"
++#line 2172 "awkgram.c"
      break;
  
    case 20: /* namespace: FILENAME error  */
- #line 373 "awkgram.y"
 -#line 383 "awkgram.y"
++#line 389 "awkgram.y"
            { yyval = NULL; }
- #line 2155 "awkgram.c"
 -#line 2172 "awkgram.c"
++#line 2178 "awkgram.c"
      break;
  
    case 21: /* namespace: error  */
- #line 375 "awkgram.y"
 -#line 385 "awkgram.y"
++#line 391 "awkgram.y"
            { yyval = NULL; }
- #line 2161 "awkgram.c"
 -#line 2178 "awkgram.c"
++#line 2184 "awkgram.c"
      break;
  
    case 22: /* pattern: %empty  */
- #line 380 "awkgram.y"
 -#line 390 "awkgram.y"
++#line 396 "awkgram.y"
            {
                rule = Rule;
                yyval = NULL;
          }
- #line 2170 "awkgram.c"
 -#line 2187 "awkgram.c"
++#line 2193 "awkgram.c"
      break;
  
    case 23: /* pattern: exp  */
- #line 385 "awkgram.y"
 -#line 395 "awkgram.y"
++#line 401 "awkgram.y"
            {
                rule = Rule;
          }
- #line 2178 "awkgram.c"
 -#line 2195 "awkgram.c"
++#line 2201 "awkgram.c"
      break;
  
    case 24: /* pattern: exp comma exp  */
- #line 390 "awkgram.y"
 -#line 400 "awkgram.y"
++#line 406 "awkgram.y"
            {
                INSTRUCTION *tp;
  
@@@ -2208,11 -2225,11 +2231,11 @@@
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
tp);
                rule = Rule;
          }
- #line 2212 "awkgram.c"
 -#line 2229 "awkgram.c"
++#line 2235 "awkgram.c"
      break;
  
    case 25: /* pattern: LEX_BEGIN  */
- #line 420 "awkgram.y"
 -#line 430 "awkgram.y"
++#line 436 "awkgram.y"
            {
                static int begin_seen = 0;
  
@@@ -2224,11 -2241,11 +2247,11 @@@
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2228 "awkgram.c"
 -#line 2245 "awkgram.c"
++#line 2251 "awkgram.c"
      break;
  
    case 26: /* pattern: LEX_END  */
- #line 432 "awkgram.y"
 -#line 442 "awkgram.y"
++#line 448 "awkgram.y"
            {
                static int end_seen = 0;
  
@@@ -2240,31 -2257,31 +2263,31 @@@
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2244 "awkgram.c"
 -#line 2261 "awkgram.c"
++#line 2267 "awkgram.c"
      break;
  
    case 27: /* pattern: LEX_BEGINFILE  */
- #line 444 "awkgram.y"
 -#line 454 "awkgram.y"
++#line 460 "awkgram.y"
            {
                yyvsp[0]->in_rule = rule = BEGINFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2254 "awkgram.c"
 -#line 2271 "awkgram.c"
++#line 2277 "awkgram.c"
      break;
  
    case 28: /* pattern: LEX_ENDFILE  */
- #line 450 "awkgram.y"
 -#line 460 "awkgram.y"
++#line 466 "awkgram.y"
            {
                yyvsp[0]->in_rule = rule = ENDFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2264 "awkgram.c"
 -#line 2281 "awkgram.c"
++#line 2287 "awkgram.c"
      break;
  
    case 29: /* action: l_brace statements r_brace opt_semi opt_nls  */
- #line 459 "awkgram.y"
 -#line 469 "awkgram.y"
++#line 475 "awkgram.y"
            {
                INSTRUCTION *ip = make_braced_statements(yyvsp[-4], yyvsp[-3], 
yyvsp[-2]);
  
@@@ -2279,11 -2296,11 +2302,11 @@@
  
                yyval = ip;
          }
- #line 2283 "awkgram.c"
 -#line 2300 "awkgram.c"
++#line 2306 "awkgram.c"
      break;
  
    case 31: /* func_name: FUNC_CALL  */
- #line 478 "awkgram.y"
 -#line 488 "awkgram.y"
++#line 494 "awkgram.y"
            {
                const char *name = yyvsp[0]->lextok;
                char *qname = qualify_name(name, strlen(name));
@@@ -2294,36 -2311,36 +2317,36 @@@
                }
                yyval = yyvsp[0];
          }
- #line 2298 "awkgram.c"
 -#line 2315 "awkgram.c"
++#line 2321 "awkgram.c"
      break;
  
    case 32: /* func_name: lex_builtin  */
- #line 489 "awkgram.y"
 -#line 499 "awkgram.y"
++#line 505 "awkgram.y"
            {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2308 "awkgram.c"
 -#line 2325 "awkgram.c"
++#line 2331 "awkgram.c"
      break;
  
    case 33: /* func_name: '@' LEX_EVAL  */
- #line 495 "awkgram.y"
 -#line 505 "awkgram.y"
++#line 511 "awkgram.y"
            {
                yyval = yyvsp[0];
                at_seen = false;
          }
- #line 2317 "awkgram.c"
 -#line 2334 "awkgram.c"
++#line 2340 "awkgram.c"
      break;
  
    case 36: /* $@1: %empty  */
- #line 507 "awkgram.y"
 -#line 517 "awkgram.y"
++#line 523 "awkgram.y"
                                       { want_param_names = FUNC_HEADER; }
- #line 2323 "awkgram.c"
 -#line 2340 "awkgram.c"
++#line 2346 "awkgram.c"
      break;
  
    case 37: /* function_prologue: LEX_FUNCTION func_name '(' $@1 
opt_param_list r_paren opt_nls  */
- #line 508 "awkgram.y"
 -#line 518 "awkgram.y"
++#line 524 "awkgram.y"
            {
                INSTRUCTION *func_comment = NULL;
                // Merge any comments found in the parameter list with those
@@@ -2350,17 -2366,17 +2373,17 @@@
                yyval = yyvsp[-6];
                want_param_names = FUNC_BODY;
          }
- #line 2354 "awkgram.c"
 -#line 2370 "awkgram.c"
++#line 2377 "awkgram.c"
      break;
  
    case 38: /* $@2: %empty  */
- #line 542 "awkgram.y"
 -#line 551 "awkgram.y"
++#line 558 "awkgram.y"
                  { want_regexp = true; }
- #line 2360 "awkgram.c"
 -#line 2376 "awkgram.c"
++#line 2383 "awkgram.c"
      break;
  
    case 39: /* regexp: a_slash $@2 REGEXP  */
- #line 544 "awkgram.y"
 -#line 553 "awkgram.y"
++#line 560 "awkgram.y"
                  {
                  NODE *n, *exp;
                  char *re;
@@@ -2389,11 -2405,11 +2412,11 @@@
                  yyval->opcode = Op_match_rec;
                  yyval->memory = n;
                }
- #line 2393 "awkgram.c"
 -#line 2409 "awkgram.c"
++#line 2416 "awkgram.c"
      break;
  
    case 40: /* typed_regexp: TYPED_REGEXP  */
- #line 576 "awkgram.y"
 -#line 585 "awkgram.y"
++#line 592 "awkgram.y"
                  {
                  char *re;
                  size_t len;
@@@ -2406,23 -2422,23 +2429,23 @@@
                  yyval->opcode = Op_push_re;
                  yyval->memory = make_typed_regex(re, len);
                }
- #line 2410 "awkgram.c"
 -#line 2426 "awkgram.c"
++#line 2433 "awkgram.c"
      break;
  
    case 41: /* a_slash: '/'  */
- #line 591 "awkgram.y"
 -#line 600 "awkgram.y"
++#line 607 "awkgram.y"
            { bcfree(yyvsp[0]); }
- #line 2416 "awkgram.c"
 -#line 2432 "awkgram.c"
++#line 2439 "awkgram.c"
      break;
  
    case 43: /* statements: %empty  */
- #line 597 "awkgram.y"
 -#line 606 "awkgram.y"
++#line 613 "awkgram.y"
            { yyval = NULL; }
- #line 2422 "awkgram.c"
 -#line 2438 "awkgram.c"
++#line 2445 "awkgram.c"
      break;
  
    case 44: /* statements: statements statement  */
- #line 599 "awkgram.y"
 -#line 608 "awkgram.y"
++#line 615 "awkgram.y"
            {
                if (yyvsp[0] == NULL) {
                        yyval = yyvsp[-1];
@@@ -2442,29 -2458,29 +2465,29 @@@
  
                yyerrok;
          }
- #line 2446 "awkgram.c"
 -#line 2462 "awkgram.c"
++#line 2469 "awkgram.c"
      break;
  
    case 45: /* statements: statements error  */
- #line 619 "awkgram.y"
 -#line 628 "awkgram.y"
++#line 635 "awkgram.y"
            {   yyval = NULL; }
- #line 2452 "awkgram.c"
 -#line 2468 "awkgram.c"
++#line 2475 "awkgram.c"
      break;
  
    case 46: /* statement_term: nls  */
- #line 623 "awkgram.y"
 -#line 632 "awkgram.y"
++#line 639 "awkgram.y"
                          { yyval = yyvsp[0]; }
- #line 2458 "awkgram.c"
 -#line 2474 "awkgram.c"
++#line 2481 "awkgram.c"
      break;
  
    case 47: /* statement_term: semi opt_nls  */
- #line 624 "awkgram.y"
 -#line 633 "awkgram.y"
++#line 640 "awkgram.y"
                          { yyval = yyvsp[0]; }
- #line 2464 "awkgram.c"
 -#line 2480 "awkgram.c"
++#line 2487 "awkgram.c"
      break;
  
    case 48: /* statement: semi opt_nls  */
- #line 629 "awkgram.y"
 -#line 638 "awkgram.y"
++#line 645 "awkgram.y"
            {
                if (yyvsp[0] != NULL) {
                        INSTRUCTION *ip;
@@@ -2475,31 -2491,31 +2498,31 @@@
                } else
                        yyval = NULL;
          }
- #line 2479 "awkgram.c"
 -#line 2495 "awkgram.c"
++#line 2502 "awkgram.c"
      break;
  
    case 49: /* statement: l_brace statements r_brace  */
- #line 640 "awkgram.y"
 -#line 649 "awkgram.y"
++#line 656 "awkgram.y"
            {
                trailing_comment = yyvsp[0];    // NULL or comment
                yyval = make_braced_statements(yyvsp[-2], yyvsp[-1], yyvsp[0]);
          }
- #line 2488 "awkgram.c"
 -#line 2504 "awkgram.c"
++#line 2511 "awkgram.c"
      break;
  
    case 50: /* statement: if_statement  */
- #line 645 "awkgram.y"
 -#line 654 "awkgram.y"
++#line 661 "awkgram.y"
            {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
- #line 2499 "awkgram.c"
 -#line 2515 "awkgram.c"
++#line 2522 "awkgram.c"
      break;
  
    case 51: /* statement: LEX_SWITCH '(' exp r_paren opt_nls l_brace 
case_statements opt_nls r_brace  */
- #line 652 "awkgram.y"
 -#line 661 "awkgram.y"
++#line 668 "awkgram.y"
            {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2607,11 -2623,11 +2630,11 @@@
                break_allowed--;
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2611 "awkgram.c"
 -#line 2627 "awkgram.c"
++#line 2634 "awkgram.c"
      break;
  
    case 52: /* statement: LEX_WHILE '(' exp r_paren opt_nls statement  */
- #line 760 "awkgram.y"
 -#line 769 "awkgram.y"
++#line 776 "awkgram.y"
            {
                /*
                 *    -----------------
@@@ -2662,11 -2678,11 +2685,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2666 "awkgram.c"
 -#line 2682 "awkgram.c"
++#line 2689 "awkgram.c"
      break;
  
    case 53: /* statement: LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren 
opt_nls  */
- #line 811 "awkgram.y"
 -#line 820 "awkgram.y"
++#line 827 "awkgram.y"
            {
                /*
                 *    -----------------
@@@ -2716,11 -2732,11 +2739,11 @@@
                /* else
                        $1 and $4 are NULLs */
          }
- #line 2720 "awkgram.c"
 -#line 2736 "awkgram.c"
++#line 2743 "awkgram.c"
      break;
  
    case 54: /* statement: LEX_FOR '(' NAME LEX_IN simple_variable r_paren 
opt_nls statement  */
- #line 861 "awkgram.y"
 -#line 870 "awkgram.y"
++#line 877 "awkgram.y"
            {
                INSTRUCTION *ip;
                char *var_name = yyvsp[-5]->lextok;
@@@ -2846,11 -2862,11 +2869,11 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2850 "awkgram.c"
 -#line 2866 "awkgram.c"
++#line 2873 "awkgram.c"
      break;
  
    case 55: /* statement: LEX_FOR '(' opt_simple_stmt semi opt_nls exp semi 
opt_nls opt_simple_stmt r_paren opt_nls statement  */
- #line 987 "awkgram.y"
 -#line 996 "awkgram.y"
++#line 1003 "awkgram.y"
            {
                if (yyvsp[-7] != NULL) {
                        merge_comments(yyvsp[-7], NULL);
@@@ -2872,11 -2888,11 +2895,11 @@@
                break_allowed--;
                continue_allowed--;
          }
- #line 2876 "awkgram.c"
 -#line 2892 "awkgram.c"
++#line 2899 "awkgram.c"
      break;
  
    case 56: /* statement: LEX_FOR '(' opt_simple_stmt semi opt_nls semi 
opt_nls opt_simple_stmt r_paren opt_nls statement  */
- #line 1009 "awkgram.y"
 -#line 1018 "awkgram.y"
++#line 1025 "awkgram.y"
            {
                if (yyvsp[-6] != NULL) {
                        merge_comments(yyvsp[-6], NULL);
@@@ -2897,22 -2913,22 +2920,22 @@@
                break_allowed--;
                continue_allowed--;
          }
- #line 2901 "awkgram.c"
 -#line 2917 "awkgram.c"
++#line 2924 "awkgram.c"
      break;
  
    case 57: /* statement: non_compound_stmt  */
- #line 1030 "awkgram.y"
 -#line 1039 "awkgram.y"
++#line 1046 "awkgram.y"
            {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
- #line 2912 "awkgram.c"
 -#line 2928 "awkgram.c"
++#line 2935 "awkgram.c"
      break;
  
    case 58: /* non_compound_stmt: LEX_BREAK statement_term  */
- #line 1040 "awkgram.y"
 -#line 1049 "awkgram.y"
++#line 1056 "awkgram.y"
            {
                if (! break_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@@ -2922,11 -2938,11 +2945,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2926 "awkgram.c"
 -#line 2942 "awkgram.c"
++#line 2949 "awkgram.c"
      break;
  
    case 59: /* non_compound_stmt: LEX_CONTINUE statement_term  */
- #line 1050 "awkgram.y"
 -#line 1059 "awkgram.y"
++#line 1066 "awkgram.y"
            {
                if (! continue_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@@ -2936,11 -2952,11 +2959,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2940 "awkgram.c"
 -#line 2956 "awkgram.c"
++#line 2963 "awkgram.c"
      break;
  
    case 60: /* non_compound_stmt: LEX_NEXT statement_term  */
- #line 1060 "awkgram.y"
 -#line 1069 "awkgram.y"
++#line 1076 "awkgram.y"
            {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2951,11 -2967,11 +2974,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2955 "awkgram.c"
 -#line 2971 "awkgram.c"
++#line 2978 "awkgram.c"
      break;
  
    case 61: /* non_compound_stmt: LEX_NEXTFILE statement_term  */
- #line 1071 "awkgram.y"
 -#line 1080 "awkgram.y"
++#line 1087 "awkgram.y"
            {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2968,11 -2984,11 +2991,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2972 "awkgram.c"
 -#line 2988 "awkgram.c"
++#line 2995 "awkgram.c"
      break;
  
    case 62: /* non_compound_stmt: LEX_EXIT opt_exp statement_term  */
- #line 1084 "awkgram.y"
 -#line 1093 "awkgram.y"
++#line 1100 "awkgram.y"
            {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time.
@@@ -2989,20 -3005,20 +3012,20 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2993 "awkgram.c"
 -#line 3009 "awkgram.c"
++#line 3016 "awkgram.c"
      break;
  
    case 63: /* $@3: %empty  */
- #line 1101 "awkgram.y"
 -#line 1110 "awkgram.y"
++#line 1117 "awkgram.y"
            {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 3002 "awkgram.c"
 -#line 3018 "awkgram.c"
++#line 3025 "awkgram.c"
      break;
  
    case 64: /* non_compound_stmt: LEX_RETURN $@3 opt_fcall_exp statement_term  
*/
- #line 1104 "awkgram.y"
 -#line 1113 "awkgram.y"
++#line 1120 "awkgram.y"
                                           {
                if (called_from_eval)
                        yyvsp[-3]->opcode = Op_K_return_from_eval;
@@@ -3016,28 -3032,28 +3039,28 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 3020 "awkgram.c"
 -#line 3036 "awkgram.c"
++#line 3043 "awkgram.c"
      break;
  
    case 65: /* non_compound_stmt: simple_stmt statement_term  */
- #line 1118 "awkgram.y"
 -#line 1127 "awkgram.y"
++#line 1134 "awkgram.y"
            {
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyvsp[-1], yyvsp[0]);
                else
                        yyval = yyvsp[-1];
          }
- #line 3031 "awkgram.c"
 -#line 3047 "awkgram.c"
++#line 3054 "awkgram.c"
      break;
  
    case 66: /* $@4: %empty  */
- #line 1135 "awkgram.y"
 -#line 1144 "awkgram.y"
++#line 1151 "awkgram.y"
                  { in_print = true; in_parens = 0; }
- #line 3037 "awkgram.c"
 -#line 3053 "awkgram.c"
++#line 3060 "awkgram.c"
      break;
  
    case 67: /* simple_stmt: print $@4 print_expression_list output_redir  */
- #line 1136 "awkgram.y"
 -#line 1145 "awkgram.y"
++#line 1152 "awkgram.y"
            {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -3138,22 -3154,19 +3161,22 @@@ regular_print
                        }
                }
          }
- #line 3142 "awkgram.c"
 -#line 3158 "awkgram.c"
++#line 3165 "awkgram.c"
      break;
  
    case 68: /* $@5: %empty  */
- #line 1237 "awkgram.y"
 -#line 1246 "awkgram.y"
++#line 1253 "awkgram.y"
                            { sub_counter = 0; }
- #line 3148 "awkgram.c"
 -#line 3164 "awkgram.c"
++#line 3171 "awkgram.c"
      break;
  
    case 69: /* simple_stmt: LEX_DELETE NAME $@5 delete_subscript_list  */
- #line 1238 "awkgram.y"
 -#line 1247 "awkgram.y"
++#line 1254 "awkgram.y"
            {
                char *arr = yyvsp[-2]->lextok;
 +              extern void print_instruction(INSTRUCTION *pc, Func_print 
print_func, FILE *fp, int in_dump);
 +
 +              if (trace) fprintf(stderr, "tok: %#p, val: %#p, %s\n", (void*) 
yyvsp[-2], arr, arr);
  
                yyvsp[-2]->opcode = Op_push_array;
                yyvsp[-2]->memory = variable(yyvsp[-2]->source_line, arr, 
Node_var_new);
@@@ -3190,11 -3197,11 +3213,11 @@@
                        yyval = list_append(list_append(yyvsp[0], yyvsp[-2]), 
yyvsp[-3]);
                }
          }
- #line 3194 "awkgram.c"
 -#line 3201 "awkgram.c"
++#line 3217 "awkgram.c"
      break;
  
    case 70: /* simple_stmt: LEX_DELETE '(' NAME ')'  */
--#line 1284 "awkgram.y"
++#line 1300 "awkgram.y"
            {
                static bool warned = false;
                char *arr = yyvsp[-1]->lextok;
@@@ -3220,54 -3227,54 +3243,54 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 3224 "awkgram.c"
 -#line 3231 "awkgram.c"
++#line 3247 "awkgram.c"
      break;
  
    case 71: /* simple_stmt: exp  */
--#line 1310 "awkgram.y"
++#line 1326 "awkgram.y"
            {
                yyval = optimize_assignment(yyvsp[0]);
          }
- #line 3232 "awkgram.c"
 -#line 3239 "awkgram.c"
++#line 3255 "awkgram.c"
      break;
  
    case 72: /* opt_simple_stmt: %empty  */
--#line 1317 "awkgram.y"
++#line 1333 "awkgram.y"
            { yyval = NULL; }
- #line 3238 "awkgram.c"
 -#line 3245 "awkgram.c"
++#line 3261 "awkgram.c"
      break;
  
    case 73: /* opt_simple_stmt: simple_stmt  */
--#line 1319 "awkgram.y"
++#line 1335 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3244 "awkgram.c"
 -#line 3251 "awkgram.c"
++#line 3267 "awkgram.c"
      break;
  
    case 74: /* case_statements: %empty  */
--#line 1324 "awkgram.y"
++#line 1340 "awkgram.y"
            { yyval = NULL; }
- #line 3250 "awkgram.c"
 -#line 3257 "awkgram.c"
++#line 3273 "awkgram.c"
      break;
  
    case 75: /* case_statements: case_statements case_statement  */
--#line 1326 "awkgram.y"
++#line 1342 "awkgram.y"
            {
                if (yyvsp[-1] == NULL)
                        yyval = list_create(yyvsp[0]);
                else
                        yyval = list_prepend(yyvsp[-1], yyvsp[0]);
          }
- #line 3261 "awkgram.c"
 -#line 3268 "awkgram.c"
++#line 3284 "awkgram.c"
      break;
  
    case 76: /* case_statements: case_statements error  */
--#line 1333 "awkgram.y"
++#line 1349 "awkgram.y"
            { yyval = NULL; }
- #line 3267 "awkgram.c"
 -#line 3274 "awkgram.c"
++#line 3290 "awkgram.c"
      break;
  
    case 77: /* case_statement: LEX_CASE case_value colon opt_nls statements  */
--#line 1338 "awkgram.y"
++#line 1354 "awkgram.y"
            {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@@ -3280,11 -3287,11 +3303,11 @@@
                bcfree(yyvsp[-2]);
                yyval = yyvsp[-4];
          }
- #line 3284 "awkgram.c"
 -#line 3291 "awkgram.c"
++#line 3307 "awkgram.c"
      break;
  
    case 78: /* case_statement: LEX_DEFAULT colon opt_nls statements  */
--#line 1351 "awkgram.y"
++#line 1367 "awkgram.y"
            {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@@ -3296,17 -3303,17 +3319,17 @@@
                yyvsp[-3]->comment = yyvsp[-1];
                yyval = yyvsp[-3];
          }
- #line 3300 "awkgram.c"
 -#line 3307 "awkgram.c"
++#line 3323 "awkgram.c"
      break;
  
    case 79: /* case_value: YNUMBER  */
--#line 1366 "awkgram.y"
++#line 1382 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 3306 "awkgram.c"
 -#line 3313 "awkgram.c"
++#line 3329 "awkgram.c"
      break;
  
    case 80: /* case_value: '-' YNUMBER  */
--#line 1368 "awkgram.y"
++#line 1384 "awkgram.y"
            {
                NODE *n = yyvsp[0]->memory;
                (void) force_number(n);
@@@ -3314,28 -3321,28 +3337,28 @@@
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
- #line 3318 "awkgram.c"
 -#line 3325 "awkgram.c"
++#line 3341 "awkgram.c"
      break;
  
    case 81: /* case_value: '+' YNUMBER  */
--#line 1376 "awkgram.y"
++#line 1392 "awkgram.y"
            {
                NODE *n = yyvsp[0]->lasti->memory;
                bcfree(yyvsp[-1]);
                add_sign_to_num(n, '+');
                yyval = yyvsp[0];
          }
- #line 3329 "awkgram.c"
 -#line 3336 "awkgram.c"
++#line 3352 "awkgram.c"
      break;
  
    case 82: /* case_value: YSTRING  */
--#line 1383 "awkgram.y"
++#line 1399 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 3335 "awkgram.c"
 -#line 3342 "awkgram.c"
++#line 3358 "awkgram.c"
      break;
  
    case 83: /* case_value: regexp  */
--#line 1385 "awkgram.y"
++#line 1401 "awkgram.y"
            {
                if (yyvsp[0]->memory->type == Node_regex)
                        yyvsp[0]->opcode = Op_push_re;
@@@ -3343,57 -3350,57 +3366,57 @@@
                        yyvsp[0]->opcode = Op_push;
                yyval = yyvsp[0];
          }
- #line 3347 "awkgram.c"
 -#line 3354 "awkgram.c"
++#line 3370 "awkgram.c"
      break;
  
    case 84: /* case_value: typed_regexp  */
--#line 1393 "awkgram.y"
++#line 1409 "awkgram.y"
            {
                assert((yyvsp[0]->memory->flags & REGEX) == REGEX);
                yyvsp[0]->opcode = Op_push_re;
                yyval = yyvsp[0];
          }
- #line 3357 "awkgram.c"
 -#line 3364 "awkgram.c"
++#line 3380 "awkgram.c"
      break;
  
    case 85: /* print: LEX_PRINT  */
--#line 1402 "awkgram.y"
++#line 1418 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3363 "awkgram.c"
 -#line 3370 "awkgram.c"
++#line 3386 "awkgram.c"
      break;
  
    case 86: /* print: LEX_PRINTF  */
--#line 1404 "awkgram.y"
++#line 1420 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3369 "awkgram.c"
 -#line 3376 "awkgram.c"
++#line 3392 "awkgram.c"
      break;
  
    case 88: /* print_expression_list: '(' expression_list r_paren  */
--#line 1414 "awkgram.y"
++#line 1430 "awkgram.y"
            {
                yyval = yyvsp[-1];
          }
- #line 3377 "awkgram.c"
 -#line 3384 "awkgram.c"
++#line 3400 "awkgram.c"
      break;
  
    case 89: /* output_redir: %empty  */
--#line 1421 "awkgram.y"
++#line 1437 "awkgram.y"
            {
                in_print = false;
                in_parens = 0;
                yyval = NULL;
          }
- #line 3387 "awkgram.c"
 -#line 3394 "awkgram.c"
++#line 3410 "awkgram.c"
      break;
  
    case 90: /* $@6: %empty  */
--#line 1426 "awkgram.y"
++#line 1442 "awkgram.y"
                   { in_print = false; in_parens = 0; }
- #line 3393 "awkgram.c"
 -#line 3400 "awkgram.c"
++#line 3416 "awkgram.c"
      break;
  
    case 91: /* output_redir: IO_OUT $@6 common_exp  */
--#line 1427 "awkgram.y"
++#line 1443 "awkgram.y"
            {
                if (yyvsp[-2]->redir_type == redirect_twoway
                        && yyvsp[0]->lasti->opcode == Op_K_getline_redir
@@@ -3403,22 -3410,22 +3426,22 @@@
                        lintwarn(_("concatenation as I/O `>' redirection target 
is ambiguous"));
                yyval = list_prepend(yyvsp[0], yyvsp[-2]);
          }
- #line 3407 "awkgram.c"
 -#line 3414 "awkgram.c"
++#line 3430 "awkgram.c"
      break;
  
    case 92: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement  */
--#line 1440 "awkgram.y"
++#line 1456 "awkgram.y"
            {
                if (yyvsp[-1] != NULL)
                        yyvsp[-5]->comment = yyvsp[-1];
                add_lint(yyvsp[-3], LINT_assign_in_cond);
                yyval = mk_condition(yyvsp[-3], yyvsp[-5], yyvsp[0], NULL, 
NULL);
          }
- #line 3418 "awkgram.c"
 -#line 3425 "awkgram.c"
++#line 3441 "awkgram.c"
      break;
  
    case 93: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement LEX_ELSE 
opt_nls statement  */
--#line 1448 "awkgram.y"
++#line 1464 "awkgram.y"
            {
                if (yyvsp[-4] != NULL)
                        yyvsp[-8]->comment = yyvsp[-4];
@@@ -3427,19 -3434,19 +3450,19 @@@
                add_lint(yyvsp[-6], LINT_assign_in_cond);
                yyval = mk_condition(yyvsp[-6], yyvsp[-8], yyvsp[-3], 
yyvsp[-2], yyvsp[0]);
          }
- #line 3431 "awkgram.c"
 -#line 3438 "awkgram.c"
++#line 3454 "awkgram.c"
      break;
  
    case 94: /* nls: NEWLINE  */
--#line 1460 "awkgram.y"
++#line 1476 "awkgram.y"
            {
                yyval = yyvsp[0];
          }
- #line 3439 "awkgram.c"
 -#line 3446 "awkgram.c"
++#line 3462 "awkgram.c"
      break;
  
    case 95: /* nls: nls NEWLINE  */
--#line 1464 "awkgram.y"
++#line 1480 "awkgram.y"
            {
                if (yyvsp[-1] != NULL && yyvsp[0] != NULL) {
                        if (yyvsp[-1]->memory->comment_type == EOL_COMMENT) {
@@@ -3457,59 -3464,59 +3480,59 @@@
                } else
                        yyval = NULL;
          }
- #line 3461 "awkgram.c"
 -#line 3468 "awkgram.c"
++#line 3484 "awkgram.c"
      break;
  
    case 96: /* opt_nls: %empty  */
--#line 1485 "awkgram.y"
++#line 1501 "awkgram.y"
            { yyval = NULL; }
- #line 3467 "awkgram.c"
 -#line 3474 "awkgram.c"
++#line 3490 "awkgram.c"
      break;
  
    case 97: /* opt_nls: nls  */
--#line 1487 "awkgram.y"
++#line 1503 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3473 "awkgram.c"
 -#line 3480 "awkgram.c"
++#line 3496 "awkgram.c"
      break;
  
    case 98: /* input_redir: %empty  */
--#line 1492 "awkgram.y"
++#line 1508 "awkgram.y"
            { yyval = NULL; }
- #line 3479 "awkgram.c"
 -#line 3486 "awkgram.c"
++#line 3502 "awkgram.c"
      break;
  
    case 99: /* input_redir: '<' simp_exp  */
--#line 1494 "awkgram.y"
++#line 1510 "awkgram.y"
            {
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
- #line 3488 "awkgram.c"
 -#line 3495 "awkgram.c"
++#line 3511 "awkgram.c"
      break;
  
    case 100: /* opt_param_list: %empty  */
--#line 1502 "awkgram.y"
++#line 1518 "awkgram.y"
            { yyval = NULL; }
- #line 3494 "awkgram.c"
 -#line 3501 "awkgram.c"
++#line 3517 "awkgram.c"
      break;
  
    case 101: /* opt_param_list: param_list  */
--#line 1504 "awkgram.y"
++#line 1520 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3500 "awkgram.c"
 -#line 3507 "awkgram.c"
++#line 3523 "awkgram.c"
      break;
  
    case 102: /* param_list: NAME  */
--#line 1509 "awkgram.y"
++#line 1525 "awkgram.y"
            {
                yyvsp[0]->param_count = 0;
                yyval = list_create(yyvsp[0]);
          }
- #line 3509 "awkgram.c"
 -#line 3516 "awkgram.c"
++#line 3532 "awkgram.c"
      break;
  
    case 103: /* param_list: param_list comma NAME  */
--#line 1514 "awkgram.y"
++#line 1530 "awkgram.y"
            {
                if (yyvsp[-2] != NULL && yyvsp[0] != NULL) {
                        yyvsp[0]->param_count = yyvsp[-2]->lasti->param_count + 
1;
@@@ -3526,76 -3533,76 +3549,76 @@@
                } else
                        yyval = NULL;
          }
- #line 3530 "awkgram.c"
 -#line 3537 "awkgram.c"
++#line 3553 "awkgram.c"
      break;
  
    case 104: /* param_list: error  */
--#line 1531 "awkgram.y"
++#line 1547 "awkgram.y"
            { yyval = NULL; }
- #line 3536 "awkgram.c"
 -#line 3543 "awkgram.c"
++#line 3559 "awkgram.c"
      break;
  
    case 105: /* param_list: param_list error  */
--#line 1533 "awkgram.y"
++#line 1549 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 3542 "awkgram.c"
 -#line 3549 "awkgram.c"
++#line 3565 "awkgram.c"
      break;
  
    case 106: /* param_list: param_list comma error  */
--#line 1535 "awkgram.y"
++#line 1551 "awkgram.y"
            { yyval = yyvsp[-2]; }
- #line 3548 "awkgram.c"
 -#line 3555 "awkgram.c"
++#line 3571 "awkgram.c"
      break;
  
    case 107: /* opt_exp: %empty  */
--#line 1541 "awkgram.y"
++#line 1557 "awkgram.y"
            { yyval = NULL; }
- #line 3554 "awkgram.c"
 -#line 3561 "awkgram.c"
++#line 3577 "awkgram.c"
      break;
  
    case 108: /* opt_exp: exp  */
--#line 1543 "awkgram.y"
++#line 1559 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3560 "awkgram.c"
 -#line 3567 "awkgram.c"
++#line 3583 "awkgram.c"
      break;
  
    case 109: /* opt_expression_list: %empty  */
--#line 1548 "awkgram.y"
++#line 1564 "awkgram.y"
            { yyval = NULL; }
- #line 3566 "awkgram.c"
 -#line 3573 "awkgram.c"
++#line 3589 "awkgram.c"
      break;
  
    case 110: /* opt_expression_list: expression_list  */
--#line 1550 "awkgram.y"
++#line 1566 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3572 "awkgram.c"
 -#line 3579 "awkgram.c"
++#line 3595 "awkgram.c"
      break;
  
    case 111: /* expression_list: exp  */
--#line 1555 "awkgram.y"
++#line 1571 "awkgram.y"
            {   yyval = mk_expression_list(NULL, yyvsp[0]); }
- #line 3578 "awkgram.c"
 -#line 3585 "awkgram.c"
++#line 3601 "awkgram.c"
      break;
  
    case 112: /* expression_list: expression_list comma exp  */
--#line 1557 "awkgram.y"
++#line 1573 "awkgram.y"
            {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
- #line 3589 "awkgram.c"
 -#line 3596 "awkgram.c"
++#line 3612 "awkgram.c"
      break;
  
    case 113: /* expression_list: error  */
--#line 1564 "awkgram.y"
++#line 1580 "awkgram.y"
            { yyval = NULL; }
- #line 3595 "awkgram.c"
 -#line 3602 "awkgram.c"
++#line 3618 "awkgram.c"
      break;
  
    case 114: /* expression_list: expression_list error  */
--#line 1566 "awkgram.y"
++#line 1582 "awkgram.y"
            {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3603,66 -3610,66 +3626,66 @@@
                 */
                yyval = yyvsp[-1];
          }
- #line 3607 "awkgram.c"
 -#line 3614 "awkgram.c"
++#line 3630 "awkgram.c"
      break;
  
    case 115: /* expression_list: expression_list error exp  */
--#line 1574 "awkgram.y"
++#line 1590 "awkgram.y"
            {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
- #line 3616 "awkgram.c"
 -#line 3623 "awkgram.c"
++#line 3639 "awkgram.c"
      break;
  
    case 116: /* expression_list: expression_list comma error  */
--#line 1579 "awkgram.y"
++#line 1595 "awkgram.y"
            {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
- #line 3627 "awkgram.c"
 -#line 3634 "awkgram.c"
++#line 3650 "awkgram.c"
      break;
  
    case 117: /* opt_fcall_expression_list: %empty  */
--#line 1589 "awkgram.y"
++#line 1605 "awkgram.y"
            { yyval = NULL; }
- #line 3633 "awkgram.c"
 -#line 3640 "awkgram.c"
++#line 3656 "awkgram.c"
      break;
  
    case 118: /* opt_fcall_expression_list: fcall_expression_list  */
--#line 1591 "awkgram.y"
++#line 1607 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3639 "awkgram.c"
 -#line 3646 "awkgram.c"
++#line 3662 "awkgram.c"
      break;
  
    case 119: /* fcall_expression_list: fcall_exp  */
--#line 1596 "awkgram.y"
++#line 1612 "awkgram.y"
            {   yyval = mk_expression_list(NULL, yyvsp[0]); }
- #line 3645 "awkgram.c"
 -#line 3652 "awkgram.c"
++#line 3668 "awkgram.c"
      break;
  
    case 120: /* fcall_expression_list: fcall_expression_list comma fcall_exp  
*/
--#line 1598 "awkgram.y"
++#line 1614 "awkgram.y"
            {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
- #line 3656 "awkgram.c"
 -#line 3663 "awkgram.c"
++#line 3679 "awkgram.c"
      break;
  
    case 121: /* fcall_expression_list: error  */
--#line 1605 "awkgram.y"
++#line 1621 "awkgram.y"
            { yyval = NULL; }
- #line 3662 "awkgram.c"
 -#line 3669 "awkgram.c"
++#line 3685 "awkgram.c"
      break;
  
    case 122: /* fcall_expression_list: fcall_expression_list error  */
--#line 1607 "awkgram.y"
++#line 1623 "awkgram.y"
            {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3670,86 -3677,86 +3693,86 @@@
                 */
                yyval = yyvsp[-1];
          }
- #line 3674 "awkgram.c"
 -#line 3681 "awkgram.c"
++#line 3697 "awkgram.c"
      break;
  
    case 123: /* fcall_expression_list: fcall_expression_list error fcall_exp  
*/
--#line 1615 "awkgram.y"
++#line 1631 "awkgram.y"
            {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
- #line 3683 "awkgram.c"
 -#line 3690 "awkgram.c"
++#line 3706 "awkgram.c"
      break;
  
    case 124: /* fcall_expression_list: fcall_expression_list comma error  */
--#line 1620 "awkgram.y"
++#line 1636 "awkgram.y"
            {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
- #line 3694 "awkgram.c"
 -#line 3701 "awkgram.c"
++#line 3717 "awkgram.c"
      break;
  
    case 125: /* fcall_exp: exp  */
--#line 1629 "awkgram.y"
++#line 1645 "awkgram.y"
                { yyval = yyvsp[0]; }
- #line 3700 "awkgram.c"
 -#line 3707 "awkgram.c"
++#line 3723 "awkgram.c"
      break;
  
    case 126: /* fcall_exp: typed_regexp  */
--#line 1630 "awkgram.y"
++#line 1646 "awkgram.y"
                         { yyval = list_create(yyvsp[0]); }
- #line 3706 "awkgram.c"
 -#line 3713 "awkgram.c"
++#line 3729 "awkgram.c"
      break;
  
    case 127: /* opt_fcall_exp: %empty  */
--#line 1635 "awkgram.y"
++#line 1651 "awkgram.y"
            { yyval = NULL; }
- #line 3712 "awkgram.c"
 -#line 3719 "awkgram.c"
++#line 3735 "awkgram.c"
      break;
  
    case 128: /* opt_fcall_exp: fcall_exp  */
--#line 1636 "awkgram.y"
++#line 1652 "awkgram.y"
                      { yyval = yyvsp[0]; }
- #line 3718 "awkgram.c"
 -#line 3725 "awkgram.c"
++#line 3741 "awkgram.c"
      break;
  
    case 129: /* exp: variable assign_operator exp  */
--#line 1642 "awkgram.y"
++#line 1658 "awkgram.y"
            {
                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 3729 "awkgram.c"
 -#line 3736 "awkgram.c"
++#line 3752 "awkgram.c"
      break;
  
    case 130: /* exp: variable ASSIGN typed_regexp  */
--#line 1649 "awkgram.y"
++#line 1665 "awkgram.y"
            {
                yyval = mk_assignment(yyvsp[-2], list_create(yyvsp[0]), 
yyvsp[-1]);
          }
- #line 3737 "awkgram.c"
 -#line 3744 "awkgram.c"
++#line 3760 "awkgram.c"
      break;
  
    case 131: /* exp: exp LEX_AND exp  */
--#line 1653 "awkgram.y"
++#line 1669 "awkgram.y"
            {   yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3743 "awkgram.c"
 -#line 3750 "awkgram.c"
++#line 3766 "awkgram.c"
      break;
  
    case 132: /* exp: exp LEX_OR exp  */
--#line 1655 "awkgram.y"
++#line 1671 "awkgram.y"
            {   yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3749 "awkgram.c"
 -#line 3756 "awkgram.c"
++#line 3772 "awkgram.c"
      break;
  
    case 133: /* exp: exp MATCHOP typed_regexp  */
--#line 1657 "awkgram.y"
++#line 1673 "awkgram.y"
            {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@@ -3762,11 -3769,11 +3785,11 @@@
                bcfree(yyvsp[0]);
                yyval = list_append(yyvsp[-2], yyvsp[-1]);
          }
- #line 3766 "awkgram.c"
 -#line 3773 "awkgram.c"
++#line 3789 "awkgram.c"
      break;
  
    case 134: /* exp: exp MATCHOP exp  */
--#line 1670 "awkgram.y"
++#line 1686 "awkgram.y"
            {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@@ -3783,11 -3790,11 +3806,11 @@@
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
yyvsp[-1]);
                }
          }
- #line 3787 "awkgram.c"
 -#line 3794 "awkgram.c"
++#line 3810 "awkgram.c"
      break;
  
    case 135: /* exp: exp LEX_IN simple_variable  */
--#line 1687 "awkgram.y"
++#line 1703 "awkgram.y"
            {
                if (do_lint_old)
                        lintwarn_ln(yyvsp[-1]->source_line,
@@@ -3797,91 -3804,91 +3820,91 @@@
                yyvsp[-1]->expr_count = 1;
                yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), yyvsp[-1]);
          }
- #line 3801 "awkgram.c"
 -#line 3808 "awkgram.c"
++#line 3824 "awkgram.c"
      break;
  
    case 136: /* exp: exp a_relop exp  */
--#line 1697 "awkgram.y"
++#line 1713 "awkgram.y"
            {
                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 3812 "awkgram.c"
 -#line 3819 "awkgram.c"
++#line 3835 "awkgram.c"
      break;
  
    case 137: /* exp: exp '?' exp ':' exp  */
--#line 1704 "awkgram.y"
++#line 1720 "awkgram.y"
            { yyval = mk_condition(yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], 
yyvsp[0]); }
- #line 3818 "awkgram.c"
 -#line 3825 "awkgram.c"
++#line 3841 "awkgram.c"
      break;
  
    case 138: /* exp: common_exp  */
--#line 1706 "awkgram.y"
++#line 1722 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3824 "awkgram.c"
 -#line 3831 "awkgram.c"
++#line 3847 "awkgram.c"
      break;
  
    case 139: /* assign_operator: ASSIGN  */
--#line 1711 "awkgram.y"
++#line 1727 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3830 "awkgram.c"
 -#line 3837 "awkgram.c"
++#line 3853 "awkgram.c"
      break;
  
    case 140: /* assign_operator: ASSIGNOP  */
--#line 1713 "awkgram.y"
++#line 1729 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3836 "awkgram.c"
 -#line 3843 "awkgram.c"
++#line 3859 "awkgram.c"
      break;
  
    case 141: /* assign_operator: SLASH_BEFORE_EQUAL ASSIGN  */
--#line 1715 "awkgram.y"
++#line 1731 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_assign_quotient;
                yyval = yyvsp[0];
          }
- #line 3845 "awkgram.c"
 -#line 3852 "awkgram.c"
++#line 3868 "awkgram.c"
      break;
  
    case 142: /* relop_or_less: RELOP  */
--#line 1723 "awkgram.y"
++#line 1739 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3851 "awkgram.c"
 -#line 3858 "awkgram.c"
++#line 3874 "awkgram.c"
      break;
  
    case 143: /* relop_or_less: '<'  */
--#line 1725 "awkgram.y"
++#line 1741 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3857 "awkgram.c"
 -#line 3864 "awkgram.c"
++#line 3880 "awkgram.c"
      break;
  
    case 144: /* a_relop: relop_or_less  */
--#line 1730 "awkgram.y"
++#line 1746 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3863 "awkgram.c"
 -#line 3870 "awkgram.c"
++#line 3886 "awkgram.c"
      break;
  
    case 145: /* a_relop: '>'  */
--#line 1732 "awkgram.y"
++#line 1748 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3869 "awkgram.c"
 -#line 3876 "awkgram.c"
++#line 3892 "awkgram.c"
      break;
  
    case 146: /* common_exp: simp_exp  */
--#line 1737 "awkgram.y"
++#line 1753 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3875 "awkgram.c"
 -#line 3882 "awkgram.c"
++#line 3898 "awkgram.c"
      break;
  
    case 147: /* common_exp: simp_exp_nc  */
--#line 1739 "awkgram.y"
++#line 1755 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3881 "awkgram.c"
 -#line 3888 "awkgram.c"
++#line 3904 "awkgram.c"
      break;
  
    case 148: /* common_exp: common_exp simp_exp  */
--#line 1741 "awkgram.y"
++#line 1757 "awkgram.y"
            {
                int count = 2;
                bool is_simple_var = false;
@@@ -3935,47 -3942,47 +3958,47 @@@
                                max_args = count;
                }
          }
- #line 3939 "awkgram.c"
 -#line 3946 "awkgram.c"
++#line 3962 "awkgram.c"
      break;
  
    case 150: /* simp_exp: simp_exp '^' simp_exp  */
--#line 1800 "awkgram.y"
++#line 1816 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3945 "awkgram.c"
 -#line 3952 "awkgram.c"
++#line 3968 "awkgram.c"
      break;
  
    case 151: /* simp_exp: simp_exp '*' simp_exp  */
--#line 1802 "awkgram.y"
++#line 1818 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3951 "awkgram.c"
 -#line 3958 "awkgram.c"
++#line 3974 "awkgram.c"
      break;
  
    case 152: /* simp_exp: simp_exp '/' simp_exp  */
--#line 1804 "awkgram.y"
++#line 1820 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3957 "awkgram.c"
 -#line 3964 "awkgram.c"
++#line 3980 "awkgram.c"
      break;
  
    case 153: /* simp_exp: simp_exp '%' simp_exp  */
--#line 1806 "awkgram.y"
++#line 1822 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3963 "awkgram.c"
 -#line 3970 "awkgram.c"
++#line 3986 "awkgram.c"
      break;
  
    case 154: /* simp_exp: simp_exp '+' simp_exp  */
--#line 1808 "awkgram.y"
++#line 1824 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3969 "awkgram.c"
 -#line 3976 "awkgram.c"
++#line 3992 "awkgram.c"
      break;
  
    case 155: /* simp_exp: simp_exp '-' simp_exp  */
--#line 1810 "awkgram.y"
++#line 1826 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3975 "awkgram.c"
 -#line 3982 "awkgram.c"
++#line 3998 "awkgram.c"
      break;
  
    case 156: /* simp_exp: LEX_GETLINE opt_variable input_redir  */
--#line 1812 "awkgram.y"
++#line 1828 "awkgram.y"
            {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3989,29 -3996,29 +4012,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                yyval = mk_getline(yyvsp[-2], yyvsp[-1], yyvsp[0], 
redirect_input);
          }
- #line 3993 "awkgram.c"
 -#line 4000 "awkgram.c"
++#line 4016 "awkgram.c"
      break;
  
    case 157: /* simp_exp: variable INCREMENT  */
--#line 1826 "awkgram.y"
++#line 1842 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postincrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4002 "awkgram.c"
 -#line 4009 "awkgram.c"
++#line 4025 "awkgram.c"
      break;
  
    case 158: /* simp_exp: variable DECREMENT  */
--#line 1831 "awkgram.y"
++#line 1847 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postdecrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4011 "awkgram.c"
 -#line 4018 "awkgram.c"
++#line 4034 "awkgram.c"
      break;
  
    case 159: /* simp_exp: '(' expression_list r_paren LEX_IN simple_variable  
*/
--#line 1836 "awkgram.y"
++#line 1852 "awkgram.y"
            {
                if (do_lint_old) {
                    /* first one is warning so that second one comes out if 
warnings are fatal */
@@@ -4032,64 -4039,64 +4055,64 @@@
                        yyval = list_append(list_merge(t, yyvsp[0]), yyvsp[-1]);
                }
          }
- #line 4036 "awkgram.c"
 -#line 4043 "awkgram.c"
++#line 4059 "awkgram.c"
      break;
  
    case 160: /* simp_exp_nc: common_exp IO_IN LEX_GETLINE opt_variable  */
--#line 1862 "awkgram.y"
++#line 1878 "awkgram.y"
                  {
                  yyval = mk_getline(yyvsp[-1], yyvsp[0], yyvsp[-3], 
yyvsp[-2]->redir_type);
                  bcfree(yyvsp[-2]);
                }
- #line 4045 "awkgram.c"
 -#line 4052 "awkgram.c"
++#line 4068 "awkgram.c"
      break;
  
    case 161: /* simp_exp_nc: simp_exp_nc '^' simp_exp  */
--#line 1868 "awkgram.y"
++#line 1884 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4051 "awkgram.c"
 -#line 4058 "awkgram.c"
++#line 4074 "awkgram.c"
      break;
  
    case 162: /* simp_exp_nc: simp_exp_nc '*' simp_exp  */
--#line 1870 "awkgram.y"
++#line 1886 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4057 "awkgram.c"
 -#line 4064 "awkgram.c"
++#line 4080 "awkgram.c"
      break;
  
    case 163: /* simp_exp_nc: simp_exp_nc '/' simp_exp  */
--#line 1872 "awkgram.y"
++#line 1888 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4063 "awkgram.c"
 -#line 4070 "awkgram.c"
++#line 4086 "awkgram.c"
      break;
  
    case 164: /* simp_exp_nc: simp_exp_nc '%' simp_exp  */
--#line 1874 "awkgram.y"
++#line 1890 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4069 "awkgram.c"
 -#line 4076 "awkgram.c"
++#line 4092 "awkgram.c"
      break;
  
    case 165: /* simp_exp_nc: simp_exp_nc '+' simp_exp  */
--#line 1876 "awkgram.y"
++#line 1892 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4075 "awkgram.c"
 -#line 4082 "awkgram.c"
++#line 4098 "awkgram.c"
      break;
  
    case 166: /* simp_exp_nc: simp_exp_nc '-' simp_exp  */
--#line 1878 "awkgram.y"
++#line 1894 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4081 "awkgram.c"
 -#line 4088 "awkgram.c"
++#line 4104 "awkgram.c"
      break;
  
    case 167: /* non_post_simp_exp: regexp  */
--#line 1883 "awkgram.y"
++#line 1899 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4089 "awkgram.c"
 -#line 4096 "awkgram.c"
++#line 4112 "awkgram.c"
      break;
  
    case 168: /* non_post_simp_exp: '!' simp_exp  */
--#line 1887 "awkgram.y"
++#line 1903 "awkgram.y"
            {
                if (yyvsp[0]->opcode == Op_match_rec) {
                        yyvsp[0]->opcode = Op_nomatch;
@@@ -4121,11 -4128,11 +4144,11 @@@
                        }
                }
           }
- #line 4125 "awkgram.c"
 -#line 4132 "awkgram.c"
++#line 4148 "awkgram.c"
      break;
  
    case 169: /* non_post_simp_exp: '(' exp r_paren  */
--#line 1919 "awkgram.y"
++#line 1935 "awkgram.y"
            {
                // Always include. Allows us to lint warn on
                // print "foo" > "bar" 1
@@@ -4133,31 -4140,31 +4156,31 @@@
                // print "foo" > ("bar" 1)
                yyval = list_append(yyvsp[-1], bcalloc(Op_parens, 1, 
sourceline));
          }
- #line 4137 "awkgram.c"
 -#line 4144 "awkgram.c"
++#line 4160 "awkgram.c"
      break;
  
    case 170: /* non_post_simp_exp: LEX_BUILTIN '(' opt_fcall_expression_list 
r_paren  */
--#line 1927 "awkgram.y"
++#line 1943 "awkgram.y"
            {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4147 "awkgram.c"
 -#line 4154 "awkgram.c"
++#line 4170 "awkgram.c"
      break;
  
    case 171: /* non_post_simp_exp: LEX_LENGTH '(' opt_fcall_expression_list 
r_paren  */
--#line 1933 "awkgram.y"
++#line 1949 "awkgram.y"
            {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4157 "awkgram.c"
 -#line 4164 "awkgram.c"
++#line 4180 "awkgram.c"
      break;
  
    case 172: /* non_post_simp_exp: LEX_LENGTH  */
--#line 1939 "awkgram.y"
++#line 1955 "awkgram.y"
            {
                static bool warned = false;
  
@@@ -4170,45 -4177,45 +4193,45 @@@
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4174 "awkgram.c"
 -#line 4181 "awkgram.c"
++#line 4197 "awkgram.c"
      break;
  
    case 175: /* non_post_simp_exp: INCREMENT variable  */
--#line 1954 "awkgram.y"
++#line 1970 "awkgram.y"
            {
                yyvsp[-1]->opcode = Op_preincrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
- #line 4183 "awkgram.c"
 -#line 4190 "awkgram.c"
++#line 4206 "awkgram.c"
      break;
  
    case 176: /* non_post_simp_exp: DECREMENT variable  */
--#line 1959 "awkgram.y"
++#line 1975 "awkgram.y"
            {
                yyvsp[-1]->opcode = Op_predecrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
- #line 4192 "awkgram.c"
 -#line 4199 "awkgram.c"
++#line 4215 "awkgram.c"
      break;
  
    case 177: /* non_post_simp_exp: YNUMBER  */
--#line 1964 "awkgram.y"
++#line 1980 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4200 "awkgram.c"
 -#line 4207 "awkgram.c"
++#line 4223 "awkgram.c"
      break;
  
    case 178: /* non_post_simp_exp: YSTRING  */
--#line 1968 "awkgram.y"
++#line 1984 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4208 "awkgram.c"
 -#line 4215 "awkgram.c"
++#line 4231 "awkgram.c"
      break;
  
    case 179: /* non_post_simp_exp: '-' simp_exp  */
--#line 1972 "awkgram.y"
++#line 1988 "awkgram.y"
            {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@@ -4223,11 -4230,11 +4246,11 @@@
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
- #line 4227 "awkgram.c"
 -#line 4234 "awkgram.c"
++#line 4250 "awkgram.c"
      break;
  
    case 180: /* non_post_simp_exp: '+' simp_exp  */
--#line 1987 "awkgram.y"
++#line 2003 "awkgram.y"
            {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@@ -4245,20 -4252,20 +4268,20 @@@
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
- #line 4249 "awkgram.c"
 -#line 4256 "awkgram.c"
++#line 4272 "awkgram.c"
      break;
  
    case 181: /* func_call: direct_func_call  */
--#line 2008 "awkgram.y"
++#line 2024 "awkgram.y"
            {
                func_use(yyvsp[0]->lasti->func_name, FUNC_USE);
                yyval = yyvsp[0];
          }
- #line 4258 "awkgram.c"
 -#line 4265 "awkgram.c"
++#line 4281 "awkgram.c"
      break;
  
    case 182: /* func_call: '@' direct_func_call  */
--#line 2013 "awkgram.y"
++#line 2029 "awkgram.y"
            {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -4292,11 -4299,11 +4315,11 @@@
                yyval = list_prepend(yyvsp[0], t);
                at_seen = false;
          }
- #line 4296 "awkgram.c"
 -#line 4303 "awkgram.c"
++#line 4319 "awkgram.c"
      break;
  
    case 183: /* direct_func_call: FUNC_CALL '(' opt_fcall_expression_list 
r_paren  */
--#line 2050 "awkgram.y"
++#line 2066 "awkgram.y"
            {
                NODE *n;
                char *name = yyvsp[-3]->func_name;
@@@ -4330,49 -4336,49 +4353,49 @@@
                        yyval = list_append(t, yyvsp[-3]);
                }
          }
- #line 4334 "awkgram.c"
 -#line 4340 "awkgram.c"
++#line 4357 "awkgram.c"
      break;
  
    case 184: /* opt_variable: %empty  */
- #line 2087 "awkgram.y"
 -#line 2086 "awkgram.y"
++#line 2103 "awkgram.y"
            { yyval = NULL; }
- #line 4340 "awkgram.c"
 -#line 4346 "awkgram.c"
++#line 4363 "awkgram.c"
      break;
  
    case 185: /* opt_variable: variable  */
- #line 2089 "awkgram.y"
 -#line 2088 "awkgram.y"
++#line 2105 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 4346 "awkgram.c"
 -#line 4352 "awkgram.c"
++#line 4369 "awkgram.c"
      break;
  
    case 186: /* delete_subscript_list: %empty  */
- #line 2094 "awkgram.y"
 -#line 2093 "awkgram.y"
++#line 2110 "awkgram.y"
            { yyval = NULL; }
- #line 4352 "awkgram.c"
 -#line 4358 "awkgram.c"
++#line 4375 "awkgram.c"
      break;
  
    case 187: /* delete_subscript_list: delete_subscript SUBSCRIPT  */
- #line 2096 "awkgram.y"
 -#line 2095 "awkgram.y"
++#line 2112 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 4358 "awkgram.c"
 -#line 4364 "awkgram.c"
++#line 4381 "awkgram.c"
      break;
  
    case 188: /* delete_subscript: delete_exp_list  */
- #line 2101 "awkgram.y"
 -#line 2100 "awkgram.y"
++#line 2117 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 4364 "awkgram.c"
 -#line 4370 "awkgram.c"
++#line 4387 "awkgram.c"
      break;
  
    case 189: /* delete_subscript: delete_subscript delete_exp_list  */
- #line 2103 "awkgram.y"
 -#line 2102 "awkgram.y"
++#line 2119 "awkgram.y"
            {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
- #line 4372 "awkgram.c"
 -#line 4378 "awkgram.c"
++#line 4395 "awkgram.c"
      break;
  
    case 190: /* delete_exp_list: bracketed_exp_list  */
- #line 2110 "awkgram.y"
 -#line 2109 "awkgram.y"
++#line 2126 "awkgram.y"
            {
                INSTRUCTION *ip = yyvsp[0]->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -4386,11 -4392,11 +4409,11 @@@
                sub_counter++;  /* count # of dimensions */
                yyval = yyvsp[0];
          }
- #line 4390 "awkgram.c"
 -#line 4396 "awkgram.c"
++#line 4413 "awkgram.c"
      break;
  
    case 191: /* bracketed_exp_list: '[' expression_list ']'  */
- #line 2127 "awkgram.y"
 -#line 2126 "awkgram.y"
++#line 2143 "awkgram.y"
            {
                INSTRUCTION *t = yyvsp[-1];
                if (yyvsp[-1] == NULL) {
@@@ -4404,41 -4410,41 +4427,41 @@@
                        yyvsp[0]->sub_count = count_expressions(&t, false);
                yyval = list_append(t, yyvsp[0]);
          }
- #line 4408 "awkgram.c"
 -#line 4414 "awkgram.c"
++#line 4431 "awkgram.c"
      break;
  
    case 192: /* subscript: bracketed_exp_list  */
- #line 2144 "awkgram.y"
 -#line 2143 "awkgram.y"
++#line 2160 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 4414 "awkgram.c"
 -#line 4420 "awkgram.c"
++#line 4437 "awkgram.c"
      break;
  
    case 193: /* subscript: subscript bracketed_exp_list  */
- #line 2146 "awkgram.y"
 -#line 2145 "awkgram.y"
++#line 2162 "awkgram.y"
            {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
- #line 4422 "awkgram.c"
 -#line 4428 "awkgram.c"
++#line 4445 "awkgram.c"
      break;
  
    case 194: /* subscript_list: subscript SUBSCRIPT  */
- #line 2153 "awkgram.y"
 -#line 2152 "awkgram.y"
++#line 2169 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 4428 "awkgram.c"
 -#line 4434 "awkgram.c"
++#line 4451 "awkgram.c"
      break;
  
    case 195: /* simple_variable: NAME  */
- #line 2158 "awkgram.y"
 -#line 2157 "awkgram.y"
++#line 2174 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_push;
                yyvsp[0]->memory = variable(yyvsp[0]->source_line, 
yyvsp[0]->lextok, Node_var_new);
                yyval = list_create(yyvsp[0]);
          }
- #line 4438 "awkgram.c"
 -#line 4444 "awkgram.c"
++#line 4461 "awkgram.c"
      break;
  
    case 196: /* simple_variable: NAME subscript_list  */
- #line 2164 "awkgram.y"
 -#line 2163 "awkgram.y"
++#line 2180 "awkgram.y"
            {
                char *arr = yyvsp[-1]->lextok;
  
@@@ -4446,11 -4452,11 +4469,11 @@@
                yyvsp[-1]->opcode = Op_push_array;
                yyval = list_prepend(yyvsp[0], yyvsp[-1]);
          }
- #line 4450 "awkgram.c"
 -#line 4456 "awkgram.c"
++#line 4473 "awkgram.c"
      break;
  
    case 197: /* variable: simple_variable  */
- #line 2175 "awkgram.y"
 -#line 2174 "awkgram.y"
++#line 2191 "awkgram.y"
            {
                INSTRUCTION *ip = yyvsp[0]->nexti;
                if (ip->opcode == Op_push
@@@ -4462,85 -4468,85 +4485,85 @@@
                } else
                        yyval = yyvsp[0];
          }
- #line 4466 "awkgram.c"
 -#line 4472 "awkgram.c"
++#line 4489 "awkgram.c"
      break;
  
    case 198: /* variable: '$' non_post_simp_exp opt_incdec  */
- #line 2187 "awkgram.y"
 -#line 2186 "awkgram.y"
++#line 2203 "awkgram.y"
            {
                yyval = list_append(yyvsp[-1], yyvsp[-2]);
                if (yyvsp[0] != NULL)
                        mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4476 "awkgram.c"
 -#line 4482 "awkgram.c"
++#line 4499 "awkgram.c"
      break;
  
    case 199: /* opt_incdec: INCREMENT  */
- #line 2196 "awkgram.y"
 -#line 2195 "awkgram.y"
++#line 2212 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postincrement;
          }
- #line 4484 "awkgram.c"
 -#line 4490 "awkgram.c"
++#line 4507 "awkgram.c"
      break;
  
    case 200: /* opt_incdec: DECREMENT  */
- #line 2200 "awkgram.y"
 -#line 2199 "awkgram.y"
++#line 2216 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postdecrement;
          }
- #line 4492 "awkgram.c"
 -#line 4498 "awkgram.c"
++#line 4515 "awkgram.c"
      break;
  
    case 201: /* opt_incdec: %empty  */
- #line 2204 "awkgram.y"
 -#line 2203 "awkgram.y"
++#line 2220 "awkgram.y"
            { yyval = NULL; }
- #line 4498 "awkgram.c"
 -#line 4504 "awkgram.c"
++#line 4521 "awkgram.c"
      break;
  
    case 202: /* l_brace: '{' opt_nls  */
- #line 2208 "awkgram.y"
 -#line 2207 "awkgram.y"
++#line 2224 "awkgram.y"
                        { yyval = yyvsp[0]; }
- #line 4504 "awkgram.c"
 -#line 4510 "awkgram.c"
++#line 4527 "awkgram.c"
      break;
  
    case 203: /* r_brace: '}' opt_nls  */
- #line 2212 "awkgram.y"
 -#line 2211 "awkgram.y"
++#line 2228 "awkgram.y"
                          { yyval = yyvsp[0]; yyerrok; }
- #line 4510 "awkgram.c"
 -#line 4516 "awkgram.c"
++#line 4533 "awkgram.c"
      break;
  
    case 204: /* r_paren: ')'  */
- #line 2216 "awkgram.y"
 -#line 2215 "awkgram.y"
++#line 2232 "awkgram.y"
                { yyerrok; }
- #line 4516 "awkgram.c"
 -#line 4522 "awkgram.c"
++#line 4539 "awkgram.c"
      break;
  
    case 205: /* opt_semi: %empty  */
- #line 2221 "awkgram.y"
 -#line 2220 "awkgram.y"
++#line 2237 "awkgram.y"
            { yyval = NULL; }
- #line 4522 "awkgram.c"
 -#line 4528 "awkgram.c"
++#line 4545 "awkgram.c"
      break;
  
    case 207: /* semi: ';'  */
- #line 2226 "awkgram.y"
 -#line 2225 "awkgram.y"
++#line 2242 "awkgram.y"
                  { yyerrok; }
- #line 4528 "awkgram.c"
 -#line 4534 "awkgram.c"
++#line 4551 "awkgram.c"
      break;
  
    case 208: /* colon: ':'  */
- #line 2230 "awkgram.y"
 -#line 2229 "awkgram.y"
++#line 2246 "awkgram.y"
                  { yyval = yyvsp[0]; yyerrok; }
- #line 4534 "awkgram.c"
 -#line 4540 "awkgram.c"
++#line 4557 "awkgram.c"
      break;
  
    case 209: /* comma: ',' opt_nls  */
- #line 2234 "awkgram.y"
 -#line 2233 "awkgram.y"
++#line 2250 "awkgram.y"
                          { yyval = yyvsp[0]; yyerrok; }
- #line 4540 "awkgram.c"
 -#line 4546 "awkgram.c"
++#line 4563 "awkgram.c"
      break;
  
  
- #line 4544 "awkgram.c"
 -#line 4550 "awkgram.c"
++#line 4567 "awkgram.c"
  
        default: break;
      }
@@@ -4734,7 -4739,7 +4756,7 @@@ yyreturnlab
    return yyresult;
  }
  
- #line 2236 "awkgram.y"
 -#line 2235 "awkgram.y"
++#line 2252 "awkgram.y"
  
  
  struct token {
@@@ -6649,7 -6601,9 +6671,10 @@@ retry
                yylval = GET_INSTRUCTION(Op_token);
                if (want_source) {
                        yylval->lextok = estrdup(tokstart, tok - tokstart);
+                       // See the comment in the production for @namespace.
+                       if (want_namespace)
+                               change_namespace(yylval->lextok);
 +//                    if (trace) fprintf(stderr, "return FILENAME\n");
                        return lasttok = FILENAME;
                }
  
diff --cc awkgram.y
index a1cfad0f,2ec91545..0812ff27
--- a/awkgram.y
+++ b/awkgram.y
@@@ -34,12 -34,8 +34,13 @@@
  #define signed /**/
  #endif
  
 +NODE *watched = NULL;
 +const char *_file;
 +int _line;
 +const char *_func;
 +
  static void yyerror(const char *m, ...) ATTRIBUTE_PRINTF_1;
+ #define  YYERROR_IS_DECLARED  1       /* for bison 3.8. sigh. */
  static void error_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
  static void lintwarn_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
  static void warning_ln(int line, const char *m, ...) ATTRIBUTE_PRINTF_2;
@@@ -4147,7 -4093,9 +4163,10 @@@ retry
                yylval = GET_INSTRUCTION(Op_token);
                if (want_source) {
                        yylval->lextok = estrdup(tokstart, tok - tokstart);
+                       // See the comment in the production for @namespace.
+                       if (want_namespace)
+                               change_namespace(yylval->lextok);
 +//                    if (trace) fprintf(stderr, "return FILENAME\n");
                        return lasttok = FILENAME;
                }
  
diff --cc symbol.c
index 13e8c387,b89c01e0..e4bb750b
--- a/symbol.c
+++ b/symbol.c
@@@ -309,16 -304,8 +307,13 @@@ install(const char *name, NODE *parm, N
        NODE *table;
        NODE *n_name;
        NODE *prev;
 +      extern bool trace;
 +      const char *table_name = "symbol_table";
 +
 +      if (trace) fprintf(stderr, "install from: %s:%d:%s\n", 
 +                      _file, _line, _func);
  
-       if (strncmp(name, "awk::", 5) == 0)
-               n_name = make_string(name + 5, strlen(name) - 5);
-       else
-               n_name = make_string(name, strlen(name));
+       n_name = get_name_from_awk_ns(name);
  
        table = symbol_table;
  

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

Summary of changes:
 ChangeLog                                    |  256 +-
 Checklist                                    |  104 +-
 Makefile.am                                  |    2 +-
 Makefile.in                                  |   15 +-
 NEWS                                         |   30 +-
 README                                       |   12 +-
 README_d/ChangeLog                           |    8 +
 README_d/README.mpfr                         |    1 +
 aclocal.m4                                   |   70 +-
 awk.h                                        |    4 +
 awkgram.c                                    | 1059 ++--
 awkgram.y                                    |   69 +-
 awklib/ChangeLog                             |    4 +
 awklib/Makefile.in                           |   10 +-
 awklib/eg/prog/id.awk                        |    6 +-
 build-aux/ChangeLog                          |   12 +
 build-aux/ar-lib                             |    2 +-
 build-aux/compile                            |    2 +-
 build-aux/config.sub                         |   21 +-
 build-aux/depcomp                            |    2 +-
 build-aux/texinfo.tex                        |   14 +-
 builtin.c                                    |  364 +-
 cint_array.c                                 |    4 +-
 command.c                                    |  477 +-
 command.y                                    |    1 +
 configh.in                                   |  129 +-
 configure                                    | 7713 ++++++++++++++++----------
 configure.ac                                 |   15 +-
 custom.h                                     |    2 +-
 debug.c                                      |    4 +-
 doc/ChangeLog                                |  125 +
 doc/Makefile.am                              |    7 +-
 doc/Makefile.in                              |   15 +-
 doc/awkcard.in                               |    8 +-
 doc/gawk.info                                | 2490 +++++----
 doc/gawk.texi                                |  437 +-
 doc/gawkinet.info                            |  122 +-
 doc/gawkinet.texi                            |    2 +-
 doc/gawktexi.in                              |  437 +-
 doc/gawkworkflow.info                        |  126 +-
 doc/gawkworkflow.texi                        |    4 +-
 doc/it/ChangeLog                             |    5 +
 doc/texinfo.tex                              |   14 +-
 doc/wordlist                                 |   13 +
 doc/wordlist3                                |    1 +
 ext.c                                        |    1 +
 extension/ChangeLog                          |   68 +-
 extension/Makefile.am                        |    7 +-
 extension/Makefile.in                        |   18 +-
 extension/aclocal.m4                         |   70 +-
 extension/configh.in                         |  106 +-
 extension/configure                          | 6946 +++++++++++++----------
 extension/configure.ac                       |   12 +-
 extension/filefuncs.c                        |    2 +-
 extension/intdiv.c                           |    2 +-
 extension/ordchr.c                           |    4 +-
 extension/po/ChangeLog                       |    4 +
 extension/readdir.c                          |    3 +-
 extension/readfile.c                         |    4 +-
 extension/rwarray.c                          |  233 +-
 extension/rwarray0.c                         |  470 --
 extras/ChangeLog                             |    4 +
 extras/Makefile.in                           |    8 +-
 field.c                                      |   22 +-
 floatcomp.c                                  |    2 +-
 gawkapi.c                                    |    3 +-
 gawkapi.h                                    |    5 +-
 helpers/ChangeLog                            |    8 +
 awklib/eg/lib/ord.awk => helpers/find-utf.sh |   11 +-
 interpret.h                                  |   38 +-
 io.c                                         |   31 +-
 m4/ChangeLog                                 |    9 +
 m4/mpfr.m4                                   |    6 +-
 m4/readline.m4                               |   23 +-
 m4/threadlib.m4                              |    4 +-
 main.c                                       |   21 +-
 missing_d/ChangeLog                          |    4 +
 missing_d/fnmatch.c                          |    4 +-
 mkinstalldirs                                |  162 -
 mpfr.c                                       |   20 +
 msg.c                                        |    3 +-
 nonposix.h                                   |    1 -
 old-extension/ChangeLog                      |    4 +
 pc/ChangeLog                                 |   45 +
 pc/Makefile                                  |    2 +-
 pc/Makefile.tst                              | 1414 ++---
 pc/config.h                                  |  135 +-
 pc/gawkmisc.pc                               |   40 +-
 po/ChangeLog                                 |   28 +
 po/POTFILES.in                               |    1 -
 po/bg.gmo                                    |  Bin 101077 -> 119217 bytes
 po/bg.po                                     | 1261 ++---
 po/ca.po                                     |  823 +--
 po/da.po                                     |  823 +--
 po/de.gmo                                    |  Bin 78995 -> 92235 bytes
 po/de.po                                     | 1248 ++---
 po/es.po                                     |  824 +--
 po/fi.po                                     |  823 +--
 po/fr.gmo                                    |  Bin 79698 -> 92700 bytes
 po/fr.po                                     | 1297 ++---
 po/gawk.pot                                  |  825 +--
 po/id.po                                     |  823 +--
 po/it.gmo                                    |  Bin 75523 -> 88258 bytes
 po/it.po                                     |  948 ++--
 po/ja.po                                     |  823 +--
 po/ko.gmo                                    |  Bin 81601 -> 95465 bytes
 po/ko.po                                     | 1256 ++---
 po/ms.po                                     |  823 +--
 po/nl.po                                     |  824 +--
 po/pl.po                                     |  823 +--
 po/pt.gmo                                    |  Bin 74675 -> 87313 bytes
 po/pt.po                                     | 1270 ++---
 po/pt_BR.gmo                                 |  Bin 76040 -> 88657 bytes
 po/pt_BR.po                                  | 1251 ++---
 po/sr.po                                     | 1051 ++--
 po/sv.gmo                                    |  Bin 75766 -> 88222 bytes
 po/sv.po                                     | 1267 ++---
 po/vi.po                                     |  823 +--
 po/zh_CN.po                                  |  824 +--
 posix/ChangeLog                              |    8 +
 posix/gawkmisc.c                             |    7 +-
 profile.c                                    |    7 +-
 re.c                                         |    2 +-
 str_array.c                                  |    3 +-
 support/ChangeLog                            |   48 +
 support/Makefile.am                          |    5 +-
 support/Makefile.in                          |   13 +-
 support/attribute.h                          |   23 +
 support/cdefs.h                              |  105 +-
 support/dfa.c                                |   50 +-
 support/dfa.h                                |   30 +-
 support/dynarray.h                           |    2 +-
 support/flexmember.h                         |    2 +-
 support/idx.h                                |   22 +-
 support/intprops.h                           |   22 +-
 support/libc-config.h                        |    5 +-
 support/localeinfo.c                         |    4 +-
 support/localeinfo.h                         |    4 +-
 support/malloc/dynarray-skeleton.c           |    2 +-
 support/malloc/dynarray.h                    |    2 +-
 support/malloc/dynarray_at_failure.c         |    5 +-
 support/malloc/dynarray_emplace_enlarge.c    |    2 +-
 support/malloc/dynarray_finalize.c           |    2 +-
 support/malloc/dynarray_resize.c             |    2 +-
 support/malloc/dynarray_resize_clear.c       |    2 +-
 support/regcomp.c                            |  815 ++-
 support/regex.c                              |    3 +-
 support/regex.h                              |   52 +-
 support/regex_internal.c                     |   51 +-
 support/regex_internal.h                     |   51 +-
 support/regexec.c                            |   90 +-
 support/verify.h                             |    6 +-
 support/xalloc.h                             |   13 +-
 symbol.c                                     |   32 +-
 test/ChangeLog                               |  103 +
 test/Gentests                                |    9 +-
 test/Makefile.am                             |  496 +-
 test/Makefile.in                             | 1449 ++---
 test/Maketests                               |  945 ++--
 test/close_status.awk                        |   20 +
 test/close_status.ok                         |    6 +
 test/commas.awk                              |    4 +
 test/commas.ok                               |    2 +
 test/functab6.awk                            |    1 +
 test/functab6.ok                             |    2 +
 test/indirectbuiltin2.awk                    |   29 +
 test/indirectbuiltin2.ok                     |    6 +
 test/iolint.awk                              |   18 +-
 test/iolint.ok                               |    7 +-
 test/nsidentifier.awk                        |   36 +
 test/nsidentifier.ok                         |  118 +
 test/ordchr.awk                              |    1 +
 test/ordchr.ok                               |    1 +
 test/profile16.awk                           |   16 +
 test/profile16.ok                            |   18 +
 test/regexsub.awk                            |   48 +
 test/regexsub.ok                             |   30 +
 test/rwarray.awk                             |    5 +
 test/stupid3.ok                              |    2 +-
 test/stupid4.ok                              |    2 +-
 test/stupid5.awk                             |    9 +
 test/stupid5.ok                              |    2 +
 test/symtab10.in                             |    4 -
 test/symtab10.ok                             |   11 +-
 test/typeof6.awk                             |   46 +
 test/typeof6.ok                              |    1 +
 vms/ChangeLog                                |    8 +
 vms/gawkmisc.vms                             |    7 +-
 vms/vax/ChangeLog                            |    4 +
 189 files changed, 26918 insertions(+), 22996 deletions(-)
 delete mode 100644 extension/rwarray0.c
 copy awklib/eg/lib/ord.awk => helpers/find-utf.sh (83%)
 mode change 100644 => 100755
 delete mode 100755 mkinstalldirs
 create mode 100644 test/close_status.awk
 create mode 100644 test/close_status.ok
 create mode 100644 test/commas.awk
 create mode 100644 test/commas.ok
 create mode 100644 test/functab6.awk
 create mode 100644 test/functab6.ok
 create mode 100644 test/indirectbuiltin2.awk
 create mode 100644 test/indirectbuiltin2.ok
 create mode 100644 test/nsidentifier.awk
 create mode 100644 test/nsidentifier.ok
 create mode 100644 test/profile16.awk
 create mode 100644 test/profile16.ok
 create mode 100644 test/regexsub.awk
 create mode 100644 test/regexsub.ok
 create mode 100644 test/stupid5.awk
 create mode 100644 test/stupid5.ok
 delete mode 100644 test/symtab10.in
 create mode 100644 test/typeof6.awk
 create mode 100644 test/typeof6.ok


hooks/post-receive
-- 
gawk



reply via email to

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