gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, master, updated. gawk-4.1.0-5602-gd2c38ebe


From: Arnold Robbins
Subject: [SCM] gawk branch, master, updated. gawk-4.1.0-5602-gd2c38ebe
Date: Mon, 12 Aug 2024 10:49:39 -0400 (EDT)

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, master has been updated
       via  d2c38ebe5bf71dd98965f46b99056e50bf40b49e (commit)
       via  28bcbc7d84cc5e4b4d7adfc15c36f73549c65515 (commit)
       via  28fa4da6c815acc45870d390d33c6e373c2d8668 (commit)
       via  236c878905784dccf28e1ff43070c3731f9195d3 (commit)
      from  48d86e72db8859132b452495f59b499245105826 (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=d2c38ebe5bf71dd98965f46b99056e50bf40b49e

commit d2c38ebe5bf71dd98965f46b99056e50bf40b49e
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Mon Aug 12 17:49:00 2024 +0300

    Additional doc improvements.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index fa9e533e..4efd85e6 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2024-08-12         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawk.texi: Improve indexing for @nsinclude. Describe it
+       in the feature history.
+
 2024-08-12         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawk.texi: Improve indexing for @include/@load/@namespace
diff --git a/doc/gawk.info b/doc/gawk.info
index 13d5f91f..12e4e76a 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -31326,6 +31326,11 @@ unfortunately.  It added the following features:
 
    • Support for OSF/1 was removed.
 
+   Version 5.4 added the following features:
+
+   • The ‘@nsinclude’ directive for including files without resetting
+     the namespace to ‘awk’ (*note Inclusion For Namespaces::).
+
 
 File: gawk.info,  Node: Common Extensions,  Next: Ranges and Locales,  Prev: 
Feature History,  Up: Language History
 
@@ -36471,8 +36476,10 @@ Index
                                                               (line   9)
 * @ (at-sign), @namespace directive, BEGIN, BEGINFILE, END, ENDFILE and: 
Changing The Namespace.
                                                               (line  37)
-* @ (at-sign), @nsinclude directive:     Inclusion For Namespaces.
+* @ (at-sign), @nsinclude directive:     Include Files.       (line 100)
+* @ (at-sign), @nsinclude directive <1>: Inclusion For Namespaces.
                                                               (line   6)
+* @ (at-sign), @nsinclude directive <2>: Feature History.     (line 541)
 * * (asterisk), * operator, as multiplication operator: Precedence.
                                                               (line  54)
 * * (asterisk), * operator, as regexp operator: Regexp Operator Details.
@@ -36818,8 +36825,10 @@ Index
                                                               (line   9)
 * at-sign (@), @namespace directive, BEGIN, BEGINFILE, END, ENDFILE and: 
Changing The Namespace.
                                                               (line  37)
-* at-sign (@), @nsinclude directive:     Inclusion For Namespaces.
+* at-sign (@), @nsinclude directive:     Include Files.       (line 100)
+* at-sign (@), @nsinclude directive <1>: Inclusion For Namespaces.
                                                               (line   6)
+* at-sign (@), @nsinclude directive <2>: Feature History.     (line 541)
 * atan2:                                 Numeric Functions.   (line  11)
 * automatic displays, in debugger:       Debugger Info.       (line  24)
 * awf (amazingly workable formatter) program: Glossary.       (line  23)
@@ -38011,8 +38020,10 @@ Index
 * FIELDWIDTHS variable <1>:              User-modified.       (line  37)
 * file descriptors:                      Special FD.          (line   6)
 * file inclusion, @include directive:    Include Files.       (line   9)
-* file inclusion, @nsinclude directive:  Inclusion For Namespaces.
+* file inclusion, @nsinclude directive:  Include Files.       (line 100)
+* file inclusion, @nsinclude directive <1>: Inclusion For Namespaces.
                                                               (line   6)
+* file inclusion, @nsinclude directive <2>: Feature History.  (line 541)
 * file names, assignments as:            Ignoring Assigns.    (line   6)
 * file names, distinguishing:            Auto-set.            (line  55)
 * file names, in compatibility mode:     Special Caveats.     (line   9)
@@ -38481,8 +38492,10 @@ Index
 * @include directive <1>:                Include Files.       (line   9)
 * @include directive <2>:                Glossary.            (line 379)
 * including files, @include directive:   Include Files.       (line   9)
-* including files, @nsinclude directive: Inclusion For Namespaces.
+* including files, @nsinclude directive: Include Files.       (line 100)
+* including files, @nsinclude directive <1>: Inclusion For Namespaces.
                                                               (line   6)
+* including files, @nsinclude directive <2>: Feature History. (line 541)
 * increment operators:                   Increment Ops.       (line   6)
 * index:                                 String Functions.    (line 174)
 * indexing arrays:                       Array Intro.         (line  51)
@@ -38863,8 +38876,10 @@ Index
 * NR variable:                           Records.             (line   6)
 * NR variable <1>:                       Auto-set.            (line 143)
 * NR variable, changing:                 Auto-set.            (line 415)
-* @nsinclude directive:                  Inclusion For Namespaces.
+* @nsinclude directive:                  Include Files.       (line 100)
+* @nsinclude directive <1>:              Inclusion For Namespaces.
                                                               (line   6)
+* @nsinclude directive <2>:              Feature History.     (line 541)
 * null strings:                          awk split records.   (line 108)
 * null strings <1>:                      Regexp Field Splitting.
                                                               (line  42)
@@ -40589,79 +40604,79 @@ Node: BTL1280206
 Node: POSIX/GNU1280973
 Ref: Gawk Extension Functions1284363
 Node: Feature History1287787
-Node: Common Extensions1307628
-Node: Ranges and Locales1309103
-Ref: Ranges and Locales-Footnote-11313888
-Ref: Ranges and Locales-Footnote-21313915
-Ref: Ranges and Locales-Footnote-31314150
-Node: Contributors1314373
-Node: History summary1320564
-Node: Installation1322006
-Node: Gawk Distribution1322970
-Node: Getting1323462
-Node: Extracting1324461
-Node: Distribution contents1326167
-Node: Unix Installation1334057
-Node: Quick Installation1334877
-Node: Compiling with MPFR1337417
-Node: Shell Startup Files1338123
-Node: Additional Configuration Options1339280
-Node: Configuration Philosophy1341663
-Node: Compiling from Git1344163
-Node: Building the Documentation1344722
-Node: Non-Unix Installation1346134
-Node: PC Installation1346610
-Node: PC Binary Installation1347479
-Node: PC Compiling1348372
-Node: PC Using1349550
-Node: Cygwin1353266
-Node: MSYS1354518
-Node: OpenVMS Installation1355144
-Node: OpenVMS Compilation1355825
-Ref: OpenVMS Compilation-Footnote-11357308
-Node: OpenVMS Dynamic Extensions1357366
-Node: OpenVMS Installation Details1359002
-Node: OpenVMS Running1361433
-Node: OpenVMS GNV1365570
-Node: Bugs1366325
-Node: Bug definition1367245
-Node: Bug address1370846
-Node: Usenet1374415
-Node: Performance bugs1375628
-Node: Asking for help1378632
-Node: Maintainers1380619
-Node: Other Versions1381646
-Node: Installation summary1391250
-Node: Notes1392632
-Node: Compatibility Mode1393442
-Node: Additions1394264
-Node: Accessing The Source1395209
-Node: Adding Code1396740
-Node: New Ports1403851
-Node: Derived Files1408354
-Ref: Derived Files-Footnote-11414165
-Ref: Derived Files-Footnote-21414200
-Ref: Derived Files-Footnote-31414811
-Node: Future Extensions1414925
-Node: Implementation Limitations1415595
-Node: Extension Design1416837
-Node: Old Extension Problems1417997
-Ref: Old Extension Problems-Footnote-11419569
-Node: Extension New Mechanism Goals1419630
-Ref: Extension New Mechanism Goals-Footnote-11423100
-Node: Extension Other Design Decisions1423301
-Node: Extension Future Growth1425498
-Node: Notes summary1426118
-Node: Basic Concepts1427328
-Node: Basic High Level1428013
-Ref: figure-general-flow1428295
-Ref: figure-process-flow1428997
-Ref: Basic High Level-Footnote-11432367
-Node: Basic Data Typing1432556
-Node: Glossary1435964
-Node: Copying1468842
-Node: GNU Free Documentation License1506400
-Node: Index1531523
+Node: Common Extensions1307819
+Node: Ranges and Locales1309294
+Ref: Ranges and Locales-Footnote-11314079
+Ref: Ranges and Locales-Footnote-21314106
+Ref: Ranges and Locales-Footnote-31314341
+Node: Contributors1314564
+Node: History summary1320755
+Node: Installation1322197
+Node: Gawk Distribution1323161
+Node: Getting1323653
+Node: Extracting1324652
+Node: Distribution contents1326358
+Node: Unix Installation1334248
+Node: Quick Installation1335068
+Node: Compiling with MPFR1337608
+Node: Shell Startup Files1338314
+Node: Additional Configuration Options1339471
+Node: Configuration Philosophy1341854
+Node: Compiling from Git1344354
+Node: Building the Documentation1344913
+Node: Non-Unix Installation1346325
+Node: PC Installation1346801
+Node: PC Binary Installation1347670
+Node: PC Compiling1348563
+Node: PC Using1349741
+Node: Cygwin1353457
+Node: MSYS1354709
+Node: OpenVMS Installation1355335
+Node: OpenVMS Compilation1356016
+Ref: OpenVMS Compilation-Footnote-11357499
+Node: OpenVMS Dynamic Extensions1357557
+Node: OpenVMS Installation Details1359193
+Node: OpenVMS Running1361624
+Node: OpenVMS GNV1365761
+Node: Bugs1366516
+Node: Bug definition1367436
+Node: Bug address1371037
+Node: Usenet1374606
+Node: Performance bugs1375819
+Node: Asking for help1378823
+Node: Maintainers1380810
+Node: Other Versions1381837
+Node: Installation summary1391441
+Node: Notes1392823
+Node: Compatibility Mode1393633
+Node: Additions1394455
+Node: Accessing The Source1395400
+Node: Adding Code1396931
+Node: New Ports1404042
+Node: Derived Files1408545
+Ref: Derived Files-Footnote-11414356
+Ref: Derived Files-Footnote-21414391
+Ref: Derived Files-Footnote-31415002
+Node: Future Extensions1415116
+Node: Implementation Limitations1415786
+Node: Extension Design1417028
+Node: Old Extension Problems1418188
+Ref: Old Extension Problems-Footnote-11419760
+Node: Extension New Mechanism Goals1419821
+Ref: Extension New Mechanism Goals-Footnote-11423291
+Node: Extension Other Design Decisions1423492
+Node: Extension Future Growth1425689
+Node: Notes summary1426309
+Node: Basic Concepts1427519
+Node: Basic High Level1428204
+Ref: figure-general-flow1428486
+Ref: figure-process-flow1429188
+Ref: Basic High Level-Footnote-11432558
+Node: Basic Data Typing1432747
+Node: Glossary1436155
+Node: Copying1469033
+Node: GNU Free Documentation License1506591
+Node: Index1531714
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a8cad3e1..d27f5d6a 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -5107,6 +5107,11 @@ source is not loaded if it has been previously loaded.
 The rules for finding a source file described in @ref{AWKPATH Variable} also
 apply to files loaded with @code{@@include}.
 
+@cindex @code{@@} (at-sign) @subentry @code{@@nsinclude} directive
+@cindex at-sign (@code{@@}) @subentry @code{@@nsinclude} directive
+@cindex file inclusion @subentry @code{@@nsinclude} directive
+@cindex including files @subentry @code{@@nsinclude} directive
+@cindex @code{@@nsinclude} directive @sortas{nsinclude directive}
 Finally, files included with @code{@@include}
 are treated as if they had @samp{@@namespace "awk"}
 at their beginning.  @xref{Changing The Namespace}, for more information.
@@ -41855,6 +41860,21 @@ GNU/Linux distributions.
 
 @end itemize
 
+Version 5.4 added the following features:
+
+@itemize
+
+@cindex @code{@@} (at-sign) @subentry @code{@@nsinclude} directive
+@cindex at-sign (@code{@@}) @subentry @code{@@nsinclude} directive
+@cindex file inclusion @subentry @code{@@nsinclude} directive
+@cindex including files @subentry @code{@@nsinclude} directive
+@cindex @code{@@nsinclude} directive @sortas{nsinclude directive}
+@item
+The @code{@@nsinclude} directive for including files without
+resetting the namespace to @samp{awk}
+(@pxref{Inclusion For Namespaces}).
+@end itemize
+
 @c XXX ADD MORE STUFF HERE
 @end ifclear
 

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=28bcbc7d84cc5e4b4d7adfc15c36f73549c65515

commit 28bcbc7d84cc5e4b4d7adfc15c36f73549c65515
Merge: 48d86e72 28fa4da6
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Mon Aug 12 17:43:20 2024 +0300

    Merge branch 'gawk-5.3-stable'

diff --cc awkgram.c
index 79f94f5f,6fd16c43..3e5f8441
--- a/awkgram.c
+++ b/awkgram.c
@@@ -237,7 -236,7 +238,7 @@@ extern double fmod(double x, double y)
  
  #define YYSTYPE INSTRUCTION *
  
- #line 241 "awkgram.c"
 -#line 240 "awkgram.c"
++#line 242 "awkgram.c"
  
  # ifndef YY_CAST
  #  ifdef __cplusplus
@@@ -955,28 -951,27 +956,28 @@@ static const yytype_int8 yytranslate[] 
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
  static const yytype_int16 yyrline[] =
  {
-        0,   237,   237,   238,   243,   253,   257,   269,   277,   291,
-      302,   312,   322,   332,   358,   368,   370,   375,   385,   387,
-      392,   394,   396,   402,   406,   411,   441,   453,   465,   471,
-      480,   498,   499,   510,   516,   524,   525,   529,   529,   563,
-      562,   596,   611,   613,   618,   619,   639,   644,   645,   649,
-      660,   665,   672,   780,   831,   881,  1007,  1029,  1050,  1060,
-     1070,  1080,  1091,  1104,  1122,  1121,  1138,  1156,  1156,  1258,
-     1258,  1291,  1321,  1329,  1330,  1336,  1337,  1344,  1349,  1362,
-     1377,  1379,  1387,  1394,  1396,  1404,  1413,  1415,  1424,  1425,
-     1433,  1438,  1438,  1451,  1458,  1471,  1475,  1497,  1498,  1504,
-     1505,  1514,  1515,  1520,  1525,  1542,  1544,  1546,  1553,  1554,
-     1560,  1561,  1566,  1568,  1575,  1577,  1585,  1590,  1601,  1602,
-     1607,  1609,  1616,  1618,  1626,  1631,  1641,  1642,  1647,  1648,
-     1653,  1660,  1664,  1666,  1668,  1681,  1698,  1708,  1715,  1717,
-     1722,  1724,  1726,  1734,  1736,  1741,  1743,  1748,  1750,  1752,
-     1809,  1811,  1813,  1815,  1817,  1819,  1821,  1823,  1837,  1842,
-     1847,  1873,  1879,  1881,  1883,  1885,  1887,  1889,  1894,  1898,
-     1930,  1938,  1944,  1950,  1963,  1964,  1965,  1970,  1975,  1979,
-     1983,  1998,  2019,  2024,  2061,  2098,  2099,  2105,  2106,  2111,
-     2113,  2120,  2137,  2154,  2156,  2163,  2168,  2174,  2186,  2198,
-     2207,  2211,  2216,  2220,  2224,  2228,  2233,  2234,  2238,  2242,
-     2246
 -       0,   236,   236,   237,   242,   252,   256,   268,   276,   290,
 -     301,   311,   321,   347,   357,   359,   364,   374,   376,   381,
 -     383,   385,   391,   395,   400,   430,   442,   454,   460,   469,
 -     487,   488,   499,   505,   513,   514,   518,   518,   552,   551,
 -     585,   600,   602,   607,   608,   628,   633,   634,   638,   649,
 -     654,   661,   769,   820,   870,   996,  1018,  1039,  1049,  1059,
 -    1069,  1080,  1093,  1111,  1110,  1127,  1145,  1145,  1247,  1247,
 -    1280,  1310,  1318,  1319,  1325,  1326,  1333,  1338,  1351,  1366,
 -    1368,  1376,  1383,  1385,  1393,  1402,  1404,  1413,  1414,  1422,
 -    1427,  1427,  1440,  1447,  1460,  1464,  1486,  1487,  1493,  1494,
 -    1503,  1504,  1509,  1514,  1531,  1533,  1535,  1542,  1543,  1549,
 -    1550,  1555,  1557,  1564,  1566,  1574,  1579,  1590,  1591,  1596,
 -    1598,  1605,  1607,  1615,  1620,  1630,  1631,  1636,  1637,  1642,
 -    1649,  1653,  1655,  1657,  1670,  1687,  1697,  1704,  1706,  1711,
 -    1713,  1715,  1723,  1725,  1730,  1732,  1737,  1739,  1741,  1798,
 -    1800,  1802,  1804,  1806,  1808,  1810,  1812,  1826,  1831,  1836,
 -    1862,  1868,  1870,  1872,  1874,  1876,  1878,  1883,  1887,  1919,
 -    1927,  1933,  1939,  1952,  1953,  1954,  1959,  1964,  1968,  1972,
 -    1987,  2008,  2013,  2050,  2087,  2088,  2094,  2095,  2100,  2102,
 -    2109,  2126,  2143,  2145,  2152,  2157,  2163,  2175,  2187,  2196,
 -    2200,  2205,  2209,  2213,  2217,  2222,  2223,  2227,  2231,  2235
++       0,   238,   238,   239,   244,   254,   258,   270,   278,   292,
++     303,   313,   323,   333,   359,   369,   371,   376,   386,   388,
++     393,   395,   397,   403,   407,   412,   442,   454,   466,   472,
++     481,   499,   500,   511,   517,   525,   526,   530,   530,   564,
++     563,   597,   612,   614,   619,   620,   640,   645,   646,   650,
++     661,   666,   673,   781,   832,   882,  1008,  1030,  1051,  1061,
++    1071,  1081,  1092,  1105,  1123,  1122,  1139,  1157,  1157,  1259,
++    1259,  1292,  1322,  1330,  1331,  1337,  1338,  1345,  1350,  1363,
++    1378,  1380,  1388,  1395,  1397,  1405,  1414,  1416,  1425,  1426,
++    1434,  1439,  1439,  1452,  1459,  1472,  1476,  1498,  1499,  1505,
++    1506,  1515,  1516,  1521,  1526,  1543,  1545,  1547,  1554,  1555,
++    1561,  1562,  1567,  1569,  1576,  1578,  1586,  1591,  1602,  1603,
++    1608,  1610,  1617,  1619,  1627,  1632,  1642,  1643,  1648,  1649,
++    1654,  1661,  1665,  1667,  1669,  1682,  1699,  1709,  1716,  1718,
++    1723,  1725,  1727,  1735,  1737,  1742,  1744,  1749,  1751,  1753,
++    1810,  1812,  1814,  1816,  1818,  1820,  1822,  1824,  1838,  1843,
++    1848,  1874,  1880,  1882,  1884,  1886,  1888,  1890,  1895,  1899,
++    1931,  1939,  1945,  1951,  1964,  1965,  1966,  1971,  1976,  1980,
++    1984,  1999,  2020,  2025,  2062,  2099,  2100,  2106,  2107,  2112,
++    2114,  2121,  2138,  2155,  2157,  2164,  2169,  2175,  2187,  2199,
++    2208,  2212,  2217,  2221,  2225,  2229,  2234,  2235,  2239,  2243,
++    2247
  };
  #endif
  
@@@ -1958,22 -1953,22 +1959,22 @@@ yyreduce
    switch (yyn)
      {
    case 2: /* program: %empty  */
- #line 237 "awkgram.y"
 -#line 236 "awkgram.y"
++#line 238 "awkgram.y"
            { yyval = NULL; }
- #line 1964 "awkgram.c"
 -#line 1959 "awkgram.c"
++#line 1965 "awkgram.c"
      break;
  
    case 3: /* program: program rule  */
- #line 239 "awkgram.y"
 -#line 238 "awkgram.y"
++#line 240 "awkgram.y"
            {
                rule = 0;
                yyerrok;
          }
- #line 1973 "awkgram.c"
 -#line 1968 "awkgram.c"
++#line 1974 "awkgram.c"
      break;
  
    case 4: /* program: program nls  */
- #line 244 "awkgram.y"
 -#line 243 "awkgram.y"
++#line 245 "awkgram.y"
            {
                if (yyvsp[0] != NULL) {
                        if (yyvsp[-1] == NULL)
@@@ -1983,19 -1978,19 +1984,19 @@@
                }
                yyval = yyvsp[-1];
          }
- #line 1987 "awkgram.c"
 -#line 1982 "awkgram.c"
++#line 1988 "awkgram.c"
      break;
  
    case 5: /* program: program LEX_EOF  */
- #line 254 "awkgram.y"
 -#line 253 "awkgram.y"
++#line 255 "awkgram.y"
            {
                next_sourcefile();
          }
- #line 1995 "awkgram.c"
 -#line 1990 "awkgram.c"
++#line 1996 "awkgram.c"
      break;
  
    case 6: /* program: program error  */
- #line 258 "awkgram.y"
 -#line 257 "awkgram.y"
++#line 259 "awkgram.y"
            {
                rule = 0;
                /*
@@@ -2004,11 -1999,11 +2005,11 @@@
                 */
                /* yyerrok; */
          }
- #line 2008 "awkgram.c"
 -#line 2003 "awkgram.c"
++#line 2009 "awkgram.c"
      break;
  
    case 7: /* rule: pattern action  */
- #line 270 "awkgram.y"
 -#line 269 "awkgram.y"
++#line 271 "awkgram.y"
            {
                (void) append_rule(yyvsp[-1], yyvsp[0]);
                if (pending_comment != NULL) {
@@@ -2016,11 -2011,11 +2017,11 @@@
                        pending_comment = NULL;
                }
          }
- #line 2020 "awkgram.c"
 -#line 2015 "awkgram.c"
++#line 2021 "awkgram.c"
      break;
  
    case 8: /* rule: pattern statement_term  */
- #line 278 "awkgram.y"
 -#line 277 "awkgram.y"
++#line 279 "awkgram.y"
            {
                if (rule != Rule) {
                        msg(_("%s blocks must have an action part"), 
ruletab[rule]);
@@@ -2034,11 -2029,11 +2035,11 @@@
                        (void) append_rule(yyvsp[-1], NULL);
                }
          }
- #line 2038 "awkgram.c"
 -#line 2033 "awkgram.c"
++#line 2039 "awkgram.c"
      break;
  
    case 9: /* rule: function_prologue action  */
- #line 292 "awkgram.y"
 -#line 291 "awkgram.y"
++#line 293 "awkgram.y"
            {
                in_function = false;
                (void) mk_function(yyvsp[-1], yyvsp[0]);
@@@ -2049,11 -2044,11 +2050,11 @@@
                }
                yyerrok;
          }
- #line 2053 "awkgram.c"
 -#line 2048 "awkgram.c"
++#line 2054 "awkgram.c"
      break;
  
    case 10: /* rule: '@' LEX_INCLUDE source statement_term  */
- #line 303 "awkgram.y"
 -#line 302 "awkgram.y"
++#line 304 "awkgram.y"
            {
                want_source = false;
                at_seen--;
@@@ -2063,11 -2058,11 +2064,11 @@@
                }
                yyerrok;
          }
- #line 2067 "awkgram.c"
 -#line 2062 "awkgram.c"
++#line 2068 "awkgram.c"
      break;
  
 -  case 11: /* rule: '@' LEX_LOAD library statement_term  */
 -#line 312 "awkgram.y"
 +  case 11: /* rule: '@' LEX_NSINCLUDE source statement_term  */
