[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-
From: |
Arnold Robbins |
Subject: |
[gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-2577-gf26af58 |
Date: |
Sun, 11 Jun 2017 14:08:45 -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, feature/namespaces has been updated
via f26af582f048d8b95122dbe695aeb3d1c250c9fd (commit)
from 6e7a37483b47d388f3792a24c4b09817cb873cd4 (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=f26af582f048d8b95122dbe695aeb3d1c250c9fd
commit f26af582f048d8b95122dbe695aeb3d1c250c9fd
Author: Arnold D. Robbins <address@hidden>
Date: Sun Jun 11 21:08:23 2017 +0300
Add @namespace directive, more checking, more doc.
diff --git a/ChangeLog b/ChangeLog
index b977cee..f23bed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-06-11 Arnold D. Robbins <address@hidden>
+
+ * awk.h (awk_namespace, current_namespace): Declare.
+ (opcodeval): Add Op_K_namespace.
+ * awkgram.y (awk_namespace, current_namespace): Define.
+ (LEX_NAMESPACE): Add lexing and parsing of address@hidden directive'.
+ (tokentab): Add "namespace" entry.
+ (yylex): Check if first part of qualified identifier is
+ a reserved word or function.
+ * eval.c (optypetab): Add Op_K_namespace.
+
2017-06-06 Arnold D. Robbins <address@hidden>
* awkgram.y (yylex): Allow :: in identifiers (the "NAME" token).
diff --git a/awk.h b/awk.h
index ab84c58..2f95bc6 100644
--- a/awk.h
+++ b/awk.h
@@ -735,6 +735,7 @@ typedef enum opcodeval {
Op_K_if,
Op_K_else,
Op_K_function,
+ Op_K_namespace,
Op_cond_exp,
Op_final /* sentry value, not legal */
} OPCODE;
@@ -1204,6 +1205,9 @@ extern char envsep;
extern char casetable[]; /* for case-independent regexp matching */
+extern const char awk_namespace[]; /* "awk::" */
+extern const char *current_namespace;
+
/* ------------------------- Runtime stack -------------------------------- */
typedef union stack_item {
diff --git a/awkgram.c b/awkgram.c
index bf44ba8..795175d 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -183,6 +183,9 @@ extern INSTRUCTION *rule_list;
extern int max_args;
extern NODE **args_array;
+const char awk_namespace[] = "awk::";
+const char *current_namespace = NULL;
+
static INSTRUCTION *rule_block[sizeof(ruletab)];
static INSTRUCTION *ip_rec;
@@ -213,7 +216,7 @@ extern double fmod(double x, double y);
#define YYSTYPE INSTRUCTION *
-#line 217 "awkgram.c" /* yacc.c:339 */
+#line 220 "awkgram.c" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -294,9 +297,10 @@ extern int yydebug;
LEX_INCLUDE = 304,
LEX_EVAL = 305,
LEX_LOAD = 306,
- NEWLINE = 307,
- SLASH_BEFORE_EQUAL = 308,
- UNARY = 309
+ LEX_NAMESPACE = 307,
+ NEWLINE = 308,
+ SLASH_BEFORE_EQUAL = 309,
+ UNARY = 310
};
#endif
/* Tokens. */
@@ -349,9 +353,10 @@ extern int yydebug;
#define LEX_INCLUDE 304
#define LEX_EVAL 305
#define LEX_LOAD 306
-#define NEWLINE 307
-#define SLASH_BEFORE_EQUAL 308
-#define UNARY 309
+#define LEX_NAMESPACE 307
+#define NEWLINE 308
+#define SLASH_BEFORE_EQUAL 309
+#define UNARY 310
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -369,7 +374,7 @@ int yyparse (void);
/* Copy the second part of user declarations. */
-#line 373 "awkgram.c" /* yacc.c:358 */
+#line 378 "awkgram.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -611,21 +616,21 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1236
+#define YYLAST 1199
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 76
+#define YYNTOKENS 77
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 70
+#define YYNNTS 71
/* YYNRULES -- Number of rules. */
-#define YYNRULES 203
+#define YYNRULES 207
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 350
+#define YYNSTATES 356
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 309
+#define YYMAXUTOK 310
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -637,16 +642,16 @@ static const yytype_uint8 yytranslate[] =
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 64, 2, 2, 67, 63, 2, 2,
- 68, 69, 61, 59, 56, 60, 2, 62, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 55, 75,
- 57, 2, 58, 54, 70, 2, 2, 2, 2, 2,
+ 2, 2, 2, 65, 2, 2, 68, 64, 2, 2,
+ 69, 70, 62, 60, 57, 61, 2, 63, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 56, 76,
+ 58, 2, 59, 55, 71, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 71, 2, 72, 66, 2, 2, 2, 2, 2,
+ 2, 72, 2, 73, 67, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 73, 2, 74, 2, 2, 2, 2,
+ 2, 2, 2, 74, 2, 75, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -664,34 +669,35 @@ static const yytype_uint8 yytranslate[] =
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 65
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 66
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 216, 216, 218, 223, 224, 228, 240, 245, 256,
- 263, 269, 278, 286, 288, 293, 301, 303, 309, 317,
- 327, 357, 371, 385, 393, 404, 416, 418, 420, 426,
- 434, 435, 439, 439, 485, 484, 518, 533, 535, 540,
- 550, 597, 602, 603, 607, 609, 611, 618, 708, 750,
- 792, 905, 912, 919, 930, 940, 950, 960, 972, 989,
- 988, 1013, 1025, 1025, 1124, 1124, 1158, 1189, 1198, 1199,
- 1205, 1206, 1213, 1218, 1230, 1244, 1246, 1254, 1261, 1263,
- 1271, 1280, 1282, 1291, 1292, 1300, 1305, 1305, 1316, 1320,
- 1328, 1329, 1332, 1334, 1339, 1340, 1349, 1350, 1355, 1360,
- 1369, 1371, 1373, 1380, 1381, 1387, 1388, 1393, 1395, 1400,
- 1402, 1410, 1415, 1424, 1425, 1430, 1432, 1437, 1439, 1447,
- 1452, 1460, 1461, 1466, 1473, 1477, 1479, 1481, 1494, 1511,
- 1521, 1528, 1530, 1535, 1537, 1539, 1547, 1549, 1554, 1556,
- 1561, 1563, 1565, 1621, 1623, 1625, 1627, 1629, 1631, 1633,
- 1635, 1649, 1654, 1659, 1684, 1690, 1692, 1694, 1696, 1698,
- 1700, 1705, 1709, 1741, 1743, 1749, 1755, 1768, 1769, 1770,
- 1775, 1780, 1784, 1788, 1803, 1824, 1829, 1866, 1895, 1896,
- 1902, 1903, 1908, 1910, 1917, 1934, 1951, 1953, 1960, 1965,
- 1973, 1983, 1995, 2004, 2008, 2012, 2016, 2020, 2024, 2027,
- 2029, 2033, 2037, 2041
+ 0, 219, 219, 221, 226, 227, 231, 243, 248, 259,
+ 266, 272, 278, 296, 304, 306, 311, 319, 321, 326,
+ 328, 330, 336, 344, 354, 384, 398, 412, 420, 431,
+ 443, 445, 447, 453, 461, 462, 466, 466, 512, 511,
+ 545, 560, 562, 567, 577, 624, 629, 630, 634, 636,
+ 638, 645, 735, 777, 819, 932, 939, 946, 957, 967,
+ 977, 987, 999, 1016, 1015, 1040, 1052, 1052, 1151, 1151,
+ 1185, 1216, 1225, 1226, 1232, 1233, 1240, 1245, 1257, 1271,
+ 1273, 1281, 1288, 1290, 1298, 1307, 1309, 1318, 1319, 1327,
+ 1332, 1332, 1343, 1347, 1355, 1356, 1359, 1361, 1366, 1367,
+ 1376, 1377, 1382, 1387, 1396, 1398, 1400, 1407, 1408, 1414,
+ 1415, 1420, 1422, 1427, 1429, 1437, 1442, 1451, 1452, 1457,
+ 1459, 1464, 1466, 1474, 1479, 1487, 1488, 1493, 1500, 1504,
+ 1506, 1508, 1521, 1538, 1548, 1555, 1557, 1562, 1564, 1566,
+ 1574, 1576, 1581, 1583, 1588, 1590, 1592, 1648, 1650, 1652,
+ 1654, 1656, 1658, 1660, 1662, 1676, 1681, 1686, 1711, 1717,
+ 1719, 1721, 1723, 1725, 1727, 1732, 1736, 1768, 1770, 1776,
+ 1782, 1795, 1796, 1797, 1802, 1807, 1811, 1815, 1830, 1851,
+ 1856, 1893, 1922, 1923, 1929, 1930, 1935, 1937, 1944, 1961,
+ 1978, 1980, 1987, 1992, 2000, 2010, 2022, 2031, 2035, 2039,
+ 2043, 2047, 2051, 2054, 2056, 2060, 2064, 2068
};
#endif
@@ -709,17 +715,18 @@ static const char *const yytname[] =
"LEX_NEXT", "LEX_EXIT", "LEX_FUNCTION", "LEX_BEGINFILE", "LEX_ENDFILE",
"LEX_GETLINE", "LEX_NEXTFILE", "LEX_IN", "LEX_AND", "LEX_OR",
"INCREMENT", "DECREMENT", "LEX_BUILTIN", "LEX_LENGTH", "LEX_EOF",
- "LEX_INCLUDE", "LEX_EVAL", "LEX_LOAD", "NEWLINE", "SLASH_BEFORE_EQUAL",
- "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'",
- "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'", "'['", "']'", "'{'",
- "'}'", "';'", "$accept", "program", "rule", "source", "library",
- "pattern", "action", "func_name", "lex_builtin", "function_prologue",
- "address@hidden", "regexp", "address@hidden", "typed_regexp", "a_slash",
"statements",
- "statement_term", "statement", "non_compound_stmt", "address@hidden",
"simple_stmt",
- "address@hidden", "address@hidden", "opt_simple_stmt", "case_statements",
"case_statement",
- "case_value", "print", "print_expression_list", "output_redir",
"address@hidden",
- "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list",
- "param_list", "opt_exp", "opt_expression_list", "expression_list",
+ "LEX_INCLUDE", "LEX_EVAL", "LEX_LOAD", "LEX_NAMESPACE", "NEWLINE",
+ "SLASH_BEFORE_EQUAL", "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'",
+ "'*'", "'/'", "'%'", "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'@'",
+ "'['", "']'", "'{'", "'}'", "';'", "$accept", "program", "rule",
+ "source", "library", "namespace", "pattern", "action", "func_name",
+ "lex_builtin", "function_prologue", "address@hidden", "regexp",
"address@hidden",
+ "typed_regexp", "a_slash", "statements", "statement_term", "statement",
+ "non_compound_stmt", "address@hidden", "simple_stmt", "address@hidden",
"address@hidden",
+ "opt_simple_stmt", "case_statements", "case_statement", "case_value",
+ "print", "print_expression_list", "output_redir", "address@hidden",
"if_statement",
+ "nls", "opt_nls", "input_redir", "opt_param_list", "param_list",
+ "opt_exp", "opt_expression_list", "expression_list",
"opt_fcall_expression_list", "fcall_expression_list", "fcall_exp", "exp",
"assign_operator", "relop_or_less", "a_relop", "common_exp", "simp_exp",
"simp_exp_nc", "non_post_simp_exp", "func_call", "direct_func_call",
@@ -740,61 +747,62 @@ static const yytype_uint16 yytoknum[] =
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 63, 58, 44, 60, 62, 43,
- 45, 42, 47, 37, 33, 309, 94, 36, 40, 41,
- 64, 91, 93, 123, 125, 59
+ 305, 306, 307, 308, 309, 63, 58, 44, 60, 62,
+ 43, 45, 42, 47, 37, 33, 310, 94, 36, 40,
+ 41, 64, 91, 93, 123, 125, 59
};
# endif
-#define YYPACT_NINF -275
+#define YYPACT_NINF -294
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-275)))
+ (!!((Yystate) == (-294)))
-#define YYTABLE_NINF -115
+#define YYTABLE_NINF -119
#define yytable_value_is_error(Yytable_value) \
- (!!((Yytable_value) == (-115)))
+ (!!((Yytable_value) == (-119)))
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -275, 376, -275, -275, -12, -9, -275, -275, -275, -275,
- 171, -275, -275, 44, 44, 44, 5, 40, -275, -275,
- -275, 1139, 1139, -275, 1139, 1166, 869, 27, -275, -18,
- 2, -275, -275, 89, 884, 1065, 192, 214, -275, -275,
- -275, -275, 248, 795, 869, -275, 10, -275, -275, -275,
- -275, -275, 116, 82, -275, 115, -275, -275, -275, 795,
- 795, 166, 107, 104, 107, 107, 1139, 117, -275, -275,
- 15, 349, 23, 45, -275, 125, -275, -275, -275, 89,
- -275, 125, -275, 178, -275, -275, 1092, 172, 1139, 1139,
- 1139, 125, -275, -275, -275, 1139, 146, 192, 1139, 1139,
- 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
- -275, 181, -275, -275, 173, 1139, -275, -275, -275, 128,
- 73, -275, 1107, 14, 1107, -275, -275, -275, -275, 1139,
- -275, 128, 128, 349, -275, -275, -275, 1139, 125, -275,
- 152, 916, -275, -275, 16, 92, -275, 20, 92, 89,
- -275, 599, -275, -275, -275, 148, -275, 124, 22, 1048,
- 1139, 199, 44, 265, 265, 107, 107, 107, 107, 265,
- 265, 107, 107, 107, 107, -275, -275, 1107, -275, 1092,
- 842, -275, 43, 192, -275, -275, 1107, -275, 172, -275,
- 1107, -275, -275, -275, -275, -275, 133, -275, 41, 144,
- 145, 125, 147, 92, 92, -275, -275, 92, 1139, 92,
- 125, -275, -275, 92, -275, -275, 1107, -275, 151, 125,
- 1139, 1107, -275, -275, -275, -275, -275, -275, 128, 76,
- -275, 1139, 1139, -275, 224, 1139, 1139, 715, 949, -275,
- -275, -275, 92, 1107, -275, -275, -275, 646, 599, 125,
- -275, -275, 1107, 125, -275, 49, 349, 92, -9, 160,
- 349, 349, 206, 113, -275, 151, -275, 869, 225, -275,
- 169, -275, -275, -275, -275, -275, 125, -275, -275, 11,
- -275, -275, -275, 125, 125, 179, 172, 125, 15, -275,
- -275, 715, -275, -275, 2, 715, 1139, 128, 762, 152,
- 1139, 219, -275, -275, 349, 125, 275, 125, 1065, 125,
- 112, 125, 715, 125, 997, 715, -275, 261, 205, -275,
- 191, -275, -275, 997, 128, -275, -275, -275, 271, 272,
- -275, -275, 205, -275, 125, -275, 128, 125, -275, -275,
- 125, -275, 125, 715, -275, 449, 715, -275, 524, -275
+ -294, 343, -294, -294, -20, -16, -294, -294, -294, -294,
+ 14, -294, -294, 26, 26, 26, -7, 13, -294, -294,
+ -294, 1074, 1074, -294, 1074, 1102, 845, 248, -294, 194,
+ -10, -294, -294, 25, 312, 1001, 366, 405, -294, -294,
+ -294, -294, 320, 769, 845, -294, 9, -294, -294, -294,
+ -294, -294, 59, 76, -294, 101, -294, -294, -294, 769,
+ 769, 159, 98, 129, 98, 98, 1074, 140, -294, -294,
+ 0, 265, 28, 39, 45, -294, 115, -294, -294, -294,
+ 25, -294, 115, -294, 165, -294, -294, 1029, 176, 1074,
+ 1074, 1074, 115, -294, -294, -294, 1074, 149, 366, 1074,
+ 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
+ 1074, -294, 186, -294, -294, 189, 1074, -294, -294, -294,
+ 130, 23, -294, 1044, 83, 1044, -294, -294, -294, -294,
+ 1074, -294, 130, 130, 265, -294, -294, -294, 1074, 115,
+ -294, 167, 873, -294, -294, 20, -5, -294, 82, -5,
+ -294, 90, -5, 25, -294, 569, -294, -294, -294, 18,
+ -294, 342, 157, 1140, 1074, 199, 26, 88, 88, 98,
+ 98, 98, 98, 88, 88, 98, 98, 98, 98, -294,
+ -294, 1044, -294, 1029, 797, -294, 43, 366, -294, -294,
+ 1044, -294, 176, -294, 1044, -294, -294, -294, -294, -294,
+ -294, -294, 145, -294, 10, 151, 155, 115, 163, -5,
+ -5, -294, -294, -5, 1074, -5, 115, -294, -294, -5,
+ -294, -294, 1044, -294, 168, 115, 1074, 1044, -294, -294,
+ -294, -294, -294, -294, 130, 91, -294, 1074, 1074, -294,
+ 245, 1074, 1074, 687, 922, -294, -294, -294, -5, 1044,
+ -294, -294, -294, 617, 569, 115, -294, -294, 1044, 115,
+ -294, 110, 265, -5, -16, 184, 265, 265, 239, -6,
+ -294, 168, -294, 845, 263, -294, 193, -294, -294, -294,
+ -294, -294, 115, -294, -294, 15, -294, -294, -294, 115,
+ 115, 207, 176, 115, 0, -294, -294, 687, -294, -294,
+ -10, 687, 1074, 130, 721, 167, 1074, 258, -294, -294,
+ 265, 115, 134, 115, 1001, 115, 180, 115, 687, 115,
+ 956, 687, -294, 332, 225, -294, 208, -294, -294, 956,
+ 130, -294, -294, -294, 278, 282, -294, -294, 225, -294,
+ 115, -294, 130, 115, -294, -294, 115, -294, 115, 687,
+ -294, 417, 687, -294, 493, -294
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -802,65 +810,68 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 2, 0, 1, 6, 0, 189, 171, 172, 21, 22,
- 0, 23, 24, 178, 0, 0, 0, 166, 5, 90,
- 38, 0, 0, 37, 0, 0, 0, 0, 3, 0,
- 0, 161, 34, 4, 19, 132, 140, 141, 143, 167,
- 175, 191, 168, 0, 0, 186, 0, 190, 27, 26,
- 30, 31, 0, 0, 28, 94, 179, 169, 170, 0,
- 0, 0, 174, 168, 173, 162, 0, 195, 168, 109,
- 0, 107, 0, 0, 176, 92, 201, 7, 8, 42,
- 39, 92, 9, 0, 91, 136, 0, 0, 0, 0,
- 0, 92, 137, 139, 138, 0, 0, 142, 0, 0,
+ 2, 0, 1, 6, 0, 193, 175, 176, 25, 26,
+ 0, 27, 28, 182, 0, 0, 0, 170, 5, 94,
+ 42, 0, 0, 41, 0, 0, 0, 0, 3, 0,
+ 0, 165, 38, 4, 23, 136, 144, 145, 147, 171,
+ 179, 195, 172, 0, 0, 190, 0, 194, 31, 30,
+ 34, 35, 0, 0, 32, 98, 183, 173, 174, 0,
+ 0, 0, 178, 172, 177, 166, 0, 199, 172, 113,
+ 0, 111, 0, 0, 0, 180, 96, 205, 7, 8,
+ 46, 43, 96, 9, 0, 95, 140, 0, 0, 0,
+ 0, 0, 96, 141, 143, 142, 0, 0, 146, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 134, 133, 151, 152, 0, 0, 117, 36, 122, 0,
- 0, 115, 121, 0, 107, 188, 187, 29, 32, 0,
- 150, 0, 0, 0, 193, 194, 192, 110, 92, 198,
- 0, 0, 163, 14, 0, 0, 17, 0, 0, 93,
- 196, 0, 43, 35, 127, 128, 129, 125, 126, 0,
- 0, 130, 178, 148, 149, 145, 146, 147, 144, 159,
- 160, 156, 157, 158, 155, 124, 135, 123, 177, 118,
- 0, 185, 0, 95, 164, 165, 111, 203, 0, 112,
- 108, 13, 10, 16, 11, 41, 0, 59, 0, 0,
- 0, 92, 0, 0, 0, 81, 82, 0, 103, 0,
- 92, 40, 53, 0, 62, 46, 67, 39, 199, 92,
- 0, 20, 154, 119, 120, 116, 100, 98, 0, 0,
- 153, 0, 103, 64, 0, 0, 0, 0, 68, 54,
- 55, 56, 0, 104, 57, 197, 61, 0, 0, 92,
- 200, 44, 131, 92, 101, 0, 0, 0, 180, 0,
- 0, 0, 0, 189, 69, 0, 58, 0, 85, 83,
- 0, 45, 25, 33, 102, 99, 92, 60, 65, 0,
- 182, 184, 66, 92, 92, 0, 0, 92, 0, 86,
- 63, 0, 181, 183, 0, 0, 0, 0, 0, 84,
- 0, 88, 70, 48, 0, 92, 0, 92, 87, 92,
- 0, 92, 0, 92, 68, 0, 72, 0, 0, 71,
- 0, 49, 50, 68, 0, 89, 75, 78, 0, 0,
- 79, 80, 0, 202, 92, 47, 0, 92, 77, 76,
- 92, 39, 92, 0, 39, 0, 0, 52, 0, 51
+ 0, 138, 137, 155, 156, 0, 0, 121, 40, 126,
+ 0, 0, 119, 125, 0, 111, 192, 191, 33, 36,
+ 0, 154, 0, 0, 0, 197, 198, 196, 114, 96,
+ 202, 0, 0, 167, 15, 0, 0, 18, 0, 0,
+ 21, 0, 0, 97, 200, 0, 47, 39, 131, 132,
+ 133, 129, 130, 0, 0, 134, 182, 152, 153, 149,
+ 150, 151, 148, 163, 164, 160, 161, 162, 159, 128,
+ 139, 127, 181, 122, 0, 189, 0, 99, 168, 169,
+ 115, 207, 0, 116, 112, 14, 10, 17, 11, 20,
+ 12, 45, 0, 63, 0, 0, 0, 96, 0, 0,
+ 0, 85, 86, 0, 107, 0, 96, 44, 57, 0,
+ 66, 50, 71, 43, 203, 96, 0, 24, 158, 123,
+ 124, 120, 104, 102, 0, 0, 157, 0, 107, 68,
+ 0, 0, 0, 0, 72, 58, 59, 60, 0, 108,
+ 61, 201, 65, 0, 0, 96, 204, 48, 135, 96,
+ 105, 0, 0, 0, 184, 0, 0, 0, 0, 193,
+ 73, 0, 62, 0, 89, 87, 0, 49, 29, 37,
+ 106, 103, 96, 64, 69, 0, 186, 188, 70, 96,
+ 96, 0, 0, 96, 0, 90, 67, 0, 185, 187,
+ 0, 0, 0, 0, 0, 88, 0, 92, 74, 52,
+ 0, 96, 0, 96, 91, 96, 0, 96, 0, 96,
+ 72, 0, 76, 0, 0, 75, 0, 53, 54, 72,
+ 0, 93, 79, 82, 0, 0, 83, 84, 0, 206,
+ 96, 51, 0, 96, 81, 80, 96, 43, 96, 0,
+ 43, 0, 0, 56, 0, 55
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -275, -275, -275, -275, -275, -275, 252, -275, -275, -275,
- -275, -33, -275, -80, -275, -213, 100, -144, -275, -275,
- -231, -275, -275, -274, -275, -275, -275, -275, -275, -275,
- -275, -275, 7, 62, -275, -275, -275, 54, -275, -43,
- 1, -275, -23, -1, -275, -275, -275, -13, 17, -275,
- 263, -275, 8, 127, -275, -275, 21, -36, -275, -275,
- -78, -2, -275, -27, -230, -65, -275, -15, -38, -94
+ -294, -294, -294, -294, -294, -294, -294, 261, -294, -294,
+ -294, -294, -31, -294, -81, -294, -216, -77, -90, -294,
+ -294, -190, -294, -294, -293, -294, -294, -294, -294, -294,
+ -294, -294, -294, 8, -29, -294, -294, -294, 55, -294,
+ -34, 131, -294, 51, -1, -294, -294, -294, -12, 17,
+ -294, 271, -294, -11, 132, -294, -294, 30, -42, -294,
+ -294, -80, -2, -294, -27, -180, -65, -294, 24, -36,
+ -106
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 28, 145, 148, 29, 77, 53, 54, 30,
- 182, 31, 83, 118, 32, 151, 78, 211, 212, 232,
- 213, 247, 258, 265, 310, 319, 332, 214, 268, 290,
- 300, 215, 149, 150, 130, 228, 229, 242, 269, 70,
- 119, 120, 121, 216, 115, 94, 95, 35, 36, 37,
- 38, 39, 40, 55, 278, 279, 280, 45, 46, 47,
- 41, 42, 136, 217, 218, 142, 249, 219, 334, 141
+ -1, 1, 28, 146, 149, 152, 29, 78, 53, 54,
+ 30, 186, 31, 84, 119, 32, 155, 79, 217, 218,
+ 238, 219, 253, 264, 271, 316, 325, 338, 220, 274,
+ 296, 306, 221, 153, 154, 131, 234, 235, 248, 275,
+ 70, 120, 121, 122, 222, 116, 95, 96, 35, 36,
+ 37, 38, 39, 40, 55, 284, 285, 286, 45, 46,
+ 47, 41, 42, 137, 223, 224, 143, 255, 82, 340,
+ 142
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -868,351 +879,344 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 34, 123, 80, 80, 248, 140, 154, 264, 33, 156,
- 126, 56, 57, 58, 81, 137, 137, 191, 271, 63,
- 63, 193, 63, 68, 143, 71, 180, 125, 292, 144,
- 4, 175, 85, 63, 19, 74, 79, 86, 62, 64,
- 324, 65, 122, 124, 226, 233, 146, 227, 5, 336,
- 274, 147, 97, 275, 178, 75, 43, 76, 122, 122,
- 131, 132, 44, 87, 88, 133, 184, 185, -12, 74,
- 138, 138, -15, 59, 179, 75, 72, 254, 73, 92,
- 93, 44, 44, 264, 139, 155, 181, 157, 158, 159,
- 335, -12, 264, 262, 161, -15, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 60, 234,
- 230, 25, -96, 316, 177, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 63, 345, 138,
- 81, 348, 138, 81, 85, 255, 186, 317, 318, 86,
- 190, 84, -114, 152, 19, -97, 183, 301, 112, 113,
- 128, 303, 79, 160, 286, 79, 223, 225, 85, 221,
- 56, 134, 135, 253, 19, 87, 127, 76, 322, 4,
- 137, 325, 129, 103, 48, 49, 5, 19, 122, 122,
- -106, 92, 93, 153, 44, 162, -92, 176, 81, 81,
- 117, 276, 81, 188, 81, 283, 284, 139, 81, 347,
- 187, 231, 349, 250, 270, 92, 93, 243, 297, -115,
- 79, 79, 235, 236, 79, 238, 79, 50, 51, 252,
- 79, -106, 281, 299, 288, 138, 76, 81, 259, 282,
- 256, 243, 305, 285, 260, 261, 289, 331, -106, 311,
- 309, 52, 81, 281, -106, 192, 124, 296, 194, 79,
- 287, 98, 99, 100, 101, 102, -115, -115, 103, 337,
- 333, 110, 111, 237, 79, 210, 71, 302, 326, 327,
- 117, 342, 245, 104, 105, 106, 107, 108, 338, 339,
- 109, 251, 82, 307, 330, 85, 257, 308, 67, 222,
- 86, 313, 112, 113, 340, 304, 0, 306, 63, 0,
- 293, 114, 0, 239, 240, 0, 63, 241, 0, 244,
- 0, 272, 0, 246, 20, 273, 87, 88, 89, 0,
- 328, 329, 0, 23, 0, 97, 100, 101, 102, 90,
- 0, 103, 92, 93, 0, 0, 0, 0, 291, 0,
- 0, 0, 266, 0, 0, 294, 295, 0, 0, 298,
- 76, 0, 0, 0, 0, 0, 0, 277, 0, 85,
- 0, 0, 0, 0, 86, 0, 0, 312, 0, 314,
- 0, 315, 320, 321, 0, 323, 2, 3, 0, 4,
- 5, 0, 0, 6, 7, 0, 0, 0, 0, 0,
- 87, 88, 89, 0, 8, 9, 341, 0, 0, 343,
- 0, 0, 344, 90, 346, 0, 92, 93, 0, 0,
- 0, 0, 10, 11, 12, 13, 0, 0, 139, 0,
- 14, 15, 16, 17, 18, 0, 0, 0, 19, 20,
- 0, 0, 0, 0, 0, 21, 22, 0, 23, 0,
- 24, 0, 0, 25, 26, 0, 27, 0, 0, -18,
- 195, -18, 4, 5, 0, 0, 6, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
- 0, 197, 198, 199, -74, -74, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 0, 0, 0, 13, 209,
- 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 0, -74, 20, 0, 0, 0, 0, 0, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 0, 61,
- 0, 0, 75, -74, 76, 195, 0, 4, 5, 0,
- 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 196, 0, 197, 198, 199, -73,
- -73, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 0, 0, 0, 13, 209, 0, 0, 0, 14, 15,
- 16, 17, 0, 0, 0, 0, -73, 20, 0, 0,
+ 34, 138, 81, 81, 127, 141, 158, 254, 160, 33,
+ 124, 56, 57, 58, 239, 184, 75, 48, 49, 63,
+ 63, 195, 63, 68, 183, 71, 126, 330, 86, 144,
+ 5, 179, 298, 63, 145, 292, 342, 80, 62, 64,
+ 147, 65, 123, 125, 232, 148, 150, 233, 19, 43,
+ 75, 151, 98, 156, 270, 182, 44, 139, 123, 123,
+ 50, 51, 59, 164, 76, 134, 44, 188, 189, 196,
+ 140, 77, 198, -13, 277, 200, 93, 94, 85, 240,
+ 139, 44, 60, 197, 138, 52, 159, 44, 161, 162,
+ 163, 199, 260, -118, 25, 165, -13, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63, 63, 128,
+ 191, 280, 236, -100, 281, 181, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 63, 261,
+ 270, 351, 245, 246, 354, -16, 247, 190, 250, 270,
+ 139, 194, 252, -19, 86, 129, 341, 187, 139, 87,
+ 101, 102, 103, 268, 80, 104, 185, 80, -16, 130,
+ 80, -101, 4, 227, 56, 104, -19, 86, 19, 259,
+ 157, 272, 87, 113, 114, 88, 89, 90, 243, 225,
+ 5, 322, 123, 123, 135, 136, 283, 251, 166, 91,
+ 132, 133, 93, 94, 138, 118, 257, 282, 88, 89,
+ 140, 289, 290, 180, -110, 323, 324, 307, 192, -119,
+ 77, 309, 303, 249, 237, 93, 94, 80, 80, 276,
+ 241, 80, 287, 80, 242, 258, 278, 80, 328, 305,
+ 279, 331, 244, 19, 229, 231, 262, 249, 311, 294,
+ 266, 267, 337, 287, 77, 317, -110, 19, 256, 265,
+ 139, 4, 125, 297, 288, -96, 80, -119, -119, 353,
+ 300, 301, 355, -110, 304, 343, 291, 225, 76, -110,
+ 77, 80, 71, 308, 295, 86, 302, 348, 225, 315,
+ 87, 339, 318, 216, 320, 344, 321, 326, 327, 345,
+ 329, 83, 336, 263, 314, 293, 67, 72, 228, 73,
+ 74, 310, 346, 312, 63, 0, 88, 89, 90, 0,
+ 0, 347, 63, 0, 349, 299, 0, 350, 0, 352,
+ 91, 225, 86, 93, 94, 225, 0, 87, 313, 0,
+ 0, 98, 0, 111, 112, 140, 319, 0, 0, 332,
+ 333, 118, 225, 2, 3, 225, 4, 5, 0, 0,
+ 6, 7, 86, 88, 89, 90, 0, 87, 0, 0,
+ 0, 8, 9, 0, 113, 114, 0, 91, 0, 92,
+ 93, 94, 0, 225, 115, 225, 225, 0, 225, 10,
+ 11, 12, 13, 88, 0, 0, 20, 14, 15, 16,
+ 17, 18, 334, 335, 0, 23, 19, 20, 0, 0,
+ 93, 94, 0, 21, 22, 0, 23, 0, 24, 0,
+ 0, 25, 26, 0, 27, 0, 0, -22, 201, -22,
+ 4, 5, 0, 0, 6, 7, 99, 100, 101, 102,
+ 103, 0, 0, 104, 0, 0, 0, 202, 0, 203,
+ 204, 205, -78, -78, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 0, 0, 0, 13, 215, 0, 0,
+ 0, 14, 15, 16, 17, 105, 106, 107, 108, 109,
+ -78, 20, 110, 0, 0, 0, 0, 21, 22, 0,
+ 23, 0, 24, 0, 0, 25, 26, 0, 61, 0,
+ 0, 76, -78, 77, 201, 0, 4, 5, 0, 0,
+ 6, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 202, 0, 203, 204, 205, -77, -77,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
+ 0, 0, 13, 215, 0, 0, 0, 14, 15, 16,
+ 17, 0, 0, 0, 0, 0, -77, 20, 0, 0,
0, 0, 0, 21, 22, 0, 23, 0, 24, 0,
- 0, 25, 26, 0, 61, 0, 0, 75, -73, 76,
- 195, 0, 4, 5, 0, 0, 6, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
- 0, 197, 198, 199, 0, 0, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 0, 0, 0, 13, 209,
- 0, 0, 0, 14, 15, 16, 17, 69, 0, 4,
- 5, 0, 20, 6, 7, 0, 0, -105, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 0, 61,
- 0, 0, 75, 210, 76, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 14, 15, 16, 17, 0, 0, 0, 0, -105, 20,
- 0, 0, 0, 0, 0, 21, 22, 0, 23, 0,
- 24, 0, 0, 25, 267, -105, 61, 0, 4, 5,
- 0, -105, 6, 7, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 196, 0, 197, 198, 199,
- 0, 0, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 0, 0, 0, 13, 209, 0, 0, 0, 14,
- 15, 16, 17, 0, 0, 4, 5, 0, 20, 6,
- 7, 0, 0, 0, 21, 22, 0, 23, 0, 24,
- 0, 0, 25, 26, 0, 61, 0, 0, 75, 0,
- 76, 0, 0, 0, 0, 0, 116, 0, 4, 5,
- 0, 13, 6, 7, 117, 0, 14, 15, 16, 17,
- 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
- 0, 21, 22, 0, 23, 0, 24, 0, 0, 25,
- 26, 0, 61, 0, 13, 0, 0, 76, 0, 14,
- 15, 16, 17, 224, 0, 4, 5, 0, 20, 6,
- 7, 117, 0, 0, 21, 22, 0, 23, 0, 24,
- 0, 0, 25, 26, -113, 61, 0, 0, 0, 0,
- 69, 0, 4, 5, 0, 0, 6, 7, 0, 0,
- 0, 13, 0, 0, 0, 0, 14, 15, 16, 17,
- 0, 0, 0, 0, 85, 20, 0, 0, 0, 86,
- 0, 21, 22, 0, 23, 0, 24, 0, 13, 25,
- 26, 0, 61, 14, 15, 16, 17, 189, 0, 4,
- 5, 0, 20, 6, 7, 87, 88, 89, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 90, 61,
- 91, 92, 93, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 263, 0, 13, 6, 7, 0, 0,
- 14, 15, 16, 17, 0, 0, 0, 0, 0, 20,
- 0, 0, 198, 0, 0, 21, 22, 0, 23, 0,
- 24, 205, 206, 25, 26, 0, 61, 0, 13, 0,
- 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 4, 5, 20, 0, 6, 7, 0, 0, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 0, 61,
- 198, 0, 0, 0, 0, 0, 0, 0, 0, 205,
- 206, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 0, 25, 26, 0, 61, 0, 0, 76, -77, 77,
+ 201, 0, 4, 5, 0, 0, 6, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 202,
+ 0, 203, 204, 205, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 0, 0, 0, 13, 215,
+ 0, 0, 0, 14, 15, 16, 17, 0, 69, 0,
+ 4, 5, 0, 20, 6, 7, 0, 0, -109, 21,
+ 22, 0, 23, 0, 24, 0, 0, 25, 26, 0,
+ 61, 0, 0, 76, 216, 77, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 0, 21, 22, 85, 23,
- 0, 24, 0, 86, 25, 26, 0, 61, 4, 5,
- 0, 0, 6, 7, 0, 0, 0, 96, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 89, 0, 0, 0, 4, 5, 0, 0, 6,
- 7, 117, 90, 220, 13, 92, 93, 0, 0, 14,
- 15, 16, 17, 0, 0, 0, 0, 85, 20, 0,
- 0, 0, 86, 0, 21, 22, 0, 23, 0, 24,
- 0, 13, 25, 26, 0, 61, 14, 15, 16, 17,
- 0, 0, 4, 5, 0, 20, 6, 7, 87, 88,
- 89, 21, 22, 0, 23, 0, 24, 0, 0, 25,
- 26, 90, 61, 0, 92, 93, 0, 0, 0, 4,
- 5, 0, 0, 6, 7, 0, 0, 0, 13, 0,
+ -109, 20, 0, 0, 0, 0, 0, 21, 22, 0,
+ 23, 0, 24, 0, 0, 25, 273, -109, 61, 0,
+ 4, 5, 0, -109, 6, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 202, 0, 203,
+ 204, 205, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 0, 4, 5, 13, 215, 6, 7,
+ 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 0, 20, 0, 0, 0, 0, 0, 21, 22, 0,
+ 23, 0, 24, 0, 0, 25, 26, 0, 61, 0,
+ 13, 76, 0, 77, 0, 14, 15, 16, 17, 0,
+ 117, 0, 4, 5, 0, 20, 6, 7, 118, 0,
+ 0, 21, 22, 0, 23, 0, 24, 0, 0, 25,
+ 26, 0, 61, 0, 0, 0, 0, 77, 230, 0,
+ 4, 5, 0, 0, 6, 7, 118, 0, 13, 0,
0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 0, 0, 20, 0, 0, 0, 0, 0, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 0, 61,
- 14, 15, 16, 17, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 21,
+ 22, 0, 23, 0, 24, 0, 13, 25, 26, -117,
+ 61, 14, 15, 16, 17, 0, 69, 0, 4, 5,
+ 0, 20, 6, 7, 0, 0, 0, 21, 22, 0,
+ 23, 0, 24, 0, 0, 25, 26, 0, 61, 0,
+ 0, 0, 0, 0, 193, 0, 4, 5, 0, 0,
+ 6, 7, 0, 0, 13, 0, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 0, 20,
0, 0, 0, 0, 0, 21, 22, 0, 23, 0,
- 24, 0, 0, 25, 66, 0, 61
+ 24, 0, 13, 25, 26, 0, 61, 14, 15, 16,
+ 17, 0, 0, 0, 0, 4, 269, 20, 0, 6,
+ 7, 0, 0, 21, 22, 0, 23, 0, 24, 0,
+ 0, 25, 26, 0, 61, 204, 0, 0, 0, 0,
+ 0, 0, 0, 0, 211, 212, 0, 0, 0, 4,
+ 5, 13, 0, 6, 7, 0, 14, 15, 16, 17,
+ 0, 0, 0, 0, 0, 0, 20, 0, 0, 204,
+ 0, 0, 21, 22, 0, 23, 0, 24, 211, 212,
+ 25, 26, 0, 61, 0, 13, 0, 0, 0, 0,
+ 14, 15, 16, 17, 4, 5, 0, 0, 6, 7,
+ 20, 0, 0, 97, 0, 0, 21, 22, 0, 23,
+ 0, 24, 0, 0, 25, 26, 0, 61, 0, 0,
+ 0, 0, 4, 5, 0, 0, 6, 7, 118, 0,
+ 13, 0, 0, 0, 0, 14, 15, 16, 17, 0,
+ 0, 0, 0, 0, 86, 20, 0, 0, 0, 87,
+ 0, 21, 22, 0, 23, 0, 24, 0, 13, 25,
+ 26, 0, 61, 14, 15, 16, 17, 4, 5, 0,
+ 0, 6, 7, 20, 0, 88, 89, 90, 0, 21,
+ 22, 0, 23, 0, 24, 0, 0, 25, 26, 91,
+ 61, 0, 93, 94, 0, 4, 5, 0, 0, 6,
+ 7, 0, 0, 13, 0, 0, 0, 0, 14, 15,
+ 16, 17, 0, 0, 0, 0, 0, 0, 20, 0,
+ 0, 0, 0, 0, 21, 22, 0, 23, 0, 24,
+ 0, 0, 25, 26, 0, 61, 14, 15, 16, 17,
+ 86, 0, 0, 0, 0, 87, 20, 0, 0, 0,
+ 0, 0, 21, 22, 0, 23, 0, 24, 0, 0,
+ 25, 66, 0, 61, 0, 0, 0, 0, 0, 0,
+ 0, 88, 89, 90, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 91, 226, 0, 93, 94
};
static const yytype_int16 yycheck[] =
{
- 1, 44, 29, 30, 217, 70, 86, 238, 1, 87,
- 46, 13, 14, 15, 29, 1, 1, 1, 248, 21,
- 22, 1, 24, 25, 1, 26, 120, 17, 17, 6,
- 3, 111, 10, 35, 52, 27, 29, 15, 21, 22,
- 314, 24, 43, 44, 1, 4, 1, 4, 4, 323,
- 1, 6, 35, 4, 119, 73, 68, 75, 59, 60,
- 59, 60, 71, 41, 42, 66, 131, 132, 52, 61,
- 56, 56, 52, 68, 1, 73, 49, 1, 51, 57,
- 58, 71, 71, 314, 69, 86, 72, 88, 89, 90,
- 320, 75, 323, 237, 95, 75, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 68, 68,
- 188, 67, 69, 1, 115, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 129, 341, 56,
- 145, 344, 56, 148, 10, 229, 137, 25, 26, 15,
- 141, 52, 69, 81, 52, 69, 129, 291, 44, 45,
- 68, 295, 145, 91, 41, 148, 179, 180, 10, 160,
- 162, 44, 45, 228, 52, 41, 50, 75, 312, 3,
- 1, 315, 57, 66, 3, 4, 4, 52, 179, 180,
- 11, 57, 58, 5, 71, 39, 74, 14, 203, 204,
- 9, 256, 207, 41, 209, 260, 261, 69, 213, 343,
- 138, 68, 346, 218, 247, 57, 58, 208, 286, 10,
- 203, 204, 68, 68, 207, 68, 209, 46, 47, 220,
- 213, 52, 258, 288, 267, 56, 75, 242, 4, 69,
- 231, 232, 297, 27, 235, 236, 11, 317, 69, 304,
- 21, 70, 257, 279, 75, 145, 247, 68, 148, 242,
- 265, 59, 60, 61, 62, 63, 57, 58, 66, 324,
- 55, 13, 14, 201, 257, 74, 267, 294, 7, 8,
- 9, 336, 210, 59, 60, 61, 62, 63, 7, 7,
- 66, 219, 30, 298, 317, 10, 232, 300, 25, 162,
- 15, 306, 44, 45, 332, 296, -1, 298, 300, -1,
- 279, 53, -1, 203, 204, -1, 308, 207, -1, 209,
- -1, 249, -1, 213, 53, 253, 41, 42, 43, -1,
- 59, 60, -1, 62, -1, 308, 61, 62, 63, 54,
- -1, 66, 57, 58, -1, -1, -1, -1, 276, -1,
- -1, -1, 242, -1, -1, 283, 284, -1, -1, 287,
- 75, -1, -1, -1, -1, -1, -1, 257, -1, 10,
- -1, -1, -1, -1, 15, -1, -1, 305, -1, 307,
- -1, 309, 310, 311, -1, 313, 0, 1, -1, 3,
- 4, -1, -1, 7, 8, -1, -1, -1, -1, -1,
- 41, 42, 43, -1, 18, 19, 334, -1, -1, 337,
- -1, -1, 340, 54, 342, -1, 57, 58, -1, -1,
- -1, -1, 36, 37, 38, 39, -1, -1, 69, -1,
- 44, 45, 46, 47, 48, -1, -1, -1, 52, 53,
- -1, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- 64, -1, -1, 67, 68, -1, 70, -1, -1, 73,
- 1, 75, 3, 4, -1, -1, 7, 8, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 20,
- -1, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, -1, -1, -1, 39, 40,
- -1, -1, -1, 44, 45, 46, 47, -1, -1, -1,
- -1, 52, 53, -1, -1, -1, -1, -1, 59, 60,
- -1, 62, -1, 64, -1, -1, 67, 68, -1, 70,
- -1, -1, 73, 74, 75, 1, -1, 3, 4, -1,
- -1, 7, 8, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 20, -1, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- -1, -1, -1, 39, 40, -1, -1, -1, 44, 45,
- 46, 47, -1, -1, -1, -1, 52, 53, -1, -1,
- -1, -1, -1, 59, 60, -1, 62, -1, 64, -1,
- -1, 67, 68, -1, 70, -1, -1, 73, 74, 75,
+ 1, 1, 29, 30, 46, 70, 87, 223, 88, 1,
+ 44, 13, 14, 15, 4, 121, 27, 3, 4, 21,
+ 22, 1, 24, 25, 1, 26, 17, 320, 10, 1,
+ 4, 112, 17, 35, 6, 41, 329, 29, 21, 22,
+ 1, 24, 43, 44, 1, 6, 1, 4, 53, 69,
+ 61, 6, 35, 82, 244, 120, 72, 57, 59, 60,
+ 46, 47, 69, 92, 74, 66, 72, 132, 133, 146,
+ 70, 76, 149, 53, 254, 152, 58, 59, 53, 69,
+ 57, 72, 69, 1, 1, 71, 87, 72, 89, 90,
+ 91, 1, 1, 70, 68, 96, 76, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 50,
+ 139, 1, 192, 70, 4, 116, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 130, 235,
+ 320, 347, 209, 210, 350, 53, 213, 138, 215, 329,
+ 57, 142, 219, 53, 10, 69, 326, 130, 57, 15,
+ 62, 63, 64, 243, 146, 67, 73, 149, 76, 58,
+ 152, 70, 3, 164, 166, 67, 76, 10, 53, 234,
+ 5, 248, 15, 44, 45, 41, 42, 43, 207, 155,
+ 4, 1, 183, 184, 44, 45, 263, 216, 39, 55,
+ 59, 60, 58, 59, 1, 9, 225, 262, 41, 42,
+ 70, 266, 267, 14, 11, 25, 26, 297, 41, 10,
+ 76, 301, 292, 214, 69, 58, 59, 209, 210, 253,
+ 69, 213, 264, 215, 69, 226, 255, 219, 318, 294,
+ 259, 321, 69, 53, 183, 184, 237, 238, 303, 273,
+ 241, 242, 323, 285, 76, 310, 53, 53, 224, 4,
+ 57, 3, 253, 282, 70, 75, 248, 58, 59, 349,
+ 289, 290, 352, 70, 293, 330, 27, 243, 74, 76,
+ 76, 263, 273, 300, 11, 10, 69, 342, 254, 21,
+ 15, 56, 311, 75, 313, 7, 315, 316, 317, 7,
+ 319, 30, 323, 238, 306, 271, 25, 49, 166, 51,
+ 52, 302, 338, 304, 306, -1, 41, 42, 43, -1,
+ -1, 340, 314, -1, 343, 285, -1, 346, -1, 348,
+ 55, 297, 10, 58, 59, 301, -1, 15, 304, -1,
+ -1, 314, -1, 13, 14, 70, 312, -1, -1, 7,
+ 8, 9, 318, 0, 1, 321, 3, 4, -1, -1,
+ 7, 8, 10, 41, 42, 43, -1, 15, -1, -1,
+ -1, 18, 19, -1, 44, 45, -1, 55, -1, 57,
+ 58, 59, -1, 349, 54, 351, 352, -1, 354, 36,
+ 37, 38, 39, 41, -1, -1, 54, 44, 45, 46,
+ 47, 48, 60, 61, -1, 63, 53, 54, -1, -1,
+ 58, 59, -1, 60, 61, -1, 63, -1, 65, -1,
+ -1, 68, 69, -1, 71, -1, -1, 74, 1, 76,
+ 3, 4, -1, -1, 7, 8, 60, 61, 62, 63,
+ 64, -1, -1, 67, -1, -1, -1, 20, -1, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, -1, -1, -1, 39, 40, -1, -1,
+ -1, 44, 45, 46, 47, 60, 61, 62, 63, 64,
+ 53, 54, 67, -1, -1, -1, -1, 60, 61, -1,
+ 63, -1, 65, -1, -1, 68, 69, -1, 71, -1,
+ -1, 74, 75, 76, 1, -1, 3, 4, -1, -1,
+ 7, 8, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 20, -1, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, -1,
+ -1, -1, 39, 40, -1, -1, -1, 44, 45, 46,
+ 47, -1, -1, -1, -1, -1, 53, 54, -1, -1,
+ -1, -1, -1, 60, 61, -1, 63, -1, 65, -1,
+ -1, 68, 69, -1, 71, -1, -1, 74, 75, 76,
1, -1, 3, 4, -1, -1, 7, 8, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 20,
-1, 22, 23, 24, -1, -1, 27, 28, 29, 30,
31, 32, 33, 34, 35, -1, -1, -1, 39, 40,
- -1, -1, -1, 44, 45, 46, 47, 1, -1, 3,
- 4, -1, 53, 7, 8, -1, -1, 11, 59, 60,
- -1, 62, -1, 64, -1, -1, 67, 68, -1, 70,
- -1, -1, 73, 74, 75, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
- 44, 45, 46, 47, -1, -1, -1, -1, 52, 53,
- -1, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- 64, -1, -1, 67, 68, 69, 70, -1, 3, 4,
- -1, 75, 7, 8, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 20, -1, 22, 23, 24,
- -1, -1, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, -1, -1, -1, 39, 40, -1, -1, -1, 44,
- 45, 46, 47, -1, -1, 3, 4, -1, 53, 7,
- 8, -1, -1, -1, 59, 60, -1, 62, -1, 64,
- -1, -1, 67, 68, -1, 70, -1, -1, 73, -1,
- 75, -1, -1, -1, -1, -1, 1, -1, 3, 4,
- -1, 39, 7, 8, 9, -1, 44, 45, 46, 47,
- -1, -1, -1, -1, -1, 53, -1, -1, -1, -1,
- -1, 59, 60, -1, 62, -1, 64, -1, -1, 67,
- 68, -1, 70, -1, 39, -1, -1, 75, -1, 44,
- 45, 46, 47, 1, -1, 3, 4, -1, 53, 7,
- 8, 9, -1, -1, 59, 60, -1, 62, -1, 64,
- -1, -1, 67, 68, 69, 70, -1, -1, -1, -1,
- 1, -1, 3, 4, -1, -1, 7, 8, -1, -1,
- -1, 39, -1, -1, -1, -1, 44, 45, 46, 47,
- -1, -1, -1, -1, 10, 53, -1, -1, -1, 15,
- -1, 59, 60, -1, 62, -1, 64, -1, 39, 67,
- 68, -1, 70, 44, 45, 46, 47, 1, -1, 3,
- 4, -1, 53, 7, 8, 41, 42, 43, 59, 60,
- -1, 62, -1, 64, -1, -1, 67, 68, 54, 70,
- 56, 57, 58, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 3, 4, -1, 39, 7, 8, -1, -1,
- 44, 45, 46, 47, -1, -1, -1, -1, -1, 53,
- -1, -1, 23, -1, -1, 59, 60, -1, 62, -1,
- 64, 32, 33, 67, 68, -1, 70, -1, 39, -1,
- -1, -1, -1, 44, 45, 46, 47, -1, -1, -1,
- 3, 4, 53, -1, 7, 8, -1, -1, 59, 60,
- -1, 62, -1, 64, -1, -1, 67, 68, -1, 70,
- 23, -1, -1, -1, -1, -1, -1, -1, -1, 32,
- 33, -1, -1, -1, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 44, 45, 46, 47, -1, 1, -1,
+ 3, 4, -1, 54, 7, 8, -1, -1, 11, 60,
+ 61, -1, 63, -1, 65, -1, -1, 68, 69, -1,
+ 71, -1, -1, 74, 75, 76, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 39, -1, -1, -1,
-1, 44, 45, 46, 47, -1, -1, -1, -1, -1,
- 53, -1, -1, -1, -1, -1, 59, 60, 10, 62,
- -1, 64, -1, 15, 67, 68, -1, 70, 3, 4,
- -1, -1, 7, 8, -1, -1, -1, 12, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
- 42, 43, -1, -1, -1, 3, 4, -1, -1, 7,
- 8, 9, 54, 55, 39, 57, 58, -1, -1, 44,
- 45, 46, 47, -1, -1, -1, -1, 10, 53, -1,
- -1, -1, 15, -1, 59, 60, -1, 62, -1, 64,
- -1, 39, 67, 68, -1, 70, 44, 45, 46, 47,
- -1, -1, 3, 4, -1, 53, 7, 8, 41, 42,
- 43, 59, 60, -1, 62, -1, 64, -1, -1, 67,
- 68, 54, 70, -1, 57, 58, -1, -1, -1, 3,
- 4, -1, -1, 7, 8, -1, -1, -1, 39, -1,
+ 53, 54, -1, -1, -1, -1, -1, 60, 61, -1,
+ 63, -1, 65, -1, -1, 68, 69, 70, 71, -1,
+ 3, 4, -1, 76, 7, 8, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 20, -1, 22,
+ 23, 24, -1, -1, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, -1, 3, 4, 39, 40, 7, 8,
+ -1, 44, 45, 46, 47, -1, -1, -1, -1, -1,
+ -1, 54, -1, -1, -1, -1, -1, 60, 61, -1,
+ 63, -1, 65, -1, -1, 68, 69, -1, 71, -1,
+ 39, 74, -1, 76, -1, 44, 45, 46, 47, -1,
+ 1, -1, 3, 4, -1, 54, 7, 8, 9, -1,
+ -1, 60, 61, -1, 63, -1, 65, -1, -1, 68,
+ 69, -1, 71, -1, -1, -1, -1, 76, 1, -1,
+ 3, 4, -1, -1, 7, 8, 9, -1, 39, -1,
-1, -1, -1, 44, 45, 46, 47, -1, -1, -1,
- -1, -1, 53, -1, -1, -1, -1, -1, 59, 60,
- -1, 62, -1, 64, -1, -1, 67, 68, -1, 70,
- 44, 45, 46, 47, -1, -1, -1, -1, -1, 53,
- -1, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- 64, -1, -1, 67, 68, -1, 70
+ -1, -1, -1, 54, -1, -1, -1, -1, -1, 60,
+ 61, -1, 63, -1, 65, -1, 39, 68, 69, 70,
+ 71, 44, 45, 46, 47, -1, 1, -1, 3, 4,
+ -1, 54, 7, 8, -1, -1, -1, 60, 61, -1,
+ 63, -1, 65, -1, -1, 68, 69, -1, 71, -1,
+ -1, -1, -1, -1, 1, -1, 3, 4, -1, -1,
+ 7, 8, -1, -1, 39, -1, -1, -1, -1, 44,
+ 45, 46, 47, -1, -1, -1, -1, -1, -1, 54,
+ -1, -1, -1, -1, -1, 60, 61, -1, 63, -1,
+ 65, -1, 39, 68, 69, -1, 71, 44, 45, 46,
+ 47, -1, -1, -1, -1, 3, 4, 54, -1, 7,
+ 8, -1, -1, 60, 61, -1, 63, -1, 65, -1,
+ -1, 68, 69, -1, 71, 23, -1, -1, -1, -1,
+ -1, -1, -1, -1, 32, 33, -1, -1, -1, 3,
+ 4, 39, -1, 7, 8, -1, 44, 45, 46, 47,
+ -1, -1, -1, -1, -1, -1, 54, -1, -1, 23,
+ -1, -1, 60, 61, -1, 63, -1, 65, 32, 33,
+ 68, 69, -1, 71, -1, 39, -1, -1, -1, -1,
+ 44, 45, 46, 47, 3, 4, -1, -1, 7, 8,
+ 54, -1, -1, 12, -1, -1, 60, 61, -1, 63,
+ -1, 65, -1, -1, 68, 69, -1, 71, -1, -1,
+ -1, -1, 3, 4, -1, -1, 7, 8, 9, -1,
+ 39, -1, -1, -1, -1, 44, 45, 46, 47, -1,
+ -1, -1, -1, -1, 10, 54, -1, -1, -1, 15,
+ -1, 60, 61, -1, 63, -1, 65, -1, 39, 68,
+ 69, -1, 71, 44, 45, 46, 47, 3, 4, -1,
+ -1, 7, 8, 54, -1, 41, 42, 43, -1, 60,
+ 61, -1, 63, -1, 65, -1, -1, 68, 69, 55,
+ 71, -1, 58, 59, -1, 3, 4, -1, -1, 7,
+ 8, -1, -1, 39, -1, -1, -1, -1, 44, 45,
+ 46, 47, -1, -1, -1, -1, -1, -1, 54, -1,
+ -1, -1, -1, -1, 60, 61, -1, 63, -1, 65,
+ -1, -1, 68, 69, -1, 71, 44, 45, 46, 47,
+ 10, -1, -1, -1, -1, 15, 54, -1, -1, -1,
+ -1, -1, 60, 61, -1, 63, -1, 65, -1, -1,
+ 68, 69, -1, 71, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 55, 56, -1, 58, 59
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 77, 0, 1, 3, 4, 7, 8, 18, 19,
- 36, 37, 38, 39, 44, 45, 46, 47, 48, 52,
- 53, 59, 60, 62, 64, 67, 68, 70, 78, 81,
- 85, 87, 90, 108, 119, 123, 124, 125, 126, 127,
- 128, 136, 137, 68, 71, 133, 134, 135, 3, 4,
- 46, 47, 70, 83, 84, 129, 137, 137, 137, 68,
- 68, 70, 124, 137, 124, 124, 68, 126, 137, 1,
- 115, 119, 49, 51, 128, 73, 75, 82, 92, 108,
- 139, 143, 82, 88, 52, 10, 15, 41, 42, 43,
- 54, 56, 57, 58, 121, 122, 12, 124, 59, 60,
- 61, 62, 63, 66, 59, 60, 61, 62, 63, 66,
- 13, 14, 44, 45, 53, 120, 1, 9, 89, 116,
- 117, 118, 119, 115, 119, 17, 133, 50, 68, 57,
- 110, 116, 116, 119, 44, 45, 138, 1, 56, 69,
- 141, 145, 141, 1, 6, 79, 1, 6, 80, 108,
- 109, 91, 109, 5, 89, 119, 136, 119, 119, 119,
- 109, 119, 39, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 89, 14, 119, 141, 1,
- 145, 72, 86, 124, 141, 141, 119, 109, 41, 1,
- 119, 1, 92, 1, 92, 1, 20, 22, 23, 24,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 40,
- 74, 93, 94, 96, 103, 107, 119, 139, 140, 143,
- 55, 119, 129, 118, 1, 118, 1, 4, 111, 112,
- 136, 68, 95, 4, 68, 68, 68, 109, 68, 92,
- 92, 92, 113, 119, 92, 109, 92, 97, 91, 142,
- 143, 109, 119, 141, 1, 145, 119, 113, 98, 4,
- 119, 119, 93, 4, 96, 99, 92, 68, 104, 114,
- 115, 140, 109, 109, 1, 4, 141, 92, 130, 131,
- 132, 133, 69, 141, 141, 27, 41, 143, 115, 11,
- 105, 109, 17, 132, 109, 109, 68, 136, 109, 141,
- 106, 93, 139, 93, 119, 141, 119, 143, 123, 21,
- 100, 141, 109, 143, 109, 109, 1, 25, 26, 101,
- 109, 109, 93, 109, 99, 93, 7, 8, 59, 60,
- 87, 89, 102, 55, 144, 140, 99, 141, 7, 7,
- 144, 109, 141, 109, 109, 91, 109, 93, 91, 93
+ 0, 78, 0, 1, 3, 4, 7, 8, 18, 19,
+ 36, 37, 38, 39, 44, 45, 46, 47, 48, 53,
+ 54, 60, 61, 63, 65, 68, 69, 71, 79, 83,
+ 87, 89, 92, 110, 121, 125, 126, 127, 128, 129,
+ 130, 138, 139, 69, 72, 135, 136, 137, 3, 4,
+ 46, 47, 71, 85, 86, 131, 139, 139, 139, 69,
+ 69, 71, 126, 139, 126, 126, 69, 128, 139, 1,
+ 117, 121, 49, 51, 52, 130, 74, 76, 84, 94,
+ 110, 141, 145, 84, 90, 53, 10, 15, 41, 42,
+ 43, 55, 57, 58, 59, 123, 124, 12, 126, 60,
+ 61, 62, 63, 64, 67, 60, 61, 62, 63, 64,
+ 67, 13, 14, 44, 45, 54, 122, 1, 9, 91,
+ 118, 119, 120, 121, 117, 121, 17, 135, 50, 69,
+ 58, 112, 118, 118, 121, 44, 45, 140, 1, 57,
+ 70, 143, 147, 143, 1, 6, 80, 1, 6, 81,
+ 1, 6, 82, 110, 111, 93, 111, 5, 91, 121,
+ 138, 121, 121, 121, 111, 121, 39, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 91,
+ 14, 121, 143, 1, 147, 73, 88, 126, 143, 143,
+ 121, 111, 41, 1, 121, 1, 94, 1, 94, 1,
+ 94, 1, 20, 22, 23, 24, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 40, 75, 95, 96, 98,
+ 105, 109, 121, 141, 142, 145, 56, 121, 131, 120,
+ 1, 120, 1, 4, 113, 114, 138, 69, 97, 4,
+ 69, 69, 69, 111, 69, 94, 94, 94, 115, 121,
+ 94, 111, 94, 99, 93, 144, 145, 111, 121, 143,
+ 1, 147, 121, 115, 100, 4, 121, 121, 95, 4,
+ 98, 101, 94, 69, 106, 116, 117, 142, 111, 111,
+ 1, 4, 143, 94, 132, 133, 134, 135, 70, 143,
+ 143, 27, 41, 145, 117, 11, 107, 111, 17, 134,
+ 111, 111, 69, 138, 111, 143, 108, 95, 141, 95,
+ 121, 143, 121, 145, 125, 21, 102, 143, 111, 145,
+ 111, 111, 1, 25, 26, 103, 111, 111, 95, 111,
+ 101, 95, 7, 8, 60, 61, 89, 91, 104, 56,
+ 146, 142, 101, 143, 7, 7, 146, 111, 143, 111,
+ 111, 93, 111, 95, 93, 95
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 76, 77, 77, 77, 77, 77, 78, 78, 78,
- 78, 78, 79, 79, 79, 80, 80, 80, 81, 81,
- 81, 81, 81, 81, 81, 82, 83, 83, 83, 83,
- 84, 84, 86, 85, 88, 87, 89, 90, 90, 91,
- 91, 91, 92, 92, 93, 93, 93, 93, 93, 93,
- 93, 93, 93, 93, 94, 94, 94, 94, 94, 95,
- 94, 94, 97, 96, 98, 96, 96, 96, 99, 99,
- 100, 100, 100, 101, 101, 102, 102, 102, 102, 102,
- 102, 103, 103, 104, 104, 105, 106, 105, 107, 107,
- 108, 108, 109, 109, 110, 110, 111, 111, 112, 112,
- 112, 112, 112, 113, 113, 114, 114, 115, 115, 115,
- 115, 115, 115, 116, 116, 117, 117, 117, 117, 117,
- 117, 118, 118, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 120, 120, 120, 121, 121, 122, 122,
- 123, 123, 123, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 125, 125, 125, 125, 125, 125,
- 125, 126, 126, 126, 126, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 127, 127, 128, 129, 129,
- 130, 130, 131, 131, 132, 133, 134, 134, 135, 136,
- 136, 137, 137, 138, 138, 138, 139, 140, 141, 142,
- 142, 143, 144, 145
+ 0, 77, 78, 78, 78, 78, 78, 79, 79, 79,
+ 79, 79, 79, 80, 80, 80, 81, 81, 81, 82,
+ 82, 82, 83, 83, 83, 83, 83, 83, 83, 84,
+ 85, 85, 85, 85, 86, 86, 88, 87, 90, 89,
+ 91, 92, 92, 93, 93, 93, 94, 94, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 95, 96, 96,
+ 96, 96, 96, 97, 96, 96, 99, 98, 100, 98,
+ 98, 98, 101, 101, 102, 102, 102, 103, 103, 104,
+ 104, 104, 104, 104, 104, 105, 105, 106, 106, 107,
+ 108, 107, 109, 109, 110, 110, 111, 111, 112, 112,
+ 113, 113, 114, 114, 114, 114, 114, 115, 115, 116,
+ 116, 117, 117, 117, 117, 117, 117, 118, 118, 119,
+ 119, 119, 119, 119, 119, 120, 120, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 122, 122, 122,
+ 123, 123, 124, 124, 125, 125, 125, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 127, 127,
+ 127, 127, 127, 127, 127, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 129,
+ 129, 130, 131, 131, 132, 132, 133, 133, 134, 135,
+ 136, 136, 137, 138, 138, 139, 139, 140, 140, 140,
+ 141, 142, 143, 144, 144, 145, 146, 147
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
- 4, 4, 1, 2, 1, 1, 2, 1, 0, 1,
- 4, 1, 1, 1, 1, 5, 1, 1, 1, 2,
- 1, 1, 0, 7, 0, 3, 1, 1, 1, 0,
- 2, 2, 1, 2, 2, 3, 1, 9, 6, 8,
- 8, 12, 11, 1, 2, 2, 2, 2, 3, 0,
- 4, 2, 0, 4, 0, 4, 4, 1, 0, 1,
- 0, 2, 2, 5, 4, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 3, 0, 0, 3, 6, 9,
- 1, 2, 0, 1, 0, 2, 0, 1, 1, 3,
- 1, 2, 3, 0, 1, 0, 1, 1, 3, 1,
- 2, 3, 3, 0, 1, 1, 3, 1, 2, 3,
- 3, 1, 1, 3, 3, 3, 3, 3, 3, 3,
- 3, 5, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 2, 1, 3, 3, 3, 3, 3, 3,
- 3, 2, 2, 5, 4, 3, 3, 3, 3, 3,
- 3, 1, 2, 3, 4, 4, 1, 1, 1, 2,
- 2, 1, 1, 2, 2, 1, 2, 4, 0, 1,
- 0, 2, 1, 2, 1, 3, 1, 2, 2, 1,
- 2, 1, 3, 1, 1, 0, 2, 2, 1, 0,
- 1, 1, 1, 2
+ 4, 4, 4, 1, 2, 1, 1, 2, 1, 1,
+ 2, 1, 0, 1, 4, 1, 1, 1, 1, 5,
+ 1, 1, 1, 2, 1, 1, 0, 7, 0, 3,
+ 1, 1, 1, 0, 2, 2, 1, 2, 2, 3,
+ 1, 9, 6, 8, 8, 12, 11, 1, 2, 2,
+ 2, 2, 3, 0, 4, 2, 0, 4, 0, 4,
+ 4, 1, 0, 1, 0, 2, 2, 5, 4, 1,
+ 2, 2, 1, 1, 1, 1, 1, 1, 3, 0,
+ 0, 3, 6, 9, 1, 2, 0, 1, 0, 2,
+ 0, 1, 1, 3, 1, 2, 3, 0, 1, 0,
+ 1, 1, 3, 1, 2, 3, 3, 0, 1, 1,
+ 3, 1, 2, 3, 3, 1, 1, 3, 3, 3,
+ 3, 3, 3, 3, 3, 5, 1, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 2, 1, 3, 3,
+ 3, 3, 3, 3, 3, 2, 2, 5, 4, 3,
+ 3, 3, 3, 3, 3, 1, 2, 3, 4, 4,
+ 1, 1, 1, 2, 2, 1, 1, 2, 2, 1,
+ 2, 4, 0, 1, 0, 2, 1, 2, 1, 3,
+ 1, 2, 2, 1, 2, 1, 3, 1, 1, 0,
+ 2, 2, 1, 0, 1, 1, 1, 2
};
@@ -1889,24 +1893,24 @@ yyreduce:
switch (yyn)
{
case 3:
-#line 219 "awkgram.y" /* yacc.c:1646 */
+#line 222 "awkgram.y" /* yacc.c:1646 */
{
rule = 0;
yyerrok;
}
-#line 1898 "awkgram.c" /* yacc.c:1646 */
+#line 1902 "awkgram.c" /* yacc.c:1646 */
break;
case 5:
-#line 225 "awkgram.y" /* yacc.c:1646 */
+#line 228 "awkgram.y" /* yacc.c:1646 */
{
next_sourcefile();
}
-#line 1906 "awkgram.c" /* yacc.c:1646 */
+#line 1910 "awkgram.c" /* yacc.c:1646 */
break;
case 6:
-#line 229 "awkgram.y" /* yacc.c:1646 */
+#line 232 "awkgram.y" /* yacc.c:1646 */
{
rule = 0;
/*
@@ -1915,20 +1919,20 @@ yyreduce:
*/
/* yyerrok; */
}
-#line 1919 "awkgram.c" /* yacc.c:1646 */
+#line 1923 "awkgram.c" /* yacc.c:1646 */
break;
case 7:
-#line 241 "awkgram.y" /* yacc.c:1646 */
+#line 244 "awkgram.y" /* yacc.c:1646 */
{
(void) append_rule((yyvsp[-1]), (yyvsp[0]));
first_rule = false;
}
-#line 1928 "awkgram.c" /* yacc.c:1646 */
+#line 1932 "awkgram.c" /* yacc.c:1646 */
break;
case 8:
-#line 246 "awkgram.y" /* yacc.c:1646 */
+#line 249 "awkgram.y" /* yacc.c:1646 */
{
if (rule != Rule) {
msg(_("%s blocks must have an action part"),
ruletab[rule]);
@@ -1939,66 +1943,85 @@ yyreduce:
} else /* pattern rule with non-empty pattern */
(void) append_rule((yyvsp[-1]), NULL);
}
-#line 1943 "awkgram.c" /* yacc.c:1646 */
+#line 1947 "awkgram.c" /* yacc.c:1646 */
break;
case 9:
-#line 257 "awkgram.y" /* yacc.c:1646 */
+#line 260 "awkgram.y" /* yacc.c:1646 */
{
in_function = NULL;
(void) mk_function((yyvsp[-1]), (yyvsp[0]));
want_param_names = DONT_CHECK;
yyerrok;
}
-#line 1954 "awkgram.c" /* yacc.c:1646 */
+#line 1958 "awkgram.c" /* yacc.c:1646 */
break;
case 10:
-#line 264 "awkgram.y" /* yacc.c:1646 */
+#line 267 "awkgram.y" /* yacc.c:1646 */
{
want_source = false;
at_seen = false;
yyerrok;
}
-#line 1964 "awkgram.c" /* yacc.c:1646 */
+#line 1968 "awkgram.c" /* yacc.c:1646 */
break;
case 11:
-#line 270 "awkgram.y" /* yacc.c:1646 */
+#line 273 "awkgram.y" /* yacc.c:1646 */
{
want_source = false;
at_seen = false;
yyerrok;
}
-#line 1974 "awkgram.c" /* yacc.c:1646 */
+#line 1978 "awkgram.c" /* yacc.c:1646 */
break;
case 12:
#line 279 "awkgram.y" /* yacc.c:1646 */
{
+ want_source = false;
+ at_seen = false;
+fprintf(stderr, "setting namespace to %s\n", (yyvsp[-1])->lextok);
+/*
+ if (set_namespace($3->lextok) < 0)
+ YYABORT;
+*/
+ efree((yyvsp[-1])->lextok);
+ bcfree((yyvsp[-1]));
+ // for now:
+ bcfree((yyvsp[-2]));
+ yyerrok;
+ }
+#line 1997 "awkgram.c" /* yacc.c:1646 */
+ break;
+
+ case 13:
+#line 297 "awkgram.y" /* yacc.c:1646 */
+ {
if (include_source((yyvsp[0])) < 0)
YYABORT;
efree((yyvsp[0])->lextok);
bcfree((yyvsp[0]));
(yyval) = NULL;
}
-#line 1986 "awkgram.c" /* yacc.c:1646 */
+#line 2009 "awkgram.c" /* yacc.c:1646 */
break;
- case 13:
-#line 287 "awkgram.y" /* yacc.c:1646 */
+ case 14:
+#line 305 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 1992 "awkgram.c" /* yacc.c:1646 */
+#line 2015 "awkgram.c" /* yacc.c:1646 */
break;
- case 14:
-#line 289 "awkgram.y" /* yacc.c:1646 */
+ case 15:
+#line 307 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 1998 "awkgram.c" /* yacc.c:1646 */
+#line 2021 "awkgram.c" /* yacc.c:1646 */
break;
- case 15:
-#line 294 "awkgram.y" /* yacc.c:1646 */
+ case 16:
+#line 312 "awkgram.y" /* yacc.c:1646 */
{
if (load_library((yyvsp[0])) < 0)
YYABORT;
@@ -2006,23 +2029,41 @@ yyreduce:
bcfree((yyvsp[0]));
(yyval) = NULL;
}
-#line 2010 "awkgram.c" /* yacc.c:1646 */
+#line 2033 "awkgram.c" /* yacc.c:1646 */
break;
- case 16:
-#line 302 "awkgram.y" /* yacc.c:1646 */
+ case 17:
+#line 320 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 2016 "awkgram.c" /* yacc.c:1646 */
+#line 2039 "awkgram.c" /* yacc.c:1646 */
break;
- case 17:
-#line 304 "awkgram.y" /* yacc.c:1646 */
+ case 18:
+#line 322 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 2022 "awkgram.c" /* yacc.c:1646 */
+#line 2045 "awkgram.c" /* yacc.c:1646 */
break;
- case 18:
-#line 309 "awkgram.y" /* yacc.c:1646 */
+ case 19:
+#line 327 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = (yyvsp[0]); }
+#line 2051 "awkgram.c" /* yacc.c:1646 */
+ break;
+
+ case 20:
+#line 329 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = NULL; }
+#line 2057 "awkgram.c" /* yacc.c:1646 */
+ break;
+
+ case 21:
+#line 331 "awkgram.y" /* yacc.c:1646 */
+ { (yyval) = NULL; }
+#line 2063 "awkgram.c" /* yacc.c:1646 */
+ break;
+
+ case 22:
+#line 336 "awkgram.y" /* yacc.c:1646 */
{
rule = Rule;
if (comment != NULL) {
@@ -2031,11 +2072,11 @@ yyreduce:
} else
(yyval) = NULL;
}
-#line 2035 "awkgram.c" /* yacc.c:1646 */
+#line 2076 "awkgram.c" /* yacc.c:1646 */
break;
- case 19:
-#line 318 "awkgram.y" /* yacc.c:1646 */
+ case 23:
+#line 345 "awkgram.y" /* yacc.c:1646 */
{
rule = Rule;
if (comment != NULL) {
@@ -2044,11 +2085,11 @@ yyreduce:
} else
(yyval) = (yyvsp[0]);
}
-#line 2048 "awkgram.c" /* yacc.c:1646 */
+#line 2089 "awkgram.c" /* yacc.c:1646 */
break;
- case 20:
-#line 328 "awkgram.y" /* yacc.c:1646 */
+ case 24:
+#line 355 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *tp;
@@ -2078,11 +2119,11 @@ yyreduce:
(yyval) = list_append(list_merge((yyvsp[-3]),
(yyvsp[0])), tp);
rule = Rule;
}
-#line 2082 "awkgram.c" /* yacc.c:1646 */
+#line 2123 "awkgram.c" /* yacc.c:1646 */
break;
- case 21:
-#line 358 "awkgram.y" /* yacc.c:1646 */
+ case 25:
+#line 385 "awkgram.y" /* yacc.c:1646 */
{
static int begin_seen = 0;
@@ -2096,11 +2137,11 @@ yyreduce:
check_comment();
(yyval) = (yyvsp[0]);
}
-#line 2100 "awkgram.c" /* yacc.c:1646 */
+#line 2141 "awkgram.c" /* yacc.c:1646 */
break;
- case 22:
-#line 372 "awkgram.y" /* yacc.c:1646 */
+ case 26:
+#line 399 "awkgram.y" /* yacc.c:1646 */
{
static int end_seen = 0;
@@ -2114,11 +2155,11 @@ yyreduce:
check_comment();
(yyval) = (yyvsp[0]);
}
-#line 2118 "awkgram.c" /* yacc.c:1646 */
+#line 2159 "awkgram.c" /* yacc.c:1646 */
break;
- case 23:
-#line 386 "awkgram.y" /* yacc.c:1646 */
+ case 27:
+#line 413 "awkgram.y" /* yacc.c:1646 */
{
func_first = false;
(yyvsp[0])->in_rule = rule = BEGINFILE;
@@ -2126,11 +2167,11 @@ yyreduce:
check_comment();
(yyval) = (yyvsp[0]);
}
-#line 2130 "awkgram.c" /* yacc.c:1646 */
+#line 2171 "awkgram.c" /* yacc.c:1646 */
break;
- case 24:
-#line 394 "awkgram.y" /* yacc.c:1646 */
+ case 28:
+#line 421 "awkgram.y" /* yacc.c:1646 */
{
func_first = false;
(yyvsp[0])->in_rule = rule = ENDFILE;
@@ -2138,11 +2179,11 @@ yyreduce:
check_comment();
(yyval) = (yyvsp[0]);
}
-#line 2142 "awkgram.c" /* yacc.c:1646 */
+#line 2183 "awkgram.c" /* yacc.c:1646 */
break;
- case 25:
-#line 405 "awkgram.y" /* yacc.c:1646 */
+ case 29:
+#line 432 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *ip;
if ((yyvsp[-3]) == NULL)
@@ -2151,48 +2192,48 @@ yyreduce:
ip = (yyvsp[-3]);
(yyval) = ip;
}
-#line 2155 "awkgram.c" /* yacc.c:1646 */
+#line 2196 "awkgram.c" /* yacc.c:1646 */
break;
- case 26:
-#line 417 "awkgram.y" /* yacc.c:1646 */
+ case 30:
+#line 444 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 2161 "awkgram.c" /* yacc.c:1646 */
+#line 2202 "awkgram.c" /* yacc.c:1646 */
break;
- case 27:
-#line 419 "awkgram.y" /* yacc.c:1646 */
+ case 31:
+#line 446 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 2167 "awkgram.c" /* yacc.c:1646 */
+#line 2208 "awkgram.c" /* yacc.c:1646 */
break;
- case 28:
-#line 421 "awkgram.y" /* yacc.c:1646 */
+ case 32:
+#line 448 "awkgram.y" /* yacc.c:1646 */
{
yyerror(_("`%s' is a built-in function, it cannot be
redefined"),
tokstart);
YYABORT;
}
-#line 2177 "awkgram.c" /* yacc.c:1646 */
+#line 2218 "awkgram.c" /* yacc.c:1646 */
break;
- case 29:
-#line 427 "awkgram.y" /* yacc.c:1646 */
+ case 33:
+#line 454 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = (yyvsp[0]);
at_seen = false;
}
-#line 2186 "awkgram.c" /* yacc.c:1646 */
+#line 2227 "awkgram.c" /* yacc.c:1646 */
break;
- case 32:
-#line 439 "awkgram.y" /* yacc.c:1646 */
+ case 36:
+#line 466 "awkgram.y" /* yacc.c:1646 */
{ want_param_names = FUNC_HEADER; }
-#line 2192 "awkgram.c" /* yacc.c:1646 */
+#line 2233 "awkgram.c" /* yacc.c:1646 */
break;
- case 33:
-#line 440 "awkgram.y" /* yacc.c:1646 */
+ case 37:
+#line 467 "awkgram.y" /* yacc.c:1646 */
{
/*
* treat any comments between BOF and the first function
@@ -2230,17 +2271,17 @@ yyreduce:
(yyval) = (yyvsp[-6]);
want_param_names = FUNC_BODY;
}
-#line 2234 "awkgram.c" /* yacc.c:1646 */
+#line 2275 "awkgram.c" /* yacc.c:1646 */
break;
- case 34:
-#line 485 "awkgram.y" /* yacc.c:1646 */
+ case 38:
+#line 512 "awkgram.y" /* yacc.c:1646 */
{ want_regexp = true; }
-#line 2240 "awkgram.c" /* yacc.c:1646 */
+#line 2281 "awkgram.c" /* yacc.c:1646 */
break;
- case 35:
-#line 487 "awkgram.y" /* yacc.c:1646 */
+ case 39:
+#line 514 "awkgram.y" /* yacc.c:1646 */
{
NODE *n, *exp;
char *re;
@@ -2269,11 +2310,11 @@ yyreduce:
(yyval)->opcode = Op_match_rec;
(yyval)->memory = n;
}
-#line 2273 "awkgram.c" /* yacc.c:1646 */
+#line 2314 "awkgram.c" /* yacc.c:1646 */
break;
- case 36:
-#line 519 "awkgram.y" /* yacc.c:1646 */
+ case 40:
+#line 546 "awkgram.y" /* yacc.c:1646 */
{
char *re;
size_t len;
@@ -2286,17 +2327,17 @@ yyreduce:
(yyval)->opcode = Op_push_re;
(yyval)->memory = make_typed_regex(re, len);
}
-#line 2290 "awkgram.c" /* yacc.c:1646 */
+#line 2331 "awkgram.c" /* yacc.c:1646 */
break;
- case 37:
-#line 534 "awkgram.y" /* yacc.c:1646 */
+ case 41:
+#line 561 "awkgram.y" /* yacc.c:1646 */
{ bcfree((yyvsp[0])); }
-#line 2296 "awkgram.c" /* yacc.c:1646 */
+#line 2337 "awkgram.c" /* yacc.c:1646 */
break;
- case 39:
-#line 540 "awkgram.y" /* yacc.c:1646 */
+ case 43:
+#line 567 "awkgram.y" /* yacc.c:1646 */
{
if (prior_comment != NULL) {
(yyval) = list_create(prior_comment);
@@ -2307,11 +2348,11 @@ yyreduce:
} else
(yyval) = NULL;
}
-#line 2311 "awkgram.c" /* yacc.c:1646 */
+#line 2352 "awkgram.c" /* yacc.c:1646 */
break;
- case 40:
-#line 551 "awkgram.y" /* yacc.c:1646 */
+ case 44:
+#line 578 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[0]) == NULL) {
if (prior_comment != NULL) {
@@ -2358,40 +2399,40 @@ yyreduce:
}
yyerrok;
}
-#line 2362 "awkgram.c" /* yacc.c:1646 */
+#line 2403 "awkgram.c" /* yacc.c:1646 */
break;
- case 41:
-#line 598 "awkgram.y" /* yacc.c:1646 */
+ case 45:
+#line 625 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 2368 "awkgram.c" /* yacc.c:1646 */
+#line 2409 "awkgram.c" /* yacc.c:1646 */
break;
- case 44:
-#line 608 "awkgram.y" /* yacc.c:1646 */
+ case 48:
+#line 635 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 2374 "awkgram.c" /* yacc.c:1646 */
+#line 2415 "awkgram.c" /* yacc.c:1646 */
break;
- case 45:
-#line 610 "awkgram.y" /* yacc.c:1646 */
+ case 49:
+#line 637 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-1]); }
-#line 2380 "awkgram.c" /* yacc.c:1646 */
+#line 2421 "awkgram.c" /* yacc.c:1646 */
break;
- case 46:
-#line 612 "awkgram.y" /* yacc.c:1646 */
+ case 50:
+#line 639 "awkgram.y" /* yacc.c:1646 */
{
if (do_pretty_print)
(yyval) = list_prepend((yyvsp[0]),
instruction(Op_exec_count));
else
(yyval) = (yyvsp[0]);
}
-#line 2391 "awkgram.c" /* yacc.c:1646 */
+#line 2432 "awkgram.c" /* yacc.c:1646 */
break;
- case 47:
-#line 619 "awkgram.y" /* yacc.c:1646 */
+ case 51:
+#line 646 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
INSTRUCTION *ip, *nextc, *tbreak;
@@ -2481,11 +2522,11 @@ yyreduce:
break_allowed--;
fix_break_continue(ip, tbreak, NULL);
}
-#line 2485 "awkgram.c" /* yacc.c:1646 */
+#line 2526 "awkgram.c" /* yacc.c:1646 */
break;
- case 48:
-#line 709 "awkgram.y" /* yacc.c:1646 */
+ case 52:
+#line 736 "awkgram.y" /* yacc.c:1646 */
{
/*
* -----------------
@@ -2527,11 +2568,11 @@ yyreduce:
continue_allowed--;
fix_break_continue(ip, tbreak, tcont);
}
-#line 2531 "awkgram.c" /* yacc.c:1646 */
+#line 2572 "awkgram.c" /* yacc.c:1646 */
break;
- case 49:
-#line 751 "awkgram.y" /* yacc.c:1646 */
+ case 53:
+#line 778 "awkgram.y" /* yacc.c:1646 */
{
/*
* -----------------
@@ -2573,11 +2614,11 @@ yyreduce:
} /* else
$1 and $4 are NULLs */
}
-#line 2577 "awkgram.c" /* yacc.c:1646 */
+#line 2618 "awkgram.c" /* yacc.c:1646 */
break;
- case 50:
-#line 793 "awkgram.y" /* yacc.c:1646 */
+ case 54:
+#line 820 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *ip;
char *var_name = (yyvsp[-5])->lextok;
@@ -2690,33 +2731,33 @@ regular_loop:
break_allowed--;
continue_allowed--;
}
-#line 2694 "awkgram.c" /* yacc.c:1646 */
+#line 2735 "awkgram.c" /* yacc.c:1646 */
break;
- case 51:
-#line 906 "awkgram.y" /* yacc.c:1646 */
+ case 55:
+#line 933 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]),
(yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
-#line 2705 "awkgram.c" /* yacc.c:1646 */
+#line 2746 "awkgram.c" /* yacc.c:1646 */
break;
- case 52:
-#line 913 "awkgram.y" /* yacc.c:1646 */
+ case 56:
+#line 940 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION
*) NULL, (yyvsp[-3]), (yyvsp[0]));
break_allowed--;
continue_allowed--;
}
-#line 2716 "awkgram.c" /* yacc.c:1646 */
+#line 2757 "awkgram.c" /* yacc.c:1646 */
break;
- case 53:
-#line 920 "awkgram.y" /* yacc.c:1646 */
+ case 57:
+#line 947 "awkgram.y" /* yacc.c:1646 */
{
if (do_pretty_print)
(yyval) = list_prepend((yyvsp[0]),
instruction(Op_exec_count));
@@ -2724,11 +2765,11 @@ regular_loop:
(yyval) = (yyvsp[0]);
(yyval) = add_pending_comment((yyval));
}
-#line 2728 "awkgram.c" /* yacc.c:1646 */
+#line 2769 "awkgram.c" /* yacc.c:1646 */
break;
- case 54:
-#line 931 "awkgram.y" /* yacc.c:1646 */
+ case 58:
+#line 958 "awkgram.y" /* yacc.c:1646 */
{
if (! break_allowed)
error_ln((yyvsp[-1])->source_line,
@@ -2738,11 +2779,11 @@ regular_loop:
(yyval) = add_pending_comment((yyval));
}
-#line 2742 "awkgram.c" /* yacc.c:1646 */
+#line 2783 "awkgram.c" /* yacc.c:1646 */
break;
- case 55:
-#line 941 "awkgram.y" /* yacc.c:1646 */
+ case 59:
+#line 968 "awkgram.y" /* yacc.c:1646 */
{
if (! continue_allowed)
error_ln((yyvsp[-1])->source_line,
@@ -2752,11 +2793,11 @@ regular_loop:
(yyval) = add_pending_comment((yyval));
}
-#line 2756 "awkgram.c" /* yacc.c:1646 */
+#line 2797 "awkgram.c" /* yacc.c:1646 */
break;
- case 56:
-#line 951 "awkgram.y" /* yacc.c:1646 */
+ case 60:
+#line 978 "awkgram.y" /* yacc.c:1646 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule && rule != Rule)
@@ -2766,11 +2807,11 @@ regular_loop:
(yyval) = list_create((yyvsp[-1]));
(yyval) = add_pending_comment((yyval));
}
-#line 2770 "awkgram.c" /* yacc.c:1646 */
+#line 2811 "awkgram.c" /* yacc.c:1646 */
break;
- case 57:
-#line 961 "awkgram.y" /* yacc.c:1646 */
+ case 61:
+#line 988 "awkgram.y" /* yacc.c:1646 */
{
/* if inside function (rule = 0), resolve context at run-time */
if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2782,11 +2823,11 @@ regular_loop:
(yyval) = list_create((yyvsp[-1]));
(yyval) = add_pending_comment((yyval));
}
-#line 2786 "awkgram.c" /* yacc.c:1646 */
+#line 2827 "awkgram.c" /* yacc.c:1646 */
break;
- case 58:
-#line 973 "awkgram.y" /* yacc.c:1646 */
+ case 62:
+#line 1000 "awkgram.y" /* yacc.c:1646 */
{
/* Initialize the two possible jump targets, the actual target
* is resolved at run-time.
@@ -2802,20 +2843,20 @@ regular_loop:
(yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
(yyval) = add_pending_comment((yyval));
}
-#line 2806 "awkgram.c" /* yacc.c:1646 */
+#line 2847 "awkgram.c" /* yacc.c:1646 */
break;
- case 59:
-#line 989 "awkgram.y" /* yacc.c:1646 */
+ case 63:
+#line 1016 "awkgram.y" /* yacc.c:1646 */
{
if (! in_function)
yyerror(_("`return' used outside function context"));
}
-#line 2815 "awkgram.c" /* yacc.c:1646 */
+#line 2856 "awkgram.c" /* yacc.c:1646 */
break;
- case 60:
-#line 992 "awkgram.y" /* yacc.c:1646 */
+ case 64:
+#line 1019 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-1]) == NULL) {
(yyval) = list_create((yyvsp[-3]));
@@ -2837,17 +2878,17 @@ regular_loop:
}
(yyval) = add_pending_comment((yyval));
}
-#line 2841 "awkgram.c" /* yacc.c:1646 */
+#line 2882 "awkgram.c" /* yacc.c:1646 */
break;
- case 62:
-#line 1025 "awkgram.y" /* yacc.c:1646 */
+ case 66:
+#line 1052 "awkgram.y" /* yacc.c:1646 */
{ in_print = true; in_parens = 0; }
-#line 2847 "awkgram.c" /* yacc.c:1646 */
+#line 2888 "awkgram.c" /* yacc.c:1646 */
break;
- case 63:
-#line 1026 "awkgram.y" /* yacc.c:1646 */
+ case 67:
+#line 1053 "awkgram.y" /* yacc.c:1646 */
{
/*
* Optimization: plain `print' has no expression list, so $3 is
null.
@@ -2945,17 +2986,17 @@ regular_print:
}
(yyval) = add_pending_comment((yyval));
}
-#line 2949 "awkgram.c" /* yacc.c:1646 */
+#line 2990 "awkgram.c" /* yacc.c:1646 */
break;
- case 64:
-#line 1124 "awkgram.y" /* yacc.c:1646 */
+ case 68:
+#line 1151 "awkgram.y" /* yacc.c:1646 */
{ sub_counter = 0; }
-#line 2955 "awkgram.c" /* yacc.c:1646 */
+#line 2996 "awkgram.c" /* yacc.c:1646 */
break;
- case 65:
-#line 1125 "awkgram.y" /* yacc.c:1646 */
+ case 69:
+#line 1152 "awkgram.y" /* yacc.c:1646 */
{
char *arr = (yyvsp[-2])->lextok;
@@ -2989,11 +3030,11 @@ regular_print:
}
(yyval) = add_pending_comment((yyval));
}
-#line 2993 "awkgram.c" /* yacc.c:1646 */
+#line 3034 "awkgram.c" /* yacc.c:1646 */
break;
- case 66:
-#line 1163 "awkgram.y" /* yacc.c:1646 */
+ case 70:
+#line 1190 "awkgram.y" /* yacc.c:1646 */
{
static bool warned = false;
char *arr = (yyvsp[-1])->lextok;
@@ -3020,55 +3061,55 @@ regular_print:
}
(yyval) = add_pending_comment((yyval));
}
-#line 3024 "awkgram.c" /* yacc.c:1646 */
+#line 3065 "awkgram.c" /* yacc.c:1646 */
break;
- case 67:
-#line 1190 "awkgram.y" /* yacc.c:1646 */
+ case 71:
+#line 1217 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = optimize_assignment((yyvsp[0]));
(yyval) = add_pending_comment((yyval));
}
-#line 3033 "awkgram.c" /* yacc.c:1646 */
+#line 3074 "awkgram.c" /* yacc.c:1646 */
break;
- case 68:
-#line 1198 "awkgram.y" /* yacc.c:1646 */
+ case 72:
+#line 1225 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3039 "awkgram.c" /* yacc.c:1646 */
+#line 3080 "awkgram.c" /* yacc.c:1646 */
break;
- case 69:
-#line 1200 "awkgram.y" /* yacc.c:1646 */
+ case 73:
+#line 1227 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3045 "awkgram.c" /* yacc.c:1646 */
+#line 3086 "awkgram.c" /* yacc.c:1646 */
break;
- case 70:
-#line 1205 "awkgram.y" /* yacc.c:1646 */
+ case 74:
+#line 1232 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3051 "awkgram.c" /* yacc.c:1646 */
+#line 3092 "awkgram.c" /* yacc.c:1646 */
break;
- case 71:
-#line 1207 "awkgram.y" /* yacc.c:1646 */
+ case 75:
+#line 1234 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-1]) == NULL)
(yyval) = list_create((yyvsp[0]));
else
(yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
}
-#line 3062 "awkgram.c" /* yacc.c:1646 */
+#line 3103 "awkgram.c" /* yacc.c:1646 */
break;
- case 72:
-#line 1214 "awkgram.y" /* yacc.c:1646 */
+ case 76:
+#line 1241 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3068 "awkgram.c" /* yacc.c:1646 */
+#line 3109 "awkgram.c" /* yacc.c:1646 */
break;
- case 73:
-#line 1219 "awkgram.y" /* yacc.c:1646 */
+ case 77:
+#line 1246 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *casestmt = (yyvsp[0]);
if ((yyvsp[0]) == NULL)
@@ -3080,11 +3121,11 @@ regular_print:
bcfree((yyvsp[-2]));
(yyval) = (yyvsp[-4]);
}
-#line 3084 "awkgram.c" /* yacc.c:1646 */
+#line 3125 "awkgram.c" /* yacc.c:1646 */
break;
- case 74:
-#line 1231 "awkgram.y" /* yacc.c:1646 */
+ case 78:
+#line 1258 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *casestmt = (yyvsp[0]);
if ((yyvsp[0]) == NULL)
@@ -3095,17 +3136,17 @@ regular_print:
(yyvsp[-3])->case_stmt = casestmt;
(yyval) = (yyvsp[-3]);
}
-#line 3099 "awkgram.c" /* yacc.c:1646 */
+#line 3140 "awkgram.c" /* yacc.c:1646 */
break;
- case 75:
-#line 1245 "awkgram.y" /* yacc.c:1646 */
+ case 79:
+#line 1272 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3105 "awkgram.c" /* yacc.c:1646 */
+#line 3146 "awkgram.c" /* yacc.c:1646 */
break;
- case 76:
-#line 1247 "awkgram.y" /* yacc.c:1646 */
+ case 80:
+#line 1274 "awkgram.y" /* yacc.c:1646 */
{
NODE *n = (yyvsp[0])->memory;
(void) force_number(n);
@@ -3113,28 +3154,28 @@ regular_print:
bcfree((yyvsp[-1]));
(yyval) = (yyvsp[0]);
}
-#line 3117 "awkgram.c" /* yacc.c:1646 */
+#line 3158 "awkgram.c" /* yacc.c:1646 */
break;
- case 77:
-#line 1255 "awkgram.y" /* yacc.c:1646 */
+ case 81:
+#line 1282 "awkgram.y" /* yacc.c:1646 */
{
NODE *n = (yyvsp[0])->lasti->memory;
bcfree((yyvsp[-1]));
add_sign_to_num(n, '+');
(yyval) = (yyvsp[0]);
}
-#line 3128 "awkgram.c" /* yacc.c:1646 */
+#line 3169 "awkgram.c" /* yacc.c:1646 */
break;
- case 78:
-#line 1262 "awkgram.y" /* yacc.c:1646 */
+ case 82:
+#line 1289 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3134 "awkgram.c" /* yacc.c:1646 */
+#line 3175 "awkgram.c" /* yacc.c:1646 */
break;
- case 79:
-#line 1264 "awkgram.y" /* yacc.c:1646 */
+ case 83:
+#line 1291 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[0])->memory->type == Node_regex)
(yyvsp[0])->opcode = Op_push_re;
@@ -3142,57 +3183,57 @@ regular_print:
(yyvsp[0])->opcode = Op_push;
(yyval) = (yyvsp[0]);
}
-#line 3146 "awkgram.c" /* yacc.c:1646 */
+#line 3187 "awkgram.c" /* yacc.c:1646 */
break;
- case 80:
-#line 1272 "awkgram.y" /* yacc.c:1646 */
+ case 84:
+#line 1299 "awkgram.y" /* yacc.c:1646 */
{
assert(((yyvsp[0])->memory->flags & REGEX) == REGEX);
(yyvsp[0])->opcode = Op_push_re;
(yyval) = (yyvsp[0]);
}
-#line 3156 "awkgram.c" /* yacc.c:1646 */
+#line 3197 "awkgram.c" /* yacc.c:1646 */
break;
- case 81:
-#line 1281 "awkgram.y" /* yacc.c:1646 */
+ case 85:
+#line 1308 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3162 "awkgram.c" /* yacc.c:1646 */
+#line 3203 "awkgram.c" /* yacc.c:1646 */
break;
- case 82:
-#line 1283 "awkgram.y" /* yacc.c:1646 */
+ case 86:
+#line 1310 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3168 "awkgram.c" /* yacc.c:1646 */
+#line 3209 "awkgram.c" /* yacc.c:1646 */
break;
- case 84:
-#line 1293 "awkgram.y" /* yacc.c:1646 */
+ case 88:
+#line 1320 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = (yyvsp[-1]);
}
-#line 3176 "awkgram.c" /* yacc.c:1646 */
+#line 3217 "awkgram.c" /* yacc.c:1646 */
break;
- case 85:
-#line 1300 "awkgram.y" /* yacc.c:1646 */
+ case 89:
+#line 1327 "awkgram.y" /* yacc.c:1646 */
{
in_print = false;
in_parens = 0;
(yyval) = NULL;
}
-#line 3186 "awkgram.c" /* yacc.c:1646 */
+#line 3227 "awkgram.c" /* yacc.c:1646 */
break;
- case 86:
-#line 1305 "awkgram.y" /* yacc.c:1646 */
+ case 90:
+#line 1332 "awkgram.y" /* yacc.c:1646 */
{ in_print = false; in_parens = 0; }
-#line 3192 "awkgram.c" /* yacc.c:1646 */
+#line 3233 "awkgram.c" /* yacc.c:1646 */
break;
- case 87:
-#line 1306 "awkgram.y" /* yacc.c:1646 */
+ case 91:
+#line 1333 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-2])->redir_type == redirect_twoway
&& (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3200,63 +3241,63 @@ regular_print:
yyerror(_("multistage two-way pipelines don't work"));
(yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
}
-#line 3204 "awkgram.c" /* yacc.c:1646 */
+#line 3245 "awkgram.c" /* yacc.c:1646 */
break;
- case 88:
-#line 1317 "awkgram.y" /* yacc.c:1646 */
+ case 92:
+#line 1344 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]),
NULL, NULL);
}
-#line 3212 "awkgram.c" /* yacc.c:1646 */
+#line 3253 "awkgram.c" /* yacc.c:1646 */
break;
- case 89:
-#line 1322 "awkgram.y" /* yacc.c:1646 */
+ case 93:
+#line 1349 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]),
(yyvsp[-2]), (yyvsp[0]));
}
-#line 3220 "awkgram.c" /* yacc.c:1646 */
+#line 3261 "awkgram.c" /* yacc.c:1646 */
break;
- case 94:
-#line 1339 "awkgram.y" /* yacc.c:1646 */
+ case 98:
+#line 1366 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3226 "awkgram.c" /* yacc.c:1646 */
+#line 3267 "awkgram.c" /* yacc.c:1646 */
break;
- case 95:
-#line 1341 "awkgram.y" /* yacc.c:1646 */
+ case 99:
+#line 1368 "awkgram.y" /* yacc.c:1646 */
{
bcfree((yyvsp[-1]));
(yyval) = (yyvsp[0]);
}
-#line 3235 "awkgram.c" /* yacc.c:1646 */
+#line 3276 "awkgram.c" /* yacc.c:1646 */
break;
- case 96:
-#line 1349 "awkgram.y" /* yacc.c:1646 */
+ case 100:
+#line 1376 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3241 "awkgram.c" /* yacc.c:1646 */
+#line 3282 "awkgram.c" /* yacc.c:1646 */
break;
- case 97:
-#line 1351 "awkgram.y" /* yacc.c:1646 */
+ case 101:
+#line 1378 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3247 "awkgram.c" /* yacc.c:1646 */
+#line 3288 "awkgram.c" /* yacc.c:1646 */
break;
- case 98:
-#line 1356 "awkgram.y" /* yacc.c:1646 */
+ case 102:
+#line 1383 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->param_count = 0;
(yyval) = list_create((yyvsp[0]));
}
-#line 3256 "awkgram.c" /* yacc.c:1646 */
+#line 3297 "awkgram.c" /* yacc.c:1646 */
break;
- case 99:
-#line 1361 "awkgram.y" /* yacc.c:1646 */
+ case 103:
+#line 1388 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
(yyvsp[0])->param_count =
(yyvsp[-2])->lasti->param_count + 1;
@@ -3265,74 +3306,74 @@ regular_print:
} else
(yyval) = NULL;
}
-#line 3269 "awkgram.c" /* yacc.c:1646 */
+#line 3310 "awkgram.c" /* yacc.c:1646 */
break;
- case 100:
-#line 1370 "awkgram.y" /* yacc.c:1646 */
+ case 104:
+#line 1397 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3275 "awkgram.c" /* yacc.c:1646 */
+#line 3316 "awkgram.c" /* yacc.c:1646 */
break;
- case 101:
-#line 1372 "awkgram.y" /* yacc.c:1646 */
+ case 105:
+#line 1399 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-1]); }
-#line 3281 "awkgram.c" /* yacc.c:1646 */
+#line 3322 "awkgram.c" /* yacc.c:1646 */
break;
- case 102:
-#line 1374 "awkgram.y" /* yacc.c:1646 */
+ case 106:
+#line 1401 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-2]); }
-#line 3287 "awkgram.c" /* yacc.c:1646 */
+#line 3328 "awkgram.c" /* yacc.c:1646 */
break;
- case 103:
-#line 1380 "awkgram.y" /* yacc.c:1646 */
+ case 107:
+#line 1407 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3293 "awkgram.c" /* yacc.c:1646 */
+#line 3334 "awkgram.c" /* yacc.c:1646 */
break;
- case 104:
-#line 1382 "awkgram.y" /* yacc.c:1646 */
+ case 108:
+#line 1409 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3299 "awkgram.c" /* yacc.c:1646 */
+#line 3340 "awkgram.c" /* yacc.c:1646 */
break;
- case 105:
-#line 1387 "awkgram.y" /* yacc.c:1646 */
+ case 109:
+#line 1414 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3305 "awkgram.c" /* yacc.c:1646 */
+#line 3346 "awkgram.c" /* yacc.c:1646 */
break;
- case 106:
-#line 1389 "awkgram.y" /* yacc.c:1646 */
+ case 110:
+#line 1416 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3311 "awkgram.c" /* yacc.c:1646 */
+#line 3352 "awkgram.c" /* yacc.c:1646 */
break;
- case 107:
-#line 1394 "awkgram.y" /* yacc.c:1646 */
+ case 111:
+#line 1421 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3317 "awkgram.c" /* yacc.c:1646 */
+#line 3358 "awkgram.c" /* yacc.c:1646 */
break;
- case 108:
-#line 1396 "awkgram.y" /* yacc.c:1646 */
+ case 112:
+#line 1423 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
-#line 3326 "awkgram.c" /* yacc.c:1646 */
+#line 3367 "awkgram.c" /* yacc.c:1646 */
break;
- case 109:
-#line 1401 "awkgram.y" /* yacc.c:1646 */
+ case 113:
+#line 1428 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3332 "awkgram.c" /* yacc.c:1646 */
+#line 3373 "awkgram.c" /* yacc.c:1646 */
break;
- case 110:
-#line 1403 "awkgram.y" /* yacc.c:1646 */
+ case 114:
+#line 1430 "awkgram.y" /* yacc.c:1646 */
{
/*
* Returning the expression list instead of NULL lets
@@ -3340,62 +3381,62 @@ regular_print:
*/
(yyval) = (yyvsp[-1]);
}
-#line 3344 "awkgram.c" /* yacc.c:1646 */
+#line 3385 "awkgram.c" /* yacc.c:1646 */
break;
- case 111:
-#line 1411 "awkgram.y" /* yacc.c:1646 */
+ case 115:
+#line 1438 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
}
-#line 3353 "awkgram.c" /* yacc.c:1646 */
+#line 3394 "awkgram.c" /* yacc.c:1646 */
break;
- case 112:
-#line 1416 "awkgram.y" /* yacc.c:1646 */
+ case 116:
+#line 1443 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
(yyval) = (yyvsp[-2]);
}
-#line 3362 "awkgram.c" /* yacc.c:1646 */
+#line 3403 "awkgram.c" /* yacc.c:1646 */
break;
- case 113:
-#line 1424 "awkgram.y" /* yacc.c:1646 */
+ case 117:
+#line 1451 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3368 "awkgram.c" /* yacc.c:1646 */
+#line 3409 "awkgram.c" /* yacc.c:1646 */
break;
- case 114:
-#line 1426 "awkgram.y" /* yacc.c:1646 */
+ case 118:
+#line 1453 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3374 "awkgram.c" /* yacc.c:1646 */
+#line 3415 "awkgram.c" /* yacc.c:1646 */
break;
- case 115:
-#line 1431 "awkgram.y" /* yacc.c:1646 */
+ case 119:
+#line 1458 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3380 "awkgram.c" /* yacc.c:1646 */
+#line 3421 "awkgram.c" /* yacc.c:1646 */
break;
- case 116:
-#line 1433 "awkgram.y" /* yacc.c:1646 */
+ case 120:
+#line 1460 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
yyerrok;
}
-#line 3389 "awkgram.c" /* yacc.c:1646 */
+#line 3430 "awkgram.c" /* yacc.c:1646 */
break;
- case 117:
-#line 1438 "awkgram.y" /* yacc.c:1646 */
+ case 121:
+#line 1465 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 3395 "awkgram.c" /* yacc.c:1646 */
+#line 3436 "awkgram.c" /* yacc.c:1646 */
break;
- case 118:
-#line 1440 "awkgram.y" /* yacc.c:1646 */
+ case 122:
+#line 1467 "awkgram.y" /* yacc.c:1646 */
{
/*
* Returning the expression list instead of NULL lets
@@ -3403,72 +3444,72 @@ regular_print:
*/
(yyval) = (yyvsp[-1]);
}
-#line 3407 "awkgram.c" /* yacc.c:1646 */
+#line 3448 "awkgram.c" /* yacc.c:1646 */
break;
- case 119:
-#line 1448 "awkgram.y" /* yacc.c:1646 */
+ case 123:
+#line 1475 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
(yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
}
-#line 3416 "awkgram.c" /* yacc.c:1646 */
+#line 3457 "awkgram.c" /* yacc.c:1646 */
break;
- case 120:
-#line 1453 "awkgram.y" /* yacc.c:1646 */
+ case 124:
+#line 1480 "awkgram.y" /* yacc.c:1646 */
{
/* Ditto */
(yyval) = (yyvsp[-2]);
}
-#line 3425 "awkgram.c" /* yacc.c:1646 */
+#line 3466 "awkgram.c" /* yacc.c:1646 */
break;
- case 121:
-#line 1460 "awkgram.y" /* yacc.c:1646 */
+ case 125:
+#line 1487 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3431 "awkgram.c" /* yacc.c:1646 */
+#line 3472 "awkgram.c" /* yacc.c:1646 */
break;
- case 122:
-#line 1461 "awkgram.y" /* yacc.c:1646 */
+ case 126:
+#line 1488 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = list_create((yyvsp[0])); }
-#line 3437 "awkgram.c" /* yacc.c:1646 */
+#line 3478 "awkgram.c" /* yacc.c:1646 */
break;
- case 123:
-#line 1467 "awkgram.y" /* yacc.c:1646 */
+ case 127:
+#line 1494 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
lintwarn_ln((yyvsp[-1])->source_line,
_("regular expression on right of assignment"));
(yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
}
-#line 3448 "awkgram.c" /* yacc.c:1646 */
+#line 3489 "awkgram.c" /* yacc.c:1646 */
break;
- case 124:
-#line 1474 "awkgram.y" /* yacc.c:1646 */
+ case 128:
+#line 1501 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])),
(yyvsp[-1]));
}
-#line 3456 "awkgram.c" /* yacc.c:1646 */
+#line 3497 "awkgram.c" /* yacc.c:1646 */
break;
- case 125:
-#line 1478 "awkgram.y" /* yacc.c:1646 */
+ case 129:
+#line 1505 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3462 "awkgram.c" /* yacc.c:1646 */
+#line 3503 "awkgram.c" /* yacc.c:1646 */
break;
- case 126:
-#line 1480 "awkgram.y" /* yacc.c:1646 */
+ case 130:
+#line 1507 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3468 "awkgram.c" /* yacc.c:1646 */
+#line 3509 "awkgram.c" /* yacc.c:1646 */
break;
- case 127:
-#line 1482 "awkgram.y" /* yacc.c:1646 */
+ case 131:
+#line 1509 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
warning_ln((yyvsp[-1])->source_line,
@@ -3481,11 +3522,11 @@ regular_print:
bcfree((yyvsp[0]));
(yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
}
-#line 3485 "awkgram.c" /* yacc.c:1646 */
+#line 3526 "awkgram.c" /* yacc.c:1646 */
break;
- case 128:
-#line 1495 "awkgram.y" /* yacc.c:1646 */
+ case 132:
+#line 1522 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
warning_ln((yyvsp[-1])->source_line,
@@ -3502,11 +3543,11 @@ regular_print:
(yyval) = list_append(list_merge((yyvsp[-2]),
(yyvsp[0])), (yyvsp[-1]));
}
}
-#line 3506 "awkgram.c" /* yacc.c:1646 */
+#line 3547 "awkgram.c" /* yacc.c:1646 */
break;
- case 129:
-#line 1512 "awkgram.y" /* yacc.c:1646 */
+ case 133:
+#line 1539 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint_old)
warning_ln((yyvsp[-1])->source_line,
@@ -3516,91 +3557,91 @@ regular_print:
(yyvsp[-1])->expr_count = 1;
(yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])),
(yyvsp[-1]));
}
-#line 3520 "awkgram.c" /* yacc.c:1646 */
+#line 3561 "awkgram.c" /* yacc.c:1646 */
break;
- case 130:
-#line 1522 "awkgram.y" /* yacc.c:1646 */
+ case 134:
+#line 1549 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
lintwarn_ln((yyvsp[-1])->source_line,
_("regular expression on right of comparison"));
(yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])),
(yyvsp[-1]));
}
-#line 3531 "awkgram.c" /* yacc.c:1646 */
+#line 3572 "awkgram.c" /* yacc.c:1646 */
break;
- case 131:
-#line 1529 "awkgram.y" /* yacc.c:1646 */
+ case 135:
+#line 1556 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]),
(yyvsp[-1]), (yyvsp[0])); }
-#line 3537 "awkgram.c" /* yacc.c:1646 */
+#line 3578 "awkgram.c" /* yacc.c:1646 */
break;
- case 132:
-#line 1531 "awkgram.y" /* yacc.c:1646 */
+ case 136:
+#line 1558 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3543 "awkgram.c" /* yacc.c:1646 */
+#line 3584 "awkgram.c" /* yacc.c:1646 */
break;
- case 133:
-#line 1536 "awkgram.y" /* yacc.c:1646 */
+ case 137:
+#line 1563 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3549 "awkgram.c" /* yacc.c:1646 */
+#line 3590 "awkgram.c" /* yacc.c:1646 */
break;
- case 134:
-#line 1538 "awkgram.y" /* yacc.c:1646 */
+ case 138:
+#line 1565 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3555 "awkgram.c" /* yacc.c:1646 */
+#line 3596 "awkgram.c" /* yacc.c:1646 */
break;
- case 135:
-#line 1540 "awkgram.y" /* yacc.c:1646 */
+ case 139:
+#line 1567 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->opcode = Op_assign_quotient;
(yyval) = (yyvsp[0]);
}
-#line 3564 "awkgram.c" /* yacc.c:1646 */
+#line 3605 "awkgram.c" /* yacc.c:1646 */
break;
- case 136:
-#line 1548 "awkgram.y" /* yacc.c:1646 */
+ case 140:
+#line 1575 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3570 "awkgram.c" /* yacc.c:1646 */
+#line 3611 "awkgram.c" /* yacc.c:1646 */
break;
- case 137:
-#line 1550 "awkgram.y" /* yacc.c:1646 */
+ case 141:
+#line 1577 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3576 "awkgram.c" /* yacc.c:1646 */
+#line 3617 "awkgram.c" /* yacc.c:1646 */
break;
- case 138:
-#line 1555 "awkgram.y" /* yacc.c:1646 */
+ case 142:
+#line 1582 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3582 "awkgram.c" /* yacc.c:1646 */
+#line 3623 "awkgram.c" /* yacc.c:1646 */
break;
- case 139:
-#line 1557 "awkgram.y" /* yacc.c:1646 */
+ case 143:
+#line 1584 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3588 "awkgram.c" /* yacc.c:1646 */
+#line 3629 "awkgram.c" /* yacc.c:1646 */
break;
- case 140:
-#line 1562 "awkgram.y" /* yacc.c:1646 */
+ case 144:
+#line 1589 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3594 "awkgram.c" /* yacc.c:1646 */
+#line 3635 "awkgram.c" /* yacc.c:1646 */
break;
- case 141:
-#line 1564 "awkgram.y" /* yacc.c:1646 */
+ case 145:
+#line 1591 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 3600 "awkgram.c" /* yacc.c:1646 */
+#line 3641 "awkgram.c" /* yacc.c:1646 */
break;
- case 142:
-#line 1566 "awkgram.y" /* yacc.c:1646 */
+ case 146:
+#line 1593 "awkgram.y" /* yacc.c:1646 */
{
int count = 2;
bool is_simple_var = false;
@@ -3653,47 +3694,47 @@ regular_print:
max_args = count;
}
}
-#line 3657 "awkgram.c" /* yacc.c:1646 */
+#line 3698 "awkgram.c" /* yacc.c:1646 */
break;
- case 144:
-#line 1624 "awkgram.y" /* yacc.c:1646 */
+ case 148:
+#line 1651 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3663 "awkgram.c" /* yacc.c:1646 */
+#line 3704 "awkgram.c" /* yacc.c:1646 */
break;
- case 145:
-#line 1626 "awkgram.y" /* yacc.c:1646 */
+ case 149:
+#line 1653 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3669 "awkgram.c" /* yacc.c:1646 */
+#line 3710 "awkgram.c" /* yacc.c:1646 */
break;
- case 146:
-#line 1628 "awkgram.y" /* yacc.c:1646 */
+ case 150:
+#line 1655 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3675 "awkgram.c" /* yacc.c:1646 */
+#line 3716 "awkgram.c" /* yacc.c:1646 */
break;
- case 147:
-#line 1630 "awkgram.y" /* yacc.c:1646 */
+ case 151:
+#line 1657 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3681 "awkgram.c" /* yacc.c:1646 */
+#line 3722 "awkgram.c" /* yacc.c:1646 */
break;
- case 148:
-#line 1632 "awkgram.y" /* yacc.c:1646 */
+ case 152:
+#line 1659 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3687 "awkgram.c" /* yacc.c:1646 */
+#line 3728 "awkgram.c" /* yacc.c:1646 */
break;
- case 149:
-#line 1634 "awkgram.y" /* yacc.c:1646 */
+ case 153:
+#line 1661 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3693 "awkgram.c" /* yacc.c:1646 */
+#line 3734 "awkgram.c" /* yacc.c:1646 */
break;
- case 150:
-#line 1636 "awkgram.y" /* yacc.c:1646 */
+ case 154:
+#line 1663 "awkgram.y" /* yacc.c:1646 */
{
/*
* In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3707,29 +3748,29 @@ regular_print:
_("non-redirected `getline' undefined inside
END action"));
(yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]),
redirect_input);
}
-#line 3711 "awkgram.c" /* yacc.c:1646 */
+#line 3752 "awkgram.c" /* yacc.c:1646 */
break;
- case 151:
-#line 1650 "awkgram.y" /* yacc.c:1646 */
+ case 155:
+#line 1677 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->opcode = Op_postincrement;
(yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 3720 "awkgram.c" /* yacc.c:1646 */
+#line 3761 "awkgram.c" /* yacc.c:1646 */
break;
- case 152:
-#line 1655 "awkgram.y" /* yacc.c:1646 */
+ case 156:
+#line 1682 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->opcode = Op_postdecrement;
(yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 3729 "awkgram.c" /* yacc.c:1646 */
+#line 3770 "awkgram.c" /* yacc.c:1646 */
break;
- case 153:
-#line 1660 "awkgram.y" /* yacc.c:1646 */
+ case 157:
+#line 1687 "awkgram.y" /* yacc.c:1646 */
{
if (do_lint_old) {
warning_ln((yyvsp[-1])->source_line,
@@ -3749,64 +3790,64 @@ regular_print:
(yyval) = list_append(list_merge(t, (yyvsp[0])),
(yyvsp[-1]));
}
}
-#line 3753 "awkgram.c" /* yacc.c:1646 */
+#line 3794 "awkgram.c" /* yacc.c:1646 */
break;
- case 154:
-#line 1685 "awkgram.y" /* yacc.c:1646 */
+ case 158:
+#line 1712 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]),
(yyvsp[-2])->redir_type);
bcfree((yyvsp[-2]));
}
-#line 3762 "awkgram.c" /* yacc.c:1646 */
+#line 3803 "awkgram.c" /* yacc.c:1646 */
break;
- case 155:
-#line 1691 "awkgram.y" /* yacc.c:1646 */
+ case 159:
+#line 1718 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3768 "awkgram.c" /* yacc.c:1646 */
+#line 3809 "awkgram.c" /* yacc.c:1646 */
break;
- case 156:
-#line 1693 "awkgram.y" /* yacc.c:1646 */
+ case 160:
+#line 1720 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3774 "awkgram.c" /* yacc.c:1646 */
+#line 3815 "awkgram.c" /* yacc.c:1646 */
break;
- case 157:
-#line 1695 "awkgram.y" /* yacc.c:1646 */
+ case 161:
+#line 1722 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3780 "awkgram.c" /* yacc.c:1646 */
+#line 3821 "awkgram.c" /* yacc.c:1646 */
break;
- case 158:
-#line 1697 "awkgram.y" /* yacc.c:1646 */
+ case 162:
+#line 1724 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3786 "awkgram.c" /* yacc.c:1646 */
+#line 3827 "awkgram.c" /* yacc.c:1646 */
break;
- case 159:
-#line 1699 "awkgram.y" /* yacc.c:1646 */
+ case 163:
+#line 1726 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3792 "awkgram.c" /* yacc.c:1646 */
+#line 3833 "awkgram.c" /* yacc.c:1646 */
break;
- case 160:
-#line 1701 "awkgram.y" /* yacc.c:1646 */
+ case 164:
+#line 1728 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3798 "awkgram.c" /* yacc.c:1646 */
+#line 3839 "awkgram.c" /* yacc.c:1646 */
break;
- case 161:
-#line 1706 "awkgram.y" /* yacc.c:1646 */
+ case 165:
+#line 1733 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3806 "awkgram.c" /* yacc.c:1646 */
+#line 3847 "awkgram.c" /* yacc.c:1646 */
break;
- case 162:
-#line 1710 "awkgram.y" /* yacc.c:1646 */
+ case 166:
+#line 1737 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[0])->opcode == Op_match_rec) {
(yyvsp[0])->opcode = Op_nomatch;
@@ -3838,37 +3879,37 @@ regular_print:
}
}
}
-#line 3842 "awkgram.c" /* yacc.c:1646 */
+#line 3883 "awkgram.c" /* yacc.c:1646 */
break;
- case 163:
-#line 1742 "awkgram.y" /* yacc.c:1646 */
+ case 167:
+#line 1769 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-1]); }
-#line 3848 "awkgram.c" /* yacc.c:1646 */
+#line 3889 "awkgram.c" /* yacc.c:1646 */
break;
- case 164:
-#line 1744 "awkgram.y" /* yacc.c:1646 */
+ case 168:
+#line 1771 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
-#line 3858 "awkgram.c" /* yacc.c:1646 */
+#line 3899 "awkgram.c" /* yacc.c:1646 */
break;
- case 165:
-#line 1750 "awkgram.y" /* yacc.c:1646 */
+ case 169:
+#line 1777 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
if ((yyval) == NULL)
YYABORT;
}
-#line 3868 "awkgram.c" /* yacc.c:1646 */
+#line 3909 "awkgram.c" /* yacc.c:1646 */
break;
- case 166:
-#line 1756 "awkgram.y" /* yacc.c:1646 */
+ case 170:
+#line 1783 "awkgram.y" /* yacc.c:1646 */
{
static bool warned = false;
@@ -3881,45 +3922,45 @@ regular_print:
if ((yyval) == NULL)
YYABORT;
}
-#line 3885 "awkgram.c" /* yacc.c:1646 */
+#line 3926 "awkgram.c" /* yacc.c:1646 */
break;
- case 169:
-#line 1771 "awkgram.y" /* yacc.c:1646 */
+ case 173:
+#line 1798 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[-1])->opcode = Op_preincrement;
(yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
-#line 3894 "awkgram.c" /* yacc.c:1646 */
+#line 3935 "awkgram.c" /* yacc.c:1646 */
break;
- case 170:
-#line 1776 "awkgram.y" /* yacc.c:1646 */
+ case 174:
+#line 1803 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[-1])->opcode = Op_predecrement;
(yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
}
-#line 3903 "awkgram.c" /* yacc.c:1646 */
+#line 3944 "awkgram.c" /* yacc.c:1646 */
break;
- case 171:
-#line 1781 "awkgram.y" /* yacc.c:1646 */
+ case 175:
+#line 1808 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3911 "awkgram.c" /* yacc.c:1646 */
+#line 3952 "awkgram.c" /* yacc.c:1646 */
break;
- case 172:
-#line 1785 "awkgram.y" /* yacc.c:1646 */
+ case 176:
+#line 1812 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_create((yyvsp[0]));
}
-#line 3919 "awkgram.c" /* yacc.c:1646 */
+#line 3960 "awkgram.c" /* yacc.c:1646 */
break;
- case 173:
-#line 1789 "awkgram.y" /* yacc.c:1646 */
+ case 177:
+#line 1816 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[0])->lasti->opcode == Op_push_i
&& ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3934,11 +3975,11 @@ regular_print:
(yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
-#line 3938 "awkgram.c" /* yacc.c:1646 */
+#line 3979 "awkgram.c" /* yacc.c:1646 */
break;
- case 174:
-#line 1804 "awkgram.y" /* yacc.c:1646 */
+ case 178:
+#line 1831 "awkgram.y" /* yacc.c:1646 */
{
if ((yyvsp[0])->lasti->opcode == Op_push_i
&& ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3956,20 +3997,20 @@ regular_print:
(yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
}
}
-#line 3960 "awkgram.c" /* yacc.c:1646 */
+#line 4001 "awkgram.c" /* yacc.c:1646 */
break;
- case 175:
-#line 1825 "awkgram.y" /* yacc.c:1646 */
+ case 179:
+#line 1852 "awkgram.y" /* yacc.c:1646 */
{
func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
(yyval) = (yyvsp[0]);
}
-#line 3969 "awkgram.c" /* yacc.c:1646 */
+#line 4010 "awkgram.c" /* yacc.c:1646 */
break;
- case 176:
-#line 1830 "awkgram.y" /* yacc.c:1646 */
+ case 180:
+#line 1857 "awkgram.y" /* yacc.c:1646 */
{
/* indirect function call */
INSTRUCTION *f, *t;
@@ -4003,11 +4044,11 @@ regular_print:
(yyval) = list_prepend((yyvsp[0]), t);
at_seen = false;
}
-#line 4007 "awkgram.c" /* yacc.c:1646 */
+#line 4048 "awkgram.c" /* yacc.c:1646 */
break;
- case 177:
-#line 1867 "awkgram.y" /* yacc.c:1646 */
+ case 181:
+#line 1894 "awkgram.y" /* yacc.c:1646 */
{
NODE *n;
@@ -4032,49 +4073,49 @@ regular_print:
(yyval) = list_append(t, (yyvsp[-3]));
}
}
-#line 4036 "awkgram.c" /* yacc.c:1646 */
+#line 4077 "awkgram.c" /* yacc.c:1646 */
break;
- case 178:
-#line 1895 "awkgram.y" /* yacc.c:1646 */
+ case 182:
+#line 1922 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 4042 "awkgram.c" /* yacc.c:1646 */
+#line 4083 "awkgram.c" /* yacc.c:1646 */
break;
- case 179:
-#line 1897 "awkgram.y" /* yacc.c:1646 */
+ case 183:
+#line 1924 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 4048 "awkgram.c" /* yacc.c:1646 */
+#line 4089 "awkgram.c" /* yacc.c:1646 */
break;
- case 180:
-#line 1902 "awkgram.y" /* yacc.c:1646 */
+ case 184:
+#line 1929 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 4054 "awkgram.c" /* yacc.c:1646 */
+#line 4095 "awkgram.c" /* yacc.c:1646 */
break;
- case 181:
-#line 1904 "awkgram.y" /* yacc.c:1646 */
+ case 185:
+#line 1931 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-1]); }
-#line 4060 "awkgram.c" /* yacc.c:1646 */
+#line 4101 "awkgram.c" /* yacc.c:1646 */
break;
- case 182:
-#line 1909 "awkgram.y" /* yacc.c:1646 */
+ case 186:
+#line 1936 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 4066 "awkgram.c" /* yacc.c:1646 */
+#line 4107 "awkgram.c" /* yacc.c:1646 */
break;
- case 183:
-#line 1911 "awkgram.y" /* yacc.c:1646 */
+ case 187:
+#line 1938 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
-#line 4074 "awkgram.c" /* yacc.c:1646 */
+#line 4115 "awkgram.c" /* yacc.c:1646 */
break;
- case 184:
-#line 1918 "awkgram.y" /* yacc.c:1646 */
+ case 188:
+#line 1945 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *ip = (yyvsp[0])->lasti;
int count = ip->sub_count; /* # of SUBSEP-seperated
expressions */
@@ -4088,11 +4129,11 @@ regular_print:
sub_counter++; /* count # of dimensions */
(yyval) = (yyvsp[0]);
}
-#line 4092 "awkgram.c" /* yacc.c:1646 */
+#line 4133 "awkgram.c" /* yacc.c:1646 */
break;
- case 185:
-#line 1935 "awkgram.y" /* yacc.c:1646 */
+ case 189:
+#line 1962 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *t = (yyvsp[-1]);
if ((yyvsp[-1]) == NULL) {
@@ -4106,31 +4147,31 @@ regular_print:
(yyvsp[0])->sub_count = count_expressions(&t, false);
(yyval) = list_append(t, (yyvsp[0]));
}
-#line 4110 "awkgram.c" /* yacc.c:1646 */
+#line 4151 "awkgram.c" /* yacc.c:1646 */
break;
- case 186:
-#line 1952 "awkgram.y" /* yacc.c:1646 */
+ case 190:
+#line 1979 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); }
-#line 4116 "awkgram.c" /* yacc.c:1646 */
+#line 4157 "awkgram.c" /* yacc.c:1646 */
break;
- case 187:
-#line 1954 "awkgram.y" /* yacc.c:1646 */
+ case 191:
+#line 1981 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
}
-#line 4124 "awkgram.c" /* yacc.c:1646 */
+#line 4165 "awkgram.c" /* yacc.c:1646 */
break;
- case 188:
-#line 1961 "awkgram.y" /* yacc.c:1646 */
+ case 192:
+#line 1988 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[-1]); }
-#line 4130 "awkgram.c" /* yacc.c:1646 */
+#line 4171 "awkgram.c" /* yacc.c:1646 */
break;
- case 189:
-#line 1966 "awkgram.y" /* yacc.c:1646 */
+ case 193:
+#line 1993 "awkgram.y" /* yacc.c:1646 */
{
char *var_name = (yyvsp[0])->lextok;
@@ -4138,22 +4179,22 @@ regular_print:
(yyvsp[0])->memory = variable((yyvsp[0])->source_line,
var_name, Node_var_new);
(yyval) = list_create((yyvsp[0]));
}
-#line 4142 "awkgram.c" /* yacc.c:1646 */
+#line 4183 "awkgram.c" /* yacc.c:1646 */
break;
- case 190:
-#line 1974 "awkgram.y" /* yacc.c:1646 */
+ case 194:
+#line 2001 "awkgram.y" /* yacc.c:1646 */
{
char *arr = (yyvsp[-1])->lextok;
(yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr,
Node_var_new);
(yyvsp[-1])->opcode = Op_push_array;
(yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
}
-#line 4153 "awkgram.c" /* yacc.c:1646 */
+#line 4194 "awkgram.c" /* yacc.c:1646 */
break;
- case 191:
-#line 1984 "awkgram.y" /* yacc.c:1646 */
+ case 195:
+#line 2011 "awkgram.y" /* yacc.c:1646 */
{
INSTRUCTION *ip = (yyvsp[0])->nexti;
if (ip->opcode == Op_push
@@ -4165,73 +4206,73 @@ regular_print:
} else
(yyval) = (yyvsp[0]);
}
-#line 4169 "awkgram.c" /* yacc.c:1646 */
+#line 4210 "awkgram.c" /* yacc.c:1646 */
break;
- case 192:
-#line 1996 "awkgram.y" /* yacc.c:1646 */
+ case 196:
+#line 2023 "awkgram.y" /* yacc.c:1646 */
{
(yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
if ((yyvsp[0]) != NULL)
mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
}
-#line 4179 "awkgram.c" /* yacc.c:1646 */
+#line 4220 "awkgram.c" /* yacc.c:1646 */
break;
- case 193:
-#line 2005 "awkgram.y" /* yacc.c:1646 */
+ case 197:
+#line 2032 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->opcode = Op_postincrement;
}
-#line 4187 "awkgram.c" /* yacc.c:1646 */
+#line 4228 "awkgram.c" /* yacc.c:1646 */
break;
- case 194:
-#line 2009 "awkgram.y" /* yacc.c:1646 */
+ case 198:
+#line 2036 "awkgram.y" /* yacc.c:1646 */
{
(yyvsp[0])->opcode = Op_postdecrement;
}
-#line 4195 "awkgram.c" /* yacc.c:1646 */
+#line 4236 "awkgram.c" /* yacc.c:1646 */
break;
- case 195:
-#line 2012 "awkgram.y" /* yacc.c:1646 */
+ case 199:
+#line 2039 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = NULL; }
-#line 4201 "awkgram.c" /* yacc.c:1646 */
+#line 4242 "awkgram.c" /* yacc.c:1646 */
break;
- case 197:
-#line 2020 "awkgram.y" /* yacc.c:1646 */
+ case 201:
+#line 2047 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
-#line 4207 "awkgram.c" /* yacc.c:1646 */
+#line 4248 "awkgram.c" /* yacc.c:1646 */
break;
- case 198:
-#line 2024 "awkgram.y" /* yacc.c:1646 */
+ case 202:
+#line 2051 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
-#line 4213 "awkgram.c" /* yacc.c:1646 */
+#line 4254 "awkgram.c" /* yacc.c:1646 */
break;
- case 201:
-#line 2033 "awkgram.y" /* yacc.c:1646 */
+ case 205:
+#line 2060 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
-#line 4219 "awkgram.c" /* yacc.c:1646 */
+#line 4260 "awkgram.c" /* yacc.c:1646 */
break;
- case 202:
-#line 2037 "awkgram.y" /* yacc.c:1646 */
+ case 206:
+#line 2064 "awkgram.y" /* yacc.c:1646 */
{ (yyval) = (yyvsp[0]); yyerrok; }
-#line 4225 "awkgram.c" /* yacc.c:1646 */
+#line 4266 "awkgram.c" /* yacc.c:1646 */
break;
- case 203:
-#line 2041 "awkgram.y" /* yacc.c:1646 */
+ case 207:
+#line 2068 "awkgram.y" /* yacc.c:1646 */
{ yyerrok; }
-#line 4231 "awkgram.c" /* yacc.c:1646 */
+#line 4272 "awkgram.c" /* yacc.c:1646 */
break;
-#line 4235 "awkgram.c" /* yacc.c:1646 */
+#line 4276 "awkgram.c" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -4459,7 +4500,7 @@ yyreturn:
#endif
return yyresult;
}
-#line 2043 "awkgram.y" /* yacc.c:1906 */
+#line 2070 "awkgram.y" /* yacc.c:1906 */
struct token {
@@ -4556,6 +4597,7 @@ static const struct token tokentab[] = {
{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift,
MPF(lshift)},
{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match,
0},
{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_mktime, 0},
+{"namespace", Op_K_namespace, LEX_NAMESPACE, GAWKX, 0,
0},
{"next", Op_K_next, LEX_NEXT, 0, 0, 0},
{"nextfile", Op_K_nextfile, LEX_NEXTFILE, 0, 0, 0},
{"or", Op_builtin, LEX_BUILTIN, GAWKX, do_or,
MPF(or)},
@@ -6541,7 +6583,15 @@ retry:
while (c != END_FILE && is_identchar(c)) {
tokadd(c);
c = nextc(true);
+
if (! do_traditional && c == ':') {
+ // check for keyword, etc.
+ tokadd('\0');
+ if ((mid = check_special(tokstart)) >= 0) {
+ tok--;
+ break;
+ }
+
int peek = nextc(true);
if (peek == ':') {
@@ -6563,9 +6613,16 @@ retry:
static int warntab[sizeof(tokentab) / sizeof(tokentab[0])];
int class = tokentab[mid].class;
- if ((class == LEX_INCLUDE || class == LEX_LOAD || class ==
LEX_EVAL)
- && lasttok != '@')
- goto out;
+ switch (class) {
+ case LEX_EVAL:
+ case LEX_INCLUDE:
+ case LEX_LOAD:
+ case LEX_NAMESPACE:
+ if (lasttok != '@')
+ goto out;
+ default:
+ break;
+ }
/* allow parameter names to shadow the names of gawk extension
built-ins */
if ((tokentab[mid].flags & GAWKX) != 0) {
@@ -6620,6 +6677,9 @@ retry:
continue_allowed++;
switch (class) {
+ case LEX_NAMESPACE:
+ yylval = bcalloc(tokentab[mid].value, 1, sourceline);
+ // fall through
case LEX_INCLUDE:
case LEX_LOAD:
want_source = true;
diff --git a/awkgram.y b/awkgram.y
index 9b81250..7030d3f 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -143,6 +143,9 @@ extern INSTRUCTION *rule_list;
extern int max_args;
extern NODE **args_array;
+const char awk_namespace[] = "awk::";
+const char *current_namespace = NULL;
+
static INSTRUCTION *rule_block[sizeof(ruletab)];
static INSTRUCTION *ip_rec;
@@ -188,7 +191,7 @@ extern double fmod(double x, double y);
%token LEX_AND LEX_OR INCREMENT DECREMENT
%token LEX_BUILTIN LEX_LENGTH
%token LEX_EOF
-%token LEX_INCLUDE LEX_EVAL LEX_LOAD
+%token LEX_INCLUDE LEX_EVAL LEX_LOAD LEX_NAMESPACE
%token NEWLINE
/* Lowest to highest */
@@ -272,6 +275,21 @@ rule
at_seen = false;
yyerrok;
}
+ | '@' LEX_NAMESPACE namespace statement_term
+ {
+ want_source = false;
+ at_seen = false;
+fprintf(stderr, "setting namespace to %s\n", $3->lextok);
+/*
+ if (set_namespace($3->lextok) < 0)
+ YYABORT;
+*/
+ efree($3->lextok);
+ bcfree($3);
+ // for now:
+ bcfree($2);
+ yyerrok;
+ }
;
source
@@ -304,6 +322,15 @@ library
{ $$ = NULL; }
;
+namespace
+ : FILENAME
+ { $$ = $1; }
+ | FILENAME error
+ { $$ = NULL; }
+ | error
+ { $$ = NULL; }
+ ;
+
pattern
: /* empty */
{
@@ -2136,6 +2163,7 @@ static const struct token tokentab[] = {
{"lshift", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_lshift,
MPF(lshift)},
{"match", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_match,
0},
{"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_mktime, 0},
+{"namespace", Op_K_namespace, LEX_NAMESPACE, GAWKX, 0,
0},
{"next", Op_K_next, LEX_NEXT, 0, 0, 0},
{"nextfile", Op_K_nextfile, LEX_NEXTFILE, 0, 0, 0},
{"or", Op_builtin, LEX_BUILTIN, GAWKX, do_or,
MPF(or)},
@@ -4121,7 +4149,15 @@ retry:
while (c != END_FILE && is_identchar(c)) {
tokadd(c);
c = nextc(true);
+
if (! do_traditional && c == ':') {
+ // check for keyword, etc.
+ tokadd('\0');
+ if ((mid = check_special(tokstart)) >= 0) {
+ tok--;
+ break;
+ }
+
int peek = nextc(true);
if (peek == ':') {
@@ -4143,9 +4179,16 @@ retry:
static int warntab[sizeof(tokentab) / sizeof(tokentab[0])];
int class = tokentab[mid].class;
- if ((class == LEX_INCLUDE || class == LEX_LOAD || class ==
LEX_EVAL)
- && lasttok != '@')
- goto out;
+ switch (class) {
+ case LEX_EVAL:
+ case LEX_INCLUDE:
+ case LEX_LOAD:
+ case LEX_NAMESPACE:
+ if (lasttok != '@')
+ goto out;
+ default:
+ break;
+ }
/* allow parameter names to shadow the names of gawk extension
built-ins */
if ((tokentab[mid].flags & GAWKX) != 0) {
@@ -4200,6 +4243,9 @@ retry:
continue_allowed++;
switch (class) {
+ case LEX_NAMESPACE:
+ yylval = bcalloc(tokentab[mid].value, 1, sourceline);
+ // fall through
case LEX_INCLUDE:
case LEX_LOAD:
want_source = true;
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 92afd91..0f17a4e 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-11 Arnold D. Robbins <address@hidden>
+
+ * gawktexi.in (Namespaces): Document that reserved words and
+ predefined functions can't be namespace names. Reformat the
+ input a little bit.
+
2017-06-06 Arnold D. Robbins <address@hidden>
* gawktexi.in (Namespaces): Further clarifications. Move to
diff --git a/doc/gawk.info b/doc/gawk.info
index e9d686b..6f85343 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -19806,6 +19806,17 @@ variables and functions in another. This is
especially important when
using variable names to index the special 'SYMTAB' array, and when
making indirect function calls. *FIXME:* and xref.
+ It is a syntax error to use any 'gawk' reserved word (such as 'if' or
+'for'), or the name of any built-in function (such as 'sin()' or
+'gsub()' as the namespace part of a fully qualified name.
+
+ On the other hand, 'gawk' pre-defined variable names may be used:
+'NF::NR' is valid, if possibly not all that useful.(1)
+
+ ---------- Footnotes ----------
+
+ (1) This could change, based on reviewer feedback.
+
File: gawk.info, Node: Default Namespace, Next: Changing The Namespace,
Prev: Qualified Names, Up: Namespaces
@@ -36397,234 +36408,235 @@ Ref: Programs Exercises-Footnote-1804700
Node: Namespaces804791
Node: Global Namespace805471
Node: Qualified Names806714
-Node: Default Namespace807671
-Node: Changing The Namespace808448
-Node: Internal Name Management809573
-Node: Namespace Example810567
-Node: Namespace Misc812636
-Node: Advanced Features814278
-Node: Nondecimal Data816263
-Node: Array Sorting817854
-Node: Controlling Array Traversal818554
-Ref: Controlling Array Traversal-Footnote-1826921
-Node: Array Sorting Functions827039
-Ref: Array Sorting Functions-Footnote-1832130
-Node: Two-way I/O832326
-Ref: Two-way I/O-Footnote-1838877
-Ref: Two-way I/O-Footnote-2839064
-Node: TCP/IP Networking839146
-Node: Profiling842264
-Ref: Profiling-Footnote-1850936
-Node: Advanced Features Summary851259
-Node: Internationalization853103
-Node: I18N and L10N854583
-Node: Explaining gettext855270
-Ref: Explaining gettext-Footnote-1861162
-Ref: Explaining gettext-Footnote-2861347
-Node: Programmer i18n861512
-Ref: Programmer i18n-Footnote-1866461
-Node: Translator i18n866510
-Node: String Extraction867304
-Ref: String Extraction-Footnote-1868436
-Node: Printf Ordering868522
-Ref: Printf Ordering-Footnote-1871308
-Node: I18N Portability871372
-Ref: I18N Portability-Footnote-1873828
-Node: I18N Example873891
-Ref: I18N Example-Footnote-1876697
-Node: Gawk I18N876770
-Node: I18N Summary877415
-Node: Debugger878756
-Node: Debugging879778
-Node: Debugging Concepts880219
-Node: Debugging Terms882028
-Node: Awk Debugging884603
-Node: Sample Debugging Session885509
-Node: Debugger Invocation886043
-Node: Finding The Bug887429
-Node: List of Debugger Commands893907
-Node: Breakpoint Control895240
-Node: Debugger Execution Control898934
-Node: Viewing And Changing Data902296
-Node: Execution Stack905670
-Node: Debugger Info907307
-Node: Miscellaneous Debugger Commands911378
-Node: Readline Support916466
-Node: Limitations917362
-Node: Debugging Summary919471
-Node: Arbitrary Precision Arithmetic920750
-Node: Computer Arithmetic922235
-Ref: table-numeric-ranges925826
-Ref: Computer Arithmetic-Footnote-1926548
-Node: Math Definitions926605
-Ref: table-ieee-formats929919
-Ref: Math Definitions-Footnote-1930522
-Node: MPFR features930627
-Node: FP Math Caution932344
-Ref: FP Math Caution-Footnote-1933416
-Node: Inexactness of computations933785
-Node: Inexact representation934745
-Node: Comparing FP Values936105
-Node: Errors accumulate937187
-Node: Getting Accuracy938620
-Node: Try To Round941330
-Node: Setting precision942229
-Ref: table-predefined-precision-strings942926
-Node: Setting the rounding mode944756
-Ref: table-gawk-rounding-modes945130
-Ref: Setting the rounding mode-Footnote-1948538
-Node: Arbitrary Precision Integers948717
-Ref: Arbitrary Precision Integers-Footnote-1953622
-Node: Checking for MPFR953771
-Node: POSIX Floating Point Problems955068
-Ref: POSIX Floating Point Problems-Footnote-1958939
-Node: Floating point summary958977
-Node: Dynamic Extensions961167
-Node: Extension Intro962720
-Node: Plugin License963986
-Node: Extension Mechanism Outline964783
-Ref: figure-load-extension965222
-Ref: figure-register-new-function966787
-Ref: figure-call-new-function967879
-Node: Extension API Description969941
-Node: Extension API Functions Introduction971583
-Node: General Data Types976917
-Ref: General Data Types-Footnote-1984122
-Node: Memory Allocation Functions984421
-Ref: Memory Allocation Functions-Footnote-1987266
-Node: Constructor Functions987365
-Node: Registration Functions990364
-Node: Extension Functions991049
-Node: Exit Callback Functions996262
-Node: Extension Version String997512
-Node: Input Parsers998175
-Node: Output Wrappers1010882
-Node: Two-way processors1015394
-Node: Printing Messages1017659
-Ref: Printing Messages-Footnote-11018830
-Node: Updating ERRNO1018983
-Node: Requesting Values1019722
-Ref: table-value-types-returned1020459
-Node: Accessing Parameters1021395
-Node: Symbol Table Access1022630
-Node: Symbol table by name1023142
-Node: Symbol table by cookie1024931
-Ref: Symbol table by cookie-Footnote-11029116
-Node: Cached values1029180
-Ref: Cached values-Footnote-11032716
-Node: Array Manipulation1032807
-Ref: Array Manipulation-Footnote-11033898
-Node: Array Data Types1033935
-Ref: Array Data Types-Footnote-11036593
-Node: Array Functions1036685
-Node: Flattening Arrays1041084
-Node: Creating Arrays1048025
-Node: Redirection API1052794
-Node: Extension API Variables1055636
-Node: Extension Versioning1056269
-Ref: gawk-api-version1056706
-Node: Extension API Informational Variables1058434
-Node: Extension API Boilerplate1059498
-Node: Changes from API V11063360
-Node: Finding Extensions1064020
-Node: Extension Example1064579
-Node: Internal File Description1065377
-Node: Internal File Ops1069457
-Ref: Internal File Ops-Footnote-11080857
-Node: Using Internal File Ops1080997
-Ref: Using Internal File Ops-Footnote-11083380
-Node: Extension Samples1083654
-Node: Extension Sample File Functions1085183
-Node: Extension Sample Fnmatch1092832
-Node: Extension Sample Fork1094319
-Node: Extension Sample Inplace1095537
-Node: Extension Sample Ord1098747
-Node: Extension Sample Readdir1099583
-Ref: table-readdir-file-types1100472
-Node: Extension Sample Revout1101277
-Node: Extension Sample Rev2way1101866
-Node: Extension Sample Read write array1102606
-Node: Extension Sample Readfile1104548
-Node: Extension Sample Time1105643
-Node: Extension Sample API Tests1106991
-Node: gawkextlib1107483
-Node: Extension summary1109930
-Node: Extension Exercises1113632
-Node: Language History1115130
-Node: V7/SVR3.11116786
-Node: SVR41118938
-Node: POSIX1120372
-Node: BTL1121751
-Node: POSIX/GNU1122480
-Node: Feature History1128372
-Node: Common Extensions1142796
-Node: Ranges and Locales1144079
-Ref: Ranges and Locales-Footnote-11148695
-Ref: Ranges and Locales-Footnote-21148722
-Ref: Ranges and Locales-Footnote-31148957
-Node: Contributors1149178
-Node: History summary1154738
-Node: Installation1156118
-Node: Gawk Distribution1157062
-Node: Getting1157546
-Node: Extracting1158507
-Node: Distribution contents1160145
-Node: Unix Installation1166487
-Node: Quick Installation1167169
-Node: Shell Startup Files1169583
-Node: Additional Configuration Options1170672
-Node: Configuration Philosophy1172661
-Node: Non-Unix Installation1175030
-Node: PC Installation1175490
-Node: PC Binary Installation1176328
-Node: PC Compiling1176763
-Node: PC Using1177880
-Node: Cygwin1180925
-Node: MSYS1181695
-Node: VMS Installation1182196
-Node: VMS Compilation1182987
-Ref: VMS Compilation-Footnote-11184216
-Node: VMS Dynamic Extensions1184274
-Node: VMS Installation Details1185959
-Node: VMS Running1188212
-Node: VMS GNV1192491
-Node: VMS Old Gawk1193226
-Node: Bugs1193697
-Node: Bug address1194360
-Node: Usenet1196757
-Node: Maintainers1197534
-Node: Other Versions1198910
-Node: Installation summary1205494
-Node: Notes1206529
-Node: Compatibility Mode1207394
-Node: Additions1208176
-Node: Accessing The Source1209101
-Node: Adding Code1210536
-Node: New Ports1216754
-Node: Derived Files1221242
-Ref: Derived Files-Footnote-11226727
-Ref: Derived Files-Footnote-21226762
-Ref: Derived Files-Footnote-31227360
-Node: Future Extensions1227474
-Node: Implementation Limitations1228132
-Node: Extension Design1229315
-Node: Old Extension Problems1230469
-Ref: Old Extension Problems-Footnote-11231987
-Node: Extension New Mechanism Goals1232044
-Ref: Extension New Mechanism Goals-Footnote-11235408
-Node: Extension Other Design Decisions1235597
-Node: Extension Future Growth1237710
-Node: Old Extension Mechanism1238546
-Node: Notes summary1240309
-Node: Basic Concepts1241491
-Node: Basic High Level1242172
-Ref: figure-general-flow1242454
-Ref: figure-process-flow1243139
-Ref: Basic High Level-Footnote-11246440
-Node: Basic Data Typing1246625
-Node: Glossary1249953
-Node: Copying1281900
-Node: GNU Free Documentation License1319439
-Node: Index1344557
+Ref: Qualified Names-Footnote-1808029
+Node: Default Namespace808084
+Node: Changing The Namespace808861
+Node: Internal Name Management809986
+Node: Namespace Example810980
+Node: Namespace Misc813049
+Node: Advanced Features814691
+Node: Nondecimal Data816676
+Node: Array Sorting818267
+Node: Controlling Array Traversal818967
+Ref: Controlling Array Traversal-Footnote-1827334
+Node: Array Sorting Functions827452
+Ref: Array Sorting Functions-Footnote-1832543
+Node: Two-way I/O832739
+Ref: Two-way I/O-Footnote-1839290
+Ref: Two-way I/O-Footnote-2839477
+Node: TCP/IP Networking839559
+Node: Profiling842677
+Ref: Profiling-Footnote-1851349
+Node: Advanced Features Summary851672
+Node: Internationalization853516
+Node: I18N and L10N854996
+Node: Explaining gettext855683
+Ref: Explaining gettext-Footnote-1861575
+Ref: Explaining gettext-Footnote-2861760
+Node: Programmer i18n861925
+Ref: Programmer i18n-Footnote-1866874
+Node: Translator i18n866923
+Node: String Extraction867717
+Ref: String Extraction-Footnote-1868849
+Node: Printf Ordering868935
+Ref: Printf Ordering-Footnote-1871721
+Node: I18N Portability871785
+Ref: I18N Portability-Footnote-1874241
+Node: I18N Example874304
+Ref: I18N Example-Footnote-1877110
+Node: Gawk I18N877183
+Node: I18N Summary877828
+Node: Debugger879169
+Node: Debugging880191
+Node: Debugging Concepts880632
+Node: Debugging Terms882441
+Node: Awk Debugging885016
+Node: Sample Debugging Session885922
+Node: Debugger Invocation886456
+Node: Finding The Bug887842
+Node: List of Debugger Commands894320
+Node: Breakpoint Control895653
+Node: Debugger Execution Control899347
+Node: Viewing And Changing Data902709
+Node: Execution Stack906083
+Node: Debugger Info907720
+Node: Miscellaneous Debugger Commands911791
+Node: Readline Support916879
+Node: Limitations917775
+Node: Debugging Summary919884
+Node: Arbitrary Precision Arithmetic921163
+Node: Computer Arithmetic922648
+Ref: table-numeric-ranges926239
+Ref: Computer Arithmetic-Footnote-1926961
+Node: Math Definitions927018
+Ref: table-ieee-formats930332
+Ref: Math Definitions-Footnote-1930935
+Node: MPFR features931040
+Node: FP Math Caution932757
+Ref: FP Math Caution-Footnote-1933829
+Node: Inexactness of computations934198
+Node: Inexact representation935158
+Node: Comparing FP Values936518
+Node: Errors accumulate937600
+Node: Getting Accuracy939033
+Node: Try To Round941743
+Node: Setting precision942642
+Ref: table-predefined-precision-strings943339
+Node: Setting the rounding mode945169
+Ref: table-gawk-rounding-modes945543
+Ref: Setting the rounding mode-Footnote-1948951
+Node: Arbitrary Precision Integers949130
+Ref: Arbitrary Precision Integers-Footnote-1954035
+Node: Checking for MPFR954184
+Node: POSIX Floating Point Problems955481
+Ref: POSIX Floating Point Problems-Footnote-1959352
+Node: Floating point summary959390
+Node: Dynamic Extensions961580
+Node: Extension Intro963133
+Node: Plugin License964399
+Node: Extension Mechanism Outline965196
+Ref: figure-load-extension965635
+Ref: figure-register-new-function967200
+Ref: figure-call-new-function968292
+Node: Extension API Description970354
+Node: Extension API Functions Introduction971996
+Node: General Data Types977330
+Ref: General Data Types-Footnote-1984535
+Node: Memory Allocation Functions984834
+Ref: Memory Allocation Functions-Footnote-1987679
+Node: Constructor Functions987778
+Node: Registration Functions990777
+Node: Extension Functions991462
+Node: Exit Callback Functions996675
+Node: Extension Version String997925
+Node: Input Parsers998588
+Node: Output Wrappers1011295
+Node: Two-way processors1015807
+Node: Printing Messages1018072
+Ref: Printing Messages-Footnote-11019243
+Node: Updating ERRNO1019396
+Node: Requesting Values1020135
+Ref: table-value-types-returned1020872
+Node: Accessing Parameters1021808
+Node: Symbol Table Access1023043
+Node: Symbol table by name1023555
+Node: Symbol table by cookie1025344
+Ref: Symbol table by cookie-Footnote-11029529
+Node: Cached values1029593
+Ref: Cached values-Footnote-11033129
+Node: Array Manipulation1033220
+Ref: Array Manipulation-Footnote-11034311
+Node: Array Data Types1034348
+Ref: Array Data Types-Footnote-11037006
+Node: Array Functions1037098
+Node: Flattening Arrays1041497
+Node: Creating Arrays1048438
+Node: Redirection API1053207
+Node: Extension API Variables1056049
+Node: Extension Versioning1056682
+Ref: gawk-api-version1057119
+Node: Extension API Informational Variables1058847
+Node: Extension API Boilerplate1059911
+Node: Changes from API V11063773
+Node: Finding Extensions1064433
+Node: Extension Example1064992
+Node: Internal File Description1065790
+Node: Internal File Ops1069870
+Ref: Internal File Ops-Footnote-11081270
+Node: Using Internal File Ops1081410
+Ref: Using Internal File Ops-Footnote-11083793
+Node: Extension Samples1084067
+Node: Extension Sample File Functions1085596
+Node: Extension Sample Fnmatch1093245
+Node: Extension Sample Fork1094732
+Node: Extension Sample Inplace1095950
+Node: Extension Sample Ord1099160
+Node: Extension Sample Readdir1099996
+Ref: table-readdir-file-types1100885
+Node: Extension Sample Revout1101690
+Node: Extension Sample Rev2way1102279
+Node: Extension Sample Read write array1103019
+Node: Extension Sample Readfile1104961
+Node: Extension Sample Time1106056
+Node: Extension Sample API Tests1107404
+Node: gawkextlib1107896
+Node: Extension summary1110343
+Node: Extension Exercises1114045
+Node: Language History1115543
+Node: V7/SVR3.11117199
+Node: SVR41119351
+Node: POSIX1120785
+Node: BTL1122164
+Node: POSIX/GNU1122893
+Node: Feature History1128785
+Node: Common Extensions1143209
+Node: Ranges and Locales1144492
+Ref: Ranges and Locales-Footnote-11149108
+Ref: Ranges and Locales-Footnote-21149135
+Ref: Ranges and Locales-Footnote-31149370
+Node: Contributors1149591
+Node: History summary1155151
+Node: Installation1156531
+Node: Gawk Distribution1157475
+Node: Getting1157959
+Node: Extracting1158920
+Node: Distribution contents1160558
+Node: Unix Installation1166900
+Node: Quick Installation1167582
+Node: Shell Startup Files1169996
+Node: Additional Configuration Options1171085
+Node: Configuration Philosophy1173074
+Node: Non-Unix Installation1175443
+Node: PC Installation1175903
+Node: PC Binary Installation1176741
+Node: PC Compiling1177176
+Node: PC Using1178293
+Node: Cygwin1181338
+Node: MSYS1182108
+Node: VMS Installation1182609
+Node: VMS Compilation1183400
+Ref: VMS Compilation-Footnote-11184629
+Node: VMS Dynamic Extensions1184687
+Node: VMS Installation Details1186372
+Node: VMS Running1188625
+Node: VMS GNV1192904
+Node: VMS Old Gawk1193639
+Node: Bugs1194110
+Node: Bug address1194773
+Node: Usenet1197170
+Node: Maintainers1197947
+Node: Other Versions1199323
+Node: Installation summary1205907
+Node: Notes1206942
+Node: Compatibility Mode1207807
+Node: Additions1208589
+Node: Accessing The Source1209514
+Node: Adding Code1210949
+Node: New Ports1217167
+Node: Derived Files1221655
+Ref: Derived Files-Footnote-11227140
+Ref: Derived Files-Footnote-21227175
+Ref: Derived Files-Footnote-31227773
+Node: Future Extensions1227887
+Node: Implementation Limitations1228545
+Node: Extension Design1229728
+Node: Old Extension Problems1230882
+Ref: Old Extension Problems-Footnote-11232400
+Node: Extension New Mechanism Goals1232457
+Ref: Extension New Mechanism Goals-Footnote-11235821
+Node: Extension Other Design Decisions1236010
+Node: Extension Future Growth1238123
+Node: Old Extension Mechanism1238959
+Node: Notes summary1240722
+Node: Basic Concepts1241904
+Node: Basic High Level1242585
+Ref: figure-general-flow1242867
+Ref: figure-process-flow1243552
+Ref: Basic High Level-Footnote-11246853
+Node: Basic Data Typing1247038
+Node: Glossary1250366
+Node: Copying1282313
+Node: GNU Free Documentation License1319852
+Node: Index1344970
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 5364895..6a14f7e 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -27627,14 +27627,14 @@ This @value{CHAPTER} describes a feature that is
specific to @command{gawk}.
In standard @command{awk}, there is a single, global, @dfn{namespace}.
This means that @emph{all} function names and global variable names must
-be unique. For example, two different @command{awk} source files cannot both
define
-a function named @code{min()}.
-
-This situation is okay when programs are small, say a few hundred lines,
-or even a few thousand, but it prevents the development of reusable
-libraries of @command{awk} functions, and can inadvertently cause
-independently-developed library files to accidentally step on each other's
-``private'' global variables
+be unique. For example, two different @command{awk} source files cannot
+both define a function named @code{min()}.
+
+This situation is okay when programs are small, say a few hundred
+lines, or even a few thousand, but it prevents the development of
+reusable libraries of @command{awk} functions, and can inadvertently
+cause independently-developed library files to accidentally step on each
+other's ``private'' global variables
(@pxref{Library Names}).
Most other programming languages solve this issue by providing some kind
@@ -27645,29 +27645,40 @@ are much fewer namespaces in use by any given
program, and thus much
less chance for collisions.)
Starting with @value{PVERSION} @strong{FIXME} 5.0, @command{gawk} provides a
-mechanism to put functions and global variables into different
-namespaces.
+mechanism to put functions and global variables into different namespaces.
@node Qualified Names
@section Qualified Names
A @dfn{qualified name} is an identifier that includes a namespace
-name and the namespace separator, @code{::}. For example, one might have a
function named @code{posix::getpid()}.
-Here, the namespace is @code{posix} and the function name within the
-namespace is @code{getpid()}. The namespace and variable or function
-name are separated by a double-colon. Only one such separator is allowed in
-a qualified name.
-
address@hidden NOTE
-Unlike C++, the @code{::} is @emph{not} an operator. No spaces are allowed
between
-the namespace name, the @code{::}, and the rest of the name.
+name and the namespace separator, @code{::}. For example, one
+might have a function named @code{posix::getpid()}. Here, the
+namespace is @code{posix} and the function name within the namespace
+is @code{getpid()}. The namespace and variable or function name are
+separated by a double-colon. Only one such separator is allowed in a
+qualified name.
+
address@hidden NOTE
+Unlike C++, the @code{::} is @emph{not} an operator. No spaces are
+allowed between the namespace name, the @code{::}, and the rest of
+the name.
@end quotation
You must use fully qualified names from one namespace to access variables
-and functions in another. This is especially important when using variable
-names to index the special @code{SYMTAB} array, and when making indirect
function calls.
+and functions in another. This is especially important when using
+variable names to index the special @code{SYMTAB} array, and when making
+indirect function calls.
@strong{FIXME:} and xref.
+It is a syntax error to use any @command{gawk} reserved word (such
+as @code{if} or @code{for}), or the name of any built-in function
+(such as @code{sin()} or @code{gsub()} as the namespace part of a
+fully qualified name.
+
+On the other hand, @command{gawk} pre-defined variable names may be used:
address@hidden::NR} is valid, if possibly not all that address@hidden
+could change, based on reviewer feedback.}
+
@node Default Namespace
@section The Default Namespace
@@ -27705,10 +27716,9 @@ source file, although this is likely to become
confusing if you
do it too much.
@quotation NOTE
-The namespace concept is one handled while your program is
-being parsed by @command{gawk}. There is no concept of a
-``current'' namespace during runtime. Be sure you understand
-the distinction.
+The namespace concept is one handled while your program is being parsed
+by @command{gawk}. There is no concept of a ``current'' namespace
+during runtime. Be sure you understand the distinction.
@end quotation
Each source file for @option{-i} and @option{-f}
@@ -27732,8 +27742,9 @@ is mainly relevant when using such identifiers as
indices for
and for use in indirect function calls
(FIXME: xref).
-In program code, to refer to variables and functions in the @samp{awk}
namespace from
-another namespace, you must still use the @samp{awk::} prefix. For example:
+In program code, to refer to variables and functions in the @samp{awk}
+namespace from another namespace, you must still use the @samp{awk::}
+prefix. For example:
@example
@@namespace "awk" # the default
@@ -27861,13 +27872,12 @@ Other notes for reviewers:
@table @asis
@item Profiler:
-When profiling, we can add an @code{Op_Namespace} to the start of
-each rule and function definition. If this is different than the previous
-one, output an
address@hidden@@namespace} statement. For each identifier, if it starts
-with the current namespace, output only the simple part.
-For all @samp{awk::XXX} if @samp{XXX} is all uppercase, strip
-off the @samp{awk::} part.
+When profiling, we can add an @code{Op_Namespace} to the start of each
+rule and function definition. If this is different than the previous
+one, output an @samp{@@namespace} statement. For each identifier,
+if it starts with the current namespace, output only the simple part.
+For all @samp{awk::XXX} if @samp{XXX} is all uppercase, strip off the
address@hidden::} part.
@item Debugger:
Simply print fully qualified names all the time. Maybe allow a
@@ -27876,9 +27886,9 @@ namespace and it will use that to create fully
qualified names?
Have to be careful about all uppercase names though.
@item How does this affect @code{@@include}?
-Basically @code{@@include} should push and pop the namespace. Each
@code{@@include}
-saves the current namespace and starts over with namespace @samp{awk} until
-an @code{@@namespace} is seen.
+Basically @code{@@include} should push and pop the namespace. Each
address@hidden@@include} saves the current namespace and starts over with
+namespace @samp{awk} until an @code{@@namespace} is seen.
@item Extension functions
Revise the current macros to pass @code{"awk"} as the namespace
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 192fc0e..b32b79d 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -26641,14 +26641,14 @@ This @value{CHAPTER} describes a feature that is
specific to @command{gawk}.
In standard @command{awk}, there is a single, global, @dfn{namespace}.
This means that @emph{all} function names and global variable names must
-be unique. For example, two different @command{awk} source files cannot both
define
-a function named @code{min()}.
-
-This situation is okay when programs are small, say a few hundred lines,
-or even a few thousand, but it prevents the development of reusable
-libraries of @command{awk} functions, and can inadvertently cause
-independently-developed library files to accidentally step on each other's
-``private'' global variables
+be unique. For example, two different @command{awk} source files cannot
+both define a function named @code{min()}.
+
+This situation is okay when programs are small, say a few hundred
+lines, or even a few thousand, but it prevents the development of
+reusable libraries of @command{awk} functions, and can inadvertently
+cause independently-developed library files to accidentally step on each
+other's ``private'' global variables
(@pxref{Library Names}).
Most other programming languages solve this issue by providing some kind
@@ -26659,29 +26659,40 @@ are much fewer namespaces in use by any given
program, and thus much
less chance for collisions.)
Starting with @value{PVERSION} @strong{FIXME} 5.0, @command{gawk} provides a
-mechanism to put functions and global variables into different
-namespaces.
+mechanism to put functions and global variables into different namespaces.
@node Qualified Names
@section Qualified Names
A @dfn{qualified name} is an identifier that includes a namespace
-name and the namespace separator, @code{::}. For example, one might have a
function named @code{posix::getpid()}.
-Here, the namespace is @code{posix} and the function name within the
-namespace is @code{getpid()}. The namespace and variable or function
-name are separated by a double-colon. Only one such separator is allowed in
-a qualified name.
-
address@hidden NOTE
-Unlike C++, the @code{::} is @emph{not} an operator. No spaces are allowed
between
-the namespace name, the @code{::}, and the rest of the name.
+name and the namespace separator, @code{::}. For example, one
+might have a function named @code{posix::getpid()}. Here, the
+namespace is @code{posix} and the function name within the namespace
+is @code{getpid()}. The namespace and variable or function name are
+separated by a double-colon. Only one such separator is allowed in a
+qualified name.
+
address@hidden NOTE
+Unlike C++, the @code{::} is @emph{not} an operator. No spaces are
+allowed between the namespace name, the @code{::}, and the rest of
+the name.
@end quotation
You must use fully qualified names from one namespace to access variables
-and functions in another. This is especially important when using variable
-names to index the special @code{SYMTAB} array, and when making indirect
function calls.
+and functions in another. This is especially important when using
+variable names to index the special @code{SYMTAB} array, and when making
+indirect function calls.
@strong{FIXME:} and xref.
+It is a syntax error to use any @command{gawk} reserved word (such
+as @code{if} or @code{for}), or the name of any built-in function
+(such as @code{sin()} or @code{gsub()} as the namespace part of a
+fully qualified name.
+
+On the other hand, @command{gawk} pre-defined variable names may be used:
address@hidden::NR} is valid, if possibly not all that address@hidden
+could change, based on reviewer feedback.}
+
@node Default Namespace
@section The Default Namespace
@@ -26719,10 +26730,9 @@ source file, although this is likely to become
confusing if you
do it too much.
@quotation NOTE
-The namespace concept is one handled while your program is
-being parsed by @command{gawk}. There is no concept of a
-``current'' namespace during runtime. Be sure you understand
-the distinction.
+The namespace concept is one handled while your program is being parsed
+by @command{gawk}. There is no concept of a ``current'' namespace
+during runtime. Be sure you understand the distinction.
@end quotation
Each source file for @option{-i} and @option{-f}
@@ -26746,8 +26756,9 @@ is mainly relevant when using such identifiers as
indices for
and for use in indirect function calls
(FIXME: xref).
-In program code, to refer to variables and functions in the @samp{awk}
namespace from
-another namespace, you must still use the @samp{awk::} prefix. For example:
+In program code, to refer to variables and functions in the @samp{awk}
+namespace from another namespace, you must still use the @samp{awk::}
+prefix. For example:
@example
@@namespace "awk" # the default
@@ -26875,13 +26886,12 @@ Other notes for reviewers:
@table @asis
@item Profiler:
-When profiling, we can add an @code{Op_Namespace} to the start of
-each rule and function definition. If this is different than the previous
-one, output an
address@hidden@@namespace} statement. For each identifier, if it starts
-with the current namespace, output only the simple part.
-For all @samp{awk::XXX} if @samp{XXX} is all uppercase, strip
-off the @samp{awk::} part.
+When profiling, we can add an @code{Op_Namespace} to the start of each
+rule and function definition. If this is different than the previous
+one, output an @samp{@@namespace} statement. For each identifier,
+if it starts with the current namespace, output only the simple part.
+For all @samp{awk::XXX} if @samp{XXX} is all uppercase, strip off the
address@hidden::} part.
@item Debugger:
Simply print fully qualified names all the time. Maybe allow a
@@ -26890,9 +26900,9 @@ namespace and it will use that to create fully
qualified names?
Have to be careful about all uppercase names though.
@item How does this affect @code{@@include}?
-Basically @code{@@include} should push and pop the namespace. Each
@code{@@include}
-saves the current namespace and starts over with namespace @samp{awk} until
-an @code{@@namespace} is seen.
+Basically @code{@@include} should push and pop the namespace. Each
address@hidden@@include} saves the current namespace and starts over with
+namespace @samp{awk} until an @code{@@namespace} is seen.
@item Extension functions
Revise the current macros to pass @code{"awk"} as the namespace
diff --git a/eval.c b/eval.c
index 73bd7fc..5392704 100644
--- a/eval.c
+++ b/eval.c
@@ -380,6 +380,7 @@ static struct optypetab {
{ "Op_K_if", "if" },
{ "Op_K_else", "else" },
{ "Op_K_function", "function" },
+ { "Op_K_namespace", "@namespace" },
{ "Op_cond_exp", NULL },
{ "Op_final --- this should never appear", NULL },
{ NULL, NULL },
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 11 +
awk.h | 4 +
awkgram.c | 2062 ++++++++++++++++++++++++++++---------------------------
awkgram.y | 54 +-
doc/ChangeLog | 6 +
doc/gawk.info | 470 +++++++------
doc/gawk.texi | 84 ++-
doc/gawktexi.in | 84 ++-
eval.c | 1 +
9 files changed, 1468 insertions(+), 1308 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-2577-gf26af58,
Arnold Robbins <=