gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, wasted-byte, updated. gawk-4.1.0-1033-g1


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, wasted-byte, updated. gawk-4.1.0-1033-g128a3e8
Date: Wed, 07 Jan 2015 20:33:23 +0000

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

The branch, wasted-byte has been updated
       via  128a3e884d9541ec5b96c02a19db38ac3c404bf1 (commit)
       via  2ff844d50c0ecbc4dc660cf7e8989476f56fb3e7 (commit)
       via  b1f63ac08d7da89ac7e8af4df5ca835527fc5b24 (commit)
       via  f70399532bd105c5f42ca040846aa537a8fa27bc (commit)
       via  385f22a32c3794615d713e519ae290eb09b2c4d2 (commit)
       via  9fc264e33c0fcc77ed18860a47bea824d75daebd (commit)
      from  daf063f72bb0b889149dea00794e8e889fdefa55 (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=128a3e884d9541ec5b96c02a19db38ac3c404bf1

commit 128a3e884d9541ec5b96c02a19db38ac3c404bf1
Merge: daf063f 2ff844d
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:32:43 2015 +0200

    Merge branch 'master' into wasted-byte

diff --cc extension/ChangeLog
index dca1433,582a344..94017b0
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@@ -1,10 -1,7 +1,14 @@@
+ 2015-01-07         Arnold D. Robbins     <address@hidden>
+ 
+       * testext.c (var_test): Adjust for PROCINFO now being there.
+ 
 +2014-12-14         Andrew J. Schorr     <address@hidden>
 +
 +      * readfile.c (read_file_to_buffer): Do not waste a byte at the end of
 +      a string.
 +      * rwarray.c (read_value): Ditto.
 +      * rwarray0.c (read_value): Ditto.
 +
  2014-11-23         Arnold D. Robbins     <address@hidden>
  
        * inplace.c (do_inplace_begin): Jump through hoops to silence

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=2ff844d50c0ecbc4dc660cf7e8989476f56fb3e7

commit 2ff844d50c0ecbc4dc660cf7e8989476f56fb3e7
Merge: f19d6c8 b1f63ac
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Jan 7 22:29:00 2015 +0200

    Merge branch 'gawk-4.1-stable'

diff --cc ChangeLog
index b78fc06,ef07715..f3af860
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,25 -1,21 +1,43 @@@
+ 2015-01-07         Arnold D. Robbins     <address@hidden>
+ 
+       * configure.ac: Update debug flags if developing.
+       * awkgram.y (yylex): Regex parsing bug fix for bracket expressions.
+       Thanks to Mike Brennan for the report.
+       * builtin.c (format_tree): Catch non-use of count$ for dynamic
+       field width or precision.
+ 
+       Unrelated:
+ 
+       Load deferred variables if extensions are used; they might
+       want to access PROCINFO and/or ENVIRON. Thanks to Andrew Schorr
+       for pointing out the issue.
+ 
+       * awkgram.y (extensions_used): New variable. Set it on @load.
+       (do_add_scrfile): Set it on -l.
+       (process_deferred): Check it also.
+ 
 +2014-12-24         Arnold D. Robbins     <address@hidden>
 +
 +      * profile.c (pprint): Be sure to set ip2 in all paths
 +      through the code. Thanks to GCC 4.9 for the warning.
 +
 +2014-12-12        Stephen Davies         <address@hidden>
 +
 +      Improve comment handling in pretty printing.
 +
 +      * awk.h (comment_type): New field in the node.
 +      (EOL_COMMENT, FULL_COMMENT): New defines.
 +      * awkgram.y (block_comment): New variable.
 +      (check_comment): New function.
 +      (grammar): Add code to handle comments as needed.
 +      (get_comment): Now takes a flag indicating kind of comment.
 +      (yylex): Collect comments appropriately.
 +      (append_rule): Ditto.
 +      * profile.c (pprint): Smarten up comment handling.
 +      Have printing \n take comments into account.
 +      (end_line): New function.
 +      (pp_func): Better handling of function comments.
 +
  2014-12-10         Arnold D. Robbins     <address@hidden>
  
        * dfa.c: Sync with GNU grep.
diff --cc awkgram.c
index 225cdb4,b24e602..4051b75
--- a/awkgram.c
+++ b/awkgram.c
@@@ -205,7 -196,7 +206,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- #line 209 "awkgram.c" /* yacc.c:339  */
 -#line 200 "awkgram.c" /* yacc.c:339  */
++#line 210 "awkgram.c" /* yacc.c:339  */
  
  # ifndef YY_NULLPTR
  #  if defined __cplusplus && 201103L <= __cplusplus
@@@ -359,7 -350,7 +360,7 @@@ int yyparse (void)
  
  /* Copy the second part of user declarations.  */
  
- #line 363 "awkgram.c" /* yacc.c:358  */
 -#line 354 "awkgram.c" /* yacc.c:358  */
++#line 364 "awkgram.c" /* yacc.c:358  */
  
  #ifdef short
  # undef short
@@@ -661,25 -652,25 +662,25 @@@ static const yytype_uint8 yytranslate[
    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   208,   208,   210,   215,   216,   222,   234,   238,   249,
-      255,   260,   268,   276,   278,   283,   291,   293,   299,   307,
-      317,   347,   361,   375,   383,   394,   406,   408,   410,   416,
-      421,   422,   426,   461,   460,   494,   496,   501,   507,   535,
-      540,   541,   545,   547,   549,   556,   646,   688,   730,   843,
-      850,   857,   867,   876,   885,   894,   905,   921,   920,   944,
-      956,   956,  1054,  1054,  1087,  1117,  1123,  1124,  1130,  1131,
-     1138,  1143,  1155,  1169,  1171,  1179,  1184,  1186,  1194,  1196,
-     1205,  1206,  1214,  1219,  1219,  1230,  1234,  1242,  1243,  1246,
-     1248,  1253,  1254,  1263,  1264,  1269,  1274,  1280,  1282,  1284,
-     1291,  1292,  1298,  1299,  1304,  1306,  1311,  1313,  1321,  1326,
-     1335,  1342,  1344,  1346,  1362,  1372,  1379,  1381,  1386,  1388,
-     1390,  1398,  1400,  1405,  1407,  1412,  1414,  1416,  1466,  1468,
-     1470,  1472,  1474,  1476,  1478,  1480,  1494,  1499,  1504,  1529,
-     1535,  1537,  1539,  1541,  1543,  1545,  1550,  1554,  1586,  1588,
-     1594,  1600,  1613,  1614,  1615,  1620,  1625,  1629,  1633,  1648,
-     1661,  1666,  1702,  1720,  1721,  1727,  1728,  1733,  1735,  1742,
-     1759,  1776,  1778,  1785,  1790,  1798,  1808,  1820,  1829,  1833,
-     1837,  1841,  1845,  1849,  1852,  1854,  1858,  1862,  1866
 -       0,   199,   199,   201,   206,   207,   213,   225,   229,   240,
 -     246,   251,   259,   267,   269,   274,   283,   285,   291,   292,
 -     294,   320,   331,   342,   348,   357,   367,   369,   371,   377,
 -     382,   383,   387,   406,   405,   439,   441,   446,   447,   460,
 -     465,   466,   470,   472,   474,   481,   571,   613,   655,   768,
 -     775,   782,   792,   801,   810,   819,   830,   846,   845,   869,
 -     881,   881,   979,   979,  1012,  1042,  1048,  1049,  1055,  1056,
 -    1063,  1068,  1080,  1094,  1096,  1104,  1109,  1111,  1119,  1121,
 -    1130,  1131,  1139,  1144,  1144,  1155,  1159,  1167,  1168,  1171,
 -    1173,  1178,  1179,  1188,  1189,  1194,  1199,  1205,  1207,  1209,
 -    1216,  1217,  1223,  1224,  1229,  1231,  1236,  1238,  1246,  1251,
 -    1260,  1267,  1269,  1271,  1287,  1297,  1304,  1306,  1311,  1313,
 -    1315,  1323,  1325,  1330,  1332,  1337,  1339,  1341,  1391,  1393,
 -    1395,  1397,  1399,  1401,  1403,  1405,  1419,  1424,  1429,  1454,
 -    1460,  1462,  1464,  1466,  1468,  1470,  1475,  1479,  1511,  1513,
 -    1519,  1525,  1538,  1539,  1540,  1545,  1550,  1554,  1558,  1573,
 -    1586,  1591,  1627,  1645,  1646,  1652,  1653,  1658,  1660,  1667,
 -    1684,  1701,  1703,  1710,  1715,  1723,  1733,  1745,  1754,  1758,
 -    1762,  1766,  1770,  1774,  1777,  1779,  1783,  1787,  1791
++       0,   209,   209,   211,   216,   217,   223,   235,   239,   250,
++     256,   261,   269,   277,   279,   284,   293,   295,   301,   309,
++     319,   349,   363,   377,   385,   396,   408,   410,   412,   418,
++     423,   424,   428,   463,   462,   496,   498,   503,   509,   537,
++     542,   543,   547,   549,   551,   558,   648,   690,   732,   845,
++     852,   859,   869,   878,   887,   896,   907,   923,   922,   946,
++     958,   958,  1056,  1056,  1089,  1119,  1125,  1126,  1132,  1133,
++    1140,  1145,  1157,  1171,  1173,  1181,  1186,  1188,  1196,  1198,
++    1207,  1208,  1216,  1221,  1221,  1232,  1236,  1244,  1245,  1248,
++    1250,  1255,  1256,  1265,  1266,  1271,  1276,  1282,  1284,  1286,
++    1293,  1294,  1300,  1301,  1306,  1308,  1313,  1315,  1323,  1328,
++    1337,  1344,  1346,  1348,  1364,  1374,  1381,  1383,  1388,  1390,
++    1392,  1400,  1402,  1407,  1409,  1414,  1416,  1418,  1468,  1470,
++    1472,  1474,  1476,  1478,  1480,  1482,  1496,  1501,  1506,  1531,
++    1537,  1539,  1541,  1543,  1545,  1547,  1552,  1556,  1588,  1590,
++    1596,  1602,  1615,  1616,  1617,  1622,  1627,  1631,  1635,  1650,
++    1663,  1668,  1704,  1722,  1723,  1729,  1730,  1735,  1737,  1744,
++    1761,  1778,  1780,  1787,  1792,  1800,  1810,  1822,  1831,  1835,
++    1839,  1843,  1847,  1851,  1854,  1856,  1860,  1864,  1868
  };
  #endif
  
@@@ -1852,26 -1843,26 +1853,26 @@@ yyreduce
    switch (yyn)
      {
          case 3:
- #line 211 "awkgram.y" /* yacc.c:1646  */
 -#line 202 "awkgram.y" /* yacc.c:1646  */
++#line 212 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                yyerrok;
          }
- #line 1861 "awkgram.c" /* yacc.c:1646  */
 -#line 1852 "awkgram.c" /* yacc.c:1646  */
++#line 1862 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 5:
- #line 217 "awkgram.y" /* yacc.c:1646  */
 -#line 208 "awkgram.y" /* yacc.c:1646  */
++#line 218 "awkgram.y" /* yacc.c:1646  */
      {
                next_sourcefile();
                if (sourcefile == srcfiles)
                        process_deferred();
          }
- #line 1871 "awkgram.c" /* yacc.c:1646  */
 -#line 1862 "awkgram.c" /* yacc.c:1646  */
++#line 1872 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 6:
- #line 223 "awkgram.y" /* yacc.c:1646  */
 -#line 214 "awkgram.y" /* yacc.c:1646  */
++#line 224 "awkgram.y" /* yacc.c:1646  */
      {
                rule = 0;
                /*
@@@ -1880,19 -1871,19 +1881,19 @@@
                 */
                /* yyerrok; */
          }
- #line 1884 "awkgram.c" /* yacc.c:1646  */
 -#line 1875 "awkgram.c" /* yacc.c:1646  */
++#line 1885 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 7:
- #line 235 "awkgram.y" /* yacc.c:1646  */
 -#line 226 "awkgram.y" /* yacc.c:1646  */
++#line 236 "awkgram.y" /* yacc.c:1646  */
      {
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
          }
- #line 1892 "awkgram.c" /* yacc.c:1646  */
 -#line 1883 "awkgram.c" /* yacc.c:1646  */
++#line 1893 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 8:
- #line 239 "awkgram.y" /* yacc.c:1646  */
 -#line 230 "awkgram.y" /* yacc.c:1646  */
++#line 240 "awkgram.y" /* yacc.c:1646  */
      {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -1903,39 -1894,39 +1904,39 @@@
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
- #line 1907 "awkgram.c" /* yacc.c:1646  */
 -#line 1898 "awkgram.c" /* yacc.c:1646  */
++#line 1908 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 9:
- #line 250 "awkgram.y" /* yacc.c:1646  */
 -#line 241 "awkgram.y" /* yacc.c:1646  */
++#line 251 "awkgram.y" /* yacc.c:1646  */
      {
                in_function = NULL;
                (void) mk_function((yyvsp[-1]), (yyvsp[0]));
                yyerrok;
          }
- #line 1917 "awkgram.c" /* yacc.c:1646  */
 -#line 1908 "awkgram.c" /* yacc.c:1646  */
++#line 1918 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 10:
- #line 256 "awkgram.y" /* yacc.c:1646  */
 -#line 247 "awkgram.y" /* yacc.c:1646  */
++#line 257 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1926 "awkgram.c" /* yacc.c:1646  */
 -#line 1917 "awkgram.c" /* yacc.c:1646  */
++#line 1927 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 11:
- #line 261 "awkgram.y" /* yacc.c:1646  */
 -#line 252 "awkgram.y" /* yacc.c:1646  */
++#line 262 "awkgram.y" /* yacc.c:1646  */
      {
                want_source = false;
                yyerrok;
          }
- #line 1935 "awkgram.c" /* yacc.c:1646  */
 -#line 1926 "awkgram.c" /* yacc.c:1646  */
++#line 1936 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 12:
- #line 269 "awkgram.y" /* yacc.c:1646  */
 -#line 260 "awkgram.y" /* yacc.c:1646  */
++#line 270 "awkgram.y" /* yacc.c:1646  */
      {
                if (include_source((yyvsp[0])) < 0)
                        YYABORT;
@@@ -1943,73 -1934,60 +1944,74 @@@
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 1947 "awkgram.c" /* yacc.c:1646  */
 -#line 1938 "awkgram.c" /* yacc.c:1646  */
++#line 1948 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 13:
- #line 277 "awkgram.y" /* yacc.c:1646  */
 -#line 268 "awkgram.y" /* yacc.c:1646  */
++#line 278 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1953 "awkgram.c" /* yacc.c:1646  */
 -#line 1944 "awkgram.c" /* yacc.c:1646  */
++#line 1954 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 14:
- #line 279 "awkgram.y" /* yacc.c:1646  */
 -#line 270 "awkgram.y" /* yacc.c:1646  */
++#line 280 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1959 "awkgram.c" /* yacc.c:1646  */
 -#line 1950 "awkgram.c" /* yacc.c:1646  */
++#line 1960 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 15:
- #line 284 "awkgram.y" /* yacc.c:1646  */
 -#line 275 "awkgram.y" /* yacc.c:1646  */
++#line 285 "awkgram.y" /* yacc.c:1646  */
      {
+               extensions_used = true;
                if (load_library((yyvsp[0])) < 0)
                        YYABORT;
                efree((yyvsp[0])->lextok);
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
- #line 1971 "awkgram.c" /* yacc.c:1646  */
 -#line 1963 "awkgram.c" /* yacc.c:1646  */
++#line 1973 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 16:
- #line 292 "awkgram.y" /* yacc.c:1646  */
 -#line 284 "awkgram.y" /* yacc.c:1646  */
++#line 294 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1977 "awkgram.c" /* yacc.c:1646  */
 -#line 1969 "awkgram.c" /* yacc.c:1646  */
++#line 1979 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 17:
- #line 294 "awkgram.y" /* yacc.c:1646  */
 -#line 286 "awkgram.y" /* yacc.c:1646  */
++#line 296 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 1983 "awkgram.c" /* yacc.c:1646  */
 -#line 1975 "awkgram.c" /* yacc.c:1646  */
++#line 1985 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 18:
- #line 299 "awkgram.y" /* yacc.c:1646  */
 -#line 291 "awkgram.y" /* yacc.c:1646  */
 -    { (yyval) = NULL; rule = Rule; }
 -#line 1981 "awkgram.c" /* yacc.c:1646  */
++#line 301 "awkgram.y" /* yacc.c:1646  */
 +    {
 +              rule = Rule;
 +              if (comment != NULL) {
 +                      (yyval) = list_create(comment);
 +                      comment = NULL;
 +              } else
 +                      (yyval) = NULL;
 +        }
- #line 1996 "awkgram.c" /* yacc.c:1646  */
++#line 1998 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 19:
- #line 308 "awkgram.y" /* yacc.c:1646  */
 -#line 293 "awkgram.y" /* yacc.c:1646  */
 -    { (yyval) = (yyvsp[0]); rule = Rule; }
 -#line 1987 "awkgram.c" /* yacc.c:1646  */
++#line 310 "awkgram.y" /* yacc.c:1646  */
 +    {
 +              rule = Rule;
 +              if (comment != NULL) {
 +                      (yyval) = list_prepend((yyvsp[0]), comment);
 +                      comment = NULL;
 +              } else
 +                      (yyval) = (yyvsp[0]);
 +        }
- #line 2009 "awkgram.c" /* yacc.c:1646  */
++#line 2011 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 20:
- #line 318 "awkgram.y" /* yacc.c:1646  */
 -#line 295 "awkgram.y" /* yacc.c:1646  */
++#line 320 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *tp;
  
@@@ -2032,136 -2010,104 +2034,136 @@@
                        ((yyvsp[-3])->nexti + 1)->condpair_left = 
(yyvsp[-3])->lasti;
                        ((yyvsp[-3])->nexti + 1)->condpair_right = 
(yyvsp[0])->lasti;
                }
 -              (yyval) = list_append(list_merge((yyvsp[-3]), (yyvsp[0])), tp);
 +              if (comment != NULL) {
 +                      (yyval) = 
list_append(list_merge(list_prepend((yyvsp[-3]), comment), (yyvsp[0])), tp);
 +                      comment = NULL;
 +              } else
 +                      (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
- #line 2043 "awkgram.c" /* yacc.c:1646  */
 -#line 2017 "awkgram.c" /* yacc.c:1646  */
++#line 2045 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 21:
- #line 348 "awkgram.y" /* yacc.c:1646  */
 -#line 321 "awkgram.y" /* yacc.c:1646  */
++#line 350 "awkgram.y" /* yacc.c:1646  */
      {
                static int begin_seen = 0;
 +
 +              func_first = false;
                if (do_lint_old && ++begin_seen == 2)
                        warning_ln((yyvsp[0])->source_line,
                                _("old awk does not support multiple `BEGIN' or 
`END' rules"));
  
                (yyvsp[0])->in_rule = rule = BEGIN;
                (yyvsp[0])->source_file = source;
 +              check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2061 "awkgram.c" /* yacc.c:1646  */
 -#line 2032 "awkgram.c" /* yacc.c:1646  */
++#line 2063 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 22:
- #line 362 "awkgram.y" /* yacc.c:1646  */
 -#line 332 "awkgram.y" /* yacc.c:1646  */
++#line 364 "awkgram.y" /* yacc.c:1646  */
      {
                static int end_seen = 0;
 +
 +              func_first = false;
                if (do_lint_old && ++end_seen == 2)
                        warning_ln((yyvsp[0])->source_line,
                                _("old awk does not support multiple `BEGIN' or 
`END' rules"));
  
                (yyvsp[0])->in_rule = rule = END;
                (yyvsp[0])->source_file = source;
 +              check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2079 "awkgram.c" /* yacc.c:1646  */
 -#line 2047 "awkgram.c" /* yacc.c:1646  */
++#line 2081 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 23:
- #line 376 "awkgram.y" /* yacc.c:1646  */
 -#line 343 "awkgram.y" /* yacc.c:1646  */
++#line 378 "awkgram.y" /* yacc.c:1646  */
      {
 +              func_first = false;
                (yyvsp[0])->in_rule = rule = BEGINFILE;
                (yyvsp[0])->source_file = source;
 +              check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2091 "awkgram.c" /* yacc.c:1646  */
 -#line 2057 "awkgram.c" /* yacc.c:1646  */
++#line 2093 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 24:
- #line 384 "awkgram.y" /* yacc.c:1646  */
 -#line 349 "awkgram.y" /* yacc.c:1646  */
++#line 386 "awkgram.y" /* yacc.c:1646  */
      {
 +              func_first = false;
                (yyvsp[0])->in_rule = rule = ENDFILE;
                (yyvsp[0])->source_file = source;
 +              check_comment();
                (yyval) = (yyvsp[0]);
          }
- #line 2103 "awkgram.c" /* yacc.c:1646  */
 -#line 2067 "awkgram.c" /* yacc.c:1646  */
++#line 2105 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 25:
- #line 395 "awkgram.y" /* yacc.c:1646  */
 -#line 358 "awkgram.y" /* yacc.c:1646  */
++#line 397 "awkgram.y" /* yacc.c:1646  */
      {
 +              INSTRUCTION *ip;
                if ((yyvsp[-3]) == NULL)
 -                      (yyval) = list_create(instruction(Op_no_op));
 +                      ip = list_create(instruction(Op_no_op));
                else
 -                      (yyval) = (yyvsp[-3]);
 +                      ip = (yyvsp[-3]);
 +              (yyval) = ip;
          }
- #line 2116 "awkgram.c" /* yacc.c:1646  */
 -#line 2078 "awkgram.c" /* yacc.c:1646  */
++#line 2118 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 26:
- #line 407 "awkgram.y" /* yacc.c:1646  */
 -#line 368 "awkgram.y" /* yacc.c:1646  */
++#line 409 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2122 "awkgram.c" /* yacc.c:1646  */
 -#line 2084 "awkgram.c" /* yacc.c:1646  */
++#line 2124 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 27:
- #line 409 "awkgram.y" /* yacc.c:1646  */
 -#line 370 "awkgram.y" /* yacc.c:1646  */
++#line 411 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2128 "awkgram.c" /* yacc.c:1646  */
 -#line 2090 "awkgram.c" /* yacc.c:1646  */
++#line 2130 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 28:
- #line 411 "awkgram.y" /* yacc.c:1646  */
 -#line 372 "awkgram.y" /* yacc.c:1646  */
++#line 413 "awkgram.y" /* yacc.c:1646  */
      {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2138 "awkgram.c" /* yacc.c:1646  */
 -#line 2100 "awkgram.c" /* yacc.c:1646  */
++#line 2140 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 29:
- #line 417 "awkgram.y" /* yacc.c:1646  */
 -#line 378 "awkgram.y" /* yacc.c:1646  */
++#line 419 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2144 "awkgram.c" /* yacc.c:1646  */
 -#line 2106 "awkgram.c" /* yacc.c:1646  */
++#line 2146 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 32:
- #line 427 "awkgram.y" /* yacc.c:1646  */
 -#line 388 "awkgram.y" /* yacc.c:1646  */
++#line 429 "awkgram.y" /* yacc.c:1646  */
      {
 +              /*
 +               *  treat any comments between BOF and the first function
 +               *  definition (with no intervening BEGIN etc block) as
 +               *  program comments.  Special kludge: iff there are more
 +               *  than one such comments, treat the last as a function
 +               *  comment.
 +               */
 +              if (comment != NULL && func_first
 +                  && strstr(comment->memory->stptr, "\n\n") != NULL)
 +                      split_comment();
 +              /* save any other pre-function comment as function comment  */
 +              if (comment != NULL) {
 +                      function_comment = comment;
 +                      comment = NULL;
 +              }
 +              func_first = false;
                (yyvsp[-5])->source_file = source;
                if (install_function((yyvsp[-4])->lextok, (yyvsp[-5]), 
(yyvsp[-2])) < 0)
                        YYABORT;
@@@ -2171,17 -2117,17 +2173,17 @@@
                /* $4 already free'd in install_function */
                (yyval) = (yyvsp[-5]);
          }
- #line 2175 "awkgram.c" /* yacc.c:1646  */
 -#line 2121 "awkgram.c" /* yacc.c:1646  */
++#line 2177 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 33:
- #line 461 "awkgram.y" /* yacc.c:1646  */
 -#line 406 "awkgram.y" /* yacc.c:1646  */
++#line 463 "awkgram.y" /* yacc.c:1646  */
      { want_regexp = true; }
- #line 2181 "awkgram.c" /* yacc.c:1646  */
 -#line 2127 "awkgram.c" /* yacc.c:1646  */
++#line 2183 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 34:
- #line 463 "awkgram.y" /* yacc.c:1646  */
 -#line 408 "awkgram.y" /* yacc.c:1646  */
++#line 465 "awkgram.y" /* yacc.c:1646  */
      {
                  NODE *n, *exp;
                  char *re;
@@@ -2210,89 -2156,69 +2212,89 @@@
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
- #line 2214 "awkgram.c" /* yacc.c:1646  */
 -#line 2160 "awkgram.c" /* yacc.c:1646  */
++#line 2216 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 35:
- #line 495 "awkgram.y" /* yacc.c:1646  */
 -#line 440 "awkgram.y" /* yacc.c:1646  */
++#line 497 "awkgram.y" /* yacc.c:1646  */
      { bcfree((yyvsp[0])); }
- #line 2220 "awkgram.c" /* yacc.c:1646  */
 -#line 2166 "awkgram.c" /* yacc.c:1646  */
++#line 2222 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 37:
- #line 501 "awkgram.y" /* yacc.c:1646  */
 -#line 446 "awkgram.y" /* yacc.c:1646  */
 -    { (yyval) = NULL; }
 -#line 2172 "awkgram.c" /* yacc.c:1646  */
++#line 503 "awkgram.y" /* yacc.c:1646  */
 +    {
 +              if (comment != NULL) {
 +                      (yyval) = list_create(comment);
 +                      comment = NULL;
 +              } else (yyval) = NULL;
 +        }
- #line 2231 "awkgram.c" /* yacc.c:1646  */
++#line 2233 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 38:
- #line 508 "awkgram.y" /* yacc.c:1646  */
 -#line 448 "awkgram.y" /* yacc.c:1646  */
++#line 510 "awkgram.y" /* yacc.c:1646  */
      {
 -              if ((yyvsp[0]) == NULL)
 -                      (yyval) = (yyvsp[-1]);
 -              else {
 +              if ((yyvsp[0]) == NULL) {
 +                      if (comment == NULL)
 +                              (yyval) = (yyvsp[-1]);
 +                      else {
 +                              (yyval) = list_append((yyvsp[-1]), comment);
 +                              comment = NULL;
 +                      }
 +              } else {
                        add_lint((yyvsp[0]), LINT_no_effect);
 -                      if ((yyvsp[-1]) == NULL)
 -                              (yyval) = (yyvsp[0]);
 -                      else
 +                      if ((yyvsp[-1]) == NULL) {
 +                              if (comment == NULL)
 +                                      (yyval) = (yyvsp[0]);
 +                              else {
 +                                      (yyval) = list_append((yyvsp[0]), 
comment);
 +                                      comment = NULL;
 +                              }
 +                      } else {
 +                              if (comment != NULL) {
 +                                      list_append((yyvsp[0]), comment);
 +                                      comment = NULL;
 +                              }
                                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
 +                      }
                }
 -          yyerrok;
 +              yyerrok;
          }
- #line 2263 "awkgram.c" /* yacc.c:1646  */
 -#line 2189 "awkgram.c" /* yacc.c:1646  */
++#line 2265 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 39:
- #line 536 "awkgram.y" /* yacc.c:1646  */
 -#line 461 "awkgram.y" /* yacc.c:1646  */
++#line 538 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2269 "awkgram.c" /* yacc.c:1646  */
 -#line 2195 "awkgram.c" /* yacc.c:1646  */
++#line 2271 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 42:
- #line 546 "awkgram.y" /* yacc.c:1646  */
 -#line 471 "awkgram.y" /* yacc.c:1646  */
++#line 548 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2275 "awkgram.c" /* yacc.c:1646  */
 -#line 2201 "awkgram.c" /* yacc.c:1646  */
++#line 2277 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 43:
- #line 548 "awkgram.y" /* yacc.c:1646  */
 -#line 473 "awkgram.y" /* yacc.c:1646  */
++#line 550 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 2281 "awkgram.c" /* yacc.c:1646  */
 -#line 2207 "awkgram.c" /* yacc.c:1646  */
++#line 2283 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 44:
- #line 550 "awkgram.y" /* yacc.c:1646  */
 -#line 475 "awkgram.y" /* yacc.c:1646  */
++#line 552 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2292 "awkgram.c" /* yacc.c:1646  */
 -#line 2218 "awkgram.c" /* yacc.c:1646  */
++#line 2294 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 45:
- #line 557 "awkgram.y" /* yacc.c:1646  */
 -#line 482 "awkgram.y" /* yacc.c:1646  */
++#line 559 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2382,11 -2308,11 +2384,11 @@@
                break_allowed--;                        
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2386 "awkgram.c" /* yacc.c:1646  */
 -#line 2312 "awkgram.c" /* yacc.c:1646  */
++#line 2388 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 46:
- #line 647 "awkgram.y" /* yacc.c:1646  */
 -#line 572 "awkgram.y" /* yacc.c:1646  */
++#line 649 "awkgram.y" /* yacc.c:1646  */
      { 
                /*
                 *    -----------------
@@@ -2428,11 -2354,11 +2430,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2432 "awkgram.c" /* yacc.c:1646  */
 -#line 2358 "awkgram.c" /* yacc.c:1646  */
++#line 2434 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 47:
- #line 689 "awkgram.y" /* yacc.c:1646  */
 -#line 614 "awkgram.y" /* yacc.c:1646  */
++#line 691 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 *    -----------------
@@@ -2474,11 -2400,11 +2476,11 @@@
                } /* else
                        $1 and $4 are NULLs */
          }
- #line 2478 "awkgram.c" /* yacc.c:1646  */
 -#line 2404 "awkgram.c" /* yacc.c:1646  */
++#line 2480 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 48:
- #line 731 "awkgram.y" /* yacc.c:1646  */
 -#line 656 "awkgram.y" /* yacc.c:1646  */
++#line 733 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@@ -2591,44 -2517,44 +2593,44 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2595 "awkgram.c" /* yacc.c:1646  */
 -#line 2521 "awkgram.c" /* yacc.c:1646  */
++#line 2597 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 49:
- #line 844 "awkgram.y" /* yacc.c:1646  */
 -#line 769 "awkgram.y" /* yacc.c:1646  */
++#line 846 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2606 "awkgram.c" /* yacc.c:1646  */
 -#line 2532 "awkgram.c" /* yacc.c:1646  */
++#line 2608 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 50:
- #line 851 "awkgram.y" /* yacc.c:1646  */
 -#line 776 "awkgram.y" /* yacc.c:1646  */
++#line 853 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
  
                break_allowed--;
                continue_allowed--;
          }
- #line 2617 "awkgram.c" /* yacc.c:1646  */
 -#line 2543 "awkgram.c" /* yacc.c:1646  */
++#line 2619 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 51:
- #line 858 "awkgram.y" /* yacc.c:1646  */
 -#line 783 "awkgram.y" /* yacc.c:1646  */
++#line 860 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
- #line 2628 "awkgram.c" /* yacc.c:1646  */
 -#line 2554 "awkgram.c" /* yacc.c:1646  */
++#line 2630 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 52:
- #line 868 "awkgram.y" /* yacc.c:1646  */
 -#line 793 "awkgram.y" /* yacc.c:1646  */
++#line 870 "awkgram.y" /* yacc.c:1646  */
      { 
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2637,11 -2563,11 +2639,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2641 "awkgram.c" /* yacc.c:1646  */
 -#line 2567 "awkgram.c" /* yacc.c:1646  */
++#line 2643 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 53:
- #line 877 "awkgram.y" /* yacc.c:1646  */
 -#line 802 "awkgram.y" /* yacc.c:1646  */
++#line 879 "awkgram.y" /* yacc.c:1646  */
      {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@@ -2650,11 -2576,11 +2652,11 @@@
                (yyval) = list_create((yyvsp[-1]));
  
          }
- #line 2654 "awkgram.c" /* yacc.c:1646  */
 -#line 2580 "awkgram.c" /* yacc.c:1646  */
++#line 2656 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 54:
- #line 886 "awkgram.y" /* yacc.c:1646  */
 -#line 811 "awkgram.y" /* yacc.c:1646  */
++#line 888 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2663,11 -2589,11 +2665,11 @@@
                (yyvsp[-1])->target_jmp = ip_rec;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2667 "awkgram.c" /* yacc.c:1646  */
 -#line 2593 "awkgram.c" /* yacc.c:1646  */
++#line 2669 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 55:
- #line 895 "awkgram.y" /* yacc.c:1646  */
 -#line 820 "awkgram.y" /* yacc.c:1646  */
++#line 897 "awkgram.y" /* yacc.c:1646  */
      {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2678,11 -2604,11 +2680,11 @@@
                (yyvsp[-1])->target_endfile = ip_endfile;
                (yyval) = list_create((yyvsp[-1]));
          }
- #line 2682 "awkgram.c" /* yacc.c:1646  */
 -#line 2608 "awkgram.c" /* yacc.c:1646  */
++#line 2684 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 56:
- #line 906 "awkgram.y" /* yacc.c:1646  */
 -#line 831 "awkgram.y" /* yacc.c:1646  */
++#line 908 "awkgram.y" /* yacc.c:1646  */
      {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time. 
@@@ -2697,20 -2623,20 +2699,20 @@@
                } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
          }
- #line 2701 "awkgram.c" /* yacc.c:1646  */
 -#line 2627 "awkgram.c" /* yacc.c:1646  */
++#line 2703 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 57:
- #line 921 "awkgram.y" /* yacc.c:1646  */
 -#line 846 "awkgram.y" /* yacc.c:1646  */
++#line 923 "awkgram.y" /* yacc.c:1646  */
      {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 2710 "awkgram.c" /* yacc.c:1646  */
 -#line 2636 "awkgram.c" /* yacc.c:1646  */
++#line 2712 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 58:
- #line 924 "awkgram.y" /* yacc.c:1646  */
 -#line 849 "awkgram.y" /* yacc.c:1646  */
++#line 926 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@@ -2731,17 -2657,17 +2733,17 @@@
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
                }
          }
- #line 2735 "awkgram.c" /* yacc.c:1646  */
 -#line 2661 "awkgram.c" /* yacc.c:1646  */
++#line 2737 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 60:
- #line 956 "awkgram.y" /* yacc.c:1646  */
 -#line 881 "awkgram.y" /* yacc.c:1646  */
++#line 958 "awkgram.y" /* yacc.c:1646  */
      { in_print = true; in_parens = 0; }
- #line 2741 "awkgram.c" /* yacc.c:1646  */
 -#line 2667 "awkgram.c" /* yacc.c:1646  */
++#line 2743 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 61:
- #line 957 "awkgram.y" /* yacc.c:1646  */
 -#line 882 "awkgram.y" /* yacc.c:1646  */
++#line 959 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -2838,17 -2764,17 +2840,17 @@@ regular_print
                        }
                }
          }
- #line 2842 "awkgram.c" /* yacc.c:1646  */
 -#line 2768 "awkgram.c" /* yacc.c:1646  */
++#line 2844 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 62:
- #line 1054 "awkgram.y" /* yacc.c:1646  */
 -#line 979 "awkgram.y" /* yacc.c:1646  */
++#line 1056 "awkgram.y" /* yacc.c:1646  */
      { sub_counter = 0; }
- #line 2848 "awkgram.c" /* yacc.c:1646  */
 -#line 2774 "awkgram.c" /* yacc.c:1646  */
++#line 2850 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 63:
- #line 1055 "awkgram.y" /* yacc.c:1646  */
 -#line 980 "awkgram.y" /* yacc.c:1646  */
++#line 1057 "awkgram.y" /* yacc.c:1646  */
      {
                char *arr = (yyvsp[-2])->lextok;
  
@@@ -2881,11 -2807,11 +2883,11 @@@
                        (yyval) = list_append(list_append((yyvsp[0]), 
(yyvsp[-2])), (yyvsp[-3]));
                }
          }
- #line 2885 "awkgram.c" /* yacc.c:1646  */
 -#line 2811 "awkgram.c" /* yacc.c:1646  */
++#line 2887 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 64:
- #line 1092 "awkgram.y" /* yacc.c:1646  */
 -#line 1017 "awkgram.y" /* yacc.c:1646  */
++#line 1094 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@@ -2911,52 -2837,52 +2913,52 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 2915 "awkgram.c" /* yacc.c:1646  */
 -#line 2841 "awkgram.c" /* yacc.c:1646  */
++#line 2917 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 65:
- #line 1118 "awkgram.y" /* yacc.c:1646  */
 -#line 1043 "awkgram.y" /* yacc.c:1646  */
++#line 1120 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = optimize_assignment((yyvsp[0])); }
- #line 2921 "awkgram.c" /* yacc.c:1646  */
 -#line 2847 "awkgram.c" /* yacc.c:1646  */
++#line 2923 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 66:
- #line 1123 "awkgram.y" /* yacc.c:1646  */
 -#line 1048 "awkgram.y" /* yacc.c:1646  */
++#line 1125 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2927 "awkgram.c" /* yacc.c:1646  */
 -#line 2853 "awkgram.c" /* yacc.c:1646  */
++#line 2929 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 67:
- #line 1125 "awkgram.y" /* yacc.c:1646  */
 -#line 1050 "awkgram.y" /* yacc.c:1646  */
++#line 1127 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2933 "awkgram.c" /* yacc.c:1646  */
 -#line 2859 "awkgram.c" /* yacc.c:1646  */
++#line 2935 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 68:
- #line 1130 "awkgram.y" /* yacc.c:1646  */
 -#line 1055 "awkgram.y" /* yacc.c:1646  */
++#line 1132 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2939 "awkgram.c" /* yacc.c:1646  */
 -#line 2865 "awkgram.c" /* yacc.c:1646  */
++#line 2941 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 69:
- #line 1132 "awkgram.y" /* yacc.c:1646  */
 -#line 1057 "awkgram.y" /* yacc.c:1646  */
++#line 1134 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
- #line 2950 "awkgram.c" /* yacc.c:1646  */
 -#line 2876 "awkgram.c" /* yacc.c:1646  */
++#line 2952 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 70:
- #line 1139 "awkgram.y" /* yacc.c:1646  */
 -#line 1064 "awkgram.y" /* yacc.c:1646  */
++#line 1141 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 2956 "awkgram.c" /* yacc.c:1646  */
 -#line 2882 "awkgram.c" /* yacc.c:1646  */
++#line 2958 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 71:
- #line 1144 "awkgram.y" /* yacc.c:1646  */
 -#line 1069 "awkgram.y" /* yacc.c:1646  */
++#line 1146 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2968,11 -2894,11 +2970,11 @@@
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
- #line 2972 "awkgram.c" /* yacc.c:1646  */
 -#line 2898 "awkgram.c" /* yacc.c:1646  */
++#line 2974 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 72:
- #line 1156 "awkgram.y" /* yacc.c:1646  */
 -#line 1081 "awkgram.y" /* yacc.c:1646  */
++#line 1158 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@@ -2983,17 -2909,17 +2985,17 @@@
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
- #line 2987 "awkgram.c" /* yacc.c:1646  */
 -#line 2913 "awkgram.c" /* yacc.c:1646  */
++#line 2989 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 73:
- #line 1170 "awkgram.y" /* yacc.c:1646  */
 -#line 1095 "awkgram.y" /* yacc.c:1646  */
++#line 1172 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 2993 "awkgram.c" /* yacc.c:1646  */
 -#line 2919 "awkgram.c" /* yacc.c:1646  */
++#line 2995 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 74:
- #line 1172 "awkgram.y" /* yacc.c:1646  */
 -#line 1097 "awkgram.y" /* yacc.c:1646  */
++#line 1174 "awkgram.y" /* yacc.c:1646  */
      { 
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@@ -3001,71 -2927,71 +3003,71 @@@
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3005 "awkgram.c" /* yacc.c:1646  */
 -#line 2931 "awkgram.c" /* yacc.c:1646  */
++#line 3007 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 75:
- #line 1180 "awkgram.y" /* yacc.c:1646  */
 -#line 1105 "awkgram.y" /* yacc.c:1646  */
++#line 1182 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3014 "awkgram.c" /* yacc.c:1646  */
 -#line 2940 "awkgram.c" /* yacc.c:1646  */
++#line 3016 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 76:
- #line 1185 "awkgram.y" /* yacc.c:1646  */
 -#line 1110 "awkgram.y" /* yacc.c:1646  */
++#line 1187 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3020 "awkgram.c" /* yacc.c:1646  */
 -#line 2946 "awkgram.c" /* yacc.c:1646  */
++#line 3022 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 77:
- #line 1187 "awkgram.y" /* yacc.c:1646  */
 -#line 1112 "awkgram.y" /* yacc.c:1646  */
++#line 1189 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
- #line 3029 "awkgram.c" /* yacc.c:1646  */
 -#line 2955 "awkgram.c" /* yacc.c:1646  */
++#line 3031 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 78:
- #line 1195 "awkgram.y" /* yacc.c:1646  */
 -#line 1120 "awkgram.y" /* yacc.c:1646  */
++#line 1197 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3035 "awkgram.c" /* yacc.c:1646  */
 -#line 2961 "awkgram.c" /* yacc.c:1646  */
++#line 3037 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 79:
- #line 1197 "awkgram.y" /* yacc.c:1646  */
 -#line 1122 "awkgram.y" /* yacc.c:1646  */
++#line 1199 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3041 "awkgram.c" /* yacc.c:1646  */
 -#line 2967 "awkgram.c" /* yacc.c:1646  */
++#line 3043 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 81:
- #line 1207 "awkgram.y" /* yacc.c:1646  */
 -#line 1132 "awkgram.y" /* yacc.c:1646  */
++#line 1209 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = (yyvsp[-1]);
          }
- #line 3049 "awkgram.c" /* yacc.c:1646  */
 -#line 2975 "awkgram.c" /* yacc.c:1646  */
++#line 3051 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 82:
- #line 1214 "awkgram.y" /* yacc.c:1646  */
 -#line 1139 "awkgram.y" /* yacc.c:1646  */
++#line 1216 "awkgram.y" /* yacc.c:1646  */
      {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
- #line 3059 "awkgram.c" /* yacc.c:1646  */
 -#line 2985 "awkgram.c" /* yacc.c:1646  */
++#line 3061 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 83:
- #line 1219 "awkgram.y" /* yacc.c:1646  */
 -#line 1144 "awkgram.y" /* yacc.c:1646  */
++#line 1221 "awkgram.y" /* yacc.c:1646  */
      { in_print = false; in_parens = 0; }
- #line 3065 "awkgram.c" /* yacc.c:1646  */
 -#line 2991 "awkgram.c" /* yacc.c:1646  */
++#line 3067 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 84:
- #line 1220 "awkgram.y" /* yacc.c:1646  */
 -#line 1145 "awkgram.y" /* yacc.c:1646  */
++#line 1222 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@@ -3073,136 -2999,136 +3075,136 @@@
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
- #line 3077 "awkgram.c" /* yacc.c:1646  */
 -#line 3003 "awkgram.c" /* yacc.c:1646  */
++#line 3079 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 85:
- #line 1231 "awkgram.y" /* yacc.c:1646  */
 -#line 1156 "awkgram.y" /* yacc.c:1646  */
++#line 1233 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
- #line 3085 "awkgram.c" /* yacc.c:1646  */
 -#line 3011 "awkgram.c" /* yacc.c:1646  */
++#line 3087 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 86:
- #line 1236 "awkgram.y" /* yacc.c:1646  */
 -#line 1161 "awkgram.y" /* yacc.c:1646  */
++#line 1238 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
- #line 3093 "awkgram.c" /* yacc.c:1646  */
 -#line 3019 "awkgram.c" /* yacc.c:1646  */
++#line 3095 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 91:
- #line 1253 "awkgram.y" /* yacc.c:1646  */
 -#line 1178 "awkgram.y" /* yacc.c:1646  */
++#line 1255 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3099 "awkgram.c" /* yacc.c:1646  */
 -#line 3025 "awkgram.c" /* yacc.c:1646  */
++#line 3101 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 92:
- #line 1255 "awkgram.y" /* yacc.c:1646  */
 -#line 1180 "awkgram.y" /* yacc.c:1646  */
++#line 1257 "awkgram.y" /* yacc.c:1646  */
      {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
- #line 3108 "awkgram.c" /* yacc.c:1646  */
 -#line 3034 "awkgram.c" /* yacc.c:1646  */
++#line 3110 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 93:
- #line 1263 "awkgram.y" /* yacc.c:1646  */
 -#line 1188 "awkgram.y" /* yacc.c:1646  */
++#line 1265 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3114 "awkgram.c" /* yacc.c:1646  */
 -#line 3040 "awkgram.c" /* yacc.c:1646  */
++#line 3116 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 94:
- #line 1265 "awkgram.y" /* yacc.c:1646  */
 -#line 1190 "awkgram.y" /* yacc.c:1646  */
 -    { (yyval) = (yyvsp[0]) ; }
 -#line 3046 "awkgram.c" /* yacc.c:1646  */
++#line 1267 "awkgram.y" /* yacc.c:1646  */
 +    { (yyval) = (yyvsp[0]); }
- #line 3120 "awkgram.c" /* yacc.c:1646  */
++#line 3122 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 95:
- #line 1270 "awkgram.y" /* yacc.c:1646  */
 -#line 1195 "awkgram.y" /* yacc.c:1646  */
++#line 1272 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3129 "awkgram.c" /* yacc.c:1646  */
 -#line 3055 "awkgram.c" /* yacc.c:1646  */
++#line 3131 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 96:
- #line 1275 "awkgram.y" /* yacc.c:1646  */
 -#line 1200 "awkgram.y" /* yacc.c:1646  */
++#line 1277 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->param_count =  (yyvsp[-2])->lasti->param_count + 1;
                (yyval) = list_append((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3139 "awkgram.c" /* yacc.c:1646  */
 -#line 3065 "awkgram.c" /* yacc.c:1646  */
++#line 3141 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 97:
- #line 1281 "awkgram.y" /* yacc.c:1646  */
 -#line 1206 "awkgram.y" /* yacc.c:1646  */
++#line 1283 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3145 "awkgram.c" /* yacc.c:1646  */
 -#line 3071 "awkgram.c" /* yacc.c:1646  */
++#line 3147 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 98:
- #line 1283 "awkgram.y" /* yacc.c:1646  */
 -#line 1208 "awkgram.y" /* yacc.c:1646  */
++#line 1285 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3151 "awkgram.c" /* yacc.c:1646  */
 -#line 3077 "awkgram.c" /* yacc.c:1646  */
++#line 3153 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 99:
- #line 1285 "awkgram.y" /* yacc.c:1646  */
 -#line 1210 "awkgram.y" /* yacc.c:1646  */
++#line 1287 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-2]); }
- #line 3157 "awkgram.c" /* yacc.c:1646  */
 -#line 3083 "awkgram.c" /* yacc.c:1646  */
++#line 3159 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 100:
- #line 1291 "awkgram.y" /* yacc.c:1646  */
 -#line 1216 "awkgram.y" /* yacc.c:1646  */
++#line 1293 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3163 "awkgram.c" /* yacc.c:1646  */
 -#line 3089 "awkgram.c" /* yacc.c:1646  */
++#line 3165 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 101:
- #line 1293 "awkgram.y" /* yacc.c:1646  */
 -#line 1218 "awkgram.y" /* yacc.c:1646  */
++#line 1295 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3169 "awkgram.c" /* yacc.c:1646  */
 -#line 3095 "awkgram.c" /* yacc.c:1646  */
++#line 3171 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 102:
- #line 1298 "awkgram.y" /* yacc.c:1646  */
 -#line 1223 "awkgram.y" /* yacc.c:1646  */
++#line 1300 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3175 "awkgram.c" /* yacc.c:1646  */
 -#line 3101 "awkgram.c" /* yacc.c:1646  */
++#line 3177 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 103:
- #line 1300 "awkgram.y" /* yacc.c:1646  */
 -#line 1225 "awkgram.y" /* yacc.c:1646  */
++#line 1302 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3181 "awkgram.c" /* yacc.c:1646  */
 -#line 3107 "awkgram.c" /* yacc.c:1646  */
++#line 3183 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 104:
- #line 1305 "awkgram.y" /* yacc.c:1646  */
 -#line 1230 "awkgram.y" /* yacc.c:1646  */
++#line 1307 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
- #line 3187 "awkgram.c" /* yacc.c:1646  */
 -#line 3113 "awkgram.c" /* yacc.c:1646  */
++#line 3189 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 105:
- #line 1307 "awkgram.y" /* yacc.c:1646  */
 -#line 1232 "awkgram.y" /* yacc.c:1646  */
++#line 1309 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
- #line 3196 "awkgram.c" /* yacc.c:1646  */
 -#line 3122 "awkgram.c" /* yacc.c:1646  */
++#line 3198 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 106:
- #line 1312 "awkgram.y" /* yacc.c:1646  */
 -#line 1237 "awkgram.y" /* yacc.c:1646  */
++#line 1314 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3202 "awkgram.c" /* yacc.c:1646  */
 -#line 3128 "awkgram.c" /* yacc.c:1646  */
++#line 3204 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 107:
- #line 1314 "awkgram.y" /* yacc.c:1646  */
 -#line 1239 "awkgram.y" /* yacc.c:1646  */
++#line 1316 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3210,52 -3136,52 +3212,52 @@@
                 */
                (yyval) = (yyvsp[-1]);
          }
- #line 3214 "awkgram.c" /* yacc.c:1646  */
 -#line 3140 "awkgram.c" /* yacc.c:1646  */
++#line 3216 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 108:
- #line 1322 "awkgram.y" /* yacc.c:1646  */
 -#line 1247 "awkgram.y" /* yacc.c:1646  */
++#line 1324 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
- #line 3223 "awkgram.c" /* yacc.c:1646  */
 -#line 3149 "awkgram.c" /* yacc.c:1646  */
++#line 3225 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 109:
- #line 1327 "awkgram.y" /* yacc.c:1646  */
 -#line 1252 "awkgram.y" /* yacc.c:1646  */
++#line 1329 "awkgram.y" /* yacc.c:1646  */
      {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
- #line 3232 "awkgram.c" /* yacc.c:1646  */
 -#line 3158 "awkgram.c" /* yacc.c:1646  */
++#line 3234 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 110:
- #line 1336 "awkgram.y" /* yacc.c:1646  */
 -#line 1261 "awkgram.y" /* yacc.c:1646  */
++#line 1338 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of assignment"));
                (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
          }
- #line 3243 "awkgram.c" /* yacc.c:1646  */
 -#line 3169 "awkgram.c" /* yacc.c:1646  */
++#line 3245 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 111:
- #line 1343 "awkgram.y" /* yacc.c:1646  */
 -#line 1268 "awkgram.y" /* yacc.c:1646  */
++#line 1345 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3249 "awkgram.c" /* yacc.c:1646  */
 -#line 3175 "awkgram.c" /* yacc.c:1646  */
++#line 3251 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 112:
- #line 1345 "awkgram.y" /* yacc.c:1646  */
 -#line 1270 "awkgram.y" /* yacc.c:1646  */
++#line 1347 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3255 "awkgram.c" /* yacc.c:1646  */
 -#line 3181 "awkgram.c" /* yacc.c:1646  */
++#line 3257 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 113:
- #line 1347 "awkgram.y" /* yacc.c:1646  */
 -#line 1272 "awkgram.y" /* yacc.c:1646  */
++#line 1349 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3271,11 -3197,11 +3273,11 @@@
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
- #line 3275 "awkgram.c" /* yacc.c:1646  */
 -#line 3201 "awkgram.c" /* yacc.c:1646  */
++#line 3277 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 114:
- #line 1363 "awkgram.y" /* yacc.c:1646  */
 -#line 1288 "awkgram.y" /* yacc.c:1646  */
++#line 1365 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@@ -3285,91 -3211,91 +3287,91 @@@
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3289 "awkgram.c" /* yacc.c:1646  */
 -#line 3215 "awkgram.c" /* yacc.c:1646  */
++#line 3291 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 115:
- #line 1373 "awkgram.y" /* yacc.c:1646  */
 -#line 1298 "awkgram.y" /* yacc.c:1646  */
++#line 1375 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of comparison"));
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
- #line 3300 "awkgram.c" /* yacc.c:1646  */
 -#line 3226 "awkgram.c" /* yacc.c:1646  */
++#line 3302 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 116:
- #line 1380 "awkgram.y" /* yacc.c:1646  */
 -#line 1305 "awkgram.y" /* yacc.c:1646  */
++#line 1382 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
- #line 3306 "awkgram.c" /* yacc.c:1646  */
 -#line 3232 "awkgram.c" /* yacc.c:1646  */
++#line 3308 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 117:
- #line 1382 "awkgram.y" /* yacc.c:1646  */
 -#line 1307 "awkgram.y" /* yacc.c:1646  */
++#line 1384 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3312 "awkgram.c" /* yacc.c:1646  */
 -#line 3238 "awkgram.c" /* yacc.c:1646  */
++#line 3314 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 118:
- #line 1387 "awkgram.y" /* yacc.c:1646  */
 -#line 1312 "awkgram.y" /* yacc.c:1646  */
++#line 1389 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3318 "awkgram.c" /* yacc.c:1646  */
 -#line 3244 "awkgram.c" /* yacc.c:1646  */
++#line 3320 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 119:
- #line 1389 "awkgram.y" /* yacc.c:1646  */
 -#line 1314 "awkgram.y" /* yacc.c:1646  */
++#line 1391 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3324 "awkgram.c" /* yacc.c:1646  */
 -#line 3250 "awkgram.c" /* yacc.c:1646  */
++#line 3326 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 120:
- #line 1391 "awkgram.y" /* yacc.c:1646  */
 -#line 1316 "awkgram.y" /* yacc.c:1646  */
++#line 1393 "awkgram.y" /* yacc.c:1646  */
      { 
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
- #line 3333 "awkgram.c" /* yacc.c:1646  */
 -#line 3259 "awkgram.c" /* yacc.c:1646  */
++#line 3335 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 121:
- #line 1399 "awkgram.y" /* yacc.c:1646  */
 -#line 1324 "awkgram.y" /* yacc.c:1646  */
++#line 1401 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3339 "awkgram.c" /* yacc.c:1646  */
 -#line 3265 "awkgram.c" /* yacc.c:1646  */
++#line 3341 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 122:
- #line 1401 "awkgram.y" /* yacc.c:1646  */
 -#line 1326 "awkgram.y" /* yacc.c:1646  */
++#line 1403 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3345 "awkgram.c" /* yacc.c:1646  */
 -#line 3271 "awkgram.c" /* yacc.c:1646  */
++#line 3347 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 123:
- #line 1406 "awkgram.y" /* yacc.c:1646  */
 -#line 1331 "awkgram.y" /* yacc.c:1646  */
++#line 1408 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3351 "awkgram.c" /* yacc.c:1646  */
 -#line 3277 "awkgram.c" /* yacc.c:1646  */
++#line 3353 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 124:
- #line 1408 "awkgram.y" /* yacc.c:1646  */
 -#line 1333 "awkgram.y" /* yacc.c:1646  */
++#line 1410 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3357 "awkgram.c" /* yacc.c:1646  */
 -#line 3283 "awkgram.c" /* yacc.c:1646  */
++#line 3359 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 125:
- #line 1413 "awkgram.y" /* yacc.c:1646  */
 -#line 1338 "awkgram.y" /* yacc.c:1646  */
++#line 1415 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3363 "awkgram.c" /* yacc.c:1646  */
 -#line 3289 "awkgram.c" /* yacc.c:1646  */
++#line 3365 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 126:
- #line 1415 "awkgram.y" /* yacc.c:1646  */
 -#line 1340 "awkgram.y" /* yacc.c:1646  */
++#line 1417 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3369 "awkgram.c" /* yacc.c:1646  */
 -#line 3295 "awkgram.c" /* yacc.c:1646  */
++#line 3371 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 127:
- #line 1417 "awkgram.y" /* yacc.c:1646  */
 -#line 1342 "awkgram.y" /* yacc.c:1646  */
++#line 1419 "awkgram.y" /* yacc.c:1646  */
      {
                int count = 2;
                bool is_simple_var = false;
@@@ -3416,47 -3342,47 +3418,47 @@@
                                max_args = count;
                }
          }
- #line 3420 "awkgram.c" /* yacc.c:1646  */
 -#line 3346 "awkgram.c" /* yacc.c:1646  */
++#line 3422 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 129:
- #line 1469 "awkgram.y" /* yacc.c:1646  */
 -#line 1394 "awkgram.y" /* yacc.c:1646  */
++#line 1471 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3426 "awkgram.c" /* yacc.c:1646  */
 -#line 3352 "awkgram.c" /* yacc.c:1646  */
++#line 3428 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 130:
- #line 1471 "awkgram.y" /* yacc.c:1646  */
 -#line 1396 "awkgram.y" /* yacc.c:1646  */
++#line 1473 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3432 "awkgram.c" /* yacc.c:1646  */
 -#line 3358 "awkgram.c" /* yacc.c:1646  */
++#line 3434 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 131:
- #line 1473 "awkgram.y" /* yacc.c:1646  */
 -#line 1398 "awkgram.y" /* yacc.c:1646  */
++#line 1475 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3438 "awkgram.c" /* yacc.c:1646  */
 -#line 3364 "awkgram.c" /* yacc.c:1646  */
++#line 3440 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 132:
- #line 1475 "awkgram.y" /* yacc.c:1646  */
 -#line 1400 "awkgram.y" /* yacc.c:1646  */
++#line 1477 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3444 "awkgram.c" /* yacc.c:1646  */
 -#line 3370 "awkgram.c" /* yacc.c:1646  */
++#line 3446 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 133:
- #line 1477 "awkgram.y" /* yacc.c:1646  */
 -#line 1402 "awkgram.y" /* yacc.c:1646  */
++#line 1479 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3450 "awkgram.c" /* yacc.c:1646  */
 -#line 3376 "awkgram.c" /* yacc.c:1646  */
++#line 3452 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 134:
- #line 1479 "awkgram.y" /* yacc.c:1646  */
 -#line 1404 "awkgram.y" /* yacc.c:1646  */
++#line 1481 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3456 "awkgram.c" /* yacc.c:1646  */
 -#line 3382 "awkgram.c" /* yacc.c:1646  */
++#line 3458 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 135:
- #line 1481 "awkgram.y" /* yacc.c:1646  */
 -#line 1406 "awkgram.y" /* yacc.c:1646  */
++#line 1483 "awkgram.y" /* yacc.c:1646  */
      {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -3470,29 -3396,29 +3472,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
- #line 3474 "awkgram.c" /* yacc.c:1646  */
 -#line 3400 "awkgram.c" /* yacc.c:1646  */
++#line 3476 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 136:
- #line 1495 "awkgram.y" /* yacc.c:1646  */
 -#line 1420 "awkgram.y" /* yacc.c:1646  */
++#line 1497 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3483 "awkgram.c" /* yacc.c:1646  */
 -#line 3409 "awkgram.c" /* yacc.c:1646  */
++#line 3485 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 137:
- #line 1500 "awkgram.y" /* yacc.c:1646  */
 -#line 1425 "awkgram.y" /* yacc.c:1646  */
++#line 1502 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3492 "awkgram.c" /* yacc.c:1646  */
 -#line 3418 "awkgram.c" /* yacc.c:1646  */
++#line 3494 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 138:
- #line 1505 "awkgram.y" /* yacc.c:1646  */
 -#line 1430 "awkgram.y" /* yacc.c:1646  */
++#line 1507 "awkgram.y" /* yacc.c:1646  */
      {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@@ -3512,64 -3438,64 +3514,64 @@@
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
- #line 3516 "awkgram.c" /* yacc.c:1646  */
 -#line 3442 "awkgram.c" /* yacc.c:1646  */
++#line 3518 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 139:
- #line 1530 "awkgram.y" /* yacc.c:1646  */
 -#line 1455 "awkgram.y" /* yacc.c:1646  */
++#line 1532 "awkgram.y" /* yacc.c:1646  */
      {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
- #line 3525 "awkgram.c" /* yacc.c:1646  */
 -#line 3451 "awkgram.c" /* yacc.c:1646  */
++#line 3527 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 140:
- #line 1536 "awkgram.y" /* yacc.c:1646  */
 -#line 1461 "awkgram.y" /* yacc.c:1646  */
++#line 1538 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3531 "awkgram.c" /* yacc.c:1646  */
 -#line 3457 "awkgram.c" /* yacc.c:1646  */
++#line 3533 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 141:
- #line 1538 "awkgram.y" /* yacc.c:1646  */
 -#line 1463 "awkgram.y" /* yacc.c:1646  */
++#line 1540 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3537 "awkgram.c" /* yacc.c:1646  */
 -#line 3463 "awkgram.c" /* yacc.c:1646  */
++#line 3539 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 142:
- #line 1540 "awkgram.y" /* yacc.c:1646  */
 -#line 1465 "awkgram.y" /* yacc.c:1646  */
++#line 1542 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3543 "awkgram.c" /* yacc.c:1646  */
 -#line 3469 "awkgram.c" /* yacc.c:1646  */
++#line 3545 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 143:
- #line 1542 "awkgram.y" /* yacc.c:1646  */
 -#line 1467 "awkgram.y" /* yacc.c:1646  */
++#line 1544 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3549 "awkgram.c" /* yacc.c:1646  */
 -#line 3475 "awkgram.c" /* yacc.c:1646  */
++#line 3551 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 144:
- #line 1544 "awkgram.y" /* yacc.c:1646  */
 -#line 1469 "awkgram.y" /* yacc.c:1646  */
++#line 1546 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3555 "awkgram.c" /* yacc.c:1646  */
 -#line 3481 "awkgram.c" /* yacc.c:1646  */
++#line 3557 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 145:
- #line 1546 "awkgram.y" /* yacc.c:1646  */
 -#line 1471 "awkgram.y" /* yacc.c:1646  */
++#line 1548 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
- #line 3561 "awkgram.c" /* yacc.c:1646  */
 -#line 3487 "awkgram.c" /* yacc.c:1646  */
++#line 3563 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 146:
- #line 1551 "awkgram.y" /* yacc.c:1646  */
 -#line 1476 "awkgram.y" /* yacc.c:1646  */
++#line 1553 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3569 "awkgram.c" /* yacc.c:1646  */
 -#line 3495 "awkgram.c" /* yacc.c:1646  */
++#line 3571 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 147:
- #line 1555 "awkgram.y" /* yacc.c:1646  */
 -#line 1480 "awkgram.y" /* yacc.c:1646  */
++#line 1557 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@@ -3601,37 -3527,37 +3603,37 @@@
                        }
                }
           }
- #line 3605 "awkgram.c" /* yacc.c:1646  */
 -#line 3531 "awkgram.c" /* yacc.c:1646  */
++#line 3607 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 148:
- #line 1587 "awkgram.y" /* yacc.c:1646  */
 -#line 1512 "awkgram.y" /* yacc.c:1646  */
++#line 1589 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3611 "awkgram.c" /* yacc.c:1646  */
 -#line 3537 "awkgram.c" /* yacc.c:1646  */
++#line 3613 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 149:
- #line 1589 "awkgram.y" /* yacc.c:1646  */
 -#line 1514 "awkgram.y" /* yacc.c:1646  */
++#line 1591 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3621 "awkgram.c" /* yacc.c:1646  */
 -#line 3547 "awkgram.c" /* yacc.c:1646  */
++#line 3623 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 150:
- #line 1595 "awkgram.y" /* yacc.c:1646  */
 -#line 1520 "awkgram.y" /* yacc.c:1646  */
++#line 1597 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3631 "awkgram.c" /* yacc.c:1646  */
 -#line 3557 "awkgram.c" /* yacc.c:1646  */
++#line 3633 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 151:
- #line 1601 "awkgram.y" /* yacc.c:1646  */
 -#line 1526 "awkgram.y" /* yacc.c:1646  */
++#line 1603 "awkgram.y" /* yacc.c:1646  */
      {
                static bool warned = false;
  
@@@ -3644,45 -3570,45 +3646,45 @@@
                if ((yyval) == NULL)
                        YYABORT;
          }
- #line 3648 "awkgram.c" /* yacc.c:1646  */
 -#line 3574 "awkgram.c" /* yacc.c:1646  */
++#line 3650 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 154:
- #line 1616 "awkgram.y" /* yacc.c:1646  */
 -#line 1541 "awkgram.y" /* yacc.c:1646  */
++#line 1618 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3657 "awkgram.c" /* yacc.c:1646  */
 -#line 3583 "awkgram.c" /* yacc.c:1646  */
++#line 3659 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 155:
- #line 1621 "awkgram.y" /* yacc.c:1646  */
 -#line 1546 "awkgram.y" /* yacc.c:1646  */
++#line 1623 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
- #line 3666 "awkgram.c" /* yacc.c:1646  */
 -#line 3592 "awkgram.c" /* yacc.c:1646  */
++#line 3668 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 156:
- #line 1626 "awkgram.y" /* yacc.c:1646  */
 -#line 1551 "awkgram.y" /* yacc.c:1646  */
++#line 1628 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3674 "awkgram.c" /* yacc.c:1646  */
 -#line 3600 "awkgram.c" /* yacc.c:1646  */
++#line 3676 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 157:
- #line 1630 "awkgram.y" /* yacc.c:1646  */
 -#line 1555 "awkgram.y" /* yacc.c:1646  */
++#line 1632 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3682 "awkgram.c" /* yacc.c:1646  */
 -#line 3608 "awkgram.c" /* yacc.c:1646  */
++#line 3684 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 158:
- #line 1634 "awkgram.y" /* yacc.c:1646  */
 -#line 1559 "awkgram.y" /* yacc.c:1646  */
++#line 1636 "awkgram.y" /* yacc.c:1646  */
      {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & (STRCUR|STRING)) 
== 0
@@@ -3697,11 -3623,11 +3699,11 @@@
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
- #line 3701 "awkgram.c" /* yacc.c:1646  */
 -#line 3627 "awkgram.c" /* yacc.c:1646  */
++#line 3703 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 159:
- #line 1649 "awkgram.y" /* yacc.c:1646  */
 -#line 1574 "awkgram.y" /* yacc.c:1646  */
++#line 1651 "awkgram.y" /* yacc.c:1646  */
      {
            /*
             * was: $$ = $2
@@@ -3711,20 -3637,20 +3713,20 @@@
                (yyvsp[-1])->memory = make_number(0.0);
                (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
          }
- #line 3715 "awkgram.c" /* yacc.c:1646  */
 -#line 3641 "awkgram.c" /* yacc.c:1646  */
++#line 3717 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 160:
- #line 1662 "awkgram.y" /* yacc.c:1646  */
 -#line 1587 "awkgram.y" /* yacc.c:1646  */
++#line 1664 "awkgram.y" /* yacc.c:1646  */
      {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
- #line 3724 "awkgram.c" /* yacc.c:1646  */
 -#line 3650 "awkgram.c" /* yacc.c:1646  */
++#line 3726 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 161:
- #line 1667 "awkgram.y" /* yacc.c:1646  */
 -#line 1592 "awkgram.y" /* yacc.c:1646  */
++#line 1669 "awkgram.y" /* yacc.c:1646  */
      {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -3757,11 -3683,11 +3759,11 @@@
  
                (yyval) = list_prepend((yyvsp[0]), t);
          }
- #line 3761 "awkgram.c" /* yacc.c:1646  */
 -#line 3687 "awkgram.c" /* yacc.c:1646  */
++#line 3763 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 162:
- #line 1703 "awkgram.y" /* yacc.c:1646  */
 -#line 1628 "awkgram.y" /* yacc.c:1646  */
++#line 1705 "awkgram.y" /* yacc.c:1646  */
      {
                param_sanity((yyvsp[-1]));
                (yyvsp[-3])->opcode = Op_func_call;
@@@ -3775,49 -3701,49 +3777,49 @@@
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
- #line 3779 "awkgram.c" /* yacc.c:1646  */
 -#line 3705 "awkgram.c" /* yacc.c:1646  */
++#line 3781 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 163:
- #line 1720 "awkgram.y" /* yacc.c:1646  */
 -#line 1645 "awkgram.y" /* yacc.c:1646  */
++#line 1722 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3785 "awkgram.c" /* yacc.c:1646  */
 -#line 3711 "awkgram.c" /* yacc.c:1646  */
++#line 3787 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 164:
- #line 1722 "awkgram.y" /* yacc.c:1646  */
 -#line 1647 "awkgram.y" /* yacc.c:1646  */
++#line 1724 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3791 "awkgram.c" /* yacc.c:1646  */
 -#line 3717 "awkgram.c" /* yacc.c:1646  */
++#line 3793 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 165:
- #line 1727 "awkgram.y" /* yacc.c:1646  */
 -#line 1652 "awkgram.y" /* yacc.c:1646  */
++#line 1729 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3797 "awkgram.c" /* yacc.c:1646  */
 -#line 3723 "awkgram.c" /* yacc.c:1646  */
++#line 3799 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 166:
- #line 1729 "awkgram.y" /* yacc.c:1646  */
 -#line 1654 "awkgram.y" /* yacc.c:1646  */
++#line 1731 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3803 "awkgram.c" /* yacc.c:1646  */
 -#line 3729 "awkgram.c" /* yacc.c:1646  */
++#line 3805 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 167:
- #line 1734 "awkgram.y" /* yacc.c:1646  */
 -#line 1659 "awkgram.y" /* yacc.c:1646  */
++#line 1736 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3809 "awkgram.c" /* yacc.c:1646  */
 -#line 3735 "awkgram.c" /* yacc.c:1646  */
++#line 3811 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 168:
- #line 1736 "awkgram.y" /* yacc.c:1646  */
 -#line 1661 "awkgram.y" /* yacc.c:1646  */
++#line 1738 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3817 "awkgram.c" /* yacc.c:1646  */
 -#line 3743 "awkgram.c" /* yacc.c:1646  */
++#line 3819 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 169:
- #line 1743 "awkgram.y" /* yacc.c:1646  */
 -#line 1668 "awkgram.y" /* yacc.c:1646  */
++#line 1745 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->lasti; 
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -3831,11 -3757,11 +3833,11 @@@
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
- #line 3835 "awkgram.c" /* yacc.c:1646  */
 -#line 3761 "awkgram.c" /* yacc.c:1646  */
++#line 3837 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 170:
- #line 1760 "awkgram.y" /* yacc.c:1646  */
 -#line 1685 "awkgram.y" /* yacc.c:1646  */
++#line 1762 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@@ -3849,31 -3775,31 +3851,31 @@@
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
- #line 3853 "awkgram.c" /* yacc.c:1646  */
 -#line 3779 "awkgram.c" /* yacc.c:1646  */
++#line 3855 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 171:
- #line 1777 "awkgram.y" /* yacc.c:1646  */
 -#line 1702 "awkgram.y" /* yacc.c:1646  */
++#line 1779 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); }
- #line 3859 "awkgram.c" /* yacc.c:1646  */
 -#line 3785 "awkgram.c" /* yacc.c:1646  */
++#line 3861 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 172:
- #line 1779 "awkgram.y" /* yacc.c:1646  */
 -#line 1704 "awkgram.y" /* yacc.c:1646  */
++#line 1781 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
- #line 3867 "awkgram.c" /* yacc.c:1646  */
 -#line 3793 "awkgram.c" /* yacc.c:1646  */
++#line 3869 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 173:
- #line 1786 "awkgram.y" /* yacc.c:1646  */
 -#line 1711 "awkgram.y" /* yacc.c:1646  */
++#line 1788 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[-1]); }
- #line 3873 "awkgram.c" /* yacc.c:1646  */
 -#line 3799 "awkgram.c" /* yacc.c:1646  */
++#line 3875 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 174:
- #line 1791 "awkgram.y" /* yacc.c:1646  */
 -#line 1716 "awkgram.y" /* yacc.c:1646  */
++#line 1793 "awkgram.y" /* yacc.c:1646  */
      {
                char *var_name = (yyvsp[0])->lextok;
  
@@@ -3881,22 -3807,22 +3883,22 @@@
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
- #line 3885 "awkgram.c" /* yacc.c:1646  */
 -#line 3811 "awkgram.c" /* yacc.c:1646  */
++#line 3887 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 175:
- #line 1799 "awkgram.y" /* yacc.c:1646  */
 -#line 1724 "awkgram.y" /* yacc.c:1646  */
++#line 1801 "awkgram.y" /* yacc.c:1646  */
      {
                char *arr = (yyvsp[-1])->lextok;
                (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, 
Node_var_new);
                (yyvsp[-1])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
          }
- #line 3896 "awkgram.c" /* yacc.c:1646  */
 -#line 3822 "awkgram.c" /* yacc.c:1646  */
++#line 3898 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 176:
- #line 1809 "awkgram.y" /* yacc.c:1646  */
 -#line 1734 "awkgram.y" /* yacc.c:1646  */
++#line 1811 "awkgram.y" /* yacc.c:1646  */
      {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@@ -3908,73 -3834,73 +3910,73 @@@
                } else
                        (yyval) = (yyvsp[0]);
          }
- #line 3912 "awkgram.c" /* yacc.c:1646  */
 -#line 3838 "awkgram.c" /* yacc.c:1646  */
++#line 3914 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 177:
- #line 1821 "awkgram.y" /* yacc.c:1646  */
 -#line 1746 "awkgram.y" /* yacc.c:1646  */
++#line 1823 "awkgram.y" /* yacc.c:1646  */
      {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
- #line 3922 "awkgram.c" /* yacc.c:1646  */
 -#line 3848 "awkgram.c" /* yacc.c:1646  */
++#line 3924 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 178:
- #line 1830 "awkgram.y" /* yacc.c:1646  */
 -#line 1755 "awkgram.y" /* yacc.c:1646  */
++#line 1832 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postincrement;
          }
- #line 3930 "awkgram.c" /* yacc.c:1646  */
 -#line 3856 "awkgram.c" /* yacc.c:1646  */
++#line 3932 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 179:
- #line 1834 "awkgram.y" /* yacc.c:1646  */
 -#line 1759 "awkgram.y" /* yacc.c:1646  */
++#line 1836 "awkgram.y" /* yacc.c:1646  */
      {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
- #line 3938 "awkgram.c" /* yacc.c:1646  */
 -#line 3864 "awkgram.c" /* yacc.c:1646  */
++#line 3940 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 180:
- #line 1837 "awkgram.y" /* yacc.c:1646  */
 -#line 1762 "awkgram.y" /* yacc.c:1646  */
++#line 1839 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = NULL; }
- #line 3944 "awkgram.c" /* yacc.c:1646  */
 -#line 3870 "awkgram.c" /* yacc.c:1646  */
++#line 3946 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 182:
- #line 1845 "awkgram.y" /* yacc.c:1646  */
 -#line 1770 "awkgram.y" /* yacc.c:1646  */
++#line 1847 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3950 "awkgram.c" /* yacc.c:1646  */
 -#line 3876 "awkgram.c" /* yacc.c:1646  */
++#line 3952 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 183:
- #line 1849 "awkgram.y" /* yacc.c:1646  */
 -#line 1774 "awkgram.y" /* yacc.c:1646  */
++#line 1851 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3956 "awkgram.c" /* yacc.c:1646  */
 -#line 3882 "awkgram.c" /* yacc.c:1646  */
++#line 3958 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 186:
- #line 1858 "awkgram.y" /* yacc.c:1646  */
 -#line 1783 "awkgram.y" /* yacc.c:1646  */
++#line 1860 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3962 "awkgram.c" /* yacc.c:1646  */
 -#line 3888 "awkgram.c" /* yacc.c:1646  */
++#line 3964 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 187:
- #line 1862 "awkgram.y" /* yacc.c:1646  */
 -#line 1787 "awkgram.y" /* yacc.c:1646  */
++#line 1864 "awkgram.y" /* yacc.c:1646  */
      { (yyval) = (yyvsp[0]); yyerrok; }
- #line 3968 "awkgram.c" /* yacc.c:1646  */
 -#line 3894 "awkgram.c" /* yacc.c:1646  */
++#line 3970 "awkgram.c" /* yacc.c:1646  */
      break;
  
    case 188:
- #line 1866 "awkgram.y" /* yacc.c:1646  */
 -#line 1791 "awkgram.y" /* yacc.c:1646  */
++#line 1868 "awkgram.y" /* yacc.c:1646  */
      { yyerrok; }
- #line 3974 "awkgram.c" /* yacc.c:1646  */
 -#line 3900 "awkgram.c" /* yacc.c:1646  */
++#line 3976 "awkgram.c" /* yacc.c:1646  */
      break;
  
  
- #line 3978 "awkgram.c" /* yacc.c:1646  */
 -#line 3904 "awkgram.c" /* yacc.c:1646  */
++#line 3980 "awkgram.c" /* yacc.c:1646  */
        default: break;
      }
    /* User semantic actions sometimes alter yychar, and that requires
@@@ -4202,7 -4128,7 +4204,7 @@@ yyreturn
  #endif
    return yyresult;
  }
- #line 1868 "awkgram.y" /* yacc.c:1906  */
 -#line 1793 "awkgram.y" /* yacc.c:1906  */
++#line 1870 "awkgram.y" /* yacc.c:1906  */
  
  
  struct token {
diff --cc test/Makefile.am
index 7335da3,12bde88..11b7d00
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@@ -1001,7 -1004,7 +1006,7 @@@ BASIC_TESTS = 
        paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
        pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
        prt1eval prtoeval \
-       rand randtest range1 rebt8b1 redfilnm regeq regexprange regrange 
reindops \
 -      rand range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange 
reindops \
++      rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexprange 
regrange reindops \
        reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
        rstest3 rstest4 rstest5 rswhite \
        scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \
diff --cc test/Makefile.in
index fa86fc7,55650e1..902bfe6
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@@ -1247,7 -1250,7 +1252,7 @@@ BASIC_TESTS = 
        paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \
        pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
        prt1eval prtoeval \
-       rand randtest range1 rebt8b1 redfilnm regeq regexprange regrange 
reindops \
 -      rand range1 rebt8b1 redfilnm regeq regexpbrack regexprange regrange 
reindops \
++      rand randtest range1 rebt8b1 redfilnm regeq regexpbrack regexprange 
regrange reindops \
        reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
        rstest3 rstest4 rstest5 rswhite \
        scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \

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

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


hooks/post-receive
-- 
gawk



reply via email to

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