- #line 313 "awkgram.y"
++#line 314 "awkgram.y"
            {
                want_source = false;
                at_seen--;
@@@ -2077,25 -2072,11 +2078,25 @@@
                }
                yyerrok;
          }
- #line 2081 "awkgram.c"
 -#line 2076 "awkgram.c"
++#line 2082 "awkgram.c"
      break;
  
 -  case 12: /* rule: '@' LEX_NAMESPACE namespace statement_term  */
 -#line 322 "awkgram.y"
 +  case 12: /* rule: '@' LEX_LOAD library statement_term  */
- #line 323 "awkgram.y"
++#line 324 "awkgram.y"
 +          {
 +              want_source = false;
 +              at_seen--;
 +              if (yyvsp[-1] != NULL && yyvsp[0] != NULL) {
 +                      SRCFILE *s = (SRCFILE *) yyvsp[-1];
 +                      s->comment = yyvsp[0];
 +              }
 +              yyerrok;
 +        }
- #line 2095 "awkgram.c"
++#line 2096 "awkgram.c"
 +    break;
 +
 +  case 13: /* rule: '@' LEX_NAMESPACE namespace statement_term  */
- #line 333 "awkgram.y"
++#line 334 "awkgram.y"
            {
                /*
                 * 1/2022:
@@@ -2118,11 -2099,11 +2119,11 @@@
  
                yyerrok;
          }
- #line 2122 "awkgram.c"
 -#line 2103 "awkgram.c"
++#line 2123 "awkgram.c"
      break;
  
 -  case 13: /* source: FILENAME  */
 -#line 348 "awkgram.y"
 +  case 14: /* source: FILENAME  */
- #line 359 "awkgram.y"
++#line 360 "awkgram.y"
            {
                void *srcfile = NULL;
  
@@@ -2132,23 -2113,23 +2133,23 @@@
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
- #line 2136 "awkgram.c"
 -#line 2117 "awkgram.c"
++#line 2137 "awkgram.c"
      break;
  
 -  case 14: /* source: FILENAME error  */
 -#line 358 "awkgram.y"
 +  case 15: /* source: FILENAME error  */
- #line 369 "awkgram.y"
++#line 370 "awkgram.y"
            { yyval = NULL; }
- #line 2142 "awkgram.c"
 -#line 2123 "awkgram.c"
++#line 2143 "awkgram.c"
      break;
  
 -  case 15: /* source: error  */
 -#line 360 "awkgram.y"
 +  case 16: /* source: error  */
- #line 371 "awkgram.y"
++#line 372 "awkgram.y"
            { yyval = NULL; }
- #line 2148 "awkgram.c"
 -#line 2129 "awkgram.c"
++#line 2149 "awkgram.c"
      break;
  
 -  case 16: /* library: FILENAME  */
 -#line 365 "awkgram.y"
 +  case 17: /* library: FILENAME  */
- #line 376 "awkgram.y"
++#line 377 "awkgram.y"
            {
                void *srcfile;
  
@@@ -2158,58 -2139,58 +2159,58 @@@
                bcfree(yyvsp[0]);
                yyval = (INSTRUCTION *) srcfile;
          }
- #line 2162 "awkgram.c"
 -#line 2143 "awkgram.c"
++#line 2163 "awkgram.c"
      break;
  
 -  case 17: /* library: FILENAME error  */
 -#line 375 "awkgram.y"
 +  case 18: /* library: FILENAME error  */
- #line 386 "awkgram.y"
++#line 387 "awkgram.y"
            { yyval = NULL; }
- #line 2168 "awkgram.c"
 -#line 2149 "awkgram.c"
++#line 2169 "awkgram.c"
      break;
  
 -  case 18: /* library: error  */
 -#line 377 "awkgram.y"
 +  case 19: /* library: error  */
- #line 388 "awkgram.y"
++#line 389 "awkgram.y"
            { yyval = NULL; }
- #line 2174 "awkgram.c"
 -#line 2155 "awkgram.c"
++#line 2175 "awkgram.c"
      break;
  
 -  case 19: /* namespace: FILENAME  */
 -#line 382 "awkgram.y"
 +  case 20: /* namespace: FILENAME  */
- #line 393 "awkgram.y"
++#line 394 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 2180 "awkgram.c"
 -#line 2161 "awkgram.c"
++#line 2181 "awkgram.c"
      break;
  
 -  case 20: /* namespace: FILENAME error  */
 -#line 384 "awkgram.y"
 +  case 21: /* namespace: FILENAME error  */
- #line 395 "awkgram.y"
++#line 396 "awkgram.y"
            { yyval = NULL; }
- #line 2186 "awkgram.c"
 -#line 2167 "awkgram.c"
++#line 2187 "awkgram.c"
      break;
  
 -  case 21: /* namespace: error  */
 -#line 386 "awkgram.y"
 +  case 22: /* namespace: error  */
- #line 397 "awkgram.y"
++#line 398 "awkgram.y"
            { yyval = NULL; }
- #line 2192 "awkgram.c"
 -#line 2173 "awkgram.c"
++#line 2193 "awkgram.c"
      break;
  
 -  case 22: /* pattern: %empty  */
 -#line 391 "awkgram.y"
 +  case 23: /* pattern: %empty  */
- #line 402 "awkgram.y"
++#line 403 "awkgram.y"
            {
                rule = Rule;
                yyval = NULL;
          }
- #line 2201 "awkgram.c"
 -#line 2182 "awkgram.c"
++#line 2202 "awkgram.c"
      break;
  
 -  case 23: /* pattern: exp  */
 -#line 396 "awkgram.y"
 +  case 24: /* pattern: exp  */
- #line 407 "awkgram.y"
++#line 408 "awkgram.y"
            {
                rule = Rule;
          }
- #line 2209 "awkgram.c"
 -#line 2190 "awkgram.c"
++#line 2210 "awkgram.c"
      break;
  
 -  case 24: /* pattern: exp comma exp  */
 -#line 401 "awkgram.y"
 +  case 25: /* pattern: exp comma exp  */
- #line 412 "awkgram.y"
++#line 413 "awkgram.y"
            {
                INSTRUCTION *tp;
  
@@@ -2239,11 -2220,11 +2240,11 @@@
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
tp);
                rule = Rule;
          }
- #line 2243 "awkgram.c"
 -#line 2224 "awkgram.c"
++#line 2244 "awkgram.c"
      break;
  
 -  case 25: /* pattern: LEX_BEGIN  */
 -#line 431 "awkgram.y"
 +  case 26: /* pattern: LEX_BEGIN  */
- #line 442 "awkgram.y"
++#line 443 "awkgram.y"
            {
                static int begin_seen = 0;
  
@@@ -2255,11 -2236,11 +2256,11 @@@
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2259 "awkgram.c"
 -#line 2240 "awkgram.c"
++#line 2260 "awkgram.c"
      break;
  
 -  case 26: /* pattern: LEX_END  */
 -#line 443 "awkgram.y"
 +  case 27: /* pattern: LEX_END  */
- #line 454 "awkgram.y"
++#line 455 "awkgram.y"
            {
                static int end_seen = 0;
  
@@@ -2271,31 -2252,31 +2272,31 @@@
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2275 "awkgram.c"
 -#line 2256 "awkgram.c"
++#line 2276 "awkgram.c"
      break;
  
 -  case 27: /* pattern: LEX_BEGINFILE  */
 -#line 455 "awkgram.y"
 +  case 28: /* pattern: LEX_BEGINFILE  */
- #line 466 "awkgram.y"
++#line 467 "awkgram.y"
            {
                yyvsp[0]->in_rule = rule = BEGINFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2285 "awkgram.c"
 -#line 2266 "awkgram.c"
++#line 2286 "awkgram.c"
      break;
  
 -  case 28: /* pattern: LEX_ENDFILE  */
 -#line 461 "awkgram.y"
 +  case 29: /* pattern: LEX_ENDFILE  */
- #line 472 "awkgram.y"
++#line 473 "awkgram.y"
            {
                yyvsp[0]->in_rule = rule = ENDFILE;
                yyvsp[0]->source_file = source;
                yyval = yyvsp[0];
          }
- #line 2295 "awkgram.c"
 -#line 2276 "awkgram.c"
++#line 2296 "awkgram.c"
      break;
  
 -  case 29: /* action: l_brace statements r_brace opt_semi opt_nls  */
 -#line 470 "awkgram.y"
 +  case 30: /* action: l_brace statements r_brace opt_semi opt_nls  */
- #line 481 "awkgram.y"
++#line 482 "awkgram.y"
            {
                INSTRUCTION *ip = make_braced_statements(yyvsp[-4], yyvsp[-3], 
yyvsp[-2]);
  
@@@ -2310,11 -2291,11 +2311,11 @@@
  
                yyval = ip;
          }
- #line 2314 "awkgram.c"
 -#line 2295 "awkgram.c"
++#line 2315 "awkgram.c"
      break;
  
 -  case 31: /* func_name: FUNC_CALL  */
 -#line 489 "awkgram.y"
 +  case 32: /* func_name: FUNC_CALL  */
- #line 500 "awkgram.y"
++#line 501 "awkgram.y"
            {
                const char *name = yyvsp[0]->lextok;
                char *qname = qualify_name(name, strlen(name));
@@@ -2325,36 -2306,36 +2326,36 @@@
                }
                yyval = yyvsp[0];
          }
- #line 2329 "awkgram.c"
 -#line 2310 "awkgram.c"
++#line 2330 "awkgram.c"
      break;
  
 -  case 32: /* func_name: lex_builtin  */
 -#line 500 "awkgram.y"
 +  case 33: /* func_name: lex_builtin  */
- #line 511 "awkgram.y"
++#line 512 "awkgram.y"
            {
                yyerror(_("`%s' is a built-in function, it cannot be 
redefined"),
                                        tokstart);
                YYABORT;
          }
- #line 2339 "awkgram.c"
 -#line 2320 "awkgram.c"
++#line 2340 "awkgram.c"
      break;
  
 -  case 33: /* func_name: '@' LEX_EVAL  */
 -#line 506 "awkgram.y"
 +  case 34: /* func_name: '@' LEX_EVAL  */
- #line 517 "awkgram.y"
++#line 518 "awkgram.y"
            {
                yyval = yyvsp[0];
                at_seen--;
          }
- #line 2348 "awkgram.c"
 -#line 2329 "awkgram.c"
++#line 2349 "awkgram.c"
      break;
  
 -  case 36: /* $@1: %empty  */
 -#line 518 "awkgram.y"
 +  case 37: /* $@1: %empty  */
- #line 529 "awkgram.y"
++#line 530 "awkgram.y"
                                       { want_param_names = FUNC_HEADER; }
- #line 2354 "awkgram.c"
 -#line 2335 "awkgram.c"
++#line 2355 "awkgram.c"
      break;
  
 -  case 37: /* function_prologue: LEX_FUNCTION func_name '(' $@1 
opt_param_list r_paren opt_nls  */
 -#line 519 "awkgram.y"
 +  case 38: /* function_prologue: LEX_FUNCTION func_name '(' $@1 
opt_param_list r_paren opt_nls  */
- #line 530 "awkgram.y"
++#line 531 "awkgram.y"
            {
                INSTRUCTION *func_comment = NULL;
                // Merge any comments found in the parameter list with those
@@@ -2380,17 -2361,17 +2381,17 @@@
                yyval = yyvsp[-6];
                want_param_names = FUNC_BODY;
          }
- #line 2384 "awkgram.c"
 -#line 2365 "awkgram.c"
++#line 2385 "awkgram.c"
      break;
  
 -  case 38: /* $@2: %empty  */
 -#line 552 "awkgram.y"
 +  case 39: /* $@2: %empty  */
- #line 563 "awkgram.y"
++#line 564 "awkgram.y"
                  { want_regexp = true; }
- #line 2390 "awkgram.c"
 -#line 2371 "awkgram.c"
++#line 2391 "awkgram.c"
      break;
  
 -  case 39: /* regexp: a_slash $@2 REGEXP  */
 -#line 554 "awkgram.y"
 +  case 40: /* regexp: a_slash $@2 REGEXP  */
- #line 565 "awkgram.y"
++#line 566 "awkgram.y"
                  {
                  NODE *n, *exp;
                  char *re;
@@@ -2419,11 -2400,11 +2420,11 @@@
                  yyval->opcode = Op_match_rec;
                  yyval->memory = n;
                }
- #line 2423 "awkgram.c"
 -#line 2404 "awkgram.c"
++#line 2424 "awkgram.c"
      break;
  
 -  case 40: /* typed_regexp: TYPED_REGEXP  */
 -#line 586 "awkgram.y"
 +  case 41: /* typed_regexp: TYPED_REGEXP  */
- #line 597 "awkgram.y"
++#line 598 "awkgram.y"
                  {
                  char *re;
                  size_t len;
@@@ -2436,23 -2417,23 +2437,23 @@@
                  yyval->opcode = Op_push_re;
                  yyval->memory = make_typed_regex(re, len);
                }
- #line 2440 "awkgram.c"
 -#line 2421 "awkgram.c"
++#line 2441 "awkgram.c"
      break;
  
 -  case 41: /* a_slash: '/'  */
 -#line 601 "awkgram.y"
 +  case 42: /* a_slash: '/'  */
- #line 612 "awkgram.y"
++#line 613 "awkgram.y"
            { bcfree(yyvsp[0]); }
- #line 2446 "awkgram.c"
 -#line 2427 "awkgram.c"
++#line 2447 "awkgram.c"
      break;
  
 -  case 43: /* statements: %empty  */
 -#line 607 "awkgram.y"
 +  case 44: /* statements: %empty  */
- #line 618 "awkgram.y"
++#line 619 "awkgram.y"
            { yyval = NULL; }
- #line 2452 "awkgram.c"
 -#line 2433 "awkgram.c"
++#line 2453 "awkgram.c"
      break;
  
 -  case 44: /* statements: statements statement  */
 -#line 609 "awkgram.y"
 +  case 45: /* statements: statements statement  */
- #line 620 "awkgram.y"
++#line 621 "awkgram.y"
            {
                if (yyvsp[0] == NULL) {
                        yyval = yyvsp[-1];
@@@ -2472,29 -2453,29 +2473,29 @@@
  
                yyerrok;
          }
- #line 2476 "awkgram.c"
 -#line 2457 "awkgram.c"
++#line 2477 "awkgram.c"
      break;
  
 -  case 45: /* statements: statements error  */
 -#line 629 "awkgram.y"
 +  case 46: /* statements: statements error  */
- #line 640 "awkgram.y"
++#line 641 "awkgram.y"
            {   yyval = NULL; }
- #line 2482 "awkgram.c"
 -#line 2463 "awkgram.c"
++#line 2483 "awkgram.c"
      break;
  
 -  case 46: /* statement_term: nls  */
 -#line 633 "awkgram.y"
 +  case 47: /* statement_term: nls  */
- #line 644 "awkgram.y"
++#line 645 "awkgram.y"
                          { yyval = yyvsp[0]; }
- #line 2488 "awkgram.c"
 -#line 2469 "awkgram.c"
++#line 2489 "awkgram.c"
      break;
  
 -  case 47: /* statement_term: semi opt_nls  */
 -#line 634 "awkgram.y"
 +  case 48: /* statement_term: semi opt_nls  */
- #line 645 "awkgram.y"
++#line 646 "awkgram.y"
                          { yyval = yyvsp[0]; }
- #line 2494 "awkgram.c"
 -#line 2475 "awkgram.c"
++#line 2495 "awkgram.c"
      break;
  
 -  case 48: /* statement: semi opt_nls  */
 -#line 639 "awkgram.y"
 +  case 49: /* statement: semi opt_nls  */
- #line 650 "awkgram.y"
++#line 651 "awkgram.y"
            {
                if (yyvsp[0] != NULL) {
                        INSTRUCTION *ip;
@@@ -2505,31 -2486,31 +2506,31 @@@
                } else
                        yyval = NULL;
          }
- #line 2509 "awkgram.c"
 -#line 2490 "awkgram.c"
++#line 2510 "awkgram.c"
      break;
  
 -  case 49: /* statement: l_brace statements r_brace  */
 -#line 650 "awkgram.y"
 +  case 50: /* statement: l_brace statements r_brace  */
- #line 661 "awkgram.y"
++#line 662 "awkgram.y"
            {
                trailing_comment = yyvsp[0];    // NULL or comment
                yyval = make_braced_statements(yyvsp[-2], yyvsp[-1], yyvsp[0]);
          }
- #line 2518 "awkgram.c"
 -#line 2499 "awkgram.c"
++#line 2519 "awkgram.c"
      break;
  
 -  case 50: /* statement: if_statement  */
 -#line 655 "awkgram.y"
 +  case 51: /* statement: if_statement  */
- #line 666 "awkgram.y"
++#line 667 "awkgram.y"
            {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
- #line 2529 "awkgram.c"
 -#line 2510 "awkgram.c"
++#line 2530 "awkgram.c"
      break;
  
 -  case 51: /* statement: LEX_SWITCH '(' exp r_paren opt_nls l_brace 
case_statements opt_nls r_brace  */
 -#line 662 "awkgram.y"
 +  case 52: /* statement: LEX_SWITCH '(' exp r_paren opt_nls l_brace 
case_statements opt_nls r_brace  */
- #line 673 "awkgram.y"
++#line 674 "awkgram.y"
            {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@@ -2637,11 -2618,11 +2638,11 @@@
                break_allowed--;
                fix_break_continue(ip, tbreak, NULL);
          }
- #line 2641 "awkgram.c"
 -#line 2622 "awkgram.c"
++#line 2642 "awkgram.c"
      break;
  
 -  case 52: /* statement: LEX_WHILE '(' exp r_paren opt_nls statement  */
 -#line 770 "awkgram.y"
 +  case 53: /* statement: LEX_WHILE '(' exp r_paren opt_nls statement  */
- #line 781 "awkgram.y"
++#line 782 "awkgram.y"
            {
                /*
                 *    -----------------
@@@ -2692,11 -2673,11 +2693,11 @@@
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
- #line 2696 "awkgram.c"
 -#line 2677 "awkgram.c"
++#line 2697 "awkgram.c"
      break;
  
 -  case 53: /* statement: LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren 
opt_nls  */
 -#line 821 "awkgram.y"
 +  case 54: /* statement: LEX_DO opt_nls statement LEX_WHILE '(' exp r_paren 
opt_nls  */
- #line 832 "awkgram.y"
++#line 833 "awkgram.y"
            {
                /*
                 *    -----------------
@@@ -2746,11 -2727,11 +2747,11 @@@
                /* else
                        $1 and $4 are NULLs */
          }
- #line 2750 "awkgram.c"
 -#line 2731 "awkgram.c"
++#line 2751 "awkgram.c"
      break;
  
 -  case 54: /* statement: LEX_FOR '(' NAME LEX_IN simple_variable r_paren 
opt_nls statement  */
 -#line 871 "awkgram.y"
 +  case 55: /* statement: LEX_FOR '(' NAME LEX_IN simple_variable r_paren 
opt_nls statement  */
- #line 882 "awkgram.y"
++#line 883 "awkgram.y"
            {
                INSTRUCTION *ip;
                char *var_name = yyvsp[-5]->lextok;
@@@ -2876,11 -2857,11 +2877,11 @@@ regular_loop
                break_allowed--;
                continue_allowed--;
          }
- #line 2880 "awkgram.c"
 -#line 2861 "awkgram.c"
++#line 2881 "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 997 "awkgram.y"
 +  case 56: /* statement: LEX_FOR '(' opt_simple_stmt semi opt_nls exp semi 
opt_nls opt_simple_stmt r_paren opt_nls statement  */
- #line 1008 "awkgram.y"
++#line 1009 "awkgram.y"
            {
                if (yyvsp[-7] != NULL) {
                        merge_comments(yyvsp[-7], NULL);
@@@ -2902,11 -2883,11 +2903,11 @@@
                break_allowed--;
                continue_allowed--;
          }
- #line 2906 "awkgram.c"
 -#line 2887 "awkgram.c"
++#line 2907 "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 1019 "awkgram.y"
 +  case 57: /* statement: LEX_FOR '(' opt_simple_stmt semi opt_nls semi 
opt_nls opt_simple_stmt r_paren opt_nls statement  */
- #line 1030 "awkgram.y"
++#line 1031 "awkgram.y"
            {
                if (yyvsp[-6] != NULL) {
                        merge_comments(yyvsp[-6], NULL);
@@@ -2927,22 -2908,22 +2928,22 @@@
                break_allowed--;
                continue_allowed--;
          }
- #line 2931 "awkgram.c"
 -#line 2912 "awkgram.c"
++#line 2932 "awkgram.c"
      break;
  
 -  case 57: /* statement: non_compound_stmt  */
 -#line 1040 "awkgram.y"
 +  case 58: /* statement: non_compound_stmt  */
- #line 1051 "awkgram.y"
++#line 1052 "awkgram.y"
            {
                if (do_pretty_print)
                        yyval = list_prepend(yyvsp[0], 
instruction(Op_exec_count));
                else
                        yyval = yyvsp[0];
          }
- #line 2942 "awkgram.c"
 -#line 2923 "awkgram.c"
++#line 2943 "awkgram.c"
      break;
  
 -  case 58: /* non_compound_stmt: LEX_BREAK statement_term  */
 -#line 1050 "awkgram.y"
 +  case 59: /* non_compound_stmt: LEX_BREAK statement_term  */
- #line 1061 "awkgram.y"
++#line 1062 "awkgram.y"
            {
                if (! break_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@@ -2952,11 -2933,11 +2953,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2956 "awkgram.c"
 -#line 2937 "awkgram.c"
++#line 2957 "awkgram.c"
      break;
  
 -  case 59: /* non_compound_stmt: LEX_CONTINUE statement_term  */
 -#line 1060 "awkgram.y"
 +  case 60: /* non_compound_stmt: LEX_CONTINUE statement_term  */
- #line 1071 "awkgram.y"
++#line 1072 "awkgram.y"
            {
                if (! continue_allowed)
                        error_ln(yyvsp[-1]->source_line,
@@@ -2966,11 -2947,11 +2967,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2970 "awkgram.c"
 -#line 2951 "awkgram.c"
++#line 2971 "awkgram.c"
      break;
  
 -  case 60: /* non_compound_stmt: LEX_NEXT statement_term  */
 -#line 1070 "awkgram.y"
 +  case 61: /* non_compound_stmt: LEX_NEXT statement_term  */
- #line 1081 "awkgram.y"
++#line 1082 "awkgram.y"
            {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@@ -2981,11 -2962,11 +2982,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 2985 "awkgram.c"
 -#line 2966 "awkgram.c"
++#line 2986 "awkgram.c"
      break;
  
 -  case 61: /* non_compound_stmt: LEX_NEXTFILE statement_term  */
 -#line 1081 "awkgram.y"
 +  case 62: /* non_compound_stmt: LEX_NEXTFILE statement_term  */
- #line 1092 "awkgram.y"
++#line 1093 "awkgram.y"
            {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@@ -2998,11 -2979,11 +2999,11 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 3002 "awkgram.c"
 -#line 2983 "awkgram.c"
++#line 3003 "awkgram.c"
      break;
  
 -  case 62: /* non_compound_stmt: LEX_EXIT opt_exp statement_term  */
 -#line 1094 "awkgram.y"
 +  case 63: /* non_compound_stmt: LEX_EXIT opt_exp statement_term  */
- #line 1105 "awkgram.y"
++#line 1106 "awkgram.y"
            {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time.
@@@ -3019,20 -3000,20 +3020,20 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 3023 "awkgram.c"
 -#line 3004 "awkgram.c"
++#line 3024 "awkgram.c"
      break;
  
 -  case 63: /* $@3: %empty  */
 -#line 1111 "awkgram.y"
 +  case 64: /* $@3: %empty  */
- #line 1122 "awkgram.y"
++#line 1123 "awkgram.y"
            {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
- #line 3032 "awkgram.c"
 -#line 3013 "awkgram.c"
++#line 3033 "awkgram.c"
      break;
  
 -  case 64: /* non_compound_stmt: LEX_RETURN $@3 opt_fcall_exp statement_term  
*/
 -#line 1114 "awkgram.y"
 +  case 65: /* non_compound_stmt: LEX_RETURN $@3 opt_fcall_exp statement_term  
*/
- #line 1125 "awkgram.y"
++#line 1126 "awkgram.y"
                                           {
                if (called_from_eval)
                        yyvsp[-3]->opcode = Op_K_return_from_eval;
@@@ -3046,28 -3027,28 +3047,28 @@@
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyval, yyvsp[0]);
          }
- #line 3050 "awkgram.c"
 -#line 3031 "awkgram.c"
++#line 3051 "awkgram.c"
      break;
  
 -  case 65: /* non_compound_stmt: simple_stmt statement_term  */
 -#line 1128 "awkgram.y"
 +  case 66: /* non_compound_stmt: simple_stmt statement_term  */
- #line 1139 "awkgram.y"
++#line 1140 "awkgram.y"
            {
                if (yyvsp[0] != NULL)
                        yyval = list_append(yyvsp[-1], yyvsp[0]);
                else
                        yyval = yyvsp[-1];
          }
- #line 3061 "awkgram.c"
 -#line 3042 "awkgram.c"
++#line 3062 "awkgram.c"
      break;
  
 -  case 66: /* $@4: %empty  */
 -#line 1145 "awkgram.y"
 +  case 67: /* $@4: %empty  */
- #line 1156 "awkgram.y"
++#line 1157 "awkgram.y"
                  { in_print = true; in_parens = 0; }
- #line 3067 "awkgram.c"
 -#line 3048 "awkgram.c"
++#line 3068 "awkgram.c"
      break;
  
 -  case 67: /* simple_stmt: print $@4 print_expression_list output_redir  */
 -#line 1146 "awkgram.y"
 +  case 68: /* simple_stmt: print $@4 print_expression_list output_redir  */
- #line 1157 "awkgram.y"
++#line 1158 "awkgram.y"
            {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@@ -3168,17 -3149,17 +3169,17 @@@ regular_print
                        }
                }
          }
- #line 3172 "awkgram.c"
 -#line 3153 "awkgram.c"
++#line 3173 "awkgram.c"
      break;
  
 -  case 68: /* $@5: %empty  */
 -#line 1247 "awkgram.y"
 +  case 69: /* $@5: %empty  */
- #line 1258 "awkgram.y"
++#line 1259 "awkgram.y"
                            { sub_counter = 0; }
- #line 3178 "awkgram.c"
 -#line 3159 "awkgram.c"
++#line 3179 "awkgram.c"
      break;
  
 -  case 69: /* simple_stmt: LEX_DELETE NAME $@5 delete_subscript_list  */
 -#line 1248 "awkgram.y"
 +  case 70: /* simple_stmt: LEX_DELETE NAME $@5 delete_subscript_list  */
- #line 1259 "awkgram.y"
++#line 1260 "awkgram.y"
            {
                char *arr = yyvsp[-2]->lextok;
  
@@@ -3211,11 -3192,11 +3212,11 @@@
                        yyval = list_append(list_append(yyvsp[0], yyvsp[-2]), 
yyvsp[-3]);
                }
          }
- #line 3215 "awkgram.c"
 -#line 3196 "awkgram.c"
++#line 3216 "awkgram.c"
      break;
  
 -  case 70: /* simple_stmt: LEX_DELETE '(' NAME ')'  */
 -#line 1285 "awkgram.y"
 +  case 71: /* simple_stmt: LEX_DELETE '(' NAME ')'  */
- #line 1296 "awkgram.y"
++#line 1297 "awkgram.y"
            {
                static bool warned = false;
                char *arr = yyvsp[-1]->lextok;
@@@ -3241,54 -3222,54 +3242,54 @@@
                                fatal(_("`delete' is not allowed with 
FUNCTAB"));
                }
          }
- #line 3245 "awkgram.c"
 -#line 3226 "awkgram.c"
++#line 3246 "awkgram.c"
      break;
  
 -  case 71: /* simple_stmt: exp  */
 -#line 1311 "awkgram.y"
 +  case 72: /* simple_stmt: exp  */
- #line 1322 "awkgram.y"
++#line 1323 "awkgram.y"
            {
                yyval = optimize_assignment(yyvsp[0]);
          }
- #line 3253 "awkgram.c"
 -#line 3234 "awkgram.c"
++#line 3254 "awkgram.c"
      break;
  
 -  case 72: /* opt_simple_stmt: %empty  */
 -#line 1318 "awkgram.y"
 +  case 73: /* opt_simple_stmt: %empty  */
- #line 1329 "awkgram.y"
++#line 1330 "awkgram.y"
            { yyval = NULL; }
- #line 3259 "awkgram.c"
 -#line 3240 "awkgram.c"
++#line 3260 "awkgram.c"
      break;
  
 -  case 73: /* opt_simple_stmt: simple_stmt  */
 -#line 1320 "awkgram.y"
 +  case 74: /* opt_simple_stmt: simple_stmt  */
- #line 1331 "awkgram.y"
++#line 1332 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3265 "awkgram.c"
 -#line 3246 "awkgram.c"
++#line 3266 "awkgram.c"
      break;
  
 -  case 74: /* case_statements: %empty  */
 -#line 1325 "awkgram.y"
 +  case 75: /* case_statements: %empty  */
- #line 1336 "awkgram.y"
++#line 1337 "awkgram.y"
            { yyval = NULL; }
- #line 3271 "awkgram.c"
 -#line 3252 "awkgram.c"
++#line 3272 "awkgram.c"
      break;
  
 -  case 75: /* case_statements: case_statements case_statement  */
 -#line 1327 "awkgram.y"
 +  case 76: /* case_statements: case_statements case_statement  */
- #line 1338 "awkgram.y"
++#line 1339 "awkgram.y"
            {
                if (yyvsp[-1] == NULL)
                        yyval = list_create(yyvsp[0]);
                else
                        yyval = list_prepend(yyvsp[-1], yyvsp[0]);
          }
- #line 3282 "awkgram.c"
 -#line 3263 "awkgram.c"
++#line 3283 "awkgram.c"
      break;
  
 -  case 76: /* case_statements: case_statements error  */
 -#line 1334 "awkgram.y"
 +  case 77: /* case_statements: case_statements error  */
- #line 1345 "awkgram.y"
++#line 1346 "awkgram.y"
            { yyval = NULL; }
- #line 3288 "awkgram.c"
 -#line 3269 "awkgram.c"
++#line 3289 "awkgram.c"
      break;
  
 -  case 77: /* case_statement: LEX_CASE case_value colon opt_nls statements  */
 -#line 1339 "awkgram.y"
 +  case 78: /* case_statement: LEX_CASE case_value colon opt_nls statements  */
- #line 1350 "awkgram.y"
++#line 1351 "awkgram.y"
            {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@@ -3301,11 -3282,11 +3302,11 @@@
                bcfree(yyvsp[-2]);
                yyval = yyvsp[-4];
          }
- #line 3305 "awkgram.c"
 -#line 3286 "awkgram.c"
++#line 3306 "awkgram.c"
      break;
  
 -  case 78: /* case_statement: LEX_DEFAULT colon opt_nls statements  */
 -#line 1352 "awkgram.y"
 +  case 79: /* case_statement: LEX_DEFAULT colon opt_nls statements  */
- #line 1363 "awkgram.y"
++#line 1364 "awkgram.y"
            {
                INSTRUCTION *casestmt = yyvsp[0];
                if (yyvsp[0] == NULL)
@@@ -3317,17 -3298,17 +3318,17 @@@
                yyvsp[-3]->comment = yyvsp[-1];
                yyval = yyvsp[-3];
          }
- #line 3321 "awkgram.c"
 -#line 3302 "awkgram.c"
++#line 3322 "awkgram.c"
      break;
  
 -  case 79: /* case_value: YNUMBER  */
 -#line 1367 "awkgram.y"
 +  case 80: /* case_value: YNUMBER  */
- #line 1378 "awkgram.y"
++#line 1379 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 3327 "awkgram.c"
 -#line 3308 "awkgram.c"
++#line 3328 "awkgram.c"
      break;
  
 -  case 80: /* case_value: '-' YNUMBER  */
 -#line 1369 "awkgram.y"
 +  case 81: /* case_value: '-' YNUMBER  */
- #line 1380 "awkgram.y"
++#line 1381 "awkgram.y"
            {
                NODE *n = yyvsp[0]->memory;
                (void) force_number(n);
@@@ -3335,28 -3316,28 +3336,28 @@@
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
- #line 3339 "awkgram.c"
 -#line 3320 "awkgram.c"
++#line 3340 "awkgram.c"
      break;
  
 -  case 81: /* case_value: '+' YNUMBER  */
 -#line 1377 "awkgram.y"
 +  case 82: /* case_value: '+' YNUMBER  */
- #line 1388 "awkgram.y"
++#line 1389 "awkgram.y"
            {
                NODE *n = yyvsp[0]->lasti->memory;
                bcfree(yyvsp[-1]);
                add_sign_to_num(n, '+');
                yyval = yyvsp[0];
          }
- #line 3350 "awkgram.c"
 -#line 3331 "awkgram.c"
++#line 3351 "awkgram.c"
      break;
  
 -  case 82: /* case_value: YSTRING  */
 -#line 1384 "awkgram.y"
 +  case 83: /* case_value: YSTRING  */
- #line 1395 "awkgram.y"
++#line 1396 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 3356 "awkgram.c"
 -#line 3337 "awkgram.c"
++#line 3357 "awkgram.c"
      break;
  
 -  case 83: /* case_value: regexp  */
 -#line 1386 "awkgram.y"
 +  case 84: /* case_value: regexp  */
- #line 1397 "awkgram.y"
++#line 1398 "awkgram.y"
            {
                if (yyvsp[0]->memory->type == Node_regex)
                        yyvsp[0]->opcode = Op_push_re;
@@@ -3364,57 -3345,57 +3365,57 @@@
                        yyvsp[0]->opcode = Op_push;
                yyval = yyvsp[0];
          }
- #line 3368 "awkgram.c"
 -#line 3349 "awkgram.c"
++#line 3369 "awkgram.c"
      break;
  
 -  case 84: /* case_value: typed_regexp  */
 -#line 1394 "awkgram.y"
 +  case 85: /* case_value: typed_regexp  */
- #line 1405 "awkgram.y"
++#line 1406 "awkgram.y"
            {
                assert((yyvsp[0]->memory->flags & REGEX) == REGEX);
                yyvsp[0]->opcode = Op_push_re;
                yyval = yyvsp[0];
          }
- #line 3378 "awkgram.c"
 -#line 3359 "awkgram.c"
++#line 3379 "awkgram.c"
      break;
  
 -  case 85: /* print: LEX_PRINT  */
 -#line 1403 "awkgram.y"
 +  case 86: /* print: LEX_PRINT  */
- #line 1414 "awkgram.y"
++#line 1415 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3384 "awkgram.c"
 -#line 3365 "awkgram.c"
++#line 3385 "awkgram.c"
      break;
  
 -  case 86: /* print: LEX_PRINTF  */
 -#line 1405 "awkgram.y"
 +  case 87: /* print: LEX_PRINTF  */
- #line 1416 "awkgram.y"
++#line 1417 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3390 "awkgram.c"
 -#line 3371 "awkgram.c"
++#line 3391 "awkgram.c"
      break;
  
 -  case 88: /* print_expression_list: '(' expression_list r_paren  */
 -#line 1415 "awkgram.y"
 +  case 89: /* print_expression_list: '(' expression_list r_paren  */
- #line 1426 "awkgram.y"
++#line 1427 "awkgram.y"
            {
                yyval = yyvsp[-1];
          }
- #line 3398 "awkgram.c"
 -#line 3379 "awkgram.c"
++#line 3399 "awkgram.c"
      break;
  
 -  case 89: /* output_redir: %empty  */
 -#line 1422 "awkgram.y"
 +  case 90: /* output_redir: %empty  */
- #line 1433 "awkgram.y"
++#line 1434 "awkgram.y"
            {
                in_print = false;
                in_parens = 0;
                yyval = NULL;
          }
- #line 3408 "awkgram.c"
 -#line 3389 "awkgram.c"
++#line 3409 "awkgram.c"
      break;
  
 -  case 90: /* $@6: %empty  */
 -#line 1427 "awkgram.y"
 +  case 91: /* $@6: %empty  */
- #line 1438 "awkgram.y"
++#line 1439 "awkgram.y"
                   { in_print = false; in_parens = 0; }
- #line 3414 "awkgram.c"
 -#line 3395 "awkgram.c"
++#line 3415 "awkgram.c"
      break;
  
 -  case 91: /* output_redir: IO_OUT $@6 common_exp  */
 -#line 1428 "awkgram.y"
 +  case 92: /* output_redir: IO_OUT $@6 common_exp  */
- #line 1439 "awkgram.y"
++#line 1440 "awkgram.y"
            {
                if (yyvsp[-2]->redir_type == redirect_twoway
                        && yyvsp[0]->lasti->opcode == Op_K_getline_redir
@@@ -3424,22 -3405,22 +3425,22 @@@
                        lintwarn(_("concatenation as I/O `>' redirection target 
is ambiguous"));
                yyval = list_prepend(yyvsp[0], yyvsp[-2]);
          }
- #line 3428 "awkgram.c"
 -#line 3409 "awkgram.c"
++#line 3429 "awkgram.c"
      break;
  
 -  case 92: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement  */
 -#line 1441 "awkgram.y"
 +  case 93: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement  */
- #line 1452 "awkgram.y"
++#line 1453 "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 3439 "awkgram.c"
 -#line 3420 "awkgram.c"
++#line 3440 "awkgram.c"
      break;
  
 -  case 93: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement LEX_ELSE 
opt_nls statement  */
 -#line 1449 "awkgram.y"
 +  case 94: /* if_statement: LEX_IF '(' exp r_paren opt_nls statement LEX_ELSE 
opt_nls statement  */
- #line 1460 "awkgram.y"
++#line 1461 "awkgram.y"
            {
                if (yyvsp[-4] != NULL)
                        yyvsp[-8]->comment = yyvsp[-4];
@@@ -3448,19 -3429,19 +3449,19 @@@
                add_lint(yyvsp[-6], LINT_assign_in_cond);
                yyval = mk_condition(yyvsp[-6], yyvsp[-8], yyvsp[-3], 
yyvsp[-2], yyvsp[0]);
          }
- #line 3452 "awkgram.c"
 -#line 3433 "awkgram.c"
++#line 3453 "awkgram.c"
      break;
  
 -  case 94: /* nls: NEWLINE  */
 -#line 1461 "awkgram.y"
 +  case 95: /* nls: NEWLINE  */
- #line 1472 "awkgram.y"
++#line 1473 "awkgram.y"
            {
                yyval = yyvsp[0];
          }
- #line 3460 "awkgram.c"
 -#line 3441 "awkgram.c"
++#line 3461 "awkgram.c"
      break;
  
 -  case 95: /* nls: nls NEWLINE  */
 -#line 1465 "awkgram.y"
 +  case 96: /* nls: nls NEWLINE  */
- #line 1476 "awkgram.y"
++#line 1477 "awkgram.y"
            {
                if (yyvsp[-1] != NULL && yyvsp[0] != NULL) {
                        if (yyvsp[-1]->memory->comment_type == EOL_COMMENT) {
@@@ -3478,59 -3459,59 +3479,59 @@@
                } else
                        yyval = NULL;
          }
- #line 3482 "awkgram.c"
 -#line 3463 "awkgram.c"
++#line 3483 "awkgram.c"
      break;
  
 -  case 96: /* opt_nls: %empty  */
 -#line 1486 "awkgram.y"
 +  case 97: /* opt_nls: %empty  */
- #line 1497 "awkgram.y"
++#line 1498 "awkgram.y"
            { yyval = NULL; }
- #line 3488 "awkgram.c"
 -#line 3469 "awkgram.c"
++#line 3489 "awkgram.c"
      break;
  
 -  case 97: /* opt_nls: nls  */
 -#line 1488 "awkgram.y"
 +  case 98: /* opt_nls: nls  */
- #line 1499 "awkgram.y"
++#line 1500 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3494 "awkgram.c"
 -#line 3475 "awkgram.c"
++#line 3495 "awkgram.c"
      break;
  
 -  case 98: /* input_redir: %empty  */
 -#line 1493 "awkgram.y"
 +  case 99: /* input_redir: %empty  */
- #line 1504 "awkgram.y"
++#line 1505 "awkgram.y"
            { yyval = NULL; }
- #line 3500 "awkgram.c"
 -#line 3481 "awkgram.c"
++#line 3501 "awkgram.c"
      break;
  
 -  case 99: /* input_redir: '<' simp_exp  */
 -#line 1495 "awkgram.y"
 +  case 100: /* input_redir: '<' simp_exp  */
- #line 1506 "awkgram.y"
++#line 1507 "awkgram.y"
            {
                bcfree(yyvsp[-1]);
                yyval = yyvsp[0];
          }
- #line 3509 "awkgram.c"
 -#line 3490 "awkgram.c"
++#line 3510 "awkgram.c"
      break;
  
 -  case 100: /* opt_param_list: %empty  */
 -#line 1503 "awkgram.y"
 +  case 101: /* opt_param_list: %empty  */
- #line 1514 "awkgram.y"
++#line 1515 "awkgram.y"
            { yyval = NULL; }
- #line 3515 "awkgram.c"
 -#line 3496 "awkgram.c"
++#line 3516 "awkgram.c"
      break;
  
 -  case 101: /* opt_param_list: param_list  */
 -#line 1505 "awkgram.y"
 +  case 102: /* opt_param_list: param_list  */
- #line 1516 "awkgram.y"
++#line 1517 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3521 "awkgram.c"
 -#line 3502 "awkgram.c"
++#line 3522 "awkgram.c"
      break;
  
 -  case 102: /* param_list: NAME  */
 -#line 1510 "awkgram.y"
 +  case 103: /* param_list: NAME  */
- #line 1521 "awkgram.y"
++#line 1522 "awkgram.y"
            {
                yyvsp[0]->param_count = 0;
                yyval = list_create(yyvsp[0]);
          }
- #line 3530 "awkgram.c"
 -#line 3511 "awkgram.c"
++#line 3531 "awkgram.c"
      break;
  
 -  case 103: /* param_list: param_list comma NAME  */
 -#line 1515 "awkgram.y"
 +  case 104: /* param_list: param_list comma NAME  */
- #line 1526 "awkgram.y"
++#line 1527 "awkgram.y"
            {
                if (yyvsp[-2] != NULL && yyvsp[0] != NULL) {
                        yyvsp[0]->param_count = yyvsp[-2]->lasti->param_count + 
1;
@@@ -3547,76 -3528,76 +3548,76 @@@
                } else
                        yyval = NULL;
          }
- #line 3551 "awkgram.c"
 -#line 3532 "awkgram.c"
++#line 3552 "awkgram.c"
      break;
  
 -  case 104: /* param_list: error  */
 -#line 1532 "awkgram.y"
 +  case 105: /* param_list: error  */
- #line 1543 "awkgram.y"
++#line 1544 "awkgram.y"
            { yyval = NULL; }
- #line 3557 "awkgram.c"
 -#line 3538 "awkgram.c"
++#line 3558 "awkgram.c"
      break;
  
 -  case 105: /* param_list: param_list error  */
 -#line 1534 "awkgram.y"
 +  case 106: /* param_list: param_list error  */
- #line 1545 "awkgram.y"
++#line 1546 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 3563 "awkgram.c"
 -#line 3544 "awkgram.c"
++#line 3564 "awkgram.c"
      break;
  
 -  case 106: /* param_list: param_list comma error  */
 -#line 1536 "awkgram.y"
 +  case 107: /* param_list: param_list comma error  */
- #line 1547 "awkgram.y"
++#line 1548 "awkgram.y"
            { yyval = yyvsp[-2]; }
- #line 3569 "awkgram.c"
 -#line 3550 "awkgram.c"
++#line 3570 "awkgram.c"
      break;
  
 -  case 107: /* opt_exp: %empty  */
 -#line 1542 "awkgram.y"
 +  case 108: /* opt_exp: %empty  */
- #line 1553 "awkgram.y"
++#line 1554 "awkgram.y"
            { yyval = NULL; }
- #line 3575 "awkgram.c"
 -#line 3556 "awkgram.c"
++#line 3576 "awkgram.c"
      break;
  
 -  case 108: /* opt_exp: exp  */
 -#line 1544 "awkgram.y"
 +  case 109: /* opt_exp: exp  */
- #line 1555 "awkgram.y"
++#line 1556 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3581 "awkgram.c"
 -#line 3562 "awkgram.c"
++#line 3582 "awkgram.c"
      break;
  
 -  case 109: /* opt_expression_list: %empty  */
 -#line 1549 "awkgram.y"
 +  case 110: /* opt_expression_list: %empty  */
- #line 1560 "awkgram.y"
++#line 1561 "awkgram.y"
            { yyval = NULL; }
- #line 3587 "awkgram.c"
 -#line 3568 "awkgram.c"
++#line 3588 "awkgram.c"
      break;
  
 -  case 110: /* opt_expression_list: expression_list  */
 -#line 1551 "awkgram.y"
 +  case 111: /* opt_expression_list: expression_list  */
- #line 1562 "awkgram.y"
++#line 1563 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3593 "awkgram.c"
 -#line 3574 "awkgram.c"
++#line 3594 "awkgram.c"
      break;
  
 -  case 111: /* expression_list: exp  */
 -#line 1556 "awkgram.y"
 +  case 112: /* expression_list: exp  */
- #line 1567 "awkgram.y"
++#line 1568 "awkgram.y"
            {   yyval = mk_expression_list(NULL, yyvsp[0]); }
- #line 3599 "awkgram.c"
 -#line 3580 "awkgram.c"
++#line 3600 "awkgram.c"
      break;
  
 -  case 112: /* expression_list: expression_list comma exp  */
 -#line 1558 "awkgram.y"
 +  case 113: /* expression_list: expression_list comma exp  */
- #line 1569 "awkgram.y"
++#line 1570 "awkgram.y"
            {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
- #line 3610 "awkgram.c"
 -#line 3591 "awkgram.c"
++#line 3611 "awkgram.c"
      break;
  
 -  case 113: /* expression_list: error  */
 -#line 1565 "awkgram.y"
 +  case 114: /* expression_list: error  */
- #line 1576 "awkgram.y"
++#line 1577 "awkgram.y"
            { yyval = NULL; }
- #line 3616 "awkgram.c"
 -#line 3597 "awkgram.c"
++#line 3617 "awkgram.c"
      break;
  
 -  case 114: /* expression_list: expression_list error  */
 -#line 1567 "awkgram.y"
 +  case 115: /* expression_list: expression_list error  */
- #line 1578 "awkgram.y"
++#line 1579 "awkgram.y"
            {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3624,66 -3605,66 +3625,66 @@@
                 */
                yyval = yyvsp[-1];
          }
- #line 3628 "awkgram.c"
 -#line 3609 "awkgram.c"
++#line 3629 "awkgram.c"
      break;
  
 -  case 115: /* expression_list: expression_list error exp  */
 -#line 1575 "awkgram.y"
 +  case 116: /* expression_list: expression_list error exp  */
- #line 1586 "awkgram.y"
++#line 1587 "awkgram.y"
            {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
- #line 3637 "awkgram.c"
 -#line 3618 "awkgram.c"
++#line 3638 "awkgram.c"
      break;
  
 -  case 116: /* expression_list: expression_list comma error  */
 -#line 1580 "awkgram.y"
 +  case 117: /* expression_list: expression_list comma error  */
- #line 1591 "awkgram.y"
++#line 1592 "awkgram.y"
            {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
- #line 3648 "awkgram.c"
 -#line 3629 "awkgram.c"
++#line 3649 "awkgram.c"
      break;
  
 -  case 117: /* opt_fcall_expression_list: %empty  */
 -#line 1590 "awkgram.y"
 +  case 118: /* opt_fcall_expression_list: %empty  */
- #line 1601 "awkgram.y"
++#line 1602 "awkgram.y"
            { yyval = NULL; }
- #line 3654 "awkgram.c"
 -#line 3635 "awkgram.c"
++#line 3655 "awkgram.c"
      break;
  
 -  case 118: /* opt_fcall_expression_list: fcall_expression_list  */
 -#line 1592 "awkgram.y"
 +  case 119: /* opt_fcall_expression_list: fcall_expression_list  */
- #line 1603 "awkgram.y"
++#line 1604 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3660 "awkgram.c"
 -#line 3641 "awkgram.c"
++#line 3661 "awkgram.c"
      break;
  
 -  case 119: /* fcall_expression_list: fcall_exp  */
 -#line 1597 "awkgram.y"
 +  case 120: /* fcall_expression_list: fcall_exp  */
- #line 1608 "awkgram.y"
++#line 1609 "awkgram.y"
            {   yyval = mk_expression_list(NULL, yyvsp[0]); }
- #line 3666 "awkgram.c"
 -#line 3647 "awkgram.c"
++#line 3667 "awkgram.c"
      break;
  
 -  case 120: /* fcall_expression_list: fcall_expression_list comma fcall_exp  
*/
 -#line 1599 "awkgram.y"
 +  case 121: /* fcall_expression_list: fcall_expression_list comma fcall_exp  
*/
- #line 1610 "awkgram.y"
++#line 1611 "awkgram.y"
            {
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->lasti->comment = yyvsp[-1];
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
                yyerrok;
          }
- #line 3677 "awkgram.c"
 -#line 3658 "awkgram.c"
++#line 3678 "awkgram.c"
      break;
  
 -  case 121: /* fcall_expression_list: error  */
 -#line 1606 "awkgram.y"
 +  case 122: /* fcall_expression_list: error  */
- #line 1617 "awkgram.y"
++#line 1618 "awkgram.y"
            { yyval = NULL; }
- #line 3683 "awkgram.c"
 -#line 3664 "awkgram.c"
++#line 3684 "awkgram.c"
      break;
  
 -  case 122: /* fcall_expression_list: fcall_expression_list error  */
 -#line 1608 "awkgram.y"
 +  case 123: /* fcall_expression_list: fcall_expression_list error  */
- #line 1619 "awkgram.y"
++#line 1620 "awkgram.y"
            {
                /*
                 * Returning the expression list instead of NULL lets
@@@ -3691,86 -3672,86 +3692,86 @@@
                 */
                yyval = yyvsp[-1];
          }
- #line 3695 "awkgram.c"
 -#line 3676 "awkgram.c"
++#line 3696 "awkgram.c"
      break;
  
 -  case 123: /* fcall_expression_list: fcall_expression_list error fcall_exp  
*/
 -#line 1616 "awkgram.y"
 +  case 124: /* fcall_expression_list: fcall_expression_list error fcall_exp  
*/
- #line 1627 "awkgram.y"
++#line 1628 "awkgram.y"
            {
                /* Ditto */
                yyval = mk_expression_list(yyvsp[-2], yyvsp[0]);
          }
- #line 3704 "awkgram.c"
 -#line 3685 "awkgram.c"
++#line 3705 "awkgram.c"
      break;
  
 -  case 124: /* fcall_expression_list: fcall_expression_list comma error  */
 -#line 1621 "awkgram.y"
 +  case 125: /* fcall_expression_list: fcall_expression_list comma error  */
- #line 1632 "awkgram.y"
++#line 1633 "awkgram.y"
            {
                /* Ditto */
                if (yyvsp[-1] != NULL)
                        yyvsp[-2]->comment = yyvsp[-1];
                yyval = yyvsp[-2];
          }
- #line 3715 "awkgram.c"
 -#line 3696 "awkgram.c"
++#line 3716 "awkgram.c"
      break;
  
 -  case 125: /* fcall_exp: exp  */
 -#line 1630 "awkgram.y"
 +  case 126: /* fcall_exp: exp  */
- #line 1641 "awkgram.y"
++#line 1642 "awkgram.y"
                { yyval = yyvsp[0]; }
- #line 3721 "awkgram.c"
 -#line 3702 "awkgram.c"
++#line 3722 "awkgram.c"
      break;
  
 -  case 126: /* fcall_exp: typed_regexp  */
 -#line 1631 "awkgram.y"
 +  case 127: /* fcall_exp: typed_regexp  */
- #line 1642 "awkgram.y"
++#line 1643 "awkgram.y"
                         { yyval = list_create(yyvsp[0]); }
- #line 3727 "awkgram.c"
 -#line 3708 "awkgram.c"
++#line 3728 "awkgram.c"
      break;
  
 -  case 127: /* opt_fcall_exp: %empty  */
 -#line 1636 "awkgram.y"
 +  case 128: /* opt_fcall_exp: %empty  */
- #line 1647 "awkgram.y"
++#line 1648 "awkgram.y"
            { yyval = NULL; }
- #line 3733 "awkgram.c"
 -#line 3714 "awkgram.c"
++#line 3734 "awkgram.c"
      break;
  
 -  case 128: /* opt_fcall_exp: fcall_exp  */
 -#line 1637 "awkgram.y"
 +  case 129: /* opt_fcall_exp: fcall_exp  */
- #line 1648 "awkgram.y"
++#line 1649 "awkgram.y"
                      { yyval = yyvsp[0]; }
- #line 3739 "awkgram.c"
 -#line 3720 "awkgram.c"
++#line 3740 "awkgram.c"
      break;
  
 -  case 129: /* exp: variable assign_operator exp  */
 -#line 1643 "awkgram.y"
 +  case 130: /* exp: variable assign_operator exp  */
- #line 1654 "awkgram.y"
++#line 1655 "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 3750 "awkgram.c"
 -#line 3731 "awkgram.c"
++#line 3751 "awkgram.c"
      break;
  
 -  case 130: /* exp: variable ASSIGN typed_regexp  */
 -#line 1650 "awkgram.y"
 +  case 131: /* exp: variable ASSIGN typed_regexp  */
- #line 1661 "awkgram.y"
++#line 1662 "awkgram.y"
            {
                yyval = mk_assignment(yyvsp[-2], list_create(yyvsp[0]), 
yyvsp[-1]);
          }
- #line 3758 "awkgram.c"
 -#line 3739 "awkgram.c"
++#line 3759 "awkgram.c"
      break;
  
 -  case 131: /* exp: exp LEX_AND exp  */
 -#line 1654 "awkgram.y"
 +  case 132: /* exp: exp LEX_AND exp  */
- #line 1665 "awkgram.y"
++#line 1666 "awkgram.y"
            {   yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3764 "awkgram.c"
 -#line 3745 "awkgram.c"
++#line 3765 "awkgram.c"
      break;
  
 -  case 132: /* exp: exp LEX_OR exp  */
 -#line 1656 "awkgram.y"
 +  case 133: /* exp: exp LEX_OR exp  */
- #line 1667 "awkgram.y"
++#line 1668 "awkgram.y"
            {   yyval = mk_boolean(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3770 "awkgram.c"
 -#line 3751 "awkgram.c"
++#line 3771 "awkgram.c"
      break;
  
 -  case 133: /* exp: exp MATCHOP typed_regexp  */
 -#line 1658 "awkgram.y"
 +  case 134: /* exp: exp MATCHOP typed_regexp  */
- #line 1669 "awkgram.y"
++#line 1670 "awkgram.y"
            {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@@ -3783,11 -3764,11 +3784,11 @@@
                bcfree(yyvsp[0]);
                yyval = list_append(yyvsp[-2], yyvsp[-1]);
          }
- #line 3787 "awkgram.c"
 -#line 3768 "awkgram.c"
++#line 3788 "awkgram.c"
      break;
  
 -  case 134: /* exp: exp MATCHOP exp  */
 -#line 1671 "awkgram.y"
 +  case 135: /* exp: exp MATCHOP exp  */
- #line 1682 "awkgram.y"
++#line 1683 "awkgram.y"
            {
                if (yyvsp[-2]->lasti->opcode == Op_match_rec)
                        warning_ln(yyvsp[-1]->source_line,
@@@ -3804,11 -3785,11 +3805,11 @@@
                        yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), 
yyvsp[-1]);
                }
          }
- #line 3808 "awkgram.c"
 -#line 3789 "awkgram.c"
++#line 3809 "awkgram.c"
      break;
  
 -  case 135: /* exp: exp LEX_IN simple_variable  */
 -#line 1688 "awkgram.y"
 +  case 136: /* exp: exp LEX_IN simple_variable  */
- #line 1699 "awkgram.y"
++#line 1700 "awkgram.y"
            {
                if (do_lint_old)
                        lintwarn_ln(yyvsp[-1]->source_line,
@@@ -3818,91 -3799,91 +3819,91 @@@
                yyvsp[-1]->expr_count = 1;
                yyval = list_append(list_merge(yyvsp[-2], yyvsp[0]), yyvsp[-1]);
          }
- #line 3822 "awkgram.c"
 -#line 3803 "awkgram.c"
++#line 3823 "awkgram.c"
      break;
  
 -  case 136: /* exp: exp a_relop exp  */
 -#line 1698 "awkgram.y"
 +  case 137: /* exp: exp a_relop exp  */
- #line 1709 "awkgram.y"
++#line 1710 "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 3833 "awkgram.c"
 -#line 3814 "awkgram.c"
++#line 3834 "awkgram.c"
      break;
  
 -  case 137: /* exp: exp '?' exp ':' exp  */
 -#line 1705 "awkgram.y"
 +  case 138: /* exp: exp '?' exp ':' exp  */
- #line 1716 "awkgram.y"
++#line 1717 "awkgram.y"
            { yyval = mk_condition(yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], 
yyvsp[0]); }
- #line 3839 "awkgram.c"
 -#line 3820 "awkgram.c"
++#line 3840 "awkgram.c"
      break;
  
 -  case 138: /* exp: common_exp  */
 -#line 1707 "awkgram.y"
 +  case 139: /* exp: common_exp  */
- #line 1718 "awkgram.y"
++#line 1719 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3845 "awkgram.c"
 -#line 3826 "awkgram.c"
++#line 3846 "awkgram.c"
      break;
  
 -  case 139: /* assign_operator: ASSIGN  */
 -#line 1712 "awkgram.y"
 +  case 140: /* assign_operator: ASSIGN  */
- #line 1723 "awkgram.y"
++#line 1724 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3851 "awkgram.c"
 -#line 3832 "awkgram.c"
++#line 3852 "awkgram.c"
      break;
  
 -  case 140: /* assign_operator: ASSIGNOP  */
 -#line 1714 "awkgram.y"
 +  case 141: /* assign_operator: ASSIGNOP  */
- #line 1725 "awkgram.y"
++#line 1726 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3857 "awkgram.c"
 -#line 3838 "awkgram.c"
++#line 3858 "awkgram.c"
      break;
  
 -  case 141: /* assign_operator: SLASH_BEFORE_EQUAL ASSIGN  */
 -#line 1716 "awkgram.y"
 +  case 142: /* assign_operator: SLASH_BEFORE_EQUAL ASSIGN  */
- #line 1727 "awkgram.y"
++#line 1728 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_assign_quotient;
                yyval = yyvsp[0];
          }
- #line 3866 "awkgram.c"
 -#line 3847 "awkgram.c"
++#line 3867 "awkgram.c"
      break;
  
 -  case 142: /* relop_or_less: RELOP  */
 -#line 1724 "awkgram.y"
 +  case 143: /* relop_or_less: RELOP  */
- #line 1735 "awkgram.y"
++#line 1736 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3872 "awkgram.c"
 -#line 3853 "awkgram.c"
++#line 3873 "awkgram.c"
      break;
  
 -  case 143: /* relop_or_less: '<'  */
 -#line 1726 "awkgram.y"
 +  case 144: /* relop_or_less: '<'  */
- #line 1737 "awkgram.y"
++#line 1738 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3878 "awkgram.c"
 -#line 3859 "awkgram.c"
++#line 3879 "awkgram.c"
      break;
  
 -  case 144: /* a_relop: relop_or_less  */
 -#line 1731 "awkgram.y"
 +  case 145: /* a_relop: relop_or_less  */
- #line 1742 "awkgram.y"
++#line 1743 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3884 "awkgram.c"
 -#line 3865 "awkgram.c"
++#line 3885 "awkgram.c"
      break;
  
 -  case 145: /* a_relop: '>'  */
 -#line 1733 "awkgram.y"
 +  case 146: /* a_relop: '>'  */
- #line 1744 "awkgram.y"
++#line 1745 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3890 "awkgram.c"
 -#line 3871 "awkgram.c"
++#line 3891 "awkgram.c"
      break;
  
 -  case 146: /* common_exp: simp_exp  */
 -#line 1738 "awkgram.y"
 +  case 147: /* common_exp: simp_exp  */
- #line 1749 "awkgram.y"
++#line 1750 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3896 "awkgram.c"
 -#line 3877 "awkgram.c"
++#line 3897 "awkgram.c"
      break;
  
 -  case 147: /* common_exp: simp_exp_nc  */
 -#line 1740 "awkgram.y"
 +  case 148: /* common_exp: simp_exp_nc  */
- #line 1751 "awkgram.y"
++#line 1752 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 3902 "awkgram.c"
 -#line 3883 "awkgram.c"
++#line 3903 "awkgram.c"
      break;
  
 -  case 148: /* common_exp: common_exp simp_exp  */
 -#line 1742 "awkgram.y"
 +  case 149: /* common_exp: common_exp simp_exp  */
- #line 1753 "awkgram.y"
++#line 1754 "awkgram.y"
            {
                int count = 2;
                bool is_simple_var = false;
@@@ -3956,47 -3937,47 +3957,47 @@@
                                max_args = count;
                }
          }
- #line 3960 "awkgram.c"
 -#line 3941 "awkgram.c"
++#line 3961 "awkgram.c"
      break;
  
 -  case 150: /* simp_exp: simp_exp '^' simp_exp  */
 -#line 1801 "awkgram.y"
 +  case 151: /* simp_exp: simp_exp '^' simp_exp  */
- #line 1812 "awkgram.y"
++#line 1813 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3966 "awkgram.c"
 -#line 3947 "awkgram.c"
++#line 3967 "awkgram.c"
      break;
  
 -  case 151: /* simp_exp: simp_exp '*' simp_exp  */
 -#line 1803 "awkgram.y"
 +  case 152: /* simp_exp: simp_exp '*' simp_exp  */
- #line 1814 "awkgram.y"
++#line 1815 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3972 "awkgram.c"
 -#line 3953 "awkgram.c"
++#line 3973 "awkgram.c"
      break;
  
 -  case 152: /* simp_exp: simp_exp '/' simp_exp  */
 -#line 1805 "awkgram.y"
 +  case 153: /* simp_exp: simp_exp '/' simp_exp  */
- #line 1816 "awkgram.y"
++#line 1817 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3978 "awkgram.c"
 -#line 3959 "awkgram.c"
++#line 3979 "awkgram.c"
      break;
  
 -  case 153: /* simp_exp: simp_exp '%' simp_exp  */
 -#line 1807 "awkgram.y"
 +  case 154: /* simp_exp: simp_exp '%' simp_exp  */
- #line 1818 "awkgram.y"
++#line 1819 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3984 "awkgram.c"
 -#line 3965 "awkgram.c"
++#line 3985 "awkgram.c"
      break;
  
 -  case 154: /* simp_exp: simp_exp '+' simp_exp  */
 -#line 1809 "awkgram.y"
 +  case 155: /* simp_exp: simp_exp '+' simp_exp  */
- #line 1820 "awkgram.y"
++#line 1821 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3990 "awkgram.c"
 -#line 3971 "awkgram.c"
++#line 3991 "awkgram.c"
      break;
  
 -  case 155: /* simp_exp: simp_exp '-' simp_exp  */
 -#line 1811 "awkgram.y"
 +  case 156: /* simp_exp: simp_exp '-' simp_exp  */
- #line 1822 "awkgram.y"
++#line 1823 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 3996 "awkgram.c"
 -#line 3977 "awkgram.c"
++#line 3997 "awkgram.c"
      break;
  
 -  case 156: /* simp_exp: LEX_GETLINE opt_variable input_redir  */
 -#line 1813 "awkgram.y"
 +  case 157: /* simp_exp: LEX_GETLINE opt_variable input_redir  */
- #line 1824 "awkgram.y"
++#line 1825 "awkgram.y"
            {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@@ -4010,29 -3991,29 +4011,29 @@@
                                _("non-redirected `getline' undefined inside 
END action"));
                yyval = mk_getline(yyvsp[-2], yyvsp[-1], yyvsp[0], 
redirect_input);
          }
- #line 4014 "awkgram.c"
 -#line 3995 "awkgram.c"
++#line 4015 "awkgram.c"
      break;
  
 -  case 157: /* simp_exp: variable INCREMENT  */
 -#line 1827 "awkgram.y"
 +  case 158: /* simp_exp: variable INCREMENT  */
- #line 1838 "awkgram.y"
++#line 1839 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postincrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4023 "awkgram.c"
 -#line 4004 "awkgram.c"
++#line 4024 "awkgram.c"
      break;
  
 -  case 158: /* simp_exp: variable DECREMENT  */
 -#line 1832 "awkgram.y"
 +  case 159: /* simp_exp: variable DECREMENT  */
- #line 1843 "awkgram.y"
++#line 1844 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postdecrement;
                yyval = mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4032 "awkgram.c"
 -#line 4013 "awkgram.c"
++#line 4033 "awkgram.c"
      break;
  
 -  case 159: /* simp_exp: '(' expression_list r_paren LEX_IN simple_variable  
*/
 -#line 1837 "awkgram.y"
 +  case 160: /* simp_exp: '(' expression_list r_paren LEX_IN simple_variable  
*/
- #line 1848 "awkgram.y"
++#line 1849 "awkgram.y"
            {
                if (do_lint_old) {
                    /* first one is warning so that second one comes out if 
warnings are fatal */
@@@ -4053,64 -4034,64 +4054,64 @@@
                        yyval = list_append(list_merge(t, yyvsp[0]), yyvsp[-1]);
                }
          }
- #line 4057 "awkgram.c"
 -#line 4038 "awkgram.c"
++#line 4058 "awkgram.c"
      break;
  
 -  case 160: /* simp_exp_nc: common_exp IO_IN LEX_GETLINE opt_variable  */
 -#line 1863 "awkgram.y"
 +  case 161: /* simp_exp_nc: common_exp IO_IN LEX_GETLINE opt_variable  */
- #line 1874 "awkgram.y"
++#line 1875 "awkgram.y"
                  {
                  yyval = mk_getline(yyvsp[-1], yyvsp[0], yyvsp[-3], 
yyvsp[-2]->redir_type);
                  bcfree(yyvsp[-2]);
                }
- #line 4066 "awkgram.c"
 -#line 4047 "awkgram.c"
++#line 4067 "awkgram.c"
      break;
  
 -  case 161: /* simp_exp_nc: simp_exp_nc '^' simp_exp  */
 -#line 1869 "awkgram.y"
 +  case 162: /* simp_exp_nc: simp_exp_nc '^' simp_exp  */
- #line 1880 "awkgram.y"
++#line 1881 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4072 "awkgram.c"
 -#line 4053 "awkgram.c"
++#line 4073 "awkgram.c"
      break;
  
 -  case 162: /* simp_exp_nc: simp_exp_nc '*' simp_exp  */
 -#line 1871 "awkgram.y"
 +  case 163: /* simp_exp_nc: simp_exp_nc '*' simp_exp  */
- #line 1882 "awkgram.y"
++#line 1883 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4078 "awkgram.c"
 -#line 4059 "awkgram.c"
++#line 4079 "awkgram.c"
      break;
  
 -  case 163: /* simp_exp_nc: simp_exp_nc '/' simp_exp  */
 -#line 1873 "awkgram.y"
 +  case 164: /* simp_exp_nc: simp_exp_nc '/' simp_exp  */
- #line 1884 "awkgram.y"
++#line 1885 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4084 "awkgram.c"
 -#line 4065 "awkgram.c"
++#line 4085 "awkgram.c"
      break;
  
 -  case 164: /* simp_exp_nc: simp_exp_nc '%' simp_exp  */
 -#line 1875 "awkgram.y"
 +  case 165: /* simp_exp_nc: simp_exp_nc '%' simp_exp  */
- #line 1886 "awkgram.y"
++#line 1887 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4090 "awkgram.c"
 -#line 4071 "awkgram.c"
++#line 4091 "awkgram.c"
      break;
  
 -  case 165: /* simp_exp_nc: simp_exp_nc '+' simp_exp  */
 -#line 1877 "awkgram.y"
 +  case 166: /* simp_exp_nc: simp_exp_nc '+' simp_exp  */
- #line 1888 "awkgram.y"
++#line 1889 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4096 "awkgram.c"
 -#line 4077 "awkgram.c"
++#line 4097 "awkgram.c"
      break;
  
 -  case 166: /* simp_exp_nc: simp_exp_nc '-' simp_exp  */
 -#line 1879 "awkgram.y"
 +  case 167: /* simp_exp_nc: simp_exp_nc '-' simp_exp  */
- #line 1890 "awkgram.y"
++#line 1891 "awkgram.y"
            { yyval = mk_binary(yyvsp[-2], yyvsp[0], yyvsp[-1]); }
- #line 4102 "awkgram.c"
 -#line 4083 "awkgram.c"
++#line 4103 "awkgram.c"
      break;
  
 -  case 167: /* non_post_simp_exp: regexp  */
 -#line 1884 "awkgram.y"
 +  case 168: /* non_post_simp_exp: regexp  */
- #line 1895 "awkgram.y"
++#line 1896 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4110 "awkgram.c"
 -#line 4091 "awkgram.c"
++#line 4111 "awkgram.c"
      break;
  
 -  case 168: /* non_post_simp_exp: '!' simp_exp  */
 -#line 1888 "awkgram.y"
 +  case 169: /* non_post_simp_exp: '!' simp_exp  */
- #line 1899 "awkgram.y"
++#line 1900 "awkgram.y"
            {
                if (yyvsp[0]->opcode == Op_match_rec) {
                        yyvsp[0]->opcode = Op_nomatch;
@@@ -4142,11 -4123,11 +4143,11 @@@
                        }
                }
           }
- #line 4146 "awkgram.c"
 -#line 4127 "awkgram.c"
++#line 4147 "awkgram.c"
      break;
  
 -  case 169: /* non_post_simp_exp: '(' exp r_paren  */
 -#line 1920 "awkgram.y"
 +  case 170: /* non_post_simp_exp: '(' exp r_paren  */
- #line 1931 "awkgram.y"
++#line 1932 "awkgram.y"
            {
                // Always include. Allows us to lint warn on
                // print "foo" > "bar" 1
@@@ -4154,31 -4135,31 +4155,31 @@@
                // print "foo" > ("bar" 1)
                yyval = list_append(yyvsp[-1], bcalloc(Op_parens, 1, 
sourceline));
          }
- #line 4158 "awkgram.c"
 -#line 4139 "awkgram.c"
++#line 4159 "awkgram.c"
      break;
  
 -  case 170: /* non_post_simp_exp: LEX_BUILTIN '(' opt_fcall_expression_list 
r_paren  */
 -#line 1928 "awkgram.y"
 +  case 171: /* non_post_simp_exp: LEX_BUILTIN '(' opt_fcall_expression_list 
r_paren  */
- #line 1939 "awkgram.y"
++#line 1940 "awkgram.y"
            {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4168 "awkgram.c"
 -#line 4149 "awkgram.c"
++#line 4169 "awkgram.c"
      break;
  
 -  case 171: /* non_post_simp_exp: LEX_LENGTH '(' opt_fcall_expression_list 
r_paren  */
 -#line 1934 "awkgram.y"
 +  case 172: /* non_post_simp_exp: LEX_LENGTH '(' opt_fcall_expression_list 
r_paren  */
- #line 1945 "awkgram.y"
++#line 1946 "awkgram.y"
            {
                yyval = snode(yyvsp[-1], yyvsp[-3]);
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4178 "awkgram.c"
 -#line 4159 "awkgram.c"
++#line 4179 "awkgram.c"
      break;
  
 -  case 172: /* non_post_simp_exp: LEX_LENGTH  */
 -#line 1940 "awkgram.y"
 +  case 173: /* non_post_simp_exp: LEX_LENGTH  */
- #line 1951 "awkgram.y"
++#line 1952 "awkgram.y"
            {
                static bool warned = false;
  
@@@ -4191,45 -4172,45 +4192,45 @@@
                if (yyval == NULL)
                        YYABORT;
          }
- #line 4195 "awkgram.c"
 -#line 4176 "awkgram.c"
++#line 4196 "awkgram.c"
      break;
  
 -  case 175: /* non_post_simp_exp: INCREMENT variable  */
 -#line 1955 "awkgram.y"
 +  case 176: /* non_post_simp_exp: INCREMENT variable  */
- #line 1966 "awkgram.y"
++#line 1967 "awkgram.y"
            {
                yyvsp[-1]->opcode = Op_preincrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
- #line 4204 "awkgram.c"
 -#line 4185 "awkgram.c"
++#line 4205 "awkgram.c"
      break;
  
 -  case 176: /* non_post_simp_exp: DECREMENT variable  */
 -#line 1960 "awkgram.y"
 +  case 177: /* non_post_simp_exp: DECREMENT variable  */
- #line 1971 "awkgram.y"
++#line 1972 "awkgram.y"
            {
                yyvsp[-1]->opcode = Op_predecrement;
                yyval = mk_assignment(yyvsp[0], NULL, yyvsp[-1]);
          }
- #line 4213 "awkgram.c"
 -#line 4194 "awkgram.c"
++#line 4214 "awkgram.c"
      break;
  
 -  case 177: /* non_post_simp_exp: YNUMBER  */
 -#line 1965 "awkgram.y"
 +  case 178: /* non_post_simp_exp: YNUMBER  */
- #line 1976 "awkgram.y"
++#line 1977 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4221 "awkgram.c"
 -#line 4202 "awkgram.c"
++#line 4222 "awkgram.c"
      break;
  
 -  case 178: /* non_post_simp_exp: YSTRING  */
 -#line 1969 "awkgram.y"
 +  case 179: /* non_post_simp_exp: YSTRING  */
- #line 1980 "awkgram.y"
++#line 1981 "awkgram.y"
            {
                yyval = list_create(yyvsp[0]);
          }
- #line 4229 "awkgram.c"
 -#line 4210 "awkgram.c"
++#line 4230 "awkgram.c"
      break;
  
 -  case 179: /* non_post_simp_exp: '-' simp_exp  */
 -#line 1973 "awkgram.y"
 +  case 180: /* non_post_simp_exp: '-' simp_exp  */
- #line 1984 "awkgram.y"
++#line 1985 "awkgram.y"
            {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@@ -4244,11 -4225,11 +4245,11 @@@
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
- #line 4248 "awkgram.c"
 -#line 4229 "awkgram.c"
++#line 4249 "awkgram.c"
      break;
  
 -  case 180: /* non_post_simp_exp: '+' simp_exp  */
 -#line 1988 "awkgram.y"
 +  case 181: /* non_post_simp_exp: '+' simp_exp  */
- #line 1999 "awkgram.y"
++#line 2000 "awkgram.y"
            {
                if (yyvsp[0]->lasti->opcode == Op_push_i
                        && (yyvsp[0]->lasti->memory->flags & STRING) == 0
@@@ -4266,20 -4247,20 +4267,20 @@@
                        yyval = list_append(yyvsp[0], yyvsp[-1]);
                }
          }
- #line 4270 "awkgram.c"
 -#line 4251 "awkgram.c"
++#line 4271 "awkgram.c"
      break;
  
 -  case 181: /* func_call: direct_func_call  */
 -#line 2009 "awkgram.y"
 +  case 182: /* func_call: direct_func_call  */
- #line 2020 "awkgram.y"
++#line 2021 "awkgram.y"
            {
                func_use(yyvsp[0]->lasti->func_name, FUNC_USE);
                yyval = yyvsp[0];
          }
- #line 4279 "awkgram.c"
 -#line 4260 "awkgram.c"
++#line 4280 "awkgram.c"
      break;
  
 -  case 182: /* func_call: '@' direct_func_call  */
 -#line 2014 "awkgram.y"
 +  case 183: /* func_call: '@' direct_func_call  */
- #line 2025 "awkgram.y"
++#line 2026 "awkgram.y"
            {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@@ -4313,11 -4294,11 +4314,11 @@@
                yyval = list_prepend(yyvsp[0], t);
                at_seen--;
          }
- #line 4317 "awkgram.c"
 -#line 4298 "awkgram.c"
++#line 4318 "awkgram.c"
      break;
  
 -  case 183: /* direct_func_call: FUNC_CALL '(' opt_fcall_expression_list 
r_paren  */
 -#line 2051 "awkgram.y"
 +  case 184: /* direct_func_call: FUNC_CALL '(' opt_fcall_expression_list 
r_paren  */
- #line 2062 "awkgram.y"
++#line 2063 "awkgram.y"
            {
                NODE *n;
                char *name = yyvsp[-3]->func_name;
@@@ -4350,49 -4331,49 +4351,49 @@@
                        yyval = list_append(t, yyvsp[-3]);
                }
          }
- #line 4354 "awkgram.c"
 -#line 4335 "awkgram.c"
++#line 4355 "awkgram.c"
      break;
  
 -  case 184: /* opt_variable: %empty  */
 -#line 2087 "awkgram.y"
 +  case 185: /* opt_variable: %empty  */
- #line 2098 "awkgram.y"
++#line 2099 "awkgram.y"
            { yyval = NULL; }
- #line 4360 "awkgram.c"
 -#line 4341 "awkgram.c"
++#line 4361 "awkgram.c"
      break;
  
 -  case 185: /* opt_variable: variable  */
 -#line 2089 "awkgram.y"
 +  case 186: /* opt_variable: variable  */
- #line 2100 "awkgram.y"
++#line 2101 "awkgram.y"
            { yyval = yyvsp[0]; }
- #line 4366 "awkgram.c"
 -#line 4347 "awkgram.c"
++#line 4367 "awkgram.c"
      break;
  
 -  case 186: /* delete_subscript_list: %empty  */
 -#line 2094 "awkgram.y"
 +  case 187: /* delete_subscript_list: %empty  */
- #line 2105 "awkgram.y"
++#line 2106 "awkgram.y"
            { yyval = NULL; }
- #line 4372 "awkgram.c"
 -#line 4353 "awkgram.c"
++#line 4373 "awkgram.c"
      break;
  
 -  case 187: /* delete_subscript_list: delete_subscript SUBSCRIPT  */
 -#line 2096 "awkgram.y"
 +  case 188: /* delete_subscript_list: delete_subscript SUBSCRIPT  */
- #line 2107 "awkgram.y"
++#line 2108 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 4378 "awkgram.c"
 -#line 4359 "awkgram.c"
++#line 4379 "awkgram.c"
      break;
  
 -  case 188: /* delete_subscript: delete_exp_list  */
 -#line 2101 "awkgram.y"
 +  case 189: /* delete_subscript: delete_exp_list  */
- #line 2112 "awkgram.y"
++#line 2113 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 4384 "awkgram.c"
 -#line 4365 "awkgram.c"
++#line 4385 "awkgram.c"
      break;
  
 -  case 189: /* delete_subscript: delete_subscript delete_exp_list  */
 -#line 2103 "awkgram.y"
 +  case 190: /* delete_subscript: delete_subscript delete_exp_list  */
- #line 2114 "awkgram.y"
++#line 2115 "awkgram.y"
            {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
- #line 4392 "awkgram.c"
 -#line 4373 "awkgram.c"
++#line 4393 "awkgram.c"
      break;
  
 -  case 190: /* delete_exp_list: bracketed_exp_list  */
 -#line 2110 "awkgram.y"
 +  case 191: /* delete_exp_list: bracketed_exp_list  */
- #line 2121 "awkgram.y"
++#line 2122 "awkgram.y"
            {
                INSTRUCTION *ip = yyvsp[0]->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@@ -4406,11 -4387,11 +4407,11 @@@
                sub_counter++;  /* count # of dimensions */
                yyval = yyvsp[0];
          }
- #line 4410 "awkgram.c"
 -#line 4391 "awkgram.c"
++#line 4411 "awkgram.c"
      break;
  
 -  case 191: /* bracketed_exp_list: '[' expression_list ']'  */
 -#line 2127 "awkgram.y"
 +  case 192: /* bracketed_exp_list: '[' expression_list ']'  */
- #line 2138 "awkgram.y"
++#line 2139 "awkgram.y"
            {
                INSTRUCTION *t = yyvsp[-1];
                if (yyvsp[-1] == NULL) {
@@@ -4424,41 -4405,41 +4425,41 @@@
                        yyvsp[0]->sub_count = count_expressions(&t, false);
                yyval = list_append(t, yyvsp[0]);
          }
- #line 4428 "awkgram.c"
 -#line 4409 "awkgram.c"
++#line 4429 "awkgram.c"
      break;
  
 -  case 192: /* subscript: bracketed_exp_list  */
 -#line 2144 "awkgram.y"
 +  case 193: /* subscript: bracketed_exp_list  */
- #line 2155 "awkgram.y"
++#line 2156 "awkgram.y"
            {   yyval = yyvsp[0]; }
- #line 4434 "awkgram.c"
 -#line 4415 "awkgram.c"
++#line 4435 "awkgram.c"
      break;
  
 -  case 193: /* subscript: subscript bracketed_exp_list  */
 -#line 2146 "awkgram.y"
 +  case 194: /* subscript: subscript bracketed_exp_list  */
- #line 2157 "awkgram.y"
++#line 2158 "awkgram.y"
            {
                yyval = list_merge(yyvsp[-1], yyvsp[0]);
          }
- #line 4442 "awkgram.c"
 -#line 4423 "awkgram.c"
++#line 4443 "awkgram.c"
      break;
  
 -  case 194: /* subscript_list: subscript SUBSCRIPT  */
 -#line 2153 "awkgram.y"
 +  case 195: /* subscript_list: subscript SUBSCRIPT  */
- #line 2164 "awkgram.y"
++#line 2165 "awkgram.y"
            { yyval = yyvsp[-1]; }
- #line 4448 "awkgram.c"
 -#line 4429 "awkgram.c"
++#line 4449 "awkgram.c"
      break;
  
 -  case 195: /* simple_variable: NAME  */
 -#line 2158 "awkgram.y"
 +  case 196: /* simple_variable: NAME  */
- #line 2169 "awkgram.y"
++#line 2170 "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 4458 "awkgram.c"
 -#line 4439 "awkgram.c"
++#line 4459 "awkgram.c"
      break;
  
 -  case 196: /* simple_variable: NAME subscript_list  */
 -#line 2164 "awkgram.y"
 +  case 197: /* simple_variable: NAME subscript_list  */
- #line 2175 "awkgram.y"
++#line 2176 "awkgram.y"
            {
                char *arr = yyvsp[-1]->lextok;
  
@@@ -4467,11 -4448,11 +4468,11 @@@
                yyvsp[-1]->opcode = Op_push_array;
                yyval = list_prepend(yyvsp[0], yyvsp[-1]);
          }
- #line 4471 "awkgram.c"
 -#line 4452 "awkgram.c"
++#line 4472 "awkgram.c"
      break;
  
 -  case 197: /* variable: simple_variable  */
 -#line 2176 "awkgram.y"
 +  case 198: /* variable: simple_variable  */
- #line 2187 "awkgram.y"
++#line 2188 "awkgram.y"
            {
                INSTRUCTION *ip = yyvsp[0]->nexti;
                if (ip->opcode == Op_push
@@@ -4483,85 -4464,85 +4484,85 @@@
                } else
                        yyval = yyvsp[0];
          }
- #line 4487 "awkgram.c"
 -#line 4468 "awkgram.c"
++#line 4488 "awkgram.c"
      break;
  
 -  case 198: /* variable: '$' non_post_simp_exp opt_incdec  */
 -#line 2188 "awkgram.y"
 +  case 199: /* variable: '$' non_post_simp_exp opt_incdec  */
- #line 2199 "awkgram.y"
++#line 2200 "awkgram.y"
            {
                yyval = list_append(yyvsp[-1], yyvsp[-2]);
                if (yyvsp[0] != NULL)
                        mk_assignment(yyvsp[-1], NULL, yyvsp[0]);
          }
- #line 4497 "awkgram.c"
 -#line 4478 "awkgram.c"
++#line 4498 "awkgram.c"
      break;
  
 -  case 199: /* opt_incdec: INCREMENT  */
 -#line 2197 "awkgram.y"
 +  case 200: /* opt_incdec: INCREMENT  */
- #line 2208 "awkgram.y"
++#line 2209 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postincrement;
          }
- #line 4505 "awkgram.c"
 -#line 4486 "awkgram.c"
++#line 4506 "awkgram.c"
      break;
  
 -  case 200: /* opt_incdec: DECREMENT  */
 -#line 2201 "awkgram.y"
 +  case 201: /* opt_incdec: DECREMENT  */
- #line 2212 "awkgram.y"
++#line 2213 "awkgram.y"
            {
                yyvsp[0]->opcode = Op_postdecrement;
          }
- #line 4513 "awkgram.c"
 -#line 4494 "awkgram.c"
++#line 4514 "awkgram.c"
      break;
  
 -  case 201: /* opt_incdec: %empty  */
 -#line 2205 "awkgram.y"
 +  case 202: /* opt_incdec: %empty  */
- #line 2216 "awkgram.y"
++#line 2217 "awkgram.y"
            { yyval = NULL; }
- #line 4519 "awkgram.c"
 -#line 4500 "awkgram.c"
++#line 4520 "awkgram.c"
      break;
  
 -  case 202: /* l_brace: '{' opt_nls  */
 -#line 2209 "awkgram.y"
 +  case 203: /* l_brace: '{' opt_nls  */
- #line 2220 "awkgram.y"
++#line 2221 "awkgram.y"
                        { yyval = yyvsp[0]; }
- #line 4525 "awkgram.c"
 -#line 4506 "awkgram.c"
++#line 4526 "awkgram.c"
      break;
  
 -  case 203: /* r_brace: '}' opt_nls  */
 -#line 2213 "awkgram.y"
 +  case 204: /* r_brace: '}' opt_nls  */
- #line 2224 "awkgram.y"
++#line 2225 "awkgram.y"
                          { yyval = yyvsp[0]; yyerrok; }
- #line 4531 "awkgram.c"
 -#line 4512 "awkgram.c"
++#line 4532 "awkgram.c"
      break;
  
 -  case 204: /* r_paren: ')'  */
 -#line 2217 "awkgram.y"
 +  case 205: /* r_paren: ')'  */
- #line 2228 "awkgram.y"
++#line 2229 "awkgram.y"
                { yyerrok; }
- #line 4537 "awkgram.c"
 -#line 4518 "awkgram.c"
++#line 4538 "awkgram.c"
      break;
  
 -  case 205: /* opt_semi: %empty  */
 -#line 2222 "awkgram.y"
 +  case 206: /* opt_semi: %empty  */
- #line 2233 "awkgram.y"
++#line 2234 "awkgram.y"
            { yyval = NULL; }
- #line 4543 "awkgram.c"
 -#line 4524 "awkgram.c"
++#line 4544 "awkgram.c"
      break;
  
 -  case 207: /* semi: ';'  */
 -#line 2227 "awkgram.y"
 +  case 208: /* semi: ';'  */
- #line 2238 "awkgram.y"
++#line 2239 "awkgram.y"
                  { yyerrok; }
- #line 4549 "awkgram.c"
 -#line 4530 "awkgram.c"
++#line 4550 "awkgram.c"
      break;
  
 -  case 208: /* colon: ':'  */
 -#line 2231 "awkgram.y"
 +  case 209: /* colon: ':'  */
- #line 2242 "awkgram.y"
++#line 2243 "awkgram.y"
                  { yyval = yyvsp[0]; yyerrok; }
- #line 4555 "awkgram.c"
 -#line 4536 "awkgram.c"
++#line 4556 "awkgram.c"
      break;
  
 -  case 209: /* comma: ',' opt_nls  */
 -#line 2235 "awkgram.y"
 +  case 210: /* comma: ',' opt_nls  */
- #line 2246 "awkgram.y"
++#line 2247 "awkgram.y"
                          { yyval = yyvsp[0]; yyerrok; }
- #line 4561 "awkgram.c"
 -#line 4542 "awkgram.c"
++#line 4562 "awkgram.c"
      break;
  
  
- #line 4565 "awkgram.c"
 -#line 4546 "awkgram.c"
++#line 4566 "awkgram.c"
  
        default: break;
      }
@@@ -4754,7 -4735,7 +4755,7 @@@ yyreturnlab
    return yyresult;
  }
  
- #line 2248 "awkgram.y"
 -#line 2237 "awkgram.y"
++#line 2249 "awkgram.y"
  
  
  struct token {
diff --cc doc/ChangeLog
index abe262ec,9a76a779..fa9e533e
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,7 -1,9 +1,13 @@@
+ 2024-08-12         Arnold D. Robbins     <arnold@skeeve.com>
+ 
+       * gawk.texi: Improve indexing for @include/@load/@namespace
+       and use "directive" consistently to describe them. Thanks to
+       Antonio Colombo for pointing out the need.
+ 
 +2024-08-06         Arnold D. Robbins     <arnold@skeeve.com>
 +
 +      * gawk.texi, gawk.1, awkcard.in: Document @nsinclude.
 +
  2024-08-05         Arnold D. Robbins     <arnold@skeeve.com>
  
        * gawk.texi: Small consistency fix.
diff --cc doc/gawk.info
index 4ddfc3a8,5e3d6f66..13d5f91f
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -3367,10 -3365,9 +3367,10 @@@ File: gawk.info,  Node: Include Files
  2.7 Including Other Files into Your Program
  ===========================================
  
 -This minor node describes a feature that is specific to ‘gawk’.
 +This minor node describes a feature that is specific to ‘gawk’.  It
 +discusses how one source file may include another.
  
-    The ‘@include’ keyword can be used to read external ‘awk’ source
+    The ‘@include’ directive can be used to read external ‘awk’ source
  files.  This gives you the ability to split large ‘awk’ source files
  into smaller, more manageable pieces, and also lets you reuse common
  ‘awk’ code from various ‘awk’ scripts.  In other words, you can group
@@@ -36451,15 -36353,26 +36451,28 @@@ Inde
  * {} (braces), statements, grouping:     Statements.          (line  10)
  * @ (at-sign), @-notation for indirect function calls: Indirect Calls.
                                                                (line  47)
- * @ (at-sign), @include directive:       Include Files.       (line   9)
- * @ (at-sign), @load directive:          Loading Shared Libraries.
+ * @ (at-sign), @include directive:       Options.             (line 180)
 -* @ (at-sign), @include directive <1>:   Include Files.       (line   8)
++* @ (at-sign), @include directive <1>:   Include Files.       (line   9)
+ * @ (at-sign), @include directive <2>:   Glossary.            (line 379)
+ * @ (at-sign), @load directive:          Options.             (line 209)
+ * @ (at-sign), @load directive <1>:      AWKLIBPATH Variable. (line   6)
+ * @ (at-sign), @load directive <2>:      Loading Shared Libraries.
                                                                (line   8)
- * @ (at-sign), @namespace directive:     Changing The Namespace.
+ * @ (at-sign), @load directive <3>:      Auto-set.            (line 205)
+ * @ (at-sign), @load directive <4>:      Using extensions.    (line  10)
+ * @ (at-sign), @load directive <5>:      Using Internal File Ops.
+                                                               (line  15)
+ * @ (at-sign), @namespace directive:     Options.             (line  30)
+ * @ (at-sign), @namespace directive <1>: Options.             (line 140)
+ * @ (at-sign), @namespace directive <2>: Options.             (line 191)
+ * @ (at-sign), @namespace directive <3>: Changing The Namespace.
                                                                (line   6)
+ * @ (at-sign), @namespace directive <4>: Namespace And Features.
+                                                               (line   9)
  * @ (at-sign), @namespace directive, BEGIN, BEGINFILE, END, ENDFILE and: 
Changing The Namespace.
                                                                (line  37)
 +* @ (at-sign), @nsinclude directive:     Inclusion For Namespaces.
 +                                                              (line   6)
  * * (asterisk), * operator, as multiplication operator: Precedence.
                                                                (line  54)
  * * (asterisk), * operator, as regexp operator: Regexp Operator Details.
@@@ -36785,15 -36698,26 +36798,28 @@@
  * asterisk (*), *= operator <1>:         Precedence.          (line  94)
  * at-sign (@), @-notation for indirect function calls: Indirect Calls.
                                                                (line  47)
- * at-sign (@), @include directive:       Include Files.       (line   9)
- * at-sign (@), @load directive:          Loading Shared Libraries.
+ * at-sign (@), @include directive:       Options.             (line 180)
 -* at-sign (@), @include directive <1>:   Include Files.       (line   8)
++* at-sign (@), @include directive <1>:   Include Files.       (line   9)
+ * at-sign (@), @include directive <2>:   Glossary.            (line 379)
+ * at-sign (@), @load directive:          Options.             (line 209)
+ * at-sign (@), @load directive <1>:      AWKLIBPATH Variable. (line   6)
+ * at-sign (@), @load directive <2>:      Loading Shared Libraries.
                                                                (line   8)
- * at-sign (@), @namespace directive:     Changing The Namespace.
+ * at-sign (@), @load directive <3>:      Auto-set.            (line 205)
+ * at-sign (@), @load directive <4>:      Using extensions.    (line  10)
+ * at-sign (@), @load directive <5>:      Using Internal File Ops.
+                                                               (line  15)
+ * at-sign (@), @namespace directive:     Options.             (line  30)
+ * at-sign (@), @namespace directive <1>: Options.             (line 140)
+ * at-sign (@), @namespace directive <2>: Options.             (line 191)
+ * at-sign (@), @namespace directive <3>: Changing The Namespace.
                                                                (line   6)
+ * at-sign (@), @namespace directive <4>: Namespace And Features.
+                                                               (line   9)
  * at-sign (@), @namespace directive, BEGIN, BEGINFILE, END, ENDFILE and: 
Changing The Namespace.
                                                                (line  37)
 +* at-sign (@), @nsinclude directive:     Inclusion For Namespaces.
 +                                                              (line   6)
  * atan2:                                 Numeric Functions.   (line  11)
  * automatic displays, in debugger:       Debugger Info.       (line  24)
  * awf (amazingly workable formatter) program: Glossary.       (line  23)
@@@ -38451,10 -38373,10 +38477,12 @@@
  * in operator, testing if array element exists: Reference to Elements.
                                                                (line  38)
  * in operator, use in loops:             Scanning an Array.   (line  17)
- * @include directive:                    Include Files.       (line   9)
+ * @include directive:                    Options.             (line 180)
 -* @include directive <1>:                Include Files.       (line   8)
++* @include directive <1>:                Include Files.       (line   9)
+ * @include directive <2>:                Glossary.            (line 379)
 -* including files, @include directive:   Include Files.       (line   8)
 +* including files, @include directive:   Include Files.       (line   9)
 +* including files, @nsinclude directive: Inclusion For Namespaces.
 +                                                              (line   6)
  * increment operators:                   Increment Ops.       (line   6)
  * index:                                 String Functions.    (line 174)
  * indexing arrays:                       Array Intro.         (line  51)
@@@ -40000,629 -39931,628 +40039,629 @@@
  
  Tag Table:
  Node: Top1203
 -Node: Foreword347032
 -Node: Foreword451606
 -Node: Preface53150
 -Ref: Preface-Footnote-156136
 -Ref: Preface-Footnote-256245
 -Ref: Preface-Footnote-356479
 -Node: History56625
 -Node: Names59239
 -Ref: Names-Footnote-160393
 -Node: This Manual60556
 -Ref: This Manual-Footnote-167486
 -Node: Conventions67594
 -Node: Manual History70023
 -Ref: Manual History-Footnote-173048
 -Ref: Manual History-Footnote-273089
 -Node: How To Contribute73163
 -Node: Acknowledgments74109
 -Node: Getting Started79098
 -Node: Running gawk81625
 -Node: One-shot82843
 -Node: Read Terminal84142
 -Node: Long86196
 -Node: Executable Scripts87846
 -Ref: Executable Scripts-Footnote-190616
 -Node: Comments90723
 -Node: Quoting93253
 -Node: DOS Quoting98897
 -Node: Sample Data Files100977
 -Node: Very Simple103612
 -Node: Two Rules109866
 -Node: More Complex111818
 -Node: Statements/Lines114238
 -Ref: Statements/Lines-Footnote-1119750
 -Node: Other Features120039
 -Node: When121007
 -Ref: When-Footnote-1122809
 -Node: Intro Summary122874
 -Node: Invoking Gawk123828
 -Node: Command Line125390
 -Node: Options126240
 -Ref: Options-Footnote-1145582
 -Ref: Options-Footnote-2145817
 -Node: Other Arguments145842
 -Node: Naming Standard Input150007
 -Node: Environment Variables151277
 -Node: AWKPATH Variable151851
 -Ref: AWKPATH Variable-Footnote-1155435
 -Ref: AWKPATH Variable-Footnote-2155469
 -Node: AWKLIBPATH Variable155860
 -Ref: AWKLIBPATH Variable-Footnote-1157635
 -Node: Other Environment Variables158030
 -Node: Exit Status162506
 -Node: Include Files163219
 -Node: Loading Shared Libraries167279
 -Node: Obsolete168771
 -Node: Undocumented169519
 -Node: Invoking Summary169816
 -Node: Regexp172841
 -Node: Regexp Usage174335
 -Node: Escape Sequences176436
 -Ref: Escape Sequences-Footnote-1183971
 -Node: Regexp Operators184049
 -Node: Regexp Operator Details184542
 -Ref: Regexp Operator Details-Footnote-1192553
 -Node: Interval Expressions192712
 -Ref: Interval Expressions-Footnote-1194979
 -Node: Bracket Expressions195077
 -Ref: table-char-classes197633
 -Node: Leftmost Longest201131
 -Node: Computed Regexps202487
 -Node: GNU Regexp Operators206002
 -Node: Case-sensitivity211099
 -Ref: Case-sensitivity-Footnote-1214049
 -Ref: Case-sensitivity-Footnote-2214292
 -Node: Regexp Summary214404
 -Node: Reading Files215926
 -Node: Records218245
 -Node: awk split records219520
 -Node: gawk split records224402
 -Ref: gawk split records-Footnote-1229690
 -Node: Fields229727
 -Ref: Fields-Footnote-1232643
 -Node: Nonconstant Fields232763
 -Ref: Nonconstant Fields-Footnote-1235071
 -Node: Changing Fields235287
 -Node: Field Separators241585
 -Node: Default Field Splitting244454
 -Node: Regexp Field Splitting245596
 -Node: Single Character Fields249425
 -Node: Comma Separated Fields250514
 -Ref: table-csv-examples251918
 -Node: Command Line Field Separator254217
 -Node: Full Line Fields257593
 -Ref: Full Line Fields-Footnote-1259171
 -Ref: Full Line Fields-Footnote-2259217
 -Node: Field Splitting Summary259322
 -Node: Constant Size261639
 -Node: Fixed width data262383
 -Node: Skipping intervening265898
 -Node: Allowing trailing data266700
 -Node: Fields with fixed data267761
 -Node: Splitting By Content269383
 -Ref: Splitting By Content-Footnote-1273833
 -Node: More CSV273996
 -Node: FS versus FPAT275654
 -Node: Testing field creation276854
 -Node: Multiple Line278628
 -Node: Getline285097
 -Node: Plain Getline287685
 -Node: Getline/Variable290333
 -Node: Getline/File291529
 -Node: Getline/Variable/File292977
 -Ref: Getline/Variable/File-Footnote-1294622
 -Node: Getline/Pipe294718
 -Node: Getline/Variable/Pipe297526
 -Node: Getline/Coprocess298709
 -Node: Getline/Variable/Coprocess300032
 -Node: Getline Notes300798
 -Node: Getline Summary304775
 -Ref: table-getline-variants305219
 -Node: Read Timeout306123
 -Ref: Read Timeout-Footnote-1310085
 -Node: Retrying Input310143
 -Node: Command-line directories311410
 -Node: Input Summary312348
 -Node: Input Exercises315728
 -Node: Printing316166
 -Node: Print318109
 -Node: Print Examples319610
 -Node: Output Separators322455
 -Node: OFMT324562
 -Node: Printf326275
 -Node: Basic Printf327080
 -Node: Control Letters328715
 -Node: Format Modifiers334161
 -Node: Printf Examples340433
 -Node: Redirection342974
 -Node: Special FD350746
 -Ref: Special FD-Footnote-1354044
 -Node: Special Files354122
 -Node: Other Inherited Files354751
 -Node: Special Network355816
 -Node: Special Caveats356704
 -Node: Close Files And Pipes357687
 -Ref: Close Files And Pipes-Footnote-1363811
 -Node: Close Return Value363959
 -Ref: table-close-pipe-return-values365230
 -Ref: Close Return Value-Footnote-1366061
 -Node: Noflush366217
 -Node: Nonfatal367725
 -Node: Output Summary370140
 -Node: Output Exercises371426
 -Node: Expressions372117
 -Node: Values373317
 -Node: Constants373995
 -Node: Scalar Constants374690
 -Ref: Scalar Constants-Footnote-1377266
 -Ref: Scalar Constants-Footnote-2377516
 -Node: Nondecimal-numbers377596
 -Node: Regexp Constants380709
 -Node: Using Constant Regexps381255
 -Node: Standard Regexp Constants381901
 -Node: Strong Regexp Constants385197
 -Node: Variables389040
 -Node: Using Variables389705
 -Node: Assignment Options391679
 -Node: Conversion394230
 -Node: Strings And Numbers394762
 -Ref: Strings And Numbers-Footnote-1397972
 -Node: Locale influences conversions398081
 -Ref: table-locale-affects400919
 -Node: All Operators401561
 -Node: Arithmetic Ops402202
 -Node: Concatenation405025
 -Ref: Concatenation-Footnote-1407961
 -Node: Assignment Ops408080
 -Ref: table-assign-ops413207
 -Node: Increment Ops414588
 -Node: Truth Values and Conditions418179
 -Node: Truth Values419273
 -Node: Typing and Comparison420353
 -Node: Variable Typing421185
 -Ref: Variable Typing-Footnote-1427829
 -Ref: Variable Typing-Footnote-2427909
 -Node: Comparison Operators427990
 -Ref: table-relational-ops428417
 -Node: POSIX String Comparison432093
 -Ref: POSIX String Comparison-Footnote-1433850
 -Ref: POSIX String Comparison-Footnote-2433993
 -Node: Boolean Ops434077
 -Ref: Boolean Ops-Footnote-1438751
 -Node: Conditional Exp438847
 -Node: Function Calls440627
 -Node: Precedence444574
 -Node: Locales448437
 -Node: Expressions Summary450113
 -Node: Patterns and Actions452768
 -Node: Pattern Overview453904
 -Node: Regexp Patterns455629
 -Node: Expression Patterns456175
 -Node: Ranges460080
 -Node: BEGIN/END463254
 -Node: Using BEGIN/END464063
 -Ref: Using BEGIN/END-Footnote-1466971
 -Node: I/O And BEGIN/END467081
 -Node: BEGINFILE/ENDFILE469563
 -Node: Empty472993
 -Node: Using Shell Variables473310
 -Node: Action Overview475646
 -Node: Statements478082
 -Node: If Statement479978
 -Node: While Statement481541
 -Node: Do Statement483629
 -Node: For Statement484813
 -Node: Switch Statement488168
 -Node: Break Statement490717
 -Node: Continue Statement492909
 -Node: Next Statement494840
 -Node: Nextfile Statement497319
 -Node: Exit Statement500172
 -Node: Built-in Variables502699
 -Node: User-modified503876
 -Node: Auto-set512083
 -Ref: Auto-set-Footnote-1530167
 -Ref: Auto-set-Footnote-2530385
 -Node: ARGC and ARGV530441
 -Node: Pattern Action Summary534870
 -Node: Arrays537476
 -Node: Array Basics538849
 -Node: Array Intro539697
 -Ref: figure-array-elements541708
 -Ref: Array Intro-Footnote-1544561
 -Node: Reference to Elements544693
 -Node: Assigning Elements547213
 -Node: Array Example547708
 -Node: Scanning an Array549670
 -Node: Controlling Scanning552765
 -Ref: Controlling Scanning-Footnote-1559400
 -Node: Numeric Array Subscripts559724
 -Node: Uninitialized Subscripts561992
 -Node: Delete563665
 -Ref: Delete-Footnote-1566477
 -Node: Multidimensional566534
 -Node: Multiscanning569737
 -Node: Arrays of Arrays571404
 -Node: Arrays Summary575708
 -Node: Functions577895
 -Node: Built-in579027
 -Node: Calling Built-in580216
 -Node: Boolean Functions582256
 -Node: Numeric Functions582818
 -Ref: Numeric Functions-Footnote-1587003
 -Ref: Numeric Functions-Footnote-2587686
 -Ref: Numeric Functions-Footnote-3587738
 -Node: String Functions588014
 -Ref: String Functions-Footnote-1614465
 -Ref: String Functions-Footnote-2614597
 -Ref: String Functions-Footnote-3614853
 -Node: Gory Details614940
 -Ref: table-sub-escapes616949
 -Ref: table-sub-proposed618580
 -Ref: table-posix-sub620075
 -Ref: table-gensub-escapes621748
 -Ref: Gory Details-Footnote-1622667
 -Node: I/O Functions622821
 -Ref: table-system-return-values629497
 -Ref: I/O Functions-Footnote-1631659
 -Ref: I/O Functions-Footnote-2631807
 -Node: Time Functions631927
 -Ref: Time Functions-Footnote-1643639
 -Ref: Time Functions-Footnote-2643707
 -Ref: Time Functions-Footnote-3643869
 -Ref: Time Functions-Footnote-4643980
 -Ref: Time Functions-Footnote-5644096
 -Ref: Time Functions-Footnote-6644323
 -Node: Bitwise Functions644601
 -Ref: table-bitwise-ops645199
 -Ref: Bitwise Functions-Footnote-1651441
 -Ref: Bitwise Functions-Footnote-2651618
 -Node: Type Functions651813
 -Node: I18N Functions653984
 -Node: User-defined655719
 -Node: Definition Syntax656465
 -Ref: Definition Syntax-Footnote-1662283
 -Node: Function Example662358
 -Ref: Function Example-Footnote-1665337
 -Node: Function Calling665359
 -Node: Calling A Function665951
 -Node: Variable Scope666921
 -Node: Pass By Value/Reference669975
 -Node: Function Caveats672703
 -Ref: Function Caveats-Footnote-1674794
 -Node: Return Statement674914
 -Node: Dynamic Typing677946
 -Node: Dynamic Typing Awk678524
 -Node: Dynamic Typing Gawk680662
 -Node: Indirect Calls684032
 -Node: Functions Summary695169
 -Node: Library Functions698135
 -Ref: Library Functions-Footnote-1701683
 -Ref: Library Functions-Footnote-2701828
 -Node: Library Names702003
 -Ref: Library Names-Footnote-1705774
 -Ref: Library Names-Footnote-2706001
 -Node: General Functions706095
 -Node: Strtonum Function707365
 -Node: Assert Function710447
 -Node: Round Function713897
 -Node: Cliff Random Function715469
 -Node: Ordinal Functions716493
 -Ref: Ordinal Functions-Footnote-1719596
 -Ref: Ordinal Functions-Footnote-2719848
 -Node: Join Function720062
 -Ref: Join Function-Footnote-1721860
 -Node: Getlocaltime Function722064
 -Node: Readfile Function725838
 -Node: Shell Quoting727867
 -Node: Isnumeric Function729323
 -Node: To CSV Function730759
 -Node: Data File Management732851
 -Node: Filetrans Function733483
 -Node: Rewind Function737759
 -Node: File Checking739730
 -Ref: File Checking-Footnote-1741096
 -Node: Empty Files741301
 -Node: Ignoring Assigns743364
 -Node: Getopt Function744938
 -Ref: Getopt Function-Footnote-1760756
 -Node: Passwd Functions760968
 -Ref: Passwd Functions-Footnote-1770103
 -Node: Group Functions770191
 -Ref: Group Functions-Footnote-1778315
 -Node: Walking Arrays778526
 -Node: Library Functions Summary781572
 -Node: Library Exercises782992
 -Node: Sample Programs783477
 -Node: Running Examples784259
 -Node: Clones785011
 -Node: Cut Program786279
 -Node: Egrep Program796703
 -Node: Id Program806008
 -Node: Split Program816100
 -Ref: Split Program-Footnote-1826313
 -Node: Tee Program826498
 -Node: Uniq Program829404
 -Node: Wc Program837264
 -Node: Bytes vs. Characters837659
 -Node: Using extensions839259
 -Node: wc program840037
 -Node: Miscellaneous Programs845030
 -Node: Dupword Program846255
 -Node: Alarm Program848304
 -Node: Translate Program853207
 -Ref: Translate Program-Footnote-1857916
 -Node: Labels Program858194
 -Ref: Labels Program-Footnote-1861629
 -Node: Word Sorting861713
 -Node: History Sorting865887
 -Node: Extract Program868160
 -Node: Simple Sed876413
 -Node: Igawk Program879623
 -Ref: Igawk Program-Footnote-1894833
 -Ref: Igawk Program-Footnote-2895039
 -Ref: Igawk Program-Footnote-3895169
 -Node: Anagram Program895296
 -Node: Signature Program898382
 -Node: Programs Summary899632
 -Node: Programs Exercises900886
 -Ref: Programs Exercises-Footnote-1905188
 -Node: Advanced Features905274
 -Node: Nondecimal Data907755
 -Node: Boolean Typed Values909385
 -Node: Array Sorting911342
 -Node: Controlling Array Traversal912071
 -Ref: Controlling Array Traversal-Footnote-1920574
 -Node: Array Sorting Functions920696
 -Ref: Array Sorting Functions-Footnote-1926793
 -Node: Two-way I/O927001
 -Ref: Two-way I/O-Footnote-1934972
 -Ref: Two-way I/O-Footnote-2935163
 -Node: TCP/IP Networking935245
 -Node: Profiling938413
 -Node: Persistent Memory948083
 -Ref: Persistent Memory-Footnote-1957655
 -Node: Extension Philosophy957786
 -Node: Advanced Features Summary959313
 -Node: Internationalization961579
 -Node: I18N and L10N963281
 -Node: Explaining gettext963976
 -Ref: Explaining gettext-Footnote-1970112
 -Ref: Explaining gettext-Footnote-2970305
 -Node: Programmer i18n970470
 -Ref: Programmer i18n-Footnote-1975582
 -Node: Translator i18n975631
 -Node: String Extraction976461
 -Ref: String Extraction-Footnote-1977637
 -Node: Printf Ordering977735
 -Ref: Printf Ordering-Footnote-1980593
 -Node: I18N Portability980661
 -Ref: I18N Portability-Footnote-1983221
 -Node: I18N Example983288
 -Ref: I18N Example-Footnote-1986682
 -Ref: I18N Example-Footnote-2986755
 -Node: Gawk I18N986872
 -Node: I18N Summary987526
 -Node: Debugger988923
 -Node: Debugging989943
 -Node: Debugging Concepts990392
 -Node: Debugging Terms992209
 -Node: Awk Debugging994812
 -Ref: Awk Debugging-Footnote-1995785
 -Node: Sample Debugging Session995921
 -Node: Debugger Invocation996471
 -Node: Finding The Bug998096
 -Node: List of Debugger Commands1004728
 -Node: Breakpoint Control1006105
 -Node: Debugger Execution Control1009927
 -Node: Viewing And Changing Data1013401
 -Node: Execution Stack1017135
 -Node: Debugger Info1018816
 -Node: Miscellaneous Debugger Commands1023111
 -Node: Readline Support1028352
 -Node: Limitations1029296
 -Node: Debugging Summary1031920
 -Node: Namespaces1033219
 -Node: Global Namespace1034346
 -Node: Qualified Names1035780
 -Node: Default Namespace1036815
 -Node: Changing The Namespace1037588
 -Node: Naming Rules1039270
 -Node: Internal Name Management1041225
 -Node: Namespace Example1042295
 -Node: Namespace And Features1044872
 -Node: Namespace Summary1046327
 -Node: Arbitrary Precision Arithmetic1047838
 -Node: Computer Arithmetic1049357
 -Ref: table-numeric-ranges1053282
 -Ref: table-floating-point-ranges1053779
 -Ref: Computer Arithmetic-Footnote-11054437
 -Node: Math Definitions1054494
 -Ref: table-ieee-formats1057526
 -Node: MPFR features1058099
 -Node: MPFR On Parole1058552
 -Ref: MPFR On Parole-Footnote-11059393
 -Node: MPFR Intro1059552
 -Node: FP Math Caution1061236
 -Ref: FP Math Caution-Footnote-11062308
 -Node: Inexactness of computations1062681
 -Node: Inexact representation1063712
 -Node: Comparing FP Values1065093
 -Node: Errors accumulate1066351
 -Node: Strange values1067816
 -Ref: Strange values-Footnote-11070470
 -Node: Getting Accuracy1070575
 -Node: Try To Round1073312
 -Node: Setting precision1074219
 -Ref: table-predefined-precision-strings1074924
 -Node: Setting the rounding mode1076808
 -Ref: table-gawk-rounding-modes1077190
 -Ref: Setting the rounding mode-Footnote-11081242
 -Node: Arbitrary Precision Integers1081425
 -Ref: Arbitrary Precision Integers-Footnote-11084635
 -Node: Checking for MPFR1084788
 -Node: POSIX Floating Point Problems1086278
 -Ref: POSIX Floating Point Problems-Footnote-11091098
 -Node: Floating point summary1091136
 -Node: Dynamic Extensions1093392
 -Node: Extension Intro1094989
 -Node: Plugin License1096291
 -Node: Extension Mechanism Outline1097104
 -Ref: figure-load-extension1097555
 -Ref: figure-register-new-function1099133
 -Ref: figure-call-new-function1100242
 -Node: Extension API Description1102357
 -Node: Extension API Functions Introduction1104086
 -Ref: table-api-std-headers1105980
 -Node: General Data Types1110421
 -Ref: General Data Types-Footnote-11119567
 -Node: Memory Allocation Functions1119870
 -Ref: Memory Allocation Functions-Footnote-11124587
 -Node: Constructor Functions1124686
 -Node: API Ownership of MPFR and GMP Values1128587
 -Node: Registration Functions1130140
 -Node: Extension Functions1130844
 -Node: Exit Callback Functions1136418
 -Node: Extension Version String1137732
 -Node: Input Parsers1138427
 -Node: Output Wrappers1153046
 -Node: Two-way processors1157888
 -Node: Printing Messages1160241
 -Ref: Printing Messages-Footnote-11161452
 -Node: Updating ERRNO1161605
 -Node: Requesting Values1162404
 -Ref: table-value-types-returned1163157
 -Node: Accessing Parameters1165216
 -Node: Symbol Table Access1166497
 -Node: Symbol table by name1167009
 -Ref: Symbol table by name-Footnote-11170210
 -Node: Symbol table by cookie1170342
 -Ref: Symbol table by cookie-Footnote-11174611
 -Node: Cached values1174675
 -Ref: Cached values-Footnote-11178307
 -Node: Array Manipulation1178464
 -Ref: Array Manipulation-Footnote-11179563
 -Node: Array Data Types1179600
 -Ref: Array Data Types-Footnote-11182418
 -Node: Array Functions1182514
 -Node: Flattening Arrays1187543
 -Node: Creating Arrays1194591
 -Node: Redirection API1199433
 -Node: Extension API Variables1202450
 -Node: Extension Versioning1203173
 -Ref: gawk-api-version1203602
 -Node: Extension GMP/MPFR Versioning1205389
 -Node: Extension API Informational Variables1207093
 -Node: Extension API Boilerplate1208346
 -Node: Changes from API V11212476
 -Node: Finding Extensions1214108
 -Node: Extension Example1214683
 -Node: Internal File Description1215505
 -Node: Internal File Ops1219797
 -Ref: Internal File Ops-Footnote-11231347
 -Node: Using Internal File Ops1231495
 -Ref: Using Internal File Ops-Footnote-11233928
 -Node: Extension Samples1234206
 -Node: Extension Sample File Functions1235775
 -Node: Extension Sample Fnmatch1243900
 -Node: Extension Sample Fork1245495
 -Node: Extension Sample Inplace1246771
 -Node: Extension Sample Ord1250873
 -Node: Extension Sample Readdir1251749
 -Ref: table-readdir-file-types1252538
 -Node: Extension Sample Revout1253894
 -Node: Extension Sample Rev2way1254491
 -Node: Extension Sample Read write array1255243
 -Node: Extension Sample Readfile1258517
 -Node: Extension Sample Time1259648
 -Node: Extension Sample API Tests1261648
 -Node: gawkextlib1262156
 -Node: Extension summary1265188
 -Node: Extension Exercises1269036
 -Node: Language History1270306
 -Node: V7/SVR3.11272018
 -Node: SVR41274368
 -Node: POSIX1275900
 -Node: BTL1277325
 -Node: POSIX/GNU1278092
 -Ref: Gawk Extension Functions1281482
 -Node: Feature History1284906
 -Node: Common Extensions1304747
 -Node: Ranges and Locales1306222
 -Ref: Ranges and Locales-Footnote-11311007
 -Ref: Ranges and Locales-Footnote-21311034
 -Ref: Ranges and Locales-Footnote-31311269
 -Node: Contributors1311492
 -Node: History summary1317683
 -Node: Installation1319125
 -Node: Gawk Distribution1320089
 -Node: Getting1320581
 -Node: Extracting1321580
 -Node: Distribution contents1323286
 -Node: Unix Installation1331176
 -Node: Quick Installation1331996
 -Node: Compiling with MPFR1334536
 -Node: Shell Startup Files1335242
 -Node: Additional Configuration Options1336399
 -Node: Configuration Philosophy1338782
 -Node: Compiling from Git1341282
 -Node: Building the Documentation1341841
 -Node: Non-Unix Installation1343253
 -Node: PC Installation1343729
 -Node: PC Binary Installation1344598
 -Node: PC Compiling1345491
 -Node: PC Using1346669
 -Node: Cygwin1350385
 -Node: MSYS1351637
 -Node: OpenVMS Installation1352263
 -Node: OpenVMS Compilation1352944
 -Ref: OpenVMS Compilation-Footnote-11354427
 -Node: OpenVMS Dynamic Extensions1354485
 -Node: OpenVMS Installation Details1356121
 -Node: OpenVMS Running1358552
 -Node: OpenVMS GNV1362689
 -Node: Bugs1363444
 -Node: Bug definition1364364
 -Node: Bug address1367965
 -Node: Usenet1371534
 -Node: Performance bugs1372747
 -Node: Asking for help1375751
 -Node: Maintainers1377738
 -Node: Other Versions1378765
 -Node: Installation summary1388369
 -Node: Notes1389751
 -Node: Compatibility Mode1390561
 -Node: Additions1391383
 -Node: Accessing The Source1392328
 -Node: Adding Code1393859
 -Node: New Ports1400970
 -Node: Derived Files1405473
 -Ref: Derived Files-Footnote-11411284
 -Ref: Derived Files-Footnote-21411319
 -Ref: Derived Files-Footnote-31411930
 -Node: Future Extensions1412044
 -Node: Implementation Limitations1412714
 -Node: Extension Design1413956
 -Node: Old Extension Problems1415116
 -Ref: Old Extension Problems-Footnote-11416688
 -Node: Extension New Mechanism Goals1416749
 -Ref: Extension New Mechanism Goals-Footnote-11420219
 -Node: Extension Other Design Decisions1420420
 -Node: Extension Future Growth1422617
 -Node: Notes summary1423237
 -Node: Basic Concepts1424447
 -Node: Basic High Level1425132
 -Ref: figure-general-flow1425414
 -Ref: figure-process-flow1426116
 -Ref: Basic High Level-Footnote-11429486
 -Node: Basic Data Typing1429675
 -Node: Glossary1433083
 -Node: Copying1465961
 -Node: GNU Free Documentation License1503519
 -Node: Index1528642
 +Node: Foreword347161
 +Node: Foreword451735
 +Node: Preface53279
 +Ref: Preface-Footnote-156265
 +Ref: Preface-Footnote-256374
 +Ref: Preface-Footnote-356608
 +Node: History56754
 +Node: Names59368
 +Ref: Names-Footnote-160522
 +Node: This Manual60685
 +Ref: This Manual-Footnote-167615
 +Node: Conventions67723
 +Node: Manual History70152
 +Ref: Manual History-Footnote-173177
 +Ref: Manual History-Footnote-273218
 +Node: How To Contribute73292
 +Node: Acknowledgments74238
 +Node: Getting Started79227
 +Node: Running gawk81754
 +Node: One-shot82972
 +Node: Read Terminal84271
 +Node: Long86325
 +Node: Executable Scripts87975
 +Ref: Executable Scripts-Footnote-190745
 +Node: Comments90852
 +Node: Quoting93382
 +Node: DOS Quoting99026
 +Node: Sample Data Files101106
 +Node: Very Simple103741
 +Node: Two Rules109995
 +Node: More Complex111947
 +Node: Statements/Lines114367
 +Ref: Statements/Lines-Footnote-1119879
 +Node: Other Features120168
 +Node: When121136
 +Ref: When-Footnote-1122938
 +Node: Intro Summary123003
 +Node: Invoking Gawk123957
 +Node: Command Line125519
 +Node: Options126369
- Ref: Options-Footnote-1145709
- Ref: Options-Footnote-2145944
- Node: Other Arguments145969
- Node: Naming Standard Input150134
- Node: Environment Variables151404
- Node: AWKPATH Variable151978
- Ref: AWKPATH Variable-Footnote-1155562
- Ref: AWKPATH Variable-Footnote-2155596
- Node: AWKLIBPATH Variable155987
- Ref: AWKLIBPATH Variable-Footnote-1157760
- Node: Other Environment Variables158155
- Node: Exit Status162631
- Node: Include Files163344
- Node: Loading Shared Libraries167581
- Node: Obsolete169071
- Node: Undocumented169819
- Node: Invoking Summary170116
- Node: Regexp173141
- Node: Regexp Usage174635
- Node: Escape Sequences176736
- Ref: Escape Sequences-Footnote-1184271
- Node: Regexp Operators184349
- Node: Regexp Operator Details184842
- Ref: Regexp Operator Details-Footnote-1192853
- Node: Interval Expressions193012
- Ref: Interval Expressions-Footnote-1195279
- Node: Bracket Expressions195377
- Ref: table-char-classes197933
- Node: Leftmost Longest201431
- Node: Computed Regexps202787
- Node: GNU Regexp Operators206302
- Node: Case-sensitivity211399
- Ref: Case-sensitivity-Footnote-1214349
- Ref: Case-sensitivity-Footnote-2214592
- Node: Regexp Summary214704
- Node: Reading Files216226
- Node: Records218545
- Node: awk split records219820
- Node: gawk split records224702
- Ref: gawk split records-Footnote-1229990
- Node: Fields230027
- Ref: Fields-Footnote-1232943
- Node: Nonconstant Fields233063
- Ref: Nonconstant Fields-Footnote-1235371
- Node: Changing Fields235587
- Node: Field Separators241885
- Node: Default Field Splitting244754
- Node: Regexp Field Splitting245896
- Node: Single Character Fields249725
- Node: Comma Separated Fields250814
- Ref: table-csv-examples252218
- Node: Command Line Field Separator254517
- Node: Full Line Fields257893
- Ref: Full Line Fields-Footnote-1259471
- Ref: Full Line Fields-Footnote-2259517
- Node: Field Splitting Summary259622
- Node: Constant Size261939
- Node: Fixed width data262683
- Node: Skipping intervening266198
- Node: Allowing trailing data267000
- Node: Fields with fixed data268061
- Node: Splitting By Content269683
- Ref: Splitting By Content-Footnote-1274133
- Node: More CSV274296
- Node: FS versus FPAT275954
- Node: Testing field creation277154
- Node: Multiple Line278928
- Node: Getline285397
- Node: Plain Getline287985
- Node: Getline/Variable290633
- Node: Getline/File291829
- Node: Getline/Variable/File293277
- Ref: Getline/Variable/File-Footnote-1294922
- Node: Getline/Pipe295018
- Node: Getline/Variable/Pipe297826
- Node: Getline/Coprocess299009
- Node: Getline/Variable/Coprocess300332
- Node: Getline Notes301098
- Node: Getline Summary305075
- Ref: table-getline-variants305519
- Node: Read Timeout306423
- Ref: Read Timeout-Footnote-1310385
- Node: Retrying Input310443
- Node: Command-line directories311710
- Node: Input Summary312648
- Node: Input Exercises316028
- Node: Printing316466
- Node: Print318409
- Node: Print Examples319910
- Node: Output Separators322755
- Node: OFMT324862
- Node: Printf326575
- Node: Basic Printf327380
- Node: Control Letters329015
- Node: Format Modifiers334461
- Node: Printf Examples340733
- Node: Redirection343274
- Node: Special FD351046
- Ref: Special FD-Footnote-1354344
- Node: Special Files354422
- Node: Other Inherited Files355051
- Node: Special Network356116
- Node: Special Caveats357004
- Node: Close Files And Pipes357987
- Ref: Close Files And Pipes-Footnote-1364111
- Node: Close Return Value364259
- Ref: table-close-pipe-return-values365530
- Ref: Close Return Value-Footnote-1366361
- Node: Noflush366517
- Node: Nonfatal368025
- Node: Output Summary370440
- Node: Output Exercises371726
- Node: Expressions372417
- Node: Values373617
- Node: Constants374295
- Node: Scalar Constants374990
- Ref: Scalar Constants-Footnote-1377566
- Ref: Scalar Constants-Footnote-2377816
- Node: Nondecimal-numbers377896
- Node: Regexp Constants381009
- Node: Using Constant Regexps381555
- Node: Standard Regexp Constants382201
- Node: Strong Regexp Constants385497
- Node: Variables389340
- Node: Using Variables390005
- Node: Assignment Options391979
- Node: Conversion394530
- Node: Strings And Numbers395062
- Ref: Strings And Numbers-Footnote-1398272
- Node: Locale influences conversions398381
- Ref: table-locale-affects401219
- Node: All Operators401861
- Node: Arithmetic Ops402502
- Node: Concatenation405325
- Ref: Concatenation-Footnote-1408261
- Node: Assignment Ops408380
- Ref: table-assign-ops413507
- Node: Increment Ops414888
- Node: Truth Values and Conditions418479
- Node: Truth Values419573
- Node: Typing and Comparison420653
- Node: Variable Typing421485
- Ref: Variable Typing-Footnote-1428129
- Ref: Variable Typing-Footnote-2428209
- Node: Comparison Operators428290
- Ref: table-relational-ops428717
- Node: POSIX String Comparison432393
- Ref: POSIX String Comparison-Footnote-1434150
- Ref: POSIX String Comparison-Footnote-2434293
- Node: Boolean Ops434377
- Ref: Boolean Ops-Footnote-1439051
- Node: Conditional Exp439147
- Node: Function Calls440927
- Node: Precedence444874
- Node: Locales448737
- Node: Expressions Summary450413
- Node: Patterns and Actions453068
- Node: Pattern Overview454204
- Node: Regexp Patterns455929
- Node: Expression Patterns456475
- Node: Ranges460380
- Node: BEGIN/END463554
- Node: Using BEGIN/END464363
- Ref: Using BEGIN/END-Footnote-1467271
- Node: I/O And BEGIN/END467381
- Node: BEGINFILE/ENDFILE469863
- Node: Empty473293
- Node: Using Shell Variables473610
- Node: Action Overview475946
- Node: Statements478382
- Node: If Statement480278
- Node: While Statement481841
- Node: Do Statement483929
- Node: For Statement485113
- Node: Switch Statement488468
- Node: Break Statement491017
- Node: Continue Statement493209
- Node: Next Statement495140
- Node: Nextfile Statement497619
- Node: Exit Statement500472
- Node: Built-in Variables502999
- Node: User-modified504176
- Node: Auto-set512383
- Ref: Auto-set-Footnote-1530467
- Ref: Auto-set-Footnote-2530685
- Node: ARGC and ARGV530741
- Node: Pattern Action Summary535170
- Node: Arrays537776
- Node: Array Basics539149
- Node: Array Intro539997
- Ref: figure-array-elements542008
- Ref: Array Intro-Footnote-1544861
- Node: Reference to Elements544993
- Node: Assigning Elements547513
- Node: Array Example548008
- Node: Scanning an Array549970
- Node: Controlling Scanning553065
- Ref: Controlling Scanning-Footnote-1559700
- Node: Numeric Array Subscripts560024
- Node: Uninitialized Subscripts562292
- Node: Delete563965
- Ref: Delete-Footnote-1566777
- Node: Multidimensional566834
- Node: Multiscanning570037
- Node: Arrays of Arrays571704
- Node: Arrays Summary576008
- Node: Functions578195
- Node: Built-in579327
- Node: Calling Built-in580516
- Node: Boolean Functions582556
- Node: Numeric Functions583118
- Ref: Numeric Functions-Footnote-1587303
- Ref: Numeric Functions-Footnote-2587986
- Ref: Numeric Functions-Footnote-3588038
- Node: String Functions588314
- Ref: String Functions-Footnote-1614765
- Ref: String Functions-Footnote-2614897
- Ref: String Functions-Footnote-3615153
- Node: Gory Details615240
- Ref: table-sub-escapes617249
- Ref: table-sub-proposed618880
- Ref: table-posix-sub620375
- Ref: table-gensub-escapes622048
- Ref: Gory Details-Footnote-1622967
- Node: I/O Functions623121
- Ref: table-system-return-values629797
- Ref: I/O Functions-Footnote-1631959
- Ref: I/O Functions-Footnote-2632107
- Node: Time Functions632227
- Ref: Time Functions-Footnote-1643939
- Ref: Time Functions-Footnote-2644007
- Ref: Time Functions-Footnote-3644169
- Ref: Time Functions-Footnote-4644280
- Ref: Time Functions-Footnote-5644396
- Ref: Time Functions-Footnote-6644623
- Node: Bitwise Functions644901
- Ref: table-bitwise-ops645499
- Ref: Bitwise Functions-Footnote-1651741
- Ref: Bitwise Functions-Footnote-2651918
- Node: Type Functions652113
- Node: I18N Functions654284
- Node: User-defined656019
- Node: Definition Syntax656765
- Ref: Definition Syntax-Footnote-1662583
- Node: Function Example662658
- Ref: Function Example-Footnote-1665637
- Node: Function Calling665659
- Node: Calling A Function666251
- Node: Variable Scope667221
- Node: Pass By Value/Reference670275
- Node: Function Caveats673003
- Ref: Function Caveats-Footnote-1675094
- Node: Return Statement675214
- Node: Dynamic Typing678246
- Node: Dynamic Typing Awk678824
- Node: Dynamic Typing Gawk680962
- Node: Indirect Calls684332
- Node: Functions Summary695469
- Node: Library Functions698435
- Ref: Library Functions-Footnote-1701983
- Ref: Library Functions-Footnote-2702128
- Node: Library Names702303
- Ref: Library Names-Footnote-1706074
- Ref: Library Names-Footnote-2706301
- Node: General Functions706395
- Node: Strtonum Function707665
- Node: Assert Function710747
- Node: Round Function714197
- Node: Cliff Random Function715769
- Node: Ordinal Functions716793
- Ref: Ordinal Functions-Footnote-1719896
- Ref: Ordinal Functions-Footnote-2720148
- Node: Join Function720362
- Ref: Join Function-Footnote-1722160
- Node: Getlocaltime Function722364
- Node: Readfile Function726138
- Node: Shell Quoting728167
- Node: Isnumeric Function729623
- Node: To CSV Function731059
- Node: Data File Management733151
- Node: Filetrans Function733783
- Node: Rewind Function738059
- Node: File Checking740030
- Ref: File Checking-Footnote-1741396
- Node: Empty Files741601
- Node: Ignoring Assigns743664
- Node: Getopt Function745238
- Ref: Getopt Function-Footnote-1761056
- Node: Passwd Functions761268
- Ref: Passwd Functions-Footnote-1770403
- Node: Group Functions770491
- Ref: Group Functions-Footnote-1778615
- Node: Walking Arrays778826
- Node: Library Functions Summary781872
- Node: Library Exercises783292
- Node: Sample Programs783777
- Node: Running Examples784559
- Node: Clones785311
- Node: Cut Program786579
- Node: Egrep Program797003
- Node: Id Program806308
- Node: Split Program816400
- Ref: Split Program-Footnote-1826613
- Node: Tee Program826798
- Node: Uniq Program829704
- Node: Wc Program837564
- Node: Bytes vs. Characters837959
- Node: Using extensions839559
- Node: wc program840337
- Node: Miscellaneous Programs845330
- Node: Dupword Program846555
- Node: Alarm Program848604
- Node: Translate Program853507
- Ref: Translate Program-Footnote-1858216
- Node: Labels Program858494
- Ref: Labels Program-Footnote-1861929
- Node: Word Sorting862013
- Node: History Sorting866187
- Node: Extract Program868460
- Node: Simple Sed876713
- Node: Igawk Program879923
- Ref: Igawk Program-Footnote-1895133
- Ref: Igawk Program-Footnote-2895339
- Ref: Igawk Program-Footnote-3895469
- Node: Anagram Program895596
- Node: Signature Program898682
- Node: Programs Summary899932
- Node: Programs Exercises901186
- Ref: Programs Exercises-Footnote-1905488
- Node: Advanced Features905574
- Node: Nondecimal Data908055
- Node: Boolean Typed Values909685
- Node: Array Sorting911642
- Node: Controlling Array Traversal912371
- Ref: Controlling Array Traversal-Footnote-1920874
- Node: Array Sorting Functions920996
- Ref: Array Sorting Functions-Footnote-1927093
- Node: Two-way I/O927301
- Ref: Two-way I/O-Footnote-1935272
- Ref: Two-way I/O-Footnote-2935463
- Node: TCP/IP Networking935545
- Node: Profiling938713
- Node: Persistent Memory948383
- Ref: Persistent Memory-Footnote-1957955
- Node: Extension Philosophy958086
- Node: Advanced Features Summary959613
- Node: Internationalization961879
- Node: I18N and L10N963581
- Node: Explaining gettext964276
- Ref: Explaining gettext-Footnote-1970412
- Ref: Explaining gettext-Footnote-2970605
- Node: Programmer i18n970770
- Ref: Programmer i18n-Footnote-1975882
- Node: Translator i18n975931
- Node: String Extraction976761
- Ref: String Extraction-Footnote-1977937
- Node: Printf Ordering978035
- Ref: Printf Ordering-Footnote-1980893
- Node: I18N Portability980961
- Ref: I18N Portability-Footnote-1983521
- Node: I18N Example983588
- Ref: I18N Example-Footnote-1986982
- Ref: I18N Example-Footnote-2987055
- Node: Gawk I18N987172
- Node: I18N Summary987826
- Node: Debugger989223
- Node: Debugging990243
- Node: Debugging Concepts990692
- Node: Debugging Terms992509
- Node: Awk Debugging995112
- Ref: Awk Debugging-Footnote-1996085
- Node: Sample Debugging Session996221
- Node: Debugger Invocation996771
- Node: Finding The Bug998396
- Node: List of Debugger Commands1005028
- Node: Breakpoint Control1006405
- Node: Debugger Execution Control1010227
- Node: Viewing And Changing Data1013701
- Node: Execution Stack1017435
- Node: Debugger Info1019116
- Node: Miscellaneous Debugger Commands1023411
- Node: Readline Support1028652
- Node: Limitations1029596
- Node: Debugging Summary1032220
- Node: Namespaces1033519
- Node: Global Namespace1034759
- Node: Qualified Names1036193
- Node: Default Namespace1037228
- Node: Changing The Namespace1038001
- Node: Naming Rules1039683
- Node: Internal Name Management1041638
- Node: Namespace Example1042708
- Node: Inclusion For Namespaces1045287
- Node: Namespace And Features1047730
- Node: Namespace Summary1049192
- Node: Arbitrary Precision Arithmetic1050705
- Node: Computer Arithmetic1052224
- Ref: table-numeric-ranges1056149
- Ref: table-floating-point-ranges1056646
- Ref: Computer Arithmetic-Footnote-11057304
- Node: Math Definitions1057361
- Ref: table-ieee-formats1060393
- Node: MPFR features1060966
- Node: MPFR On Parole1061419
- Ref: MPFR On Parole-Footnote-11062260
- Node: MPFR Intro1062419
- Node: FP Math Caution1064103
- Ref: FP Math Caution-Footnote-11065175
- Node: Inexactness of computations1065548
- Node: Inexact representation1066579
- Node: Comparing FP Values1067960
- Node: Errors accumulate1069218
- Node: Strange values1070683
- Ref: Strange values-Footnote-11073337
- Node: Getting Accuracy1073442
- Node: Try To Round1076179
- Node: Setting precision1077086
- Ref: table-predefined-precision-strings1077791
- Node: Setting the rounding mode1079675
- Ref: table-gawk-rounding-modes1080057
- Ref: Setting the rounding mode-Footnote-11084109
- Node: Arbitrary Precision Integers1084292
- Ref: Arbitrary Precision Integers-Footnote-11087502
- Node: Checking for MPFR1087655
- Node: POSIX Floating Point Problems1089145
- Ref: POSIX Floating Point Problems-Footnote-11093965
- Node: Floating point summary1094003
- Node: Dynamic Extensions1096259
- Node: Extension Intro1097856
- Node: Plugin License1099158
- Node: Extension Mechanism Outline1099971
- Ref: figure-load-extension1100422
- Ref: figure-register-new-function1102000
- Ref: figure-call-new-function1103109
- Node: Extension API Description1105224
- Node: Extension API Functions Introduction1106953
- Ref: table-api-std-headers1108847
- Node: General Data Types1113288
- Ref: General Data Types-Footnote-11122434
- Node: Memory Allocation Functions1122737
- Ref: Memory Allocation Functions-Footnote-11127454
- Node: Constructor Functions1127553
- Node: API Ownership of MPFR and GMP Values1131454
- Node: Registration Functions1133007
- Node: Extension Functions1133711
- Node: Exit Callback Functions1139285
- Node: Extension Version String1140599
- Node: Input Parsers1141294
- Node: Output Wrappers1155913
- Node: Two-way processors1160755
- Node: Printing Messages1163108
- Ref: Printing Messages-Footnote-11164319
- Node: Updating ERRNO1164472
- Node: Requesting Values1165271
- Ref: table-value-types-returned1166024
- Node: Accessing Parameters1168083
- Node: Symbol Table Access1169364
- Node: Symbol table by name1169876
- Ref: Symbol table by name-Footnote-11173077
- Node: Symbol table by cookie1173209
- Ref: Symbol table by cookie-Footnote-11177478
- Node: Cached values1177542
- Ref: Cached values-Footnote-11181174
- Node: Array Manipulation1181331
- Ref: Array Manipulation-Footnote-11182430
- Node: Array Data Types1182467
- Ref: Array Data Types-Footnote-11185285
- Node: Array Functions1185381
- Node: Flattening Arrays1190410
- Node: Creating Arrays1197458
- Node: Redirection API1202300
- Node: Extension API Variables1205317
- Node: Extension Versioning1206040
- Ref: gawk-api-version1206469
- Node: Extension GMP/MPFR Versioning1208256
- Node: Extension API Informational Variables1209960
- Node: Extension API Boilerplate1211213
- Node: Changes from API V11215343
- Node: Finding Extensions1216975
- Node: Extension Example1217550
- Node: Internal File Description1218372
- Node: Internal File Ops1222664
- Ref: Internal File Ops-Footnote-11234214
- Node: Using Internal File Ops1234362
- Ref: Using Internal File Ops-Footnote-11236793
- Node: Extension Samples1237071
- Node: Extension Sample File Functions1238640
- Node: Extension Sample Fnmatch1246765
- Node: Extension Sample Fork1248360
- Node: Extension Sample Inplace1249636
- Node: Extension Sample Ord1253738
- Node: Extension Sample Readdir1254614
- Ref: table-readdir-file-types1255403
- Node: Extension Sample Revout1256759
- Node: Extension Sample Rev2way1257356
- Node: Extension Sample Read write array1258108
- Node: Extension Sample Readfile1261382
- Node: Extension Sample Time1262513
- Node: Extension Sample API Tests1264513
- Node: gawkextlib1265021
- Node: Extension summary1268053
- Node: Extension Exercises1271901
- Node: Language History1273171
- Node: V7/SVR3.11274883
- Node: SVR41277233
- Node: POSIX1278765
- Node: BTL1280190
- Node: POSIX/GNU1280957
- Ref: Gawk Extension Functions1284347
- Node: Feature History1287771
- Node: Common Extensions1307612
- Node: Ranges and Locales1309087
- Ref: Ranges and Locales-Footnote-11313872
- Ref: Ranges and Locales-Footnote-21313899
- Ref: Ranges and Locales-Footnote-31314134
- Node: Contributors1314357
- Node: History summary1320548
- Node: Installation1321990
- Node: Gawk Distribution1322954
- Node: Getting1323446
- Node: Extracting1324445
- Node: Distribution contents1326151
- Node: Unix Installation1334041
- Node: Quick Installation1334861
- Node: Compiling with MPFR1337401
- Node: Shell Startup Files1338107
- Node: Additional Configuration Options1339264
- Node: Configuration Philosophy1341647
- Node: Compiling from Git1344147
- Node: Building the Documentation1344706
- Node: Non-Unix Installation1346118
- Node: PC Installation1346594
- Node: PC Binary Installation1347463
- Node: PC Compiling1348356
- Node: PC Using1349534
- Node: Cygwin1353250
- Node: MSYS1354502
- Node: OpenVMS Installation1355128
- Node: OpenVMS Compilation1355809
- Ref: OpenVMS Compilation-Footnote-11357292
- Node: OpenVMS Dynamic Extensions1357350
- Node: OpenVMS Installation Details1358986
- Node: OpenVMS Running1361417
- Node: OpenVMS GNV1365554
- Node: Bugs1366309
- Node: Bug definition1367229
- Node: Bug address1370830
- Node: Usenet1374399
- Node: Performance bugs1375612
- Node: Asking for help1378616
- Node: Maintainers1380603
- Node: Other Versions1381630
- Node: Installation summary1391234
- Node: Notes1392616
- Node: Compatibility Mode1393426
- Node: Additions1394248
- Node: Accessing The Source1395193
- Node: Adding Code1396724
- Node: New Ports1403835
- Node: Derived Files1408338
- Ref: Derived Files-Footnote-11414149
- Ref: Derived Files-Footnote-21414184
- Ref: Derived Files-Footnote-31414795
- Node: Future Extensions1414909
- Node: Implementation Limitations1415579
- Node: Extension Design1416821
- Node: Old Extension Problems1417981
- Ref: Old Extension Problems-Footnote-11419553
- Node: Extension New Mechanism Goals1419614
- Ref: Extension New Mechanism Goals-Footnote-11423084
- Node: Extension Other Design Decisions1423285
- Node: Extension Future Growth1425482
- Node: Notes summary1426102
- Node: Basic Concepts1427312
- Node: Basic High Level1427997
- Ref: figure-general-flow1428279
- Ref: figure-process-flow1428981
- Ref: Basic High Level-Footnote-11432351
- Node: Basic Data Typing1432540
- Node: Glossary1435948
- Node: Copying1468826
- Node: GNU Free Documentation License1506384
- Node: Index1531507
++Ref: Options-Footnote-1145711
++Ref: Options-Footnote-2145946
++Node: Other Arguments145971
++Node: Naming Standard Input150136
++Node: Environment Variables151406
++Node: AWKPATH Variable151980
++Ref: AWKPATH Variable-Footnote-1155564
++Ref: AWKPATH Variable-Footnote-2155598
++Node: AWKLIBPATH Variable155989
++Ref: AWKLIBPATH Variable-Footnote-1157764
++Node: Other Environment Variables158159
++Node: Exit Status162635
++Node: Include Files163348
++Node: Loading Shared Libraries167593
++Node: Obsolete169085
++Node: Undocumented169833
++Node: Invoking Summary170130
++Node: Regexp173155
++Node: Regexp Usage174649
++Node: Escape Sequences176750
++Ref: Escape Sequences-Footnote-1184285
++Node: Regexp Operators184363
++Node: Regexp Operator Details184856
++Ref: Regexp Operator Details-Footnote-1192867
++Node: Interval Expressions193026
++Ref: Interval Expressions-Footnote-1195293
++Node: Bracket Expressions195391
++Ref: table-char-classes197947
++Node: Leftmost Longest201445
++Node: Computed Regexps202801
++Node: GNU Regexp Operators206316
++Node: Case-sensitivity211413
++Ref: Case-sensitivity-Footnote-1214363
++Ref: Case-sensitivity-Footnote-2214606
++Node: Regexp Summary214718
++Node: Reading Files216240
++Node: Records218559
++Node: awk split records219834
++Node: gawk split records224716
++Ref: gawk split records-Footnote-1230004
++Node: Fields230041
++Ref: Fields-Footnote-1232957
++Node: Nonconstant Fields233077
++Ref: Nonconstant Fields-Footnote-1235385
++Node: Changing Fields235601
++Node: Field Separators241899
++Node: Default Field Splitting244768
++Node: Regexp Field Splitting245910
++Node: Single Character Fields249739
++Node: Comma Separated Fields250828
++Ref: table-csv-examples252232
++Node: Command Line Field Separator254531
++Node: Full Line Fields257907
++Ref: Full Line Fields-Footnote-1259485
++Ref: Full Line Fields-Footnote-2259531
++Node: Field Splitting Summary259636
++Node: Constant Size261953
++Node: Fixed width data262697
++Node: Skipping intervening266212
++Node: Allowing trailing data267014
++Node: Fields with fixed data268075
++Node: Splitting By Content269697
++Ref: Splitting By Content-Footnote-1274147
++Node: More CSV274310
++Node: FS versus FPAT275968
++Node: Testing field creation277168
++Node: Multiple Line278942
++Node: Getline285411
++Node: Plain Getline287999
++Node: Getline/Variable290647
++Node: Getline/File291843
++Node: Getline/Variable/File293291
++Ref: Getline/Variable/File-Footnote-1294936
++Node: Getline/Pipe295032
++Node: Getline/Variable/Pipe297840
++Node: Getline/Coprocess299023
++Node: Getline/Variable/Coprocess300346
++Node: Getline Notes301112
++Node: Getline Summary305089
++Ref: table-getline-variants305533
++Node: Read Timeout306437
++Ref: Read Timeout-Footnote-1310399
++Node: Retrying Input310457
++Node: Command-line directories311724
++Node: Input Summary312662
++Node: Input Exercises316042
++Node: Printing316480
++Node: Print318423
++Node: Print Examples319924
++Node: Output Separators322769
++Node: OFMT324876
++Node: Printf326589
++Node: Basic Printf327394
++Node: Control Letters329029
++Node: Format Modifiers334475
++Node: Printf Examples340747
++Node: Redirection343288
++Node: Special FD351060
++Ref: Special FD-Footnote-1354358
++Node: Special Files354436
++Node: Other Inherited Files355065
++Node: Special Network356130
++Node: Special Caveats357018
++Node: Close Files And Pipes358001
++Ref: Close Files And Pipes-Footnote-1364125
++Node: Close Return Value364273
++Ref: table-close-pipe-return-values365544
++Ref: Close Return Value-Footnote-1366375
++Node: Noflush366531
++Node: Nonfatal368039
++Node: Output Summary370454
++Node: Output Exercises371740
++Node: Expressions372431
++Node: Values373631
++Node: Constants374309
++Node: Scalar Constants375004
++Ref: Scalar Constants-Footnote-1377580
++Ref: Scalar Constants-Footnote-2377830
++Node: Nondecimal-numbers377910
++Node: Regexp Constants381023
++Node: Using Constant Regexps381569
++Node: Standard Regexp Constants382215
++Node: Strong Regexp Constants385511
++Node: Variables389354
++Node: Using Variables390019
++Node: Assignment Options391993
++Node: Conversion394544
++Node: Strings And Numbers395076
++Ref: Strings And Numbers-Footnote-1398286
++Node: Locale influences conversions398395
++Ref: table-locale-affects401233
++Node: All Operators401875
++Node: Arithmetic Ops402516
++Node: Concatenation405339
++Ref: Concatenation-Footnote-1408275
++Node: Assignment Ops408394
++Ref: table-assign-ops413521
++Node: Increment Ops414902
++Node: Truth Values and Conditions418493
++Node: Truth Values419587
++Node: Typing and Comparison420667
++Node: Variable Typing421499
++Ref: Variable Typing-Footnote-1428143
++Ref: Variable Typing-Footnote-2428223
++Node: Comparison Operators428304
++Ref: table-relational-ops428731
++Node: POSIX String Comparison432407
++Ref: POSIX String Comparison-Footnote-1434164
++Ref: POSIX String Comparison-Footnote-2434307
++Node: Boolean Ops434391
++Ref: Boolean Ops-Footnote-1439065
++Node: Conditional Exp439161
++Node: Function Calls440941
++Node: Precedence444888
++Node: Locales448751
++Node: Expressions Summary450427
++Node: Patterns and Actions453082
++Node: Pattern Overview454218
++Node: Regexp Patterns455943
++Node: Expression Patterns456489
++Node: Ranges460394
++Node: BEGIN/END463568
++Node: Using BEGIN/END464377
++Ref: Using BEGIN/END-Footnote-1467285
++Node: I/O And BEGIN/END467395
++Node: BEGINFILE/ENDFILE469877
++Node: Empty473307
++Node: Using Shell Variables473624
++Node: Action Overview475960
++Node: Statements478396
++Node: If Statement480292
++Node: While Statement481855
++Node: Do Statement483943
++Node: For Statement485127
++Node: Switch Statement488482
++Node: Break Statement491031
++Node: Continue Statement493223
++Node: Next Statement495154
++Node: Nextfile Statement497633
++Node: Exit Statement500486
++Node: Built-in Variables503013
++Node: User-modified504190
++Node: Auto-set512397
++Ref: Auto-set-Footnote-1530481
++Ref: Auto-set-Footnote-2530699
++Node: ARGC and ARGV530755
++Node: Pattern Action Summary535184
++Node: Arrays537790
++Node: Array Basics539163
++Node: Array Intro540011
++Ref: figure-array-elements542022
++Ref: Array Intro-Footnote-1544875
++Node: Reference to Elements545007
++Node: Assigning Elements547527
++Node: Array Example548022
++Node: Scanning an Array549984
++Node: Controlling Scanning553079
++Ref: Controlling Scanning-Footnote-1559714
++Node: Numeric Array Subscripts560038
++Node: Uninitialized Subscripts562306
++Node: Delete563979
++Ref: Delete-Footnote-1566791
++Node: Multidimensional566848
++Node: Multiscanning570051
++Node: Arrays of Arrays571718
++Node: Arrays Summary576022
++Node: Functions578209
++Node: Built-in579341
++Node: Calling Built-in580530
++Node: Boolean Functions582570
++Node: Numeric Functions583132
++Ref: Numeric Functions-Footnote-1587317
++Ref: Numeric Functions-Footnote-2588000
++Ref: Numeric Functions-Footnote-3588052
++Node: String Functions588328
++Ref: String Functions-Footnote-1614779
++Ref: String Functions-Footnote-2614911
++Ref: String Functions-Footnote-3615167
++Node: Gory Details615254
++Ref: table-sub-escapes617263
++Ref: table-sub-proposed618894
++Ref: table-posix-sub620389
++Ref: table-gensub-escapes622062
++Ref: Gory Details-Footnote-1622981
++Node: I/O Functions623135
++Ref: table-system-return-values629811
++Ref: I/O Functions-Footnote-1631973
++Ref: I/O Functions-Footnote-2632121
++Node: Time Functions632241
++Ref: Time Functions-Footnote-1643953
++Ref: Time Functions-Footnote-2644021
++Ref: Time Functions-Footnote-3644183
++Ref: Time Functions-Footnote-4644294
++Ref: Time Functions-Footnote-5644410
++Ref: Time Functions-Footnote-6644637
++Node: Bitwise Functions644915
++Ref: table-bitwise-ops645513
++Ref: Bitwise Functions-Footnote-1651755
++Ref: Bitwise Functions-Footnote-2651932
++Node: Type Functions652127
++Node: I18N Functions654298
++Node: User-defined656033
++Node: Definition Syntax656779
++Ref: Definition Syntax-Footnote-1662597
++Node: Function Example662672
++Ref: Function Example-Footnote-1665651
++Node: Function Calling665673
++Node: Calling A Function666265
++Node: Variable Scope667235
++Node: Pass By Value/Reference670289
++Node: Function Caveats673017
++Ref: Function Caveats-Footnote-1675108
++Node: Return Statement675228
++Node: Dynamic Typing678260
++Node: Dynamic Typing Awk678838
++Node: Dynamic Typing Gawk680976
++Node: Indirect Calls684346
++Node: Functions Summary695483
++Node: Library Functions698449
++Ref: Library Functions-Footnote-1701997
++Ref: Library Functions-Footnote-2702142
++Node: Library Names702317
++Ref: Library Names-Footnote-1706088
++Ref: Library Names-Footnote-2706315
++Node: General Functions706409
++Node: Strtonum Function707679
++Node: Assert Function710761
++Node: Round Function714211
++Node: Cliff Random Function715783
++Node: Ordinal Functions716807
++Ref: Ordinal Functions-Footnote-1719910
++Ref: Ordinal Functions-Footnote-2720162
++Node: Join Function720376
++Ref: Join Function-Footnote-1722174
++Node: Getlocaltime Function722378
++Node: Readfile Function726152
++Node: Shell Quoting728181
++Node: Isnumeric Function729637
++Node: To CSV Function731073
++Node: Data File Management733165
++Node: Filetrans Function733797
++Node: Rewind Function738073
++Node: File Checking740044
++Ref: File Checking-Footnote-1741410
++Node: Empty Files741615
++Node: Ignoring Assigns743678
++Node: Getopt Function745252
++Ref: Getopt Function-Footnote-1761070
++Node: Passwd Functions761282
++Ref: Passwd Functions-Footnote-1770417
++Node: Group Functions770505
++Ref: Group Functions-Footnote-1778629
++Node: Walking Arrays778840
++Node: Library Functions Summary781886
++Node: Library Exercises783306
++Node: Sample Programs783791
++Node: Running Examples784573
++Node: Clones785325
++Node: Cut Program786593
++Node: Egrep Program797017
++Node: Id Program806322
++Node: Split Program816414
++Ref: Split Program-Footnote-1826627
++Node: Tee Program826812
++Node: Uniq Program829718
++Node: Wc Program837578
++Node: Bytes vs. Characters837973
++Node: Using extensions839573
++Node: wc program840351
++Node: Miscellaneous Programs845344
++Node: Dupword Program846569
++Node: Alarm Program848618
++Node: Translate Program853521
++Ref: Translate Program-Footnote-1858230
++Node: Labels Program858508
++Ref: Labels Program-Footnote-1861943
++Node: Word Sorting862027
++Node: History Sorting866201
++Node: Extract Program868474
++Node: Simple Sed876727
++Node: Igawk Program879937
++Ref: Igawk Program-Footnote-1895147
++Ref: Igawk Program-Footnote-2895353
++Ref: Igawk Program-Footnote-3895483
++Node: Anagram Program895610
++Node: Signature Program898696
++Node: Programs Summary899946
++Node: Programs Exercises901200
++Ref: Programs Exercises-Footnote-1905502
++Node: Advanced Features905588
++Node: Nondecimal Data908069
++Node: Boolean Typed Values909699
++Node: Array Sorting911656
++Node: Controlling Array Traversal912385
++Ref: Controlling Array Traversal-Footnote-1920888
++Node: Array Sorting Functions921010
++Ref: Array Sorting Functions-Footnote-1927107
++Node: Two-way I/O927315
++Ref: Two-way I/O-Footnote-1935286
++Ref: Two-way I/O-Footnote-2935477
++Node: TCP/IP Networking935559
++Node: Profiling938727
++Node: Persistent Memory948397
++Ref: Persistent Memory-Footnote-1957969
++Node: Extension Philosophy958100
++Node: Advanced Features Summary959627
++Node: Internationalization961893
++Node: I18N and L10N963595
++Node: Explaining gettext964290
++Ref: Explaining gettext-Footnote-1970426
++Ref: Explaining gettext-Footnote-2970619
++Node: Programmer i18n970784
++Ref: Programmer i18n-Footnote-1975896
++Node: Translator i18n975945
++Node: String Extraction976775
++Ref: String Extraction-Footnote-1977951
++Node: Printf Ordering978049
++Ref: Printf Ordering-Footnote-1980907
++Node: I18N Portability980975
++Ref: I18N Portability-Footnote-1983535
++Node: I18N Example983602
++Ref: I18N Example-Footnote-1986996
++Ref: I18N Example-Footnote-2987069
++Node: Gawk I18N987186
++Node: I18N Summary987840
++Node: Debugger989237
++Node: Debugging990257
++Node: Debugging Concepts990706
++Node: Debugging Terms992523
++Node: Awk Debugging995126
++Ref: Awk Debugging-Footnote-1996099
++Node: Sample Debugging Session996235
++Node: Debugger Invocation996785
++Node: Finding The Bug998410
++Node: List of Debugger Commands1005042
++Node: Breakpoint Control1006419
++Node: Debugger Execution Control1010241
++Node: Viewing And Changing Data1013715
++Node: Execution Stack1017449
++Node: Debugger Info1019130
++Node: Miscellaneous Debugger Commands1023425
++Node: Readline Support1028666
++Node: Limitations1029610
++Node: Debugging Summary1032234
++Node: Namespaces1033533
++Node: Global Namespace1034773
++Node: Qualified Names1036207
++Node: Default Namespace1037242
++Node: Changing The Namespace1038015
++Node: Naming Rules1039697
++Node: Internal Name Management1041652
++Node: Namespace Example1042722
++Node: Inclusion For Namespaces1045301
++Node: Namespace And Features1047744
++Node: Namespace Summary1049206
++Node: Arbitrary Precision Arithmetic1050719
++Node: Computer Arithmetic1052238
++Ref: table-numeric-ranges1056163
++Ref: table-floating-point-ranges1056660
++Ref: Computer Arithmetic-Footnote-11057318
++Node: Math Definitions1057375
++Ref: table-ieee-formats1060407
++Node: MPFR features1060980
++Node: MPFR On Parole1061433
++Ref: MPFR On Parole-Footnote-11062274
++Node: MPFR Intro1062433
++Node: FP Math Caution1064117
++Ref: FP Math Caution-Footnote-11065189
++Node: Inexactness of computations1065562
++Node: Inexact representation1066593
++Node: Comparing FP Values1067974
++Node: Errors accumulate1069232
++Node: Strange values1070697
++Ref: Strange values-Footnote-11073351
++Node: Getting Accuracy1073456
++Node: Try To Round1076193
++Node: Setting precision1077100
++Ref: table-predefined-precision-strings1077805
++Node: Setting the rounding mode1079689
++Ref: table-gawk-rounding-modes1080071
++Ref: Setting the rounding mode-Footnote-11084123
++Node: Arbitrary Precision Integers1084306
++Ref: Arbitrary Precision Integers-Footnote-11087516
++Node: Checking for MPFR1087669
++Node: POSIX Floating Point Problems1089159
++Ref: POSIX Floating Point Problems-Footnote-11093979
++Node: Floating point summary1094017
++Node: Dynamic Extensions1096273
++Node: Extension Intro1097870
++Node: Plugin License1099172
++Node: Extension Mechanism Outline1099985
++Ref: figure-load-extension1100436
++Ref: figure-register-new-function1102014
++Ref: figure-call-new-function1103123
++Node: Extension API Description1105238
++Node: Extension API Functions Introduction1106967
++Ref: table-api-std-headers1108861
++Node: General Data Types1113302
++Ref: General Data Types-Footnote-11122448
++Node: Memory Allocation Functions1122751
++Ref: Memory Allocation Functions-Footnote-11127468
++Node: Constructor Functions1127567
++Node: API Ownership of MPFR and GMP Values1131468
++Node: Registration Functions1133021
++Node: Extension Functions1133725
++Node: Exit Callback Functions1139299
++Node: Extension Version String1140613
++Node: Input Parsers1141308
++Node: Output Wrappers1155927
++Node: Two-way processors1160769
++Node: Printing Messages1163122
++Ref: Printing Messages-Footnote-11164333
++Node: Updating ERRNO1164486
++Node: Requesting Values1165285
++Ref: table-value-types-returned1166038
++Node: Accessing Parameters1168097
++Node: Symbol Table Access1169378
++Node: Symbol table by name1169890
++Ref: Symbol table by name-Footnote-11173091
++Node: Symbol table by cookie1173223
++Ref: Symbol table by cookie-Footnote-11177492
++Node: Cached values1177556
++Ref: Cached values-Footnote-11181188
++Node: Array Manipulation1181345
++Ref: Array Manipulation-Footnote-11182444
++Node: Array Data Types1182481
++Ref: Array Data Types-Footnote-11185299
++Node: Array Functions1185395
++Node: Flattening Arrays1190424
++Node: Creating Arrays1197472
++Node: Redirection API1202314
++Node: Extension API Variables1205331
++Node: Extension Versioning1206054
++Ref: gawk-api-version1206483
++Node: Extension GMP/MPFR Versioning1208270
++Node: Extension API Informational Variables1209974
++Node: Extension API Boilerplate1211227
++Node: Changes from API V11215357
++Node: Finding Extensions1216989
++Node: Extension Example1217564
++Node: Internal File Description1218386
++Node: Internal File Ops1222678
++Ref: Internal File Ops-Footnote-11234228
++Node: Using Internal File Ops1234376
++Ref: Using Internal File Ops-Footnote-11236809
++Node: Extension Samples1237087
++Node: Extension Sample File Functions1238656
++Node: Extension Sample Fnmatch1246781
++Node: Extension Sample Fork1248376
++Node: Extension Sample Inplace1249652
++Node: Extension Sample Ord1253754
++Node: Extension Sample Readdir1254630
++Ref: table-readdir-file-types1255419
++Node: Extension Sample Revout1256775
++Node: Extension Sample Rev2way1257372
++Node: Extension Sample Read write array1258124
++Node: Extension Sample Readfile1261398
++Node: Extension Sample Time1262529
++Node: Extension Sample API Tests1264529
++Node: gawkextlib1265037
++Node: Extension summary1268069
++Node: Extension Exercises1271917
++Node: Language History1273187
++Node: V7/SVR3.11274899
++Node: SVR41277249
++Node: POSIX1278781
++Node: BTL1280206
++Node: POSIX/GNU1280973
++Ref: Gawk Extension Functions1284363
++Node: Feature History1287787
++Node: Common Extensions1307628
++Node: Ranges and Locales1309103
++Ref: Ranges and Locales-Footnote-11313888
++Ref: Ranges and Locales-Footnote-21313915
++Ref: Ranges and Locales-Footnote-31314150
++Node: Contributors1314373
++Node: History summary1320564
++Node: Installation1322006
++Node: Gawk Distribution1322970
++Node: Getting1323462
++Node: Extracting1324461
++Node: Distribution contents1326167
++Node: Unix Installation1334057
++Node: Quick Installation1334877
++Node: Compiling with MPFR1337417
++Node: Shell Startup Files1338123
++Node: Additional Configuration Options1339280
++Node: Configuration Philosophy1341663
++Node: Compiling from Git1344163
++Node: Building the Documentation1344722
++Node: Non-Unix Installation1346134
++Node: PC Installation1346610
++Node: PC Binary Installation1347479
++Node: PC Compiling1348372
++Node: PC Using1349550
++Node: Cygwin1353266
++Node: MSYS1354518
++Node: OpenVMS Installation1355144
++Node: OpenVMS Compilation1355825
++Ref: OpenVMS Compilation-Footnote-11357308
++Node: OpenVMS Dynamic Extensions1357366
++Node: OpenVMS Installation Details1359002
++Node: OpenVMS Running1361433
++Node: OpenVMS GNV1365570
++Node: Bugs1366325
++Node: Bug definition1367245
++Node: Bug address1370846
++Node: Usenet1374415
++Node: Performance bugs1375628
++Node: Asking for help1378632
++Node: Maintainers1380619
++Node: Other Versions1381646
++Node: Installation summary1391250
++Node: Notes1392632
++Node: Compatibility Mode1393442
++Node: Additions1394264
++Node: Accessing The Source1395209
++Node: Adding Code1396740
++Node: New Ports1403851
++Node: Derived Files1408354
++Ref: Derived Files-Footnote-11414165
++Ref: Derived Files-Footnote-21414200
++Ref: Derived Files-Footnote-31414811
++Node: Future Extensions1414925
++Node: Implementation Limitations1415595
++Node: Extension Design1416837
++Node: Old Extension Problems1417997
++Ref: Old Extension Problems-Footnote-11419569
++Node: Extension New Mechanism Goals1419630
++Ref: Extension New Mechanism Goals-Footnote-11423100
++Node: Extension Other Design Decisions1423301
++Node: Extension Future Growth1425498
++Node: Notes summary1426118
++Node: Basic Concepts1427328
++Node: Basic High Level1428013
++Ref: figure-general-flow1428295
++Ref: figure-process-flow1428997
++Ref: Basic High Level-Footnote-11432367
++Node: Basic Data Typing1432556
++Node: Glossary1435964
++Node: Copying1468842
++Node: GNU Free Documentation License1506400
++Node: Index1531523
  
  End Tag Table
  

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

Summary of changes:
 ChangeLog        |    5 +
 awkgram.c        |  872 ++++++++++++++++++------------------
 awkgram.y        |   22 +-
 doc/ChangeLog    |   11 +
 doc/gawk.info    | 1286 ++++++++++++++++++++++++++++--------------------------
 doc/gawk.texi    |   91 +++-
 pc/ChangeLog     |    4 +
 pc/Makefile.tst  |    9 +-
 test/ChangeLog   |    5 +
 test/Makefile.am |    6 +-
 test/Makefile.in |   11 +-
 test/Maketests   |    5 +
 test/nsprof3.awk |   12 +
 test/nsprof3.ok  |   36 ++
 14 files changed, 1299 insertions(+), 1076 deletions(-)
 create mode 100644 test/nsprof3.awk
 create mode 100644 test/nsprof3.ok


hooks/post-receive
-- 
gawk



reply via email to

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