aboutsummaryrefslogtreecommitdiffstats
path: root/awkgram.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2011-02-01 23:03:43 +0200
committerArnold D. Robbins <arnold@skeeve.com>2011-02-01 23:03:43 +0200
commitdd5323a5c859ed8d6ecbc2e6828611c4ed8aa056 (patch)
treed093c105538a0a3828aaaf5e9f54fea953dc0bb4 /awkgram.c
parent612bce745d80e0ab612dd771d848c2919a753ef3 (diff)
downloadegawk-dd5323a5c859ed8d6ecbc2e6828611c4ed8aa056.tar.gz
egawk-dd5323a5c859ed8d6ecbc2e6828611c4ed8aa056.tar.bz2
egawk-dd5323a5c859ed8d6ecbc2e6828611c4ed8aa056.zip
Fix switch debugging.
Diffstat (limited to 'awkgram.c')
-rw-r--r--awkgram.c1850
1 files changed, 910 insertions, 940 deletions
diff --git a/awkgram.c b/awkgram.c
index c97684f3..aff24d06 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -110,11 +110,11 @@ static INSTRUCTION *mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTIO
static INSTRUCTION *mk_expression_list(INSTRUCTION *list, INSTRUCTION *s1);
static INSTRUCTION *mk_for_loop(INSTRUCTION *forp, INSTRUCTION *init, INSTRUCTION *cond,
INSTRUCTION *incr, INSTRUCTION *body);
-static void fix_break_continue(INSTRUCTION *start, INSTRUCTION *end, int check_continue);
+static void fix_break_continue(INSTRUCTION *list, INSTRUCTION *b_target, INSTRUCTION *c_target);
static INSTRUCTION *mk_binary(INSTRUCTION *s1, INSTRUCTION *s2, INSTRUCTION *op);
static INSTRUCTION *mk_boolean(INSTRUCTION *left, INSTRUCTION *right, INSTRUCTION *op);
static INSTRUCTION *mk_assignment(INSTRUCTION *lhs, INSTRUCTION *rhs, INSTRUCTION *op);
-static INSTRUCTION *mk_getline(INSTRUCTION *op, INSTRUCTION *opt_var, INSTRUCTION *redir, OPCODE redirtype);
+static INSTRUCTION *mk_getline(INSTRUCTION *op, INSTRUCTION *opt_var, INSTRUCTION *redir, int redirtype);
static NODE *make_regnode(int type, NODE *exp);
static int count_expressions(INSTRUCTION **list, int isarg);
static INSTRUCTION *optimize_assignment(INSTRUCTION *exp);
@@ -577,16 +577,16 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1142
+#define YYLAST 1144
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 74
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 66
+#define YYNNTS 65
/* YYNRULES -- Number of rules. */
-#define YYNRULES 186
+#define YYNRULES 185
/* YYNRULES -- Number of states. */
-#define YYNSTATES 330
+#define YYNSTATES 329
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -642,82 +642,82 @@ static const yytype_uint16 yyprhs[] =
80, 81, 85, 87, 89, 90, 93, 96, 98, 101,
104, 108, 110, 120, 127, 136, 145, 158, 170, 172,
175, 178, 181, 184, 188, 189, 194, 197, 198, 203,
- 204, 209, 214, 216, 217, 219, 221, 222, 225, 228,
- 234, 239, 241, 244, 247, 249, 251, 253, 255, 257,
- 261, 262, 263, 267, 274, 284, 286, 289, 290, 292,
- 293, 296, 297, 299, 301, 305, 307, 310, 314, 315,
- 317, 318, 320, 322, 326, 328, 331, 335, 339, 343,
- 347, 351, 355, 359, 363, 369, 371, 373, 375, 378,
- 380, 382, 384, 386, 388, 390, 393, 395, 399, 403,
- 407, 411, 415, 419, 423, 426, 429, 435, 440, 444,
- 448, 452, 456, 460, 464, 466, 469, 473, 478, 483,
- 485, 487, 489, 492, 495, 497, 499, 502, 505, 507,
- 510, 515, 516, 518, 519, 522, 524, 527, 529, 533,
- 535, 538, 541, 543, 546, 548, 552, 554, 556, 557,
- 560, 563, 565, 566, 568, 570, 572
+ 204, 209, 214, 216, 217, 219, 220, 223, 226, 232,
+ 237, 239, 242, 245, 247, 249, 251, 253, 255, 259,
+ 260, 261, 265, 272, 282, 284, 287, 288, 290, 291,
+ 294, 295, 297, 299, 303, 305, 308, 312, 313, 315,
+ 316, 318, 320, 324, 326, 329, 333, 337, 341, 345,
+ 349, 353, 357, 361, 367, 369, 371, 373, 376, 378,
+ 380, 382, 384, 386, 388, 391, 393, 397, 401, 405,
+ 409, 413, 417, 421, 424, 427, 433, 438, 442, 446,
+ 450, 454, 458, 462, 464, 467, 471, 476, 481, 483,
+ 485, 487, 490, 493, 495, 497, 500, 503, 505, 508,
+ 513, 514, 516, 517, 520, 522, 525, 527, 531, 533,
+ 536, 539, 541, 544, 546, 550, 552, 554, 555, 558,
+ 561, 563, 564, 566, 568, 570
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 75, 0, -1, -1, 75, 76, -1, 75, 105, -1,
+ 75, 0, -1, -1, 75, 76, -1, 75, 104, -1,
75, 47, -1, 75, 1, -1, 78, 79, -1, 78,
88, -1, 82, 79, -1, 68, 48, 77, 88, -1,
- 6, -1, 6, 1, -1, 1, -1, -1, 113, -1,
- 113, 54, 113, -1, 17, -1, 18, -1, 36, -1,
- 37, -1, 133, 87, 134, 136, 106, -1, 4, -1,
+ 6, -1, 6, 1, -1, 1, -1, -1, 112, -1,
+ 112, 54, 112, -1, 17, -1, 18, -1, 36, -1,
+ 37, -1, 132, 87, 133, 135, 105, -1, 4, -1,
3, -1, 81, -1, 68, 49, -1, 45, -1, 46,
- -1, -1, 35, 83, 80, 66, 108, 135, 106, -1,
+ -1, -1, 35, 83, 80, 66, 107, 134, 105, -1,
-1, 86, 85, 5, -1, 60, -1, 51, -1, -1,
- 87, 89, -1, 87, 1, -1, 105, -1, 137, 106,
- -1, 137, 106, -1, 133, 87, 134, -1, 104, -1,
- 23, 66, 113, 135, 106, 133, 96, 106, 134, -1,
- 26, 66, 113, 135, 106, 89, -1, 27, 106, 89,
- 26, 66, 113, 135, 106, -1, 28, 66, 4, 40,
- 130, 135, 106, 89, -1, 28, 66, 95, 137, 106,
- 113, 137, 106, 95, 135, 106, 89, -1, 28, 66,
- 95, 137, 106, 137, 106, 95, 135, 106, 89, -1,
+ 87, 89, -1, 87, 1, -1, 104, -1, 136, 105,
+ -1, 136, 105, -1, 132, 87, 133, -1, 103, -1,
+ 23, 66, 112, 134, 105, 132, 96, 105, 133, -1,
+ 26, 66, 112, 134, 105, 89, -1, 27, 105, 89,
+ 26, 66, 112, 134, 105, -1, 28, 66, 4, 40,
+ 129, 134, 105, 89, -1, 28, 66, 95, 136, 105,
+ 112, 136, 105, 95, 134, 105, 89, -1, 28, 66,
+ 95, 136, 105, 136, 105, 95, 134, 105, 89, -1,
90, -1, 29, 88, -1, 30, 88, -1, 33, 88,
- -1, 39, 88, -1, 34, 110, 88, -1, -1, 21,
- 91, 110, 88, -1, 92, 88, -1, -1, 100, 93,
- 101, 102, -1, -1, 22, 4, 94, 124, -1, 22,
- 66, 4, 67, -1, 113, -1, -1, 92, -1, 97,
- -1, -1, 97, 98, -1, 97, 1, -1, 24, 99,
- 138, 106, 87, -1, 25, 138, 106, 87, -1, 7,
- -1, 58, 7, -1, 57, 7, -1, 8, -1, 84,
- -1, 31, -1, 32, -1, 111, -1, 66, 112, 135,
- -1, -1, -1, 10, 103, 117, -1, 19, 66, 113,
- 135, 106, 89, -1, 19, 66, 113, 135, 106, 89,
- 20, 106, 89, -1, 50, -1, 105, 50, -1, -1,
- 105, -1, -1, 55, 118, -1, -1, 109, -1, 4,
- -1, 109, 139, 4, -1, 1, -1, 109, 1, -1,
- 109, 139, 1, -1, -1, 113, -1, -1, 112, -1,
- 113, -1, 112, 139, 113, -1, 1, -1, 112, 1,
- -1, 112, 1, 113, -1, 112, 139, 1, -1, 131,
- 114, 113, -1, 113, 41, 113, -1, 113, 42, 113,
- -1, 113, 14, 113, -1, 113, 40, 130, -1, 113,
- 116, 113, -1, 113, 52, 113, 53, 113, -1, 117,
- -1, 13, -1, 12, -1, 51, 13, -1, 9, -1,
- 55, -1, 115, -1, 56, -1, 118, -1, 119, -1,
- 117, 118, -1, 120, -1, 118, 64, 118, -1, 118,
- 59, 118, -1, 118, 60, 118, -1, 118, 61, 118,
- -1, 118, 57, 118, -1, 118, 58, 118, -1, 38,
- 123, 107, -1, 131, 43, -1, 131, 44, -1, 66,
- 112, 135, 40, 130, -1, 117, 11, 38, 123, -1,
- 119, 64, 118, -1, 119, 59, 118, -1, 119, 60,
- 118, -1, 119, 61, 118, -1, 119, 57, 118, -1,
- 119, 58, 118, -1, 84, -1, 62, 118, -1, 66,
- 113, 135, -1, 45, 66, 111, 135, -1, 46, 66,
- 111, 135, -1, 46, -1, 121, -1, 131, -1, 43,
- 131, -1, 44, 131, -1, 7, -1, 8, -1, 58,
- 118, -1, 57, 118, -1, 122, -1, 68, 122, -1,
- 3, 66, 111, 135, -1, -1, 131, -1, -1, 125,
- 16, -1, 126, -1, 125, 126, -1, 127, -1, 69,
- 112, 70, -1, 127, -1, 128, 127, -1, 128, 16,
- -1, 4, -1, 4, 129, -1, 130, -1, 65, 120,
- 132, -1, 43, -1, 44, -1, -1, 71, 106, -1,
- 72, 106, -1, 67, -1, -1, 137, -1, 73, -1,
- 53, -1, 54, 106, -1
+ -1, 39, 88, -1, 34, 109, 88, -1, -1, 21,
+ 91, 109, 88, -1, 92, 88, -1, -1, 99, 93,
+ 100, 101, -1, -1, 22, 4, 94, 123, -1, 22,
+ 66, 4, 67, -1, 112, -1, -1, 92, -1, -1,
+ 96, 97, -1, 96, 1, -1, 24, 98, 137, 105,
+ 87, -1, 25, 137, 105, 87, -1, 7, -1, 58,
+ 7, -1, 57, 7, -1, 8, -1, 84, -1, 31,
+ -1, 32, -1, 110, -1, 66, 111, 134, -1, -1,
+ -1, 10, 102, 116, -1, 19, 66, 112, 134, 105,
+ 89, -1, 19, 66, 112, 134, 105, 89, 20, 105,
+ 89, -1, 50, -1, 104, 50, -1, -1, 104, -1,
+ -1, 55, 117, -1, -1, 108, -1, 4, -1, 108,
+ 138, 4, -1, 1, -1, 108, 1, -1, 108, 138,
+ 1, -1, -1, 112, -1, -1, 111, -1, 112, -1,
+ 111, 138, 112, -1, 1, -1, 111, 1, -1, 111,
+ 1, 112, -1, 111, 138, 1, -1, 130, 113, 112,
+ -1, 112, 41, 112, -1, 112, 42, 112, -1, 112,
+ 14, 112, -1, 112, 40, 129, -1, 112, 115, 112,
+ -1, 112, 52, 112, 53, 112, -1, 116, -1, 13,
+ -1, 12, -1, 51, 13, -1, 9, -1, 55, -1,
+ 114, -1, 56, -1, 117, -1, 118, -1, 116, 117,
+ -1, 119, -1, 117, 64, 117, -1, 117, 59, 117,
+ -1, 117, 60, 117, -1, 117, 61, 117, -1, 117,
+ 57, 117, -1, 117, 58, 117, -1, 38, 122, 106,
+ -1, 130, 43, -1, 130, 44, -1, 66, 111, 134,
+ 40, 129, -1, 116, 11, 38, 122, -1, 118, 64,
+ 117, -1, 118, 59, 117, -1, 118, 60, 117, -1,
+ 118, 61, 117, -1, 118, 57, 117, -1, 118, 58,
+ 117, -1, 84, -1, 62, 117, -1, 66, 112, 134,
+ -1, 45, 66, 110, 134, -1, 46, 66, 110, 134,
+ -1, 46, -1, 120, -1, 130, -1, 43, 130, -1,
+ 44, 130, -1, 7, -1, 8, -1, 58, 117, -1,
+ 57, 117, -1, 121, -1, 68, 121, -1, 3, 66,
+ 110, 134, -1, -1, 130, -1, -1, 124, 16, -1,
+ 125, -1, 124, 125, -1, 126, -1, 69, 111, 70,
+ -1, 126, -1, 127, 126, -1, 127, 16, -1, 4,
+ -1, 4, 128, -1, 129, -1, 65, 119, 131, -1,
+ 43, -1, 44, -1, -1, 71, 105, -1, 72, 105,
+ -1, 67, -1, -1, 136, -1, 73, -1, 53, -1,
+ 54, 105, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -727,21 +727,21 @@ static const yytype_uint16 yyrline[] =
262, 270, 279, 281, 287, 288, 290, 316, 326, 336,
342, 351, 361, 363, 365, 376, 381, 382, 387, 386,
416, 415, 446, 448, 453, 454, 467, 472, 473, 477,
- 479, 481, 488, 509, 555, 598, 708, 715, 722, 732,
- 741, 750, 757, 782, 797, 796, 808, 820, 820, 916,
- 916, 944, 970, 976, 977, 982, 1035, 1036, 1048, 1053,
- 1072, 1090, 1095, 1102, 1108, 1113, 1121, 1123, 1132, 1133,
- 1141, 1146, 1146, 1157, 1161, 1169, 1170, 1173, 1175, 1180,
- 1181, 1188, 1190, 1194, 1200, 1207, 1209, 1211, 1218, 1219,
- 1225, 1226, 1231, 1233, 1238, 1240, 1242, 1244, 1250, 1256,
- 1258, 1260, 1275, 1284, 1290, 1292, 1297, 1299, 1301, 1309,
- 1311, 1316, 1318, 1323, 1325, 1327, 1380, 1382, 1384, 1386,
- 1388, 1390, 1392, 1394, 1415, 1420, 1425, 1448, 1454, 1456,
- 1458, 1460, 1462, 1464, 1469, 1473, 1504, 1506, 1512, 1518,
- 1530, 1531, 1532, 1537, 1542, 1546, 1550, 1562, 1575, 1580,
- 1616, 1634, 1635, 1641, 1642, 1647, 1649, 1656, 1673, 1690,
- 1692, 1699, 1704, 1712, 1726, 1738, 1747, 1751, 1755, 1759,
- 1763, 1767, 1770, 1772, 1776, 1780, 1784
+ 479, 481, 488, 581, 623, 665, 778, 785, 792, 802,
+ 811, 820, 827, 852, 867, 866, 878, 890, 890, 986,
+ 986, 1014, 1040, 1046, 1047, 1053, 1054, 1061, 1066, 1078,
+ 1092, 1094, 1100, 1105, 1107, 1115, 1117, 1126, 1127, 1135,
+ 1140, 1140, 1151, 1155, 1163, 1164, 1167, 1169, 1174, 1175,
+ 1182, 1184, 1188, 1194, 1201, 1203, 1205, 1212, 1213, 1219,
+ 1220, 1225, 1227, 1232, 1234, 1236, 1238, 1244, 1250, 1252,
+ 1254, 1269, 1278, 1284, 1286, 1291, 1293, 1295, 1303, 1305,
+ 1310, 1312, 1317, 1319, 1321, 1374, 1376, 1378, 1380, 1382,
+ 1384, 1386, 1388, 1409, 1414, 1419, 1442, 1448, 1450, 1452,
+ 1454, 1456, 1458, 1463, 1467, 1498, 1500, 1506, 1512, 1524,
+ 1525, 1526, 1531, 1536, 1540, 1544, 1556, 1569, 1574, 1610,
+ 1628, 1629, 1635, 1636, 1641, 1643, 1650, 1667, 1684, 1686,
+ 1693, 1698, 1706, 1720, 1732, 1741, 1745, 1749, 1753, 1757,
+ 1761, 1764, 1766, 1770, 1774, 1778
};
#endif
@@ -765,16 +765,16 @@ static const char *const yytname[] =
"rule", "source", "pattern", "action", "func_name", "lex_builtin",
"function_prologue", "$@1", "regexp", "$@2", "a_slash", "statements",
"statement_term", "statement", "non_compound_stmt", "$@3", "simple_stmt",
- "$@4", "$@5", "opt_simple_stmt", "switch_body", "case_statements",
- "case_statement", "case_value", "print", "print_expression_list",
- "output_redir", "$@6", "if_statement", "nls", "opt_nls", "input_redir",
- "opt_param_list", "param_list", "opt_exp", "opt_expression_list",
- "expression_list", "exp", "assign_operator", "relop_or_less", "a_relop",
- "common_exp", "simp_exp", "simp_exp_nc", "non_post_simp_exp",
- "func_call", "direct_func_call", "opt_variable", "delete_subscript_list",
- "delete_subscript", "delete_exp_list", "bracketed_exp_list", "subscript",
- "subscript_list", "simple_variable", "variable", "opt_incdec", "l_brace",
- "r_brace", "r_paren", "opt_semi", "semi", "colon", "comma", 0
+ "$@4", "$@5", "opt_simple_stmt", "case_statements", "case_statement",
+ "case_value", "print", "print_expression_list", "output_redir", "$@6",
+ "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list",
+ "param_list", "opt_exp", "opt_expression_list", "expression_list", "exp",
+ "assign_operator", "relop_or_less", "a_relop", "common_exp", "simp_exp",
+ "simp_exp_nc", "non_post_simp_exp", "func_call", "direct_func_call",
+ "opt_variable", "delete_subscript_list", "delete_subscript",
+ "delete_exp_list", "bracketed_exp_list", "subscript", "subscript_list",
+ "simple_variable", "variable", "opt_incdec", "l_brace", "r_brace",
+ "r_paren", "opt_semi", "semi", "colon", "comma", 0
};
#endif
@@ -803,19 +803,19 @@ static const yytype_uint8 yyr1[] =
85, 84, 86, 86, 87, 87, 87, 88, 88, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 90,
90, 90, 90, 90, 91, 90, 90, 93, 92, 94,
- 92, 92, 92, 95, 95, 96, 97, 97, 97, 98,
- 98, 99, 99, 99, 99, 99, 100, 100, 101, 101,
- 102, 103, 102, 104, 104, 105, 105, 106, 106, 107,
- 107, 108, 108, 109, 109, 109, 109, 109, 110, 110,
- 111, 111, 112, 112, 112, 112, 112, 112, 113, 113,
- 113, 113, 113, 113, 113, 113, 114, 114, 114, 115,
- 115, 116, 116, 117, 117, 117, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 119, 119, 119,
- 119, 119, 119, 119, 120, 120, 120, 120, 120, 120,
- 120, 120, 120, 120, 120, 120, 120, 120, 121, 121,
- 122, 123, 123, 124, 124, 125, 125, 126, 127, 128,
- 128, 129, 130, 130, 131, 131, 132, 132, 132, 133,
- 134, 135, 136, 136, 137, 138, 139
+ 92, 92, 92, 95, 95, 96, 96, 96, 97, 97,
+ 98, 98, 98, 98, 98, 99, 99, 100, 100, 101,
+ 102, 101, 103, 103, 104, 104, 105, 105, 106, 106,
+ 107, 107, 108, 108, 108, 108, 108, 109, 109, 110,
+ 110, 111, 111, 111, 111, 111, 111, 112, 112, 112,
+ 112, 112, 112, 112, 112, 113, 113, 113, 114, 114,
+ 115, 115, 116, 116, 116, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 117, 117, 118, 118, 118, 118,
+ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 120, 120, 121,
+ 122, 122, 123, 123, 124, 124, 125, 126, 127, 127,
+ 128, 129, 129, 130, 130, 131, 131, 131, 132, 133,
+ 134, 135, 135, 136, 137, 138
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -827,19 +827,19 @@ static const yytype_uint8 yyr2[] =
0, 3, 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, 1, 0, 2, 2, 5,
- 4, 1, 2, 2, 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, 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, 1, 0, 1, 0, 2, 2, 5, 4,
+ 1, 2, 2, 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, 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
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -847,39 +847,39 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 2, 0, 1, 6, 0, 172, 154, 155, 17, 18,
- 28, 19, 20, 161, 0, 0, 0, 149, 5, 85,
+ 2, 0, 1, 6, 0, 171, 153, 154, 17, 18,
+ 28, 19, 20, 160, 0, 0, 0, 148, 5, 84,
33, 0, 0, 32, 0, 0, 0, 0, 3, 0,
- 0, 144, 30, 4, 15, 115, 123, 124, 126, 150,
- 158, 174, 151, 0, 0, 169, 0, 173, 0, 89,
- 162, 152, 153, 0, 0, 0, 157, 151, 156, 145,
- 0, 178, 151, 104, 0, 102, 0, 159, 87, 184,
- 7, 8, 37, 34, 87, 9, 0, 86, 119, 0,
- 0, 0, 0, 0, 0, 120, 122, 121, 0, 0,
- 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 117, 116, 134, 135, 0, 0, 0,
- 0, 102, 0, 171, 170, 23, 22, 26, 27, 0,
- 0, 24, 0, 133, 0, 0, 0, 176, 177, 175,
- 105, 87, 181, 0, 0, 146, 13, 0, 0, 88,
- 179, 0, 38, 31, 111, 112, 109, 110, 0, 16,
- 113, 161, 131, 132, 128, 129, 130, 127, 142, 143,
- 139, 140, 141, 138, 118, 108, 160, 168, 25, 0,
- 90, 147, 148, 106, 186, 0, 107, 103, 12, 10,
- 36, 0, 54, 0, 0, 0, 87, 0, 0, 0,
- 76, 77, 0, 98, 0, 87, 35, 48, 0, 57,
- 41, 62, 34, 182, 87, 0, 137, 95, 93, 0,
- 0, 136, 0, 98, 59, 0, 0, 0, 0, 63,
- 49, 50, 51, 0, 99, 52, 180, 56, 0, 0,
- 87, 183, 39, 114, 87, 96, 0, 0, 0, 163,
- 0, 0, 0, 0, 172, 64, 0, 53, 0, 80,
- 78, 40, 21, 29, 97, 94, 87, 55, 60, 0,
- 165, 167, 61, 87, 87, 0, 0, 87, 0, 81,
- 58, 0, 164, 166, 0, 0, 0, 0, 0, 79,
- 0, 83, 66, 43, 0, 87, 0, 87, 82, 87,
- 87, 0, 87, 0, 87, 63, 0, 0, 68, 0,
- 0, 67, 44, 45, 63, 0, 84, 42, 71, 74,
- 0, 0, 75, 0, 185, 87, 0, 87, 73, 72,
- 87, 34, 87, 0, 34, 0, 0, 47, 0, 46
+ 0, 143, 30, 4, 15, 114, 122, 123, 125, 149,
+ 157, 173, 150, 0, 0, 168, 0, 172, 0, 88,
+ 161, 151, 152, 0, 0, 0, 156, 150, 155, 144,
+ 0, 177, 150, 103, 0, 101, 0, 158, 86, 183,
+ 7, 8, 37, 34, 86, 9, 0, 85, 118, 0,
+ 0, 0, 0, 0, 0, 119, 121, 120, 0, 0,
+ 124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 116, 115, 133, 134, 0, 0, 0,
+ 0, 101, 0, 170, 169, 23, 22, 26, 27, 0,
+ 0, 24, 0, 132, 0, 0, 0, 175, 176, 174,
+ 104, 86, 180, 0, 0, 145, 13, 0, 0, 87,
+ 178, 0, 38, 31, 110, 111, 108, 109, 0, 16,
+ 112, 160, 130, 131, 127, 128, 129, 126, 141, 142,
+ 138, 139, 140, 137, 117, 107, 159, 167, 25, 0,
+ 89, 146, 147, 105, 185, 0, 106, 102, 12, 10,
+ 36, 0, 54, 0, 0, 0, 86, 0, 0, 0,
+ 75, 76, 0, 97, 0, 86, 35, 48, 0, 57,
+ 41, 62, 34, 181, 86, 0, 136, 94, 92, 0,
+ 0, 135, 0, 97, 59, 0, 0, 0, 0, 63,
+ 49, 50, 51, 0, 98, 52, 179, 56, 0, 0,
+ 86, 182, 39, 113, 86, 95, 0, 0, 0, 162,
+ 0, 0, 0, 0, 171, 64, 0, 53, 0, 79,
+ 77, 40, 21, 29, 96, 93, 86, 55, 60, 0,
+ 164, 166, 61, 86, 86, 0, 0, 86, 0, 80,
+ 58, 0, 163, 165, 0, 0, 0, 0, 0, 78,
+ 0, 82, 65, 43, 0, 86, 0, 86, 81, 86,
+ 0, 86, 0, 86, 63, 0, 67, 0, 0, 66,
+ 0, 44, 45, 63, 0, 83, 70, 73, 0, 0,
+ 74, 0, 184, 86, 42, 0, 86, 72, 71, 86,
+ 34, 86, 0, 34, 0, 0, 47, 0, 46
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -887,306 +887,306 @@ static const yytype_int16 yydefgoto[] =
{
-1, 1, 28, 138, 29, 70, 120, 121, 30, 48,
31, 76, 32, 141, 71, 196, 197, 213, 198, 228,
- 239, 246, 290, 291, 301, 313, 199, 249, 270, 280,
- 200, 139, 140, 123, 209, 210, 223, 109, 110, 201,
- 108, 87, 88, 35, 36, 37, 38, 39, 40, 49,
- 258, 259, 260, 45, 46, 47, 41, 42, 129, 202,
- 203, 135, 230, 204, 315, 134
+ 239, 246, 290, 299, 311, 199, 249, 270, 280, 200,
+ 139, 140, 123, 209, 210, 223, 109, 110, 201, 108,
+ 87, 88, 35, 36, 37, 38, 39, 40, 49, 258,
+ 259, 260, 45, 46, 47, 41, 42, 129, 202, 203,
+ 135, 230, 204, 313, 134
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -267
+#define YYPACT_NINF -268
static const yytype_int16 yypact[] =
{
- -267, 330, -267, -267, -36, -37, -267, -267, -267, -267,
- -267, -267, -267, 20, 20, 20, -30, -20, -267, -267,
- -267, 973, 973, -267, 973, 1018, 799, 6, -267, -15,
- -21, -267, -267, 10, 1057, 947, 300, 325, -267, -267,
- -267, -267, 299, 731, 799, -267, 53, -267, 112, 66,
- -267, -267, -267, 731, 731, 122, 70, -3, 70, 70,
- 973, 88, -267, -267, 50, 1051, 25, -267, 97, -267,
- -267, -267, 10, -267, 97, -267, 143, -267, -267, 973,
- 146, 973, 973, 973, 973, -267, -267, -267, 973, 113,
- 300, 973, 973, 973, 973, 973, 973, 973, 973, 973,
- 973, 973, 973, -267, -267, -267, -267, 139, 973, 87,
- 118, 1086, 7, -267, -267, -267, -267, -267, -267, 121,
- 96, -267, 973, -267, 87, 87, 1051, -267, -267, -267,
- 973, 97, -267, 137, 825, -267, -267, 36, -16, 10,
- -267, 547, -267, -267, 19, -267, 260, 251, 1080, 1086,
- 105, 20, 115, 115, 70, 70, 70, 70, 115, 115,
- 70, 70, 70, 70, -267, 1086, -267, -267, -267, 63,
- 300, -267, -267, 1086, -267, 146, -267, 1086, -267, -267,
- -267, 116, -267, 45, 120, 124, 97, 129, -16, -16,
- -267, -267, -16, 973, -16, 97, -267, -267, -16, -267,
- -267, 1086, -267, 123, 97, 973, -267, -267, -267, 87,
- 117, -267, 973, 973, -267, 193, 973, 973, 660, 870,
- -267, -267, -267, -16, 1086, -267, -267, -267, 593, 547,
- 97, -267, -267, 1086, 97, -267, 72, 1051, -16, -37,
- 133, 1051, 1051, 175, -22, -267, 123, -267, 799, 192,
- -267, -267, -267, -267, -267, -267, 97, -267, -267, 90,
- -267, -267, -267, 97, 97, 141, 146, 97, 50, -267,
- -267, 660, -267, -267, -21, 660, 973, 87, 705, 137,
- 973, 183, -267, -267, 1051, 97, 262, 97, 947, 97,
- 97, 38, 97, 660, 97, 902, 660, 136, -267, 198,
- 156, -267, -267, -267, 902, 87, -267, -267, -267, -267,
- 203, 210, -267, 156, -267, 97, 87, 97, -267, -267,
- 97, -267, 97, 660, -267, 401, 660, -267, 474, -267
+ -268, 322, -268, -268, -36, -35, -268, -268, -268, -268,
+ -268, -268, -268, 20, 20, 20, -26, -21, -268, -268,
+ -268, 965, 965, -268, 965, 1010, 791, 12, -268, -32,
+ -33, -268, -268, 23, 1049, 939, 317, 345, -268, -268,
+ -268, -268, 291, 723, 791, -268, 15, -268, 203, 1,
+ -268, -268, -268, 723, 723, 72, 42, 26, 42, 42,
+ 965, 104, -268, -268, 108, 296, 31, -268, 64, -268,
+ -268, -268, 23, -268, 64, -268, 111, -268, -268, 965,
+ 120, 965, 965, 965, 965, -268, -268, -268, 965, 83,
+ 317, 965, 965, 965, 965, 965, 965, 965, 965, 965,
+ 965, 965, 965, -268, -268, -268, -268, 114, 965, 84,
+ 61, 1088, 116, -268, -268, -268, -268, -268, -268, 105,
+ 87, -268, 965, -268, 84, 84, 296, -268, -268, -268,
+ 965, 64, -268, 118, 817, -268, -268, 13, -15, 23,
+ -268, 539, -268, -268, 121, -268, 217, 241, 1068, 1088,
+ 141, 20, -10, -10, 42, 42, 42, 42, -10, -10,
+ 42, 42, 42, 42, -268, 1088, -268, -268, -268, 43,
+ 317, -268, -268, 1088, -268, 120, -268, 1088, -268, -268,
+ -268, 90, -268, 6, 94, 99, 64, 102, -15, -15,
+ -268, -268, -15, 965, -15, 64, -268, -268, -15, -268,
+ -268, 1088, -268, 101, 64, 965, -268, -268, -268, 84,
+ 117, -268, 965, 965, -268, 176, 965, 965, 652, 862,
+ -268, -268, -268, -15, 1088, -268, -268, -268, 585, 539,
+ 64, -268, -268, 1088, 64, -268, 63, 296, -15, -35,
+ 123, 296, 296, 155, -14, -268, 101, -268, 791, 175,
+ -268, -268, -268, -268, -268, -268, 64, -268, -268, 103,
+ -268, -268, -268, 64, 64, 122, 120, 64, 108, -268,
+ -268, 652, -268, -268, -33, 652, 965, 84, 697, 118,
+ 965, 167, -268, -268, 296, 64, 1043, 64, 939, 64,
+ 107, 64, 652, 64, 894, 652, -268, 194, 138, -268,
+ 128, -268, -268, 894, 84, -268, -268, -268, 196, 198,
+ -268, 138, -268, 64, -268, 84, 64, -268, -268, 64,
+ -268, 64, 652, -268, 393, 652, -268, 466, -268
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -267, -267, -267, -267, -267, 188, -267, -267, -267, -267,
- -77, -267, -267, -197, 56, -170, -267, -267, -192, -267,
- -267, -266, -267, -267, -267, -267, -267, -267, -267, -267,
- -267, 43, 34, -267, -267, -267, 11, -39, -23, -1,
- -267, -267, -267, -52, 44, -267, 201, -267, -10, 82,
- -267, -267, -19, -40, -267, -267, -73, -2, -267, -28,
- -213, -54, -267, -25, -79, 26
+ -268, -268, -268, -268, -268, 178, -268, -268, -268, -268,
+ -87, -268, -268, -197, 71, -170, -268, -268, -191, -268,
+ -268, -267, -268, -268, -268, -268, -268, -268, -268, -268,
+ 45, 28, -268, -268, -268, 4, -46, -23, -1, -268,
+ -268, -268, -62, 44, -268, 197, -268, 2, 73, -268,
+ -268, -31, -40, -268, -268, -71, -2, -268, -28, -212,
+ -48, -268, -25, -81, 25
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -102
+#define YYTABLE_NINF -101
static const yytype_int16 yytable[] =
{
- 34, 73, 73, 64, 74, 229, 114, 145, 130, 4,
- 133, 50, 51, 52, 124, 125, 251, 67, 266, 57,
- 57, 112, 57, 62, 5, 65, 136, 245, 78, 305,
- 43, 137, 44, 57, 19, 19, 53, 178, 316, 298,
- 105, 106, 111, 111, 33, 67, 54, 44, 243, 214,
- 68, 130, 111, 111, 66, 166, 68, 69, 69, 126,
- 77, 131, 299, 300, 207, 56, 58, 208, 59, 113,
- 171, 172, 72, 254, 85, 86, 255, 167, 144, 90,
- 146, 147, 148, 149, 307, 25, -11, 150, -65, 57,
+ 34, 73, 73, 64, 74, 229, 114, 124, 125, 145,
+ 214, 50, 51, 52, 178, 4, 133, 251, 19, 57,
+ 57, 112, 57, 62, 5, 65, 266, 304, 245, 67,
+ 43, 113, 136, 57, 44, 19, 315, 137, 68, 68,
+ 53, 69, 111, 111, 207, 54, 33, 208, 243, 93,
+ 94, 95, 111, 111, 96, 44, 122, 67, 69, 126,
+ 66, 166, 130, -11, 254, 56, 58, 255, 59, 105,
+ 106, -100, 215, 77, 72, 4, 171, 172, 144, 90,
+ 146, 147, 148, 149, 44, 25, -11, 150, 314, 57,
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
- 57, 281, 211, 245, 131, 283, 272, 165, 142, -11,
- -65, 215, 245, 74, -102, 115, 116, 132, 235, 130,
- 57, 122, 44, 303, 325, 4, 306, 328, -101, 173,
- -91, 127, 128, 177, 96, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 19, 143, 50,
- 5, 151, 164, 327, 132, 234, 329, 117, 118, 44,
- -102, -102, 169, 74, 74, 174, 170, 74, -101, 74,
- 168, 131, 131, 74, 93, 94, 95, 175, 231, 96,
- 119, 72, 212, 256, -92, -101, 216, 263, 264, 250,
- 217, -101, 224, 277, 179, 219, 69, 240, 74, 261,
- 262, 265, 269, 289, 233, 308, 309, 276, 195, 314,
- 318, 237, 224, 74, 279, 241, 242, 319, 75, 261,
- 218, 267, 312, 285, 238, 268, 61, 111, 288, 226,
- 292, 72, 72, 206, 320, 72, 236, 72, 232, 0,
- 273, 72, 0, 0, 220, 221, 282, 65, 222, 20,
- 225, 317, 0, 287, 227, 310, 311, 0, 23, 0,
- 78, 294, 322, 0, 252, 79, 72, 0, 253, 78,
- 0, 78, 0, 0, 79, 284, 79, 286, 57, 247,
- 0, 72, 0, 0, 0, 0, 57, 0, 0, 0,
- 271, 80, 81, 0, 257, 0, 0, 274, 275, 0,
- 80, 278, 80, 81, 82, 0, 85, 86, 0, 0,
- 0, 103, 104, 0, 83, 85, 86, 85, 86, 293,
- 0, 295, 0, 296, 297, 0, 302, 0, 304, 0,
- 2, 3, 90, 4, 5, 69, 0, 6, 7, 0,
- 0, 0, 105, 106, 0, 0, 0, 8, 9, 321,
- 107, 323, 0, 0, 324, 0, 326, 91, 92, 93,
- 94, 95, 0, 0, 96, 10, 11, 12, 13, 0,
- 0, 0, 0, 14, 15, 16, 17, 18, 0, 0,
- 19, 20, 97, 98, 99, 100, 101, 21, 22, 102,
- 23, 0, 24, 0, 0, 25, 26, 0, 27, 0,
- 0, -14, 180, -14, 4, 5, 0, 0, 6, 7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 181, 0, 182, 183, 184, -70, -70, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 0, 0, 0, 13,
- 194, 0, 0, 0, 14, 15, 16, 17, 0, 0,
- 0, -70, 20, 0, 0, 0, 0, 0, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, 0, 55,
- 0, 0, 68, -70, 69, 180, 0, 4, 5, 0,
- 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 181, 0, 182, 183, 184, -69, -69,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 0,
- 0, 0, 13, 194, 0, 0, 0, 14, 15, 16,
- 17, 0, 0, 0, -69, 20, 0, 0, 0, 0,
- 0, 21, 22, 0, 23, 0, 24, 0, 0, 25,
- 26, 0, 55, 0, 0, 68, -69, 69, 180, 0,
- 4, 5, 0, 0, 6, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 181, 0, 182, 183,
- 184, 0, 0, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 0, 0, 0, 13, 194, 0, 0, 0,
- 14, 15, 16, 17, 63, 0, 4, 5, 20, 0,
- 6, 7, 0, -100, 21, 22, 0, 23, 0, 24,
- 0, 0, 25, 26, 0, 55, 0, 0, 68, 195,
- 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 0, 14, 15, 16, 17,
- 0, 0, 0, -100, 20, 0, 0, 0, 0, 0,
- 21, 22, 0, 23, 0, 24, 0, 0, 25, 248,
- -100, 55, 0, 4, 5, 0, -100, 6, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 181,
- 0, 182, 183, 184, 0, 0, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 0, 0, 0, 13, 194,
- 0, 0, 0, 14, 15, 16, 17, 0, 4, 5,
- 0, 20, 6, 7, 0, 0, 0, 21, 22, 0,
- 23, 0, 24, 0, 0, 25, 26, 0, 55, 0,
- 0, 68, 63, 69, 4, 5, 0, 0, 6, 7,
+ 57, 281, 142, 245, 211, 283, 96, 165, 296, 130,
+ -90, -100, 245, 74, 19, 131, 143, 130, 235, 272,
+ 57, 151, 302, 324, 5, 305, 327, 164, -100, 173,
+ 78, 297, 298, 177, -100, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 127, 128, 50,
+ -101, 132, 326, 169, 168, 328, 212, 19, 175, 174,
+ 216, 234, 131, 74, 74, 217, 170, 74, 219, 74,
+ 131, 131, 44, 74, 69, 132, 85, 86, 231, -86,
+ 240, 265, 250, 72, -91, 269, 167, 289, 276, 256,
+ 262, 312, 224, 263, 264, 277, -101, -101, 74, 261,
+ 195, 306, 307, 317, 233, 318, 115, 116, 75, 179,
+ 310, 237, 224, 74, 218, 241, 242, 238, 288, 261,
+ 279, 267, 61, 226, 206, 268, 78, 111, 273, 285,
+ 319, 79, 232, 72, 72, 236, 291, 72, 0, 72,
+ 0, 0, 0, 72, 0, 20, 282, 65, 117, 118,
+ 78, 308, 309, 287, 23, 79, 316, 80, 252, 220,
+ 221, 293, 253, 222, 0, 225, 0, 321, 72, 227,
+ 0, 119, 85, 86, 0, 284, 0, 286, 57, 0,
+ 0, 80, 81, 72, 271, 0, 57, 0, 0, 0,
+ 0, 274, 275, 0, 247, 278, 85, 86, 0, 0,
+ 0, 0, 0, 103, 104, 78, 0, 0, 0, 257,
+ 79, 0, 0, 292, 0, 294, 0, 295, 300, 301,
+ 0, 303, 2, 3, 0, 4, 5, 0, 0, 6,
+ 7, 0, 90, 0, 105, 106, 80, 81, 82, 8,
+ 9, 320, 107, 0, 322, 0, 0, 323, 83, 325,
+ 0, 85, 86, 0, 0, 0, 0, 10, 11, 12,
+ 13, 0, 0, 132, 0, 14, 15, 16, 17, 18,
+ 0, 0, 19, 20, 91, 92, 93, 94, 95, 21,
+ 22, 96, 23, 0, 24, 0, 0, 25, 26, 0,
+ 27, 0, 0, -14, 180, -14, 4, 5, 0, 0,
+ 6, 7, 97, 98, 99, 100, 101, 0, 0, 102,
+ 0, 0, 181, 0, 182, 183, 184, -69, -69, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 0, 0,
+ 0, 13, 194, 0, 0, 0, 14, 15, 16, 17,
+ 0, 0, 0, -69, 20, 0, 0, 0, 0, 0,
+ 21, 22, 0, 23, 0, 24, 0, 0, 25, 26,
+ 0, 55, 0, 0, 68, -69, 69, 180, 0, 4,
+ 5, 0, 0, 6, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 181, 0, 182, 183, 184,
+ -68, -68, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 0, 0, 0, 13, 194, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, -68, 20, 0, 0,
+ 0, 0, 0, 21, 22, 0, 23, 0, 24, 0,
+ 0, 25, 26, 0, 55, 0, 0, 68, -68, 69,
+ 180, 0, 4, 5, 0, 0, 6, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 181, 0,
+ 182, 183, 184, 0, 0, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 0, 0, 0, 13, 194, 0,
+ 0, 0, 14, 15, 16, 17, 63, 0, 4, 5,
+ 20, 0, 6, 7, 0, -99, 21, 22, 0, 23,
+ 0, 24, 0, 0, 25, 26, 0, 55, 0, 0,
+ 68, 195, 69, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, 0, 0, 14, 15,
- 16, 17, 0, 0, 0, 0, 20, 0, 0, 0,
- 0, 0, 21, 22, 0, 23, 0, 24, 0, 13,
- 25, 26, 0, 55, 14, 15, 16, 17, 69, 0,
- 0, 0, 20, 0, 0, 0, 0, 0, 21, 22,
- 0, 23, 0, 24, 0, 0, 25, 26, -100, 55,
- 63, 0, 4, 5, 0, 0, 6, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 176, 0, 4, 5,
- 0, 0, 6, 7, 0, 0, 0, 13, 0, 0,
- 0, 0, 14, 15, 16, 17, 0, 0, 0, 0,
- 20, 0, 0, 0, 0, 0, 21, 22, 0, 23,
- 0, 24, 0, 13, 25, 26, 0, 55, 14, 15,
- 16, 17, 0, 4, 244, 0, 20, 6, 7, 0,
+ 16, 17, 0, 0, 0, -99, 20, 0, 0, 0,
0, 0, 21, 22, 0, 23, 0, 24, 0, 0,
- 25, 26, 183, 55, 0, 0, 0, 0, 0, 0,
- 0, 190, 191, 0, 0, 4, 5, 0, 13, 6,
- 7, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 0, 20, 0, 0, 183, 0, 0, 21, 22, 0,
- 23, 0, 24, 190, 191, 25, 26, 0, 55, 0,
- 13, 0, 0, 0, 0, 14, 15, 16, 17, 0,
- 4, 5, 0, 20, 6, 7, 0, 0, 89, 21,
+ 25, 248, -99, 55, 0, 4, 5, 0, -99, 6,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 181, 0, 182, 183, 184, 0, 0, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 0, 0, 0,
+ 13, 194, 0, 0, 0, 14, 15, 16, 17, 0,
+ 4, 5, 0, 20, 6, 7, 0, 0, 0, 21,
22, 0, 23, 0, 24, 0, 0, 25, 26, 0,
- 55, 0, 0, 0, 0, 0, 4, 5, 0, 0,
+ 55, 0, 0, 68, 63, 69, 4, 5, 0, 0,
6, 7, 0, 0, 0, 13, 0, 0, 0, 0,
14, 15, 16, 17, 0, 0, 0, 0, 20, 0,
0, 0, 0, 0, 21, 22, 0, 23, 0, 24,
0, 13, 25, 26, 0, 55, 14, 15, 16, 17,
- 0, 4, 5, 0, 20, 6, 7, 0, 0, 0,
+ 69, 0, 0, 0, 20, 0, 0, 0, 0, 0,
21, 22, 0, 23, 0, 24, 0, 0, 25, 26,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
+ -99, 55, 63, 0, 4, 5, 0, 0, 6, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
+ 4, 5, 0, 0, 6, 7, 0, 0, 0, 13,
+ 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
+ 0, 0, 20, 0, 0, 0, 0, 0, 21, 22,
+ 0, 23, 0, 24, 0, 13, 25, 26, 0, 55,
+ 14, 15, 16, 17, 0, 4, 244, 0, 20, 6,
+ 7, 0, 0, 0, 21, 22, 0, 23, 0, 24,
+ 0, 0, 25, 26, 183, 55, 0, 0, 0, 0,
+ 0, 0, 0, 190, 191, 0, 0, 4, 5, 0,
+ 13, 6, 7, 0, 0, 14, 15, 16, 17, 0,
+ 0, 0, 0, 20, 0, 0, 183, 0, 0, 21,
+ 22, 0, 23, 0, 24, 190, 191, 25, 26, 0,
+ 55, 0, 13, 0, 0, 0, 0, 14, 15, 16,
+ 17, 0, 4, 5, 0, 20, 6, 7, 0, 0,
+ 89, 21, 22, 0, 23, 0, 24, 0, 0, 25,
+ 26, 0, 55, 0, 0, 0, 0, 0, 4, 5,
+ 0, 0, 6, 7, 0, 0, 0, 13, 0, 0,
+ 0, 0, 14, 15, 16, 17, 0, 0, 0, 0,
+ 20, 0, 0, 0, 0, 0, 21, 22, 0, 23,
+ 0, 24, 0, 13, 25, 26, 0, 55, 14, 15,
+ 16, 17, 0, 4, 5, 0, 20, 6, 7, 0,
+ 0, 0, 21, 22, 0, 23, 0, 24, 0, 0,
+ 25, 26, 0, 55, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 78, 14, 15, 16, 17, 79, 78, 0, 0, 20,
- 0, 79, 0, 0, 0, 21, 22, 0, 23, 0,
- 24, 0, 0, 25, 60, 0, 55, 0, 0, 78,
- 0, 80, 81, 82, 79, 78, 0, 80, 81, 82,
- 79, 0, 0, 83, 0, 0, 85, 86, 0, 83,
- 0, 84, 85, 86, 0, 0, 0, 0, 132, 0,
- 80, 81, 82, 0, 0, 0, 80, 81, 82, 0,
- 0, 0, 83, 205, 0, 85, 86, 0, 83, 0,
- 0, 85, 86
+ 0, 0, 78, 14, 15, 16, 17, 79, 78, 0,
+ 0, 20, 0, 79, 0, 0, 0, 21, 22, 0,
+ 23, 0, 24, 0, 0, 25, 60, 78, 55, 0,
+ 0, 0, 79, 80, 81, 82, 0, 0, 0, 80,
+ 81, 82, 0, 0, 0, 83, 0, 78, 85, 86,
+ 0, 83, 79, 84, 85, 86, 0, 0, 80, 81,
+ 82, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+ 83, 205, 0, 85, 86, 0, 0, 0, 80, 81,
+ 82, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 83, 0, 0, 85, 86
};
static const yytype_int16 yycheck[] =
{
- 1, 29, 30, 26, 29, 202, 46, 80, 1, 3,
- 64, 13, 14, 15, 53, 54, 229, 27, 40, 21,
- 22, 44, 24, 25, 4, 26, 1, 219, 9, 295,
- 66, 6, 69, 35, 50, 50, 66, 1, 304, 1,
- 43, 44, 43, 44, 1, 55, 66, 69, 218, 4,
- 71, 1, 53, 54, 48, 109, 71, 73, 73, 60,
- 50, 54, 24, 25, 1, 21, 22, 4, 24, 16,
- 124, 125, 29, 1, 55, 56, 4, 70, 79, 35,
- 81, 82, 83, 84, 297, 65, 50, 88, 50, 91,
+ 1, 29, 30, 26, 29, 202, 46, 53, 54, 80,
+ 4, 13, 14, 15, 1, 3, 64, 229, 50, 21,
+ 22, 44, 24, 25, 4, 26, 40, 294, 219, 27,
+ 66, 16, 1, 35, 69, 50, 303, 6, 71, 71,
+ 66, 73, 43, 44, 1, 66, 1, 4, 218, 59,
+ 60, 61, 53, 54, 64, 69, 55, 55, 73, 60,
+ 48, 109, 1, 50, 1, 21, 22, 4, 24, 43,
+ 44, 10, 66, 50, 29, 3, 124, 125, 79, 35,
+ 81, 82, 83, 84, 69, 65, 73, 88, 300, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 271, 175, 295, 54, 275, 16, 108, 74, 73,
- 72, 66, 304, 138, 9, 3, 4, 67, 1, 1,
- 122, 55, 69, 293, 321, 3, 296, 324, 10, 130,
- 67, 43, 44, 134, 64, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 50, 5, 151,
- 4, 38, 13, 323, 67, 209, 326, 45, 46, 69,
- 55, 56, 66, 188, 189, 131, 122, 192, 50, 194,
- 49, 54, 54, 198, 59, 60, 61, 40, 203, 64,
- 68, 138, 66, 237, 67, 67, 66, 241, 242, 228,
- 66, 73, 193, 266, 138, 66, 73, 4, 223, 239,
- 67, 26, 10, 20, 205, 7, 8, 66, 72, 53,
- 7, 212, 213, 238, 268, 216, 217, 7, 30, 259,
- 186, 246, 299, 277, 213, 248, 25, 228, 280, 195,
- 284, 188, 189, 151, 313, 192, 210, 194, 204, -1,
- 259, 198, -1, -1, 188, 189, 274, 248, 192, 51,
- 194, 305, -1, 278, 198, 57, 58, -1, 60, -1,
- 9, 286, 316, -1, 230, 14, 223, -1, 234, 9,
- -1, 9, -1, -1, 14, 276, 14, 278, 280, 223,
- -1, 238, -1, -1, -1, -1, 288, -1, -1, -1,
- 256, 40, 41, -1, 238, -1, -1, 263, 264, -1,
- 40, 267, 40, 41, 42, -1, 55, 56, -1, -1,
- -1, 12, 13, -1, 52, 55, 56, 55, 56, 285,
- -1, 287, -1, 289, 290, -1, 292, -1, 294, -1,
- 0, 1, 288, 3, 4, 73, -1, 7, 8, -1,
- -1, -1, 43, 44, -1, -1, -1, 17, 18, 315,
- 51, 317, -1, -1, 320, -1, 322, 57, 58, 59,
- 60, 61, -1, -1, 64, 35, 36, 37, 38, -1,
- -1, -1, -1, 43, 44, 45, 46, 47, -1, -1,
- 50, 51, 57, 58, 59, 60, 61, 57, 58, 64,
- 60, -1, 62, -1, -1, 65, 66, -1, 68, -1,
- -1, 71, 1, 73, 3, 4, -1, -1, 7, 8,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 19, -1, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, -1, -1, -1, 38,
- 39, -1, -1, -1, 43, 44, 45, 46, -1, -1,
- -1, 50, 51, -1, -1, -1, -1, -1, 57, 58,
- -1, 60, -1, 62, -1, -1, 65, 66, -1, 68,
- -1, -1, 71, 72, 73, 1, -1, 3, 4, -1,
- -1, 7, 8, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 19, -1, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
- -1, -1, 38, 39, -1, -1, -1, 43, 44, 45,
- 46, -1, -1, -1, 50, 51, -1, -1, -1, -1,
- -1, 57, 58, -1, 60, -1, 62, -1, -1, 65,
- 66, -1, 68, -1, -1, 71, 72, 73, 1, -1,
- 3, 4, -1, -1, 7, 8, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 19, -1, 21, 22,
- 23, -1, -1, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, -1, -1, -1, 38, 39, -1, -1, -1,
- 43, 44, 45, 46, 1, -1, 3, 4, 51, -1,
- 7, 8, -1, 10, 57, 58, -1, 60, -1, 62,
- -1, -1, 65, 66, -1, 68, -1, -1, 71, 72,
- 73, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 38, -1, -1, -1, -1, 43, 44, 45, 46,
+ 102, 271, 74, 294, 175, 275, 64, 108, 1, 1,
+ 67, 50, 303, 138, 50, 54, 5, 1, 1, 16,
+ 122, 38, 292, 320, 4, 295, 323, 13, 67, 130,
+ 9, 24, 25, 134, 73, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 43, 44, 151,
+ 9, 67, 322, 66, 49, 325, 66, 50, 40, 131,
+ 66, 209, 54, 188, 189, 66, 122, 192, 66, 194,
+ 54, 54, 69, 198, 73, 67, 55, 56, 203, 72,
+ 4, 26, 228, 138, 67, 10, 70, 20, 66, 237,
+ 67, 53, 193, 241, 242, 266, 55, 56, 223, 239,
+ 72, 7, 8, 7, 205, 7, 3, 4, 30, 138,
+ 297, 212, 213, 238, 186, 216, 217, 213, 280, 259,
+ 268, 246, 25, 195, 151, 248, 9, 228, 259, 277,
+ 311, 14, 204, 188, 189, 210, 284, 192, -1, 194,
+ -1, -1, -1, 198, -1, 51, 274, 248, 45, 46,
+ 9, 57, 58, 278, 60, 14, 304, 40, 230, 188,
+ 189, 286, 234, 192, -1, 194, -1, 315, 223, 198,
+ -1, 68, 55, 56, -1, 276, -1, 278, 280, -1,
+ -1, 40, 41, 238, 256, -1, 288, -1, -1, -1,
+ -1, 263, 264, -1, 223, 267, 55, 56, -1, -1,
+ -1, -1, -1, 12, 13, 9, -1, -1, -1, 238,
+ 14, -1, -1, 285, -1, 287, -1, 289, 290, 291,
+ -1, 293, 0, 1, -1, 3, 4, -1, -1, 7,
+ 8, -1, 288, -1, 43, 44, 40, 41, 42, 17,
+ 18, 313, 51, -1, 316, -1, -1, 319, 52, 321,
+ -1, 55, 56, -1, -1, -1, -1, 35, 36, 37,
+ 38, -1, -1, 67, -1, 43, 44, 45, 46, 47,
+ -1, -1, 50, 51, 57, 58, 59, 60, 61, 57,
+ 58, 64, 60, -1, 62, -1, -1, 65, 66, -1,
+ 68, -1, -1, 71, 1, 73, 3, 4, -1, -1,
+ 7, 8, 57, 58, 59, 60, 61, -1, -1, 64,
+ -1, -1, 19, -1, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, -1, -1,
+ -1, 38, 39, -1, -1, -1, 43, 44, 45, 46,
-1, -1, -1, 50, 51, -1, -1, -1, -1, -1,
57, 58, -1, 60, -1, 62, -1, -1, 65, 66,
- 67, 68, -1, 3, 4, -1, 73, 7, 8, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
- -1, 21, 22, 23, -1, -1, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, -1, -1, -1, 38, 39,
- -1, -1, -1, 43, 44, 45, 46, -1, 3, 4,
- -1, 51, 7, 8, -1, -1, -1, 57, 58, -1,
- 60, -1, 62, -1, -1, 65, 66, -1, 68, -1,
- -1, 71, 1, 73, 3, 4, -1, -1, 7, 8,
- -1, -1, -1, 38, -1, -1, -1, -1, 43, 44,
- 45, 46, -1, -1, -1, -1, 51, -1, -1, -1,
- -1, -1, 57, 58, -1, 60, -1, 62, -1, 38,
- 65, 66, -1, 68, 43, 44, 45, 46, 73, -1,
- -1, -1, 51, -1, -1, -1, -1, -1, 57, 58,
- -1, 60, -1, 62, -1, -1, 65, 66, 67, 68,
+ -1, 68, -1, -1, 71, 72, 73, 1, -1, 3,
+ 4, -1, -1, 7, 8, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 19, -1, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, -1, -1, -1, 38, 39, -1, -1, -1, 43,
+ 44, 45, 46, -1, -1, -1, 50, 51, -1, -1,
+ -1, -1, -1, 57, 58, -1, 60, -1, 62, -1,
+ -1, 65, 66, -1, 68, -1, -1, 71, 72, 73,
1, -1, 3, 4, -1, -1, 7, 8, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
- -1, -1, 7, 8, -1, -1, -1, 38, -1, -1,
- -1, -1, 43, 44, 45, 46, -1, -1, -1, -1,
- 51, -1, -1, -1, -1, -1, 57, 58, -1, 60,
- -1, 62, -1, 38, 65, 66, -1, 68, 43, 44,
- 45, 46, -1, 3, 4, -1, 51, 7, 8, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 19, -1,
+ 21, 22, 23, -1, -1, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, -1, -1, -1, 38, 39, -1,
+ -1, -1, 43, 44, 45, 46, 1, -1, 3, 4,
+ 51, -1, 7, 8, -1, 10, 57, 58, -1, 60,
+ -1, 62, -1, -1, 65, 66, -1, 68, -1, -1,
+ 71, 72, 73, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 38, -1, -1, -1, -1, 43, 44,
+ 45, 46, -1, -1, -1, 50, 51, -1, -1, -1,
-1, -1, 57, 58, -1, 60, -1, 62, -1, -1,
- 65, 66, 22, 68, -1, -1, -1, -1, -1, -1,
- -1, 31, 32, -1, -1, 3, 4, -1, 38, 7,
- 8, -1, -1, 43, 44, 45, 46, -1, -1, -1,
- -1, 51, -1, -1, 22, -1, -1, 57, 58, -1,
- 60, -1, 62, 31, 32, 65, 66, -1, 68, -1,
- 38, -1, -1, -1, -1, 43, 44, 45, 46, -1,
- 3, 4, -1, 51, 7, 8, -1, -1, 11, 57,
+ 65, 66, 67, 68, -1, 3, 4, -1, 73, 7,
+ 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 19, -1, 21, 22, 23, -1, -1, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, -1, -1, -1,
+ 38, 39, -1, -1, -1, 43, 44, 45, 46, -1,
+ 3, 4, -1, 51, 7, 8, -1, -1, -1, 57,
58, -1, 60, -1, 62, -1, -1, 65, 66, -1,
- 68, -1, -1, -1, -1, -1, 3, 4, -1, -1,
+ 68, -1, -1, 71, 1, 73, 3, 4, -1, -1,
7, 8, -1, -1, -1, 38, -1, -1, -1, -1,
43, 44, 45, 46, -1, -1, -1, -1, 51, -1,
-1, -1, -1, -1, 57, 58, -1, 60, -1, 62,
-1, 38, 65, 66, -1, 68, 43, 44, 45, 46,
- -1, 3, 4, -1, 51, 7, 8, -1, -1, -1,
+ 73, -1, -1, -1, 51, -1, -1, -1, -1, -1,
57, 58, -1, 60, -1, 62, -1, -1, 65, 66,
- -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
+ 67, 68, 1, -1, 3, 4, -1, -1, 7, 8,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
+ 3, 4, -1, -1, 7, 8, -1, -1, -1, 38,
+ -1, -1, -1, -1, 43, 44, 45, 46, -1, -1,
+ -1, -1, 51, -1, -1, -1, -1, -1, 57, 58,
+ -1, 60, -1, 62, -1, 38, 65, 66, -1, 68,
+ 43, 44, 45, 46, -1, 3, 4, -1, 51, 7,
+ 8, -1, -1, -1, 57, 58, -1, 60, -1, 62,
+ -1, -1, 65, 66, 22, 68, -1, -1, -1, -1,
+ -1, -1, -1, 31, 32, -1, -1, 3, 4, -1,
+ 38, 7, 8, -1, -1, 43, 44, 45, 46, -1,
+ -1, -1, -1, 51, -1, -1, 22, -1, -1, 57,
+ 58, -1, 60, -1, 62, 31, 32, 65, 66, -1,
+ 68, -1, 38, -1, -1, -1, -1, 43, 44, 45,
+ 46, -1, 3, 4, -1, 51, 7, 8, -1, -1,
+ 11, 57, 58, -1, 60, -1, 62, -1, -1, 65,
+ 66, -1, 68, -1, -1, -1, -1, -1, 3, 4,
+ -1, -1, 7, 8, -1, -1, -1, 38, -1, -1,
+ -1, -1, 43, 44, 45, 46, -1, -1, -1, -1,
+ 51, -1, -1, -1, -1, -1, 57, 58, -1, 60,
+ -1, 62, -1, 38, 65, 66, -1, 68, 43, 44,
+ 45, 46, -1, 3, 4, -1, 51, 7, 8, -1,
+ -1, -1, 57, 58, -1, 60, -1, 62, -1, -1,
+ 65, 66, -1, 68, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 9, 43, 44, 45, 46, 14, 9, -1, -1, 51,
- -1, 14, -1, -1, -1, 57, 58, -1, 60, -1,
- 62, -1, -1, 65, 66, -1, 68, -1, -1, 9,
- -1, 40, 41, 42, 14, 9, -1, 40, 41, 42,
- 14, -1, -1, 52, -1, -1, 55, 56, -1, 52,
- -1, 54, 55, 56, -1, -1, -1, -1, 67, -1,
- 40, 41, 42, -1, -1, -1, 40, 41, 42, -1,
- -1, -1, 52, 53, -1, 55, 56, -1, 52, -1,
- -1, 55, 56
+ -1, -1, 9, 43, 44, 45, 46, 14, 9, -1,
+ -1, 51, -1, 14, -1, -1, -1, 57, 58, -1,
+ 60, -1, 62, -1, -1, 65, 66, 9, 68, -1,
+ -1, -1, 14, 40, 41, 42, -1, -1, -1, 40,
+ 41, 42, -1, -1, -1, 52, -1, 9, 55, 56,
+ -1, 52, 14, 54, 55, 56, -1, -1, 40, 41,
+ 42, -1, -1, -1, -1, -1, 73, -1, -1, -1,
+ 52, 53, -1, 55, 56, -1, -1, -1, 40, 41,
+ 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, 55, 56
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1196,36 +1196,36 @@ static const yytype_uint8 yystos[] =
0, 75, 0, 1, 3, 4, 7, 8, 17, 18,
35, 36, 37, 38, 43, 44, 45, 46, 47, 50,
51, 57, 58, 60, 62, 65, 66, 68, 76, 78,
- 82, 84, 86, 105, 113, 117, 118, 119, 120, 121,
- 122, 130, 131, 66, 69, 127, 128, 129, 83, 123,
- 131, 131, 131, 66, 66, 68, 118, 131, 118, 118,
- 66, 120, 131, 1, 112, 113, 48, 122, 71, 73,
- 79, 88, 105, 133, 137, 79, 85, 50, 9, 14,
- 40, 41, 42, 52, 54, 55, 56, 115, 116, 11,
- 118, 57, 58, 59, 60, 61, 64, 57, 58, 59,
- 60, 61, 64, 12, 13, 43, 44, 51, 114, 111,
- 112, 113, 112, 16, 127, 3, 4, 45, 46, 68,
- 80, 81, 55, 107, 111, 111, 113, 43, 44, 132,
- 1, 54, 67, 135, 139, 135, 1, 6, 77, 105,
- 106, 87, 106, 5, 113, 130, 113, 113, 113, 113,
- 113, 38, 118, 118, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 13, 113, 135, 70, 49, 66,
- 118, 135, 135, 113, 106, 40, 1, 113, 1, 88,
+ 82, 84, 86, 104, 112, 116, 117, 118, 119, 120,
+ 121, 129, 130, 66, 69, 126, 127, 128, 83, 122,
+ 130, 130, 130, 66, 66, 68, 117, 130, 117, 117,
+ 66, 119, 130, 1, 111, 112, 48, 121, 71, 73,
+ 79, 88, 104, 132, 136, 79, 85, 50, 9, 14,
+ 40, 41, 42, 52, 54, 55, 56, 114, 115, 11,
+ 117, 57, 58, 59, 60, 61, 64, 57, 58, 59,
+ 60, 61, 64, 12, 13, 43, 44, 51, 113, 110,
+ 111, 112, 111, 16, 126, 3, 4, 45, 46, 68,
+ 80, 81, 55, 106, 110, 110, 112, 43, 44, 131,
+ 1, 54, 67, 134, 138, 134, 1, 6, 77, 104,
+ 105, 87, 105, 5, 112, 129, 112, 112, 112, 112,
+ 112, 38, 117, 117, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 13, 112, 134, 70, 49, 66,
+ 117, 134, 134, 112, 105, 40, 1, 112, 1, 88,
1, 19, 21, 22, 23, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 39, 72, 89, 90, 92, 100,
- 104, 113, 133, 134, 137, 53, 123, 1, 4, 108,
- 109, 130, 66, 91, 4, 66, 66, 66, 106, 66,
- 88, 88, 88, 110, 113, 88, 106, 88, 93, 87,
- 136, 137, 106, 113, 135, 1, 139, 113, 110, 94,
- 4, 113, 113, 89, 4, 92, 95, 88, 66, 101,
- 111, 134, 106, 106, 1, 4, 135, 88, 124, 125,
- 126, 127, 67, 135, 135, 26, 40, 137, 112, 10,
- 102, 106, 16, 126, 106, 106, 66, 130, 106, 135,
- 103, 89, 133, 89, 113, 135, 113, 137, 117, 20,
- 96, 97, 135, 106, 137, 106, 106, 106, 1, 24,
- 25, 98, 106, 89, 106, 95, 89, 134, 7, 8,
- 57, 58, 84, 99, 53, 138, 95, 135, 7, 7,
- 138, 106, 135, 106, 106, 87, 106, 89, 87, 89
+ 31, 32, 33, 34, 39, 72, 89, 90, 92, 99,
+ 103, 112, 132, 133, 136, 53, 122, 1, 4, 107,
+ 108, 129, 66, 91, 4, 66, 66, 66, 105, 66,
+ 88, 88, 88, 109, 112, 88, 105, 88, 93, 87,
+ 135, 136, 105, 112, 134, 1, 138, 112, 109, 94,
+ 4, 112, 112, 89, 4, 92, 95, 88, 66, 100,
+ 110, 133, 105, 105, 1, 4, 134, 88, 123, 124,
+ 125, 126, 67, 134, 134, 26, 40, 136, 111, 10,
+ 101, 105, 16, 125, 105, 105, 66, 129, 105, 134,
+ 102, 89, 132, 89, 112, 134, 112, 136, 116, 20,
+ 96, 134, 105, 136, 105, 105, 1, 24, 25, 97,
+ 105, 105, 89, 105, 95, 89, 7, 8, 57, 58,
+ 84, 98, 53, 137, 133, 95, 134, 7, 7, 137,
+ 105, 134, 105, 105, 87, 105, 89, 87, 89
};
#define yyerrok (yyerrstatus = 0)
@@ -2431,130 +2431,197 @@ yyreduce:
/* Line 1464 of yacc.c */
#line 489 "awkgram.y"
{
- INSTRUCTION *ip;
+ INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
+ INSTRUCTION *ip, *nextc, *tbreak;
+ const char **case_values = NULL;
+ int maxcount = 128;
+ int case_count = 0;
+ int i;
+
+ tbreak = instruction(Op_no_op);
+ cstmt = list_create(tbreak);
+ cexp = list_create(instruction(Op_pop));
+ dflt = instruction(Op_jmp);
+ dflt->target_jmp = tbreak; /* if no case match and no explicit default */
+
+ if ((yyvsp[(7) - (9)]) != NULL) {
+ curr = (yyvsp[(7) - (9)])->nexti;
+ bcfree((yyvsp[(7) - (9)])); /* Op_list */
+ } /* else
+ curr = NULL; */
+
+ for(; curr != NULL; curr = nextc) {
+ INSTRUCTION *caseexp = curr->case_exp;
+ INSTRUCTION *casestmt = curr->case_stmt;
+
+ nextc = curr->nexti;
+ if (curr->opcode == Op_K_case) {
+ if (caseexp->opcode == Op_push_i) {
+ /* a constant scalar */
+ char *caseval;
+ caseval = force_string(caseexp->memory)->stptr;
+ for (i = 0; i < case_count; i++) {
+ if (strcmp(caseval, case_values[i]) == 0) {
+ /* can't use yyerror, since may have overshot the source line */
+ errcount++;
+ error(_("duplicate case values in switch body: %s"), caseval);
+ }
+ }
+
+ if (case_values == NULL)
+ emalloc(case_values, const char **, sizeof(char *) * maxcount, "statement");
+ else if (case_count >= maxcount) {
+ maxcount += 128;
+ erealloc(case_values, const char **, sizeof(char*) * maxcount, "statement");
+ }
+ case_values[case_count++] = caseval;
+ } else {
+ /* match a constant regex against switch expression. */
+ (curr + 1)->match_exp = TRUE;
+ }
+ curr->stmt_start = casestmt->nexti;
+ curr->stmt_end = casestmt->lasti;
+ (void) list_prepend(cexp, curr);
+ (void) list_prepend(cexp, caseexp);
+ } else {
+ if (dflt->target_jmp != tbreak) {
+ /* can't use yyerror, since may have overshot the source line */
+ errcount++;
+ error(_("duplicate `default' detected in switch body"));
+ } else
+ dflt->target_jmp = casestmt->nexti;
+
+ if (do_profiling) {
+ curr->stmt_start = casestmt->nexti;
+ curr->stmt_end = casestmt->lasti;
+ (void) list_prepend(cexp, curr);
+ } else
+ bcfree(curr);
+ }
+
+ cstmt = list_merge(casestmt, cstmt);
+ }
+
+ if (case_values != NULL)
+ efree(case_values);
- (yyvsp[(1) - (9)])->opcode = Op_push_loop;
- (yyvsp[(1) - (9)])->target_continue = NULL;
- ip = list_prepend((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]));
- if ((yyvsp[(7) - (9)])->nexti->switch_dflt == NULL)
- (yyvsp[(7) - (9)])->nexti->switch_dflt = (yyvsp[(1) - (9)]); /* implicit break */
+ ip = (yyvsp[(3) - (9)]);
if (do_profiling) {
+ (void) list_prepend(ip, (yyvsp[(1) - (9)]));
(void) list_prepend(ip, instruction(Op_exec_count));
- ((yyvsp[(1) - (9)]) + 1)->opcode = Op_K_switch;
- ((yyvsp[(1) - (9)]) + 1)->switch_body = (yyvsp[(7) - (9)])->nexti;
- }
- (void) list_merge(ip, (yyvsp[(7) - (9)]));
- (yyval) = list_append(ip, instruction(Op_pop_loop));
- (yyvsp[(1) - (9)])->target_break = (yyval)->lasti;
+ (yyvsp[(1) - (9)])->target_break = tbreak;
+ ((yyvsp[(1) - (9)]) + 1)->switch_start = cexp->nexti;
+ ((yyvsp[(1) - (9)]) + 1)->switch_end = cexp->lasti;
+ }/* else
+ $1 is NULL */
+
+ (void) list_append(cexp, dflt);
+ (void) list_merge(ip, cexp);
+ (yyval) = list_merge(ip, cstmt);
break_allowed--;
- fix_break_continue((yyvsp[(1) - (9)]), (yyval)->lasti, FALSE);
+ fix_break_continue(ip, tbreak, NULL);
}
break;
case 43:
/* Line 1464 of yacc.c */
-#line 510 "awkgram.y"
+#line 582 "awkgram.y"
{
- /*
- * [Op_push_loop| z| y]
- * -----------------
- * z:
- * cond
- * -----------------
- * [Op_jmp_false y ]
- * -----------------
- * body
- * -----------------
- * [Op_jmp z ]
- * y: [Op_pop_loop ]
- */
-
- INSTRUCTION *ip, *tp;
+ /*
+ * -----------------
+ * tc:
+ * cond
+ * -----------------
+ * [Op_jmp_false tb ]
+ * -----------------
+ * body
+ * -----------------
+ * [Op_jmp tc ]
+ * tb:[Op_no_op ]
+ */
- tp = instruction(Op_pop_loop);
+ INSTRUCTION *ip, *tbreak, *tcont;
+ tbreak = instruction(Op_no_op);
add_lint((yyvsp[(3) - (6)]), LINT_assign_in_cond);
- (yyvsp[(1) - (6)])->opcode = Op_push_loop;
- (yyvsp[(1) - (6)])->target_continue = (yyvsp[(3) - (6)])->nexti;
- (yyvsp[(1) - (6)])->target_break = tp;
- ip = list_create((yyvsp[(1) - (6)]));
-
- (void) list_merge(ip, (yyvsp[(3) - (6)]));
- (void) list_append(ip, instruction(Op_jmp_false));
- ip->lasti->target_jmp = tp;
+ tcont = (yyvsp[(3) - (6)])->nexti;
+ ip = list_append((yyvsp[(3) - (6)]), instruction(Op_jmp_false));
+ ip->lasti->target_jmp = tbreak;
if (do_profiling) {
(void) list_append(ip, instruction(Op_exec_count));
- ((yyvsp[(1) - (6)]) + 1)->opcode = Op_K_while;
+ (yyvsp[(1) - (6)])->target_break = tbreak;
+ (yyvsp[(1) - (6)])->target_continue = tcont;
((yyvsp[(1) - (6)]) + 1)->while_body = ip->lasti;
- }
+ (void) list_prepend(ip, (yyvsp[(1) - (6)]));
+ }/* else
+ $1 is NULL */
if ((yyvsp[(6) - (6)]) != NULL)
(void) list_merge(ip, (yyvsp[(6) - (6)]));
(void) list_append(ip, instruction(Op_jmp));
- ip->lasti->target_jmp = (yyvsp[(1) - (6)])->target_continue;
- (yyval) = list_append(ip, tp);
+ ip->lasti->target_jmp = tcont;
+ (yyval) = list_append(ip, tbreak);
break_allowed--;
continue_allowed--;
- fix_break_continue((yyvsp[(1) - (6)]), tp, TRUE);
+ fix_break_continue(ip, tbreak, tcont);
}
break;
case 44:
/* Line 1464 of yacc.c */
-#line 556 "awkgram.y"
+#line 624 "awkgram.y"
{
- /*
- * [Op_push_loop | x | y]
- * -----------------
- * z:
- * body
- * -----------------
- * x:
- * cond
- * -----------------
- * [Op_jmp_true | z ]
- * y: [Op_pop_loop ]
- */
-
- INSTRUCTION *ip;
+ /*
+ * -----------------
+ * z:
+ * body
+ * -----------------
+ * tc:
+ * cond
+ * -----------------
+ * [Op_jmp_true | z ]
+ * tb:[Op_no_op ]
+ */
- (yyvsp[(4) - (8)])->opcode = Op_pop_loop;
- (yyvsp[(1) - (8)])->opcode = Op_push_loop;
- (yyvsp[(1) - (8)])->target_continue = (yyvsp[(6) - (8)])->nexti;
- (yyvsp[(1) - (8)])->target_break = (yyvsp[(4) - (8)]);
+ INSTRUCTION *ip, *tbreak, *tcont;
+ tbreak = instruction(Op_no_op);
+ tcont = (yyvsp[(6) - (8)])->nexti;
add_lint((yyvsp[(6) - (8)]), LINT_assign_in_cond);
if ((yyvsp[(3) - (8)]) != NULL)
ip = list_merge((yyvsp[(3) - (8)]), (yyvsp[(6) - (8)]));
else
ip = list_prepend((yyvsp[(6) - (8)]), instruction(Op_no_op));
-
- if (do_profiling) {
+ if (do_profiling)
(void) list_prepend(ip, instruction(Op_exec_count));
- ((yyvsp[(1) - (8)]) + 1)->opcode = Op_K_do;
- ((yyvsp[(1) - (8)]) + 1)->doloop_cond = (yyvsp[(1) - (8)])->target_continue;
- }
-
(void) list_append(ip, instruction(Op_jmp_true));
ip->lasti->target_jmp = ip->nexti;
- (yyval) = list_prepend(ip, (yyvsp[(1) - (8)]));
- (void) list_append(ip, (yyvsp[(4) - (8)]));
+ (yyval) = list_append(ip, tbreak);
break_allowed--;
continue_allowed--;
- fix_break_continue((yyvsp[(1) - (8)]), (yyvsp[(4) - (8)]), TRUE);
+ fix_break_continue(ip, tbreak, tcont);
+
+ if (do_profiling) {
+ (yyvsp[(1) - (8)])->target_break = tbreak;
+ (yyvsp[(1) - (8)])->target_continue = tcont;
+ ((yyvsp[(1) - (8)]) + 1)->doloop_cond = tcont;
+ (yyval) = list_prepend(ip, (yyvsp[(1) - (8)]));
+ bcfree((yyvsp[(4) - (8)]));
+ } /* else
+ $1 and $4 are NULLs */
}
break;
case 45:
/* Line 1464 of yacc.c */
-#line 599 "awkgram.y"
+#line 666 "awkgram.y"
{
INSTRUCTION *ip;
char *var_name = (yyvsp[(3) - (8)])->lextok;
@@ -2593,7 +2660,8 @@ yyreduce:
(void) make_assignable((yyvsp[(8) - (8)])->nexti);
(yyvsp[(8) - (8)])->lasti->opcode = Op_K_delete_loop;
(yyvsp[(8) - (8)])->lasti->expr_count = 0;
- bcfree((yyvsp[(1) - (8)]));
+ if ((yyvsp[(1) - (8)]) != NULL)
+ bcfree((yyvsp[(1) - (8)]));
efree(var_name);
bcfree((yyvsp[(3) - (8)]));
bcfree((yyvsp[(4) - (8)]));
@@ -2602,31 +2670,38 @@ yyreduce:
} else
goto regular_loop;
} else {
+ INSTRUCTION *tbreak, *tcont;
- /* [ Op_push_array a ]
- * [ Op_arrayfor_init| w ]
- * [ Op_push_loop | z | y ]
- * z: [ Op_arrayfor_incr | y ]
- * [ Op_var_assign if any ]
+ /* [ Op_push_array a ]
+ * [ Op_arrayfor_init | ib ]
+ * ic:[ Op_arrayfor_incr | ib ]
+ * [ Op_var_assign if any ]
*
* body
*
- * [Op_jmp | z ]
- * y: [Op_pop_loop ]
- * w: [Op_arrayfor_final ]
+ * [Op_jmp | ic ]
+ * ib:[Op_arrayfor_final ]
*/
regular_loop:
ip = (yyvsp[(5) - (8)]);
ip->nexti->opcode = Op_push_array;
- (yyvsp[(3) - (8)])->opcode = Op_arrayfor_init;
- (void) list_append(ip, (yyvsp[(3) - (8)]));
+ tbreak = instruction(Op_arrayfor_final);
(yyvsp[(4) - (8)])->opcode = Op_arrayfor_incr;
(yyvsp[(4) - (8)])->array_var = variable(var_name, Node_var);
- (yyvsp[(1) - (8)])->opcode = Op_push_loop;
- (yyvsp[(1) - (8)])->target_continue = (yyvsp[(4) - (8)]);
+ (yyvsp[(4) - (8)])->target_jmp = tbreak;
+ tcont = (yyvsp[(4) - (8)]);
+ (yyvsp[(3) - (8)])->opcode = Op_arrayfor_init;
+ (yyvsp[(3) - (8)])->target_jmp = tbreak;
+ (void) list_append(ip, (yyvsp[(3) - (8)]));
- (void) list_append(ip, (yyvsp[(1) - (8)]));
+ if (do_profiling) {
+ (yyvsp[(1) - (8)])->opcode = Op_K_arrayfor;
+ (yyvsp[(1) - (8)])->target_continue = tcont;
+ (yyvsp[(1) - (8)])->target_break = tbreak;
+ (void) list_append(ip, (yyvsp[(1) - (8)]));
+ } /* else
+ $1 is NULL */
/* add update_FOO instruction if necessary */
if ((yyvsp[(4) - (8)])->array_var->type == Node_var && (yyvsp[(4) - (8)])->array_var->var_update) {
@@ -2643,7 +2718,6 @@ regular_loop:
if (do_profiling) {
(void) list_append(ip, instruction(Op_exec_count));
- ((yyvsp[(1) - (8)]) + 1)->opcode = Op_K_arrayfor;
((yyvsp[(1) - (8)]) + 1)->forloop_cond = (yyvsp[(4) - (8)]);
((yyvsp[(1) - (8)]) + 1)->forloop_body = ip->lasti;
}
@@ -2653,12 +2727,8 @@ regular_loop:
(void) list_append(ip, instruction(Op_jmp));
ip->lasti->target_jmp = (yyvsp[(4) - (8)]);
- (void) list_append(ip, instruction(Op_pop_loop));
- (yyvsp[(4) - (8)])->target_jmp = (yyvsp[(1) - (8)])->target_break = ip->lasti;
- (yyval) = list_append(ip, instruction(Op_arrayfor_final));
- (yyvsp[(3) - (8)])->target_jmp = (yyval)->lasti;
-
- fix_break_continue((yyvsp[(1) - (8)]), (yyvsp[(4) - (8)])->target_jmp, TRUE);
+ (yyval) = list_append(ip, tbreak);
+ fix_break_continue(ip, tbreak, tcont);
}
break_allowed--;
@@ -2669,7 +2739,7 @@ regular_loop:
case 46:
/* Line 1464 of yacc.c */
-#line 709 "awkgram.y"
+#line 779 "awkgram.y"
{
(yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), (yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)]));
@@ -2681,7 +2751,7 @@ regular_loop:
case 47:
/* Line 1464 of yacc.c */
-#line 716 "awkgram.y"
+#line 786 "awkgram.y"
{
(yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), (INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)]));
@@ -2693,7 +2763,7 @@ regular_loop:
case 48:
/* Line 1464 of yacc.c */
-#line 723 "awkgram.y"
+#line 793 "awkgram.y"
{
if (do_profiling)
(yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count));
@@ -2705,7 +2775,7 @@ regular_loop:
case 49:
/* Line 1464 of yacc.c */
-#line 733 "awkgram.y"
+#line 803 "awkgram.y"
{
if (! break_allowed)
yyerror(_("`break' is not allowed outside a loop or switch"));
@@ -2719,7 +2789,7 @@ regular_loop:
case 50:
/* Line 1464 of yacc.c */
-#line 742 "awkgram.y"
+#line 812 "awkgram.y"
{
if (! continue_allowed)
yyerror(_("`continue' is not allowed outside a loop"));
@@ -2733,7 +2803,7 @@ regular_loop:
case 51:
/* Line 1464 of yacc.c */
-#line 751 "awkgram.y"
+#line 821 "awkgram.y"
{
if (rule != Rule)
yyerror(_("`next' used in %s action"), ruletab[rule]);
@@ -2745,7 +2815,7 @@ regular_loop:
case 52:
/* Line 1464 of yacc.c */
-#line 758 "awkgram.y"
+#line 828 "awkgram.y"
{
static short warned = FALSE;
@@ -2775,7 +2845,7 @@ regular_loop:
case 53:
/* Line 1464 of yacc.c */
-#line 783 "awkgram.y"
+#line 853 "awkgram.y"
{
if (rule == END)
(yyvsp[(1) - (3)])->target_jmp = ip_atexit;
@@ -2794,7 +2864,7 @@ regular_loop:
case 54:
/* Line 1464 of yacc.c */
-#line 797 "awkgram.y"
+#line 867 "awkgram.y"
{
if (! can_return)
yyerror(_("`return' used outside function context"));
@@ -2804,7 +2874,7 @@ regular_loop:
case 55:
/* Line 1464 of yacc.c */
-#line 800 "awkgram.y"
+#line 870 "awkgram.y"
{
if ((yyvsp[(3) - (4)]) == NULL) {
(yyval) = list_create((yyvsp[(1) - (4)]));
@@ -2818,14 +2888,14 @@ regular_loop:
case 57:
/* Line 1464 of yacc.c */
-#line 820 "awkgram.y"
+#line 890 "awkgram.y"
{ in_print = TRUE; in_parens = 0; }
break;
case 58:
/* Line 1464 of yacc.c */
-#line 821 "awkgram.y"
+#line 891 "awkgram.y"
{
/*
* Optimization: plain `print' has no expression list, so $3 is null.
@@ -2925,14 +2995,14 @@ regular_loop:
case 59:
/* Line 1464 of yacc.c */
-#line 916 "awkgram.y"
+#line 986 "awkgram.y"
{ sub_counter = 0; }
break;
case 60:
/* Line 1464 of yacc.c */
-#line 917 "awkgram.y"
+#line 987 "awkgram.y"
{
char *arr = (yyvsp[(2) - (4)])->lextok;
@@ -2965,7 +3035,7 @@ regular_loop:
case 61:
/* Line 1464 of yacc.c */
-#line 949 "awkgram.y"
+#line 1019 "awkgram.y"
{
static short warned = FALSE;
char *arr = (yyvsp[(3) - (4)])->lextok;
@@ -2992,233 +3062,155 @@ regular_loop:
case 62:
/* Line 1464 of yacc.c */
-#line 971 "awkgram.y"
+#line 1041 "awkgram.y"
{ (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
break;
case 63:
/* Line 1464 of yacc.c */
-#line 976 "awkgram.y"
+#line 1046 "awkgram.y"
{ (yyval) = NULL; }
break;
case 64:
/* Line 1464 of yacc.c */
-#line 978 "awkgram.y"
+#line 1048 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 65:
/* Line 1464 of yacc.c */
-#line 983 "awkgram.y"
- {
- INSTRUCTION *dflt = NULL;
-
- if ((yyvsp[(1) - (1)]) != NULL) {
- INSTRUCTION *curr;
- const char **case_values = NULL;
- int maxcount = 128;
- int case_count = 0;
- int i;
-
- emalloc(case_values, const char **, sizeof(char *) * maxcount, "statement");
-
- for (curr = (yyvsp[(1) - (1)])->case_val->nexti; curr != NULL; curr = curr->nexti) {
- if (curr->opcode == Op_K_case) {
- char *caseval;
- if (curr->memory->type == Node_regex)
- caseval = curr->memory->re_exp->stptr;
- else
- caseval = force_string(curr->memory)->stptr;
- for (i = 0; i < case_count; i++)
- if (strcmp(caseval, case_values[i]) == 0)
- yyerror(_("duplicate case values in switch body: %s"), caseval);
-
- if (case_count >= maxcount) {
- maxcount += 128;
- erealloc(case_values, const char **, sizeof(char*) * maxcount, "statement");
- }
- case_values[case_count++] = caseval;
- } else {
- /* Otherwise save a pointer to the default node. */
- if (dflt != NULL)
- yyerror(_("duplicate `default' detected in switch body"));
- dflt = curr;
- }
- }
-
- efree(case_values);
- (yyval) = list_prepend((yyvsp[(1) - (1)])->case_stmt, instruction(Op_K_switch));
- (yyval)->nexti->case_val = (yyvsp[(1) - (1)])->case_val->nexti;
- (yyval)->nexti->switch_dflt = dflt;
- bcfree((yyvsp[(1) - (1)])->case_val); /* Op_list */
- bcfree((yyvsp[(1) - (1)])); /* Op_case_list */
- } else {
- (yyval) = list_create(instruction(Op_K_switch));
- (yyval)->nexti->case_val = NULL;
- (yyval)->nexti->switch_dflt = NULL;
- }
- }
- break;
-
- case 66:
-
-/* Line 1464 of yacc.c */
-#line 1035 "awkgram.y"
+#line 1053 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 67:
+ case 66:
/* Line 1464 of yacc.c */
-#line 1037 "awkgram.y"
+#line 1055 "awkgram.y"
{
- if ((yyvsp[(1) - (2)]) == NULL) {
- (yyvsp[(2) - (2)])->case_val = list_create((yyvsp[(2) - (2)])->case_val);
- (yyval) = (yyvsp[(2) - (2)]);
- } else {
- (void) list_append((yyvsp[(1) - (2)])->case_val, (yyvsp[(2) - (2)])->case_val);
- (void) list_merge((yyvsp[(1) - (2)])->case_stmt, (yyvsp[(2) - (2)])->case_stmt);
- bcfree((yyvsp[(2) - (2)])); /* Op_case_list */
- (yyval) = (yyvsp[(1) - (2)]);
- }
+ if ((yyvsp[(1) - (2)]) == NULL)
+ (yyval) = list_create((yyvsp[(2) - (2)]));
+ else
+ (yyval) = list_prepend((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
}
break;
- case 68:
+ case 67:
/* Line 1464 of yacc.c */
-#line 1049 "awkgram.y"
+#line 1062 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 69:
+ case 68:
/* Line 1464 of yacc.c */
-#line 1054 "awkgram.y"
+#line 1067 "awkgram.y"
{
INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
-
- (yyvsp[(1) - (5)])->memory = (yyvsp[(2) - (5)])->memory;
- bcfree((yyvsp[(2) - (5)]));
if ((yyvsp[(5) - (5)]) == NULL)
casestmt = list_create(instruction(Op_no_op));
if (do_profiling)
(void) list_prepend(casestmt, instruction(Op_exec_count));
-
- (yyvsp[(1) - (5)])->target_stmt = casestmt->nexti;
-
- /* recycle $3 as Op_case_list */
- (yyvsp[(3) - (5)])->opcode = Op_case_list;
- (yyvsp[(3) - (5)])->case_val = (yyvsp[(1) - (5)]); /* Op_K_case */
- (yyvsp[(3) - (5)])->case_stmt = casestmt; /* Op_list */
- (yyval) = (yyvsp[(3) - (5)]);
+ (yyvsp[(1) - (5)])->case_exp = (yyvsp[(2) - (5)]);
+ (yyvsp[(1) - (5)])->case_stmt = casestmt;
+ bcfree((yyvsp[(3) - (5)]));
+ (yyval) = (yyvsp[(1) - (5)]);
}
break;
- case 70:
+ case 69:
/* Line 1464 of yacc.c */
-#line 1073 "awkgram.y"
+#line 1079 "awkgram.y"
{
INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
-
if ((yyvsp[(4) - (4)]) == NULL)
casestmt = list_create(instruction(Op_no_op));
if (do_profiling)
(void) list_prepend(casestmt, instruction(Op_exec_count));
-
- (yyvsp[(1) - (4)])->target_stmt = casestmt->nexti;
- (yyvsp[(2) - (4)])->opcode = Op_case_list;
- (yyvsp[(2) - (4)])->case_val = (yyvsp[(1) - (4)]); /* Op_K_default */
- (yyvsp[(2) - (4)])->case_stmt = casestmt; /* Op_list */
- (yyval) = (yyvsp[(2) - (4)]);
+ bcfree((yyvsp[(2) - (4)]));
+ (yyvsp[(1) - (4)])->case_stmt = casestmt;
+ (yyval) = (yyvsp[(1) - (4)]);
}
break;
- case 71:
+ case 70:
/* Line 1464 of yacc.c */
-#line 1091 "awkgram.y"
- {
- (yyvsp[(1) - (1)])->opcode = Op_K_case;
- (yyval) = (yyvsp[(1) - (1)]);
- }
+#line 1093 "awkgram.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 72:
+ case 71:
/* Line 1464 of yacc.c */
-#line 1096 "awkgram.y"
+#line 1095 "awkgram.y"
{
(yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - (2)])->memory));
bcfree((yyvsp[(1) - (2)]));
- (yyvsp[(2) - (2)])->opcode = Op_K_case;
(yyval) = (yyvsp[(2) - (2)]);
}
break;
- case 73:
+ case 72:
/* Line 1464 of yacc.c */
-#line 1103 "awkgram.y"
+#line 1101 "awkgram.y"
{
bcfree((yyvsp[(1) - (2)]));
- (yyvsp[(2) - (2)])->opcode = Op_K_case;
(yyval) = (yyvsp[(2) - (2)]);
}
break;
- case 74:
+ case 73:
/* Line 1464 of yacc.c */
-#line 1109 "awkgram.y"
- {
- (yyvsp[(1) - (1)])->opcode = Op_K_case;
- (yyval) = (yyvsp[(1) - (1)]);
- }
+#line 1106 "awkgram.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 75:
+ case 74:
/* Line 1464 of yacc.c */
-#line 1114 "awkgram.y"
+#line 1108 "awkgram.y"
{
- (yyvsp[(1) - (1)])->opcode = Op_K_case;
+ (yyvsp[(1) - (1)])->opcode = Op_push_re;
(yyval) = (yyvsp[(1) - (1)]);
}
break;
- case 76:
+ case 75:
/* Line 1464 of yacc.c */
-#line 1122 "awkgram.y"
+#line 1116 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 77:
+ case 76:
/* Line 1464 of yacc.c */
-#line 1124 "awkgram.y"
+#line 1118 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 79:
+ case 78:
/* Line 1464 of yacc.c */
-#line 1134 "awkgram.y"
+#line 1128 "awkgram.y"
{
(yyval) = (yyvsp[(2) - (3)]);
}
break;
- case 80:
+ case 79:
/* Line 1464 of yacc.c */
-#line 1141 "awkgram.y"
+#line 1135 "awkgram.y"
{
in_print = FALSE;
in_parens = 0;
@@ -3226,17 +3218,17 @@ regular_loop:
}
break;
- case 81:
+ case 80:
/* Line 1464 of yacc.c */
-#line 1146 "awkgram.y"
+#line 1140 "awkgram.y"
{ in_print = FALSE; in_parens = 0; }
break;
- case 82:
+ case 81:
/* Line 1464 of yacc.c */
-#line 1147 "awkgram.y"
+#line 1141 "awkgram.y"
{
if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
&& (yyvsp[(3) - (3)])->lasti->opcode == Op_K_getline_redir
@@ -3246,45 +3238,45 @@ regular_loop:
}
break;
- case 83:
+ case 82:
/* Line 1464 of yacc.c */
-#line 1158 "awkgram.y"
+#line 1152 "awkgram.y"
{
(yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), (yyvsp[(6) - (6)]), NULL, NULL);
}
break;
- case 84:
+ case 83:
/* Line 1464 of yacc.c */
-#line 1163 "awkgram.y"
+#line 1157 "awkgram.y"
{
(yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), (yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
}
break;
- case 89:
+ case 88:
/* Line 1464 of yacc.c */
-#line 1180 "awkgram.y"
+#line 1174 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 90:
+ case 89:
/* Line 1464 of yacc.c */
-#line 1182 "awkgram.y"
+#line 1176 "awkgram.y"
{
bcfree((yyvsp[(1) - (2)]));
(yyval) = (yyvsp[(2) - (2)]);
}
break;
- case 93:
+ case 92:
/* Line 1464 of yacc.c */
-#line 1195 "awkgram.y"
+#line 1189 "awkgram.y"
{
append_param((yyvsp[(1) - (1)])->lextok);
(yyvsp[(1) - (1)])->lextok = NULL;
@@ -3292,10 +3284,10 @@ regular_loop:
}
break;
- case 94:
+ case 93:
/* Line 1464 of yacc.c */
-#line 1201 "awkgram.y"
+#line 1195 "awkgram.y"
{
append_param((yyvsp[(3) - (3)])->lextok);
(yyvsp[(3) - (3)])->lextok = NULL;
@@ -3304,104 +3296,104 @@ regular_loop:
}
break;
- case 95:
+ case 94:
/* Line 1464 of yacc.c */
-#line 1208 "awkgram.y"
+#line 1202 "awkgram.y"
{ /* func_params = NULL; */ }
break;
- case 96:
+ case 95:
/* Line 1464 of yacc.c */
-#line 1210 "awkgram.y"
+#line 1204 "awkgram.y"
{ /* func_params = NULL; */ }
break;
- case 97:
+ case 96:
/* Line 1464 of yacc.c */
-#line 1212 "awkgram.y"
+#line 1206 "awkgram.y"
{ /* func_params = NULL; */ }
break;
- case 98:
+ case 97:
/* Line 1464 of yacc.c */
-#line 1218 "awkgram.y"
+#line 1212 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 99:
+ case 98:
/* Line 1464 of yacc.c */
-#line 1220 "awkgram.y"
+#line 1214 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 100:
+ case 99:
/* Line 1464 of yacc.c */
-#line 1225 "awkgram.y"
+#line 1219 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 101:
+ case 100:
/* Line 1464 of yacc.c */
-#line 1227 "awkgram.y"
+#line 1221 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 102:
+ case 101:
/* Line 1464 of yacc.c */
-#line 1232 "awkgram.y"
+#line 1226 "awkgram.y"
{ (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
break;
- case 103:
+ case 102:
/* Line 1464 of yacc.c */
-#line 1234 "awkgram.y"
+#line 1228 "awkgram.y"
{
(yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
yyerrok;
}
break;
- case 104:
+ case 103:
/* Line 1464 of yacc.c */
-#line 1239 "awkgram.y"
+#line 1233 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 105:
+ case 104:
/* Line 1464 of yacc.c */
-#line 1241 "awkgram.y"
+#line 1235 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 106:
+ case 105:
/* Line 1464 of yacc.c */
-#line 1243 "awkgram.y"
+#line 1237 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 107:
+ case 106:
/* Line 1464 of yacc.c */
-#line 1245 "awkgram.y"
+#line 1239 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 108:
+ case 107:
/* Line 1464 of yacc.c */
-#line 1251 "awkgram.y"
+#line 1245 "awkgram.y"
{
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
lintwarn(_("regular expression on right of assignment"));
@@ -3409,24 +3401,24 @@ regular_loop:
}
break;
- case 109:
+ case 108:
/* Line 1464 of yacc.c */
-#line 1257 "awkgram.y"
+#line 1251 "awkgram.y"
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
- case 110:
+ case 109:
/* Line 1464 of yacc.c */
-#line 1259 "awkgram.y"
+#line 1253 "awkgram.y"
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
- case 111:
+ case 110:
/* Line 1464 of yacc.c */
-#line 1261 "awkgram.y"
+#line 1255 "awkgram.y"
{
if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
warning(_("regular expression on left of `~' or `!~' operator"));
@@ -3443,10 +3435,10 @@ regular_loop:
}
break;
- case 112:
+ case 111:
/* Line 1464 of yacc.c */
-#line 1276 "awkgram.y"
+#line 1270 "awkgram.y"
{
if (do_lint_old)
warning(_("old awk does not support the keyword `in' except after `for'"));
@@ -3457,10 +3449,10 @@ regular_loop:
}
break;
- case 113:
+ case 112:
/* Line 1464 of yacc.c */
-#line 1285 "awkgram.y"
+#line 1279 "awkgram.y"
{
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
lintwarn(_("regular expression on right of comparison"));
@@ -3468,90 +3460,90 @@ regular_loop:
}
break;
- case 114:
+ case 113:
/* Line 1464 of yacc.c */
-#line 1291 "awkgram.y"
+#line 1285 "awkgram.y"
{ (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
break;
- case 115:
+ case 114:
/* Line 1464 of yacc.c */
-#line 1293 "awkgram.y"
+#line 1287 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 116:
+ case 115:
/* Line 1464 of yacc.c */
-#line 1298 "awkgram.y"
+#line 1292 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 117:
+ case 116:
/* Line 1464 of yacc.c */
-#line 1300 "awkgram.y"
+#line 1294 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 118:
+ case 117:
/* Line 1464 of yacc.c */
-#line 1302 "awkgram.y"
+#line 1296 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
(yyval) = (yyvsp[(2) - (2)]);
}
break;
+ case 118:
+
+/* Line 1464 of yacc.c */
+#line 1304 "awkgram.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
+ break;
+
case 119:
/* Line 1464 of yacc.c */
-#line 1310 "awkgram.y"
+#line 1306 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 120:
/* Line 1464 of yacc.c */
-#line 1312 "awkgram.y"
+#line 1311 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 121:
/* Line 1464 of yacc.c */
-#line 1317 "awkgram.y"
+#line 1313 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 122:
/* Line 1464 of yacc.c */
-#line 1319 "awkgram.y"
+#line 1318 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 123:
/* Line 1464 of yacc.c */
-#line 1324 "awkgram.y"
+#line 1320 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 124:
/* Line 1464 of yacc.c */
-#line 1326 "awkgram.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
- break;
-
- case 125:
-
-/* Line 1464 of yacc.c */
-#line 1328 "awkgram.y"
+#line 1322 "awkgram.y"
{
int count = 2;
int is_simple_var = FALSE;
@@ -3603,52 +3595,52 @@ regular_loop:
}
break;
+ case 126:
+
+/* Line 1464 of yacc.c */
+#line 1377 "awkgram.y"
+ { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+ break;
+
case 127:
/* Line 1464 of yacc.c */
-#line 1383 "awkgram.y"
+#line 1379 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 128:
/* Line 1464 of yacc.c */
-#line 1385 "awkgram.y"
+#line 1381 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 129:
/* Line 1464 of yacc.c */
-#line 1387 "awkgram.y"
+#line 1383 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 130:
/* Line 1464 of yacc.c */
-#line 1389 "awkgram.y"
+#line 1385 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 131:
/* Line 1464 of yacc.c */
-#line 1391 "awkgram.y"
+#line 1387 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 132:
/* Line 1464 of yacc.c */
-#line 1393 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
- break;
-
- case 133:
-
-/* Line 1464 of yacc.c */
-#line 1395 "awkgram.y"
+#line 1389 "awkgram.y"
{
/*
* In BEGINFILE/ENDFILE, allow `getline var < file'
@@ -3671,30 +3663,30 @@ regular_loop:
}
break;
- case 134:
+ case 133:
/* Line 1464 of yacc.c */
-#line 1416 "awkgram.y"
+#line 1410 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_postincrement;
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
}
break;
- case 135:
+ case 134:
/* Line 1464 of yacc.c */
-#line 1421 "awkgram.y"
+#line 1415 "awkgram.y"
{
(yyvsp[(2) - (2)])->opcode = Op_postdecrement;
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
}
break;
- case 136:
+ case 135:
/* Line 1464 of yacc.c */
-#line 1426 "awkgram.y"
+#line 1420 "awkgram.y"
{
if (do_lint_old) {
warning(_("old awk does not support the keyword `in' except after `for'"));
@@ -3714,71 +3706,71 @@ regular_loop:
}
break;
- case 137:
+ case 136:
/* Line 1464 of yacc.c */
-#line 1449 "awkgram.y"
+#line 1443 "awkgram.y"
{
(yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
bcfree((yyvsp[(2) - (4)]));
}
break;
+ case 137:
+
+/* Line 1464 of yacc.c */
+#line 1449 "awkgram.y"
+ { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
+ break;
+
case 138:
/* Line 1464 of yacc.c */
-#line 1455 "awkgram.y"
+#line 1451 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 139:
/* Line 1464 of yacc.c */
-#line 1457 "awkgram.y"
+#line 1453 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 140:
/* Line 1464 of yacc.c */
-#line 1459 "awkgram.y"
+#line 1455 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 141:
/* Line 1464 of yacc.c */
-#line 1461 "awkgram.y"
+#line 1457 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 142:
/* Line 1464 of yacc.c */
-#line 1463 "awkgram.y"
+#line 1459 "awkgram.y"
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
break;
case 143:
/* Line 1464 of yacc.c */
-#line 1465 "awkgram.y"
- { (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
- break;
-
- case 144:
-
-/* Line 1464 of yacc.c */
-#line 1470 "awkgram.y"
+#line 1464 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
break;
- case 145:
+ case 144:
/* Line 1464 of yacc.c */
-#line 1474 "awkgram.y"
+#line 1468 "awkgram.y"
{
if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
(yyvsp[(2) - (2)])->opcode = Op_nomatch;
@@ -3811,17 +3803,17 @@ regular_loop:
}
break;
- case 146:
+ case 145:
/* Line 1464 of yacc.c */
-#line 1505 "awkgram.y"
+#line 1499 "awkgram.y"
{ (yyval) = (yyvsp[(2) - (3)]); }
break;
- case 147:
+ case 146:
/* Line 1464 of yacc.c */
-#line 1507 "awkgram.y"
+#line 1501 "awkgram.y"
{
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
if ((yyval) == NULL)
@@ -3829,10 +3821,10 @@ regular_loop:
}
break;
- case 148:
+ case 147:
/* Line 1464 of yacc.c */
-#line 1513 "awkgram.y"
+#line 1507 "awkgram.y"
{
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
if ((yyval) == NULL)
@@ -3840,10 +3832,10 @@ regular_loop:
}
break;
- case 149:
+ case 148:
/* Line 1464 of yacc.c */
-#line 1519 "awkgram.y"
+#line 1513 "awkgram.y"
{
static short warned1 = FALSE;
@@ -3857,48 +3849,48 @@ regular_loop:
}
break;
- case 152:
+ case 151:
/* Line 1464 of yacc.c */
-#line 1533 "awkgram.y"
+#line 1527 "awkgram.y"
{
(yyvsp[(1) - (2)])->opcode = Op_preincrement;
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
}
break;
- case 153:
+ case 152:
/* Line 1464 of yacc.c */
-#line 1538 "awkgram.y"
+#line 1532 "awkgram.y"
{
(yyvsp[(1) - (2)])->opcode = Op_predecrement;
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
}
break;
- case 154:
+ case 153:
/* Line 1464 of yacc.c */
-#line 1543 "awkgram.y"
+#line 1537 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
break;
- case 155:
+ case 154:
/* Line 1464 of yacc.c */
-#line 1547 "awkgram.y"
+#line 1541 "awkgram.y"
{
(yyval) = list_create((yyvsp[(1) - (1)]));
}
break;
- case 156:
+ case 155:
/* Line 1464 of yacc.c */
-#line 1551 "awkgram.y"
+#line 1545 "awkgram.y"
{
if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
&& ((yyvsp[(2) - (2)])->lasti->memory->flags & (STRCUR|STRING)) == 0) {
@@ -3912,10 +3904,10 @@ regular_loop:
}
break;
- case 157:
+ case 156:
/* Line 1464 of yacc.c */
-#line 1563 "awkgram.y"
+#line 1557 "awkgram.y"
{
/*
* was: $$ = $2
@@ -3927,20 +3919,20 @@ regular_loop:
}
break;
- case 158:
+ case 157:
/* Line 1464 of yacc.c */
-#line 1576 "awkgram.y"
+#line 1570 "awkgram.y"
{
func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
(yyval) = (yyvsp[(1) - (1)]);
}
break;
- case 159:
+ case 158:
/* Line 1464 of yacc.c */
-#line 1581 "awkgram.y"
+#line 1575 "awkgram.y"
{
/* indirect function call */
INSTRUCTION *f, *t;
@@ -3975,10 +3967,10 @@ regular_loop:
}
break;
- case 160:
+ case 159:
/* Line 1464 of yacc.c */
-#line 1617 "awkgram.y"
+#line 1611 "awkgram.y"
{
param_sanity((yyvsp[(3) - (4)]));
(yyvsp[(1) - (4)])->opcode = Op_func_call;
@@ -3994,54 +3986,54 @@ regular_loop:
}
break;
- case 161:
+ case 160:
/* Line 1464 of yacc.c */
-#line 1634 "awkgram.y"
+#line 1628 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 162:
+ case 161:
/* Line 1464 of yacc.c */
-#line 1636 "awkgram.y"
+#line 1630 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 163:
+ case 162:
/* Line 1464 of yacc.c */
-#line 1641 "awkgram.y"
+#line 1635 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 164:
+ case 163:
/* Line 1464 of yacc.c */
-#line 1643 "awkgram.y"
+#line 1637 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
- case 165:
+ case 164:
/* Line 1464 of yacc.c */
-#line 1648 "awkgram.y"
+#line 1642 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 166:
+ case 165:
/* Line 1464 of yacc.c */
-#line 1650 "awkgram.y"
+#line 1644 "awkgram.y"
{
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
}
break;
- case 167:
+ case 166:
/* Line 1464 of yacc.c */
-#line 1657 "awkgram.y"
+#line 1651 "awkgram.y"
{
INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti;
int count = ip->sub_count; /* # of SUBSEP-seperated expressions */
@@ -4057,10 +4049,10 @@ regular_loop:
}
break;
- case 168:
+ case 167:
/* Line 1464 of yacc.c */
-#line 1674 "awkgram.y"
+#line 1668 "awkgram.y"
{
INSTRUCTION *t = (yyvsp[(2) - (3)]);
if ((yyvsp[(2) - (3)]) == NULL) {
@@ -4076,33 +4068,33 @@ regular_loop:
}
break;
- case 169:
+ case 168:
/* Line 1464 of yacc.c */
-#line 1691 "awkgram.y"
+#line 1685 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
- case 170:
+ case 169:
/* Line 1464 of yacc.c */
-#line 1693 "awkgram.y"
+#line 1687 "awkgram.y"
{
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
}
break;
- case 171:
+ case 170:
/* Line 1464 of yacc.c */
-#line 1700 "awkgram.y"
+#line 1694 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
- case 172:
+ case 171:
/* Line 1464 of yacc.c */
-#line 1705 "awkgram.y"
+#line 1699 "awkgram.y"
{
char *var_name = (yyvsp[(1) - (1)])->lextok;
@@ -4112,10 +4104,10 @@ regular_loop:
}
break;
- case 173:
+ case 172:
/* Line 1464 of yacc.c */
-#line 1713 "awkgram.y"
+#line 1707 "awkgram.y"
{
NODE *n;
@@ -4128,10 +4120,10 @@ regular_loop:
}
break;
- case 174:
+ case 173:
/* Line 1464 of yacc.c */
-#line 1727 "awkgram.y"
+#line 1721 "awkgram.y"
{
INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
if (ip->opcode == Op_push
@@ -4145,10 +4137,10 @@ regular_loop:
}
break;
- case 175:
+ case 174:
/* Line 1464 of yacc.c */
-#line 1739 "awkgram.y"
+#line 1733 "awkgram.y"
{
(yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
if ((yyvsp[(3) - (3)]) != NULL)
@@ -4156,70 +4148,70 @@ regular_loop:
}
break;
- case 176:
+ case 175:
/* Line 1464 of yacc.c */
-#line 1748 "awkgram.y"
+#line 1742 "awkgram.y"
{
(yyvsp[(1) - (1)])->opcode = Op_postincrement;
}
break;
- case 177:
+ case 176:
/* Line 1464 of yacc.c */
-#line 1752 "awkgram.y"
+#line 1746 "awkgram.y"
{
(yyvsp[(1) - (1)])->opcode = Op_postdecrement;
}
break;
- case 178:
+ case 177:
/* Line 1464 of yacc.c */
-#line 1755 "awkgram.y"
+#line 1749 "awkgram.y"
{ (yyval) = NULL; }
break;
- case 180:
+ case 179:
/* Line 1464 of yacc.c */
-#line 1763 "awkgram.y"
+#line 1757 "awkgram.y"
{ yyerrok; }
break;
- case 181:
+ case 180:
/* Line 1464 of yacc.c */
-#line 1767 "awkgram.y"
+#line 1761 "awkgram.y"
{ yyerrok; }
break;
- case 184:
+ case 183:
/* Line 1464 of yacc.c */
-#line 1776 "awkgram.y"
+#line 1770 "awkgram.y"
{ yyerrok; }
break;
- case 185:
+ case 184:
/* Line 1464 of yacc.c */
-#line 1780 "awkgram.y"
+#line 1774 "awkgram.y"
{ (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
break;
- case 186:
+ case 185:
/* Line 1464 of yacc.c */
-#line 1784 "awkgram.y"
+#line 1778 "awkgram.y"
{ yyerrok; }
break;
/* Line 1464 of yacc.c */
-#line 4235 "awkgram.c"
+#line 4227 "awkgram.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4431,7 +4423,7 @@ yyreturn:
/* Line 1684 of yacc.c */
-#line 1786 "awkgram.y"
+#line 1780 "awkgram.y"
struct token {
@@ -4495,14 +4487,14 @@ static const struct token tokentab[] = {
{"dcngettext", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
{"default", Op_K_default, LEX_DEFAULT, GAWKX, 0},
{"delete", Op_K_delete, LEX_DELETE, NOT_OLD, 0},
-{"do", Op_symbol, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0},
+{"do", Op_K_do, LEX_DO, NOT_OLD|BREAK|CONTINUE, 0},
{"else", Op_K_else, LEX_ELSE, 0, 0},
{"eval", Op_symbol, LEX_EVAL, 0, 0},
{"exit", Op_K_exit, LEX_EXIT, 0, 0},
{"exp", Op_builtin, LEX_BUILTIN, A(1), do_exp},
{"extension", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_ext},
{"fflush", Op_builtin, LEX_BUILTIN, RESX|A(0)|A(1), do_fflush},
-{"for", Op_symbol, LEX_FOR, BREAK|CONTINUE, 0},
+{"for", Op_K_for, LEX_FOR, BREAK|CONTINUE, 0},
{"func", Op_func, LEX_FUNCTION, NOT_POSIX|NOT_OLD, 0},
{"function",Op_func, LEX_FUNCTION, NOT_OLD, 0},
{"gensub", Op_builtin, LEX_BUILTIN, GAWKX|A(3)|A(4), do_gensub},
@@ -4540,12 +4532,12 @@ static const struct token tokentab[] = {
{"strtonum", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_strtonum},
{"sub", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2)|A(3), do_sub},
{"substr", Op_builtin, LEX_BUILTIN, A(2)|A(3), do_substr},
-{"switch", Op_symbol, LEX_SWITCH, GAWKX|BREAK, 0},
+{"switch", Op_K_switch, LEX_SWITCH, GAWKX|BREAK, 0},
{"system", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_system},
{"systime", Op_builtin, LEX_BUILTIN, GAWKX|A(0), do_systime},
{"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower},
{"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper},
-{"while", Op_symbol, LEX_WHILE, BREAK|CONTINUE, 0},
+{"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0},
{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor},
};
@@ -6080,12 +6072,15 @@ retry:
yylval = bcalloc(tokentab[mid].value, 3, sourceline);
break;
+ case LEX_FOR:
case LEX_WHILE:
case LEX_DO:
- case LEX_FOR:
case LEX_SWITCH:
- yylval = bcalloc(tokentab[mid].value,
- !!do_profiling + 1, sourceline);
+ if (! do_profiling)
+ return lasttok = class;
+ /* fall through */
+ case LEX_CASE:
+ yylval = bcalloc(tokentab[mid].value, 2, sourceline);
break;
default:
@@ -7152,13 +7147,6 @@ mk_rexp(INSTRUCTION *list)
/* isnoeffect --- when used as a statement, has no side effects */
-/*
- * To be completely general, we should recursively walk the parse
- * tree, to make sure that all the subexpressions also have no effect.
- * Instead, we just weaken the actual warning that's printed, up above
- * in the grammar.
- */
-
static int
isnoeffect(OPCODE type)
{
@@ -7489,23 +7477,26 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch,
INSTRUCTION *ip;
- /* FIXME else { } -- add elsep */
-
if (false_branch == NULL) {
- if (elsep != NULL) /* else { } */
- false_branch = list_append(list_create(elsep), instruction(Op_no_op));
- else
- false_branch = list_create(instruction(Op_no_op));
+ false_branch = list_create(instruction(Op_no_op));
+ if (elsep != NULL) { /* else { } */
+ if (do_profiling)
+ (void) list_prepend(false_branch, elsep);
+ else
+ bcfree(elsep);
+ }
} else {
/* assert(elsep != NULL); */
/* avoid a series of no_op's: if .. else if .. else if .. */
if (false_branch->lasti->opcode != Op_no_op)
(void) list_append(false_branch, instruction(Op_no_op));
- (void) list_prepend(false_branch, elsep);
- false_branch->nexti->branch_end = false_branch->lasti;
- if (do_profiling)
+ if (do_profiling) {
+ (void) list_prepend(false_branch, elsep);
+ false_branch->nexti->branch_end = false_branch->lasti;
(void) list_prepend(false_branch, instruction(Op_exec_count));
+ } else
+ bcfree(elsep);
}
(void) list_prepend(false_branch, instruction(Op_jmp));
@@ -7515,12 +7506,13 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch,
ip = list_append(cond, instruction(Op_jmp_false));
ip->lasti->target_jmp = false_branch->nexti->nexti;
- (void) list_prepend(ip, ifp);
if (do_profiling) {
+ (void) list_prepend(ip, ifp);
(void) list_append(ip, instruction(Op_exec_count));
ip->nexti->branch_if = ip->lasti;
ip->nexti->branch_else = false_branch->nexti;
- }
+ } else
+ bcfree(ifp);
if (true_branch != NULL)
list_merge(ip, true_branch);
@@ -7704,7 +7696,7 @@ optimize_assignment(INSTRUCTION *exp)
* 1) Array element assignment array[subs] = x:
* Replaces Op_push_array + Op_subscript_lhs + Op_assign + Op_pop
* with single instruction Op_store_sub.
- * Limitation (FIXME): 1 dimension and sub is simple var/value.
+ * Limitation: 1 dimension and sub is simple var/value.
*
* 2) Simple variable assignment var = x:
* Replaces Op_push_lhs + Op_assign + Op_pop with Op_store_var.
@@ -7749,7 +7741,7 @@ optimize_assignment(INSTRUCTION *exp)
/* avoid stuff like x = x (x = y) or x = x gsub(/./, "b", x);
* check for l-value reference to this variable in the r.h.s.
- * Also avoid function calls in general, to guard against
+ * Also, avoid function calls in general to guard against
* global variable assignment.
*/
@@ -7840,7 +7832,7 @@ optimize_assignment(INSTRUCTION *exp)
/* mk_getline --- make instructions for getline */
static INSTRUCTION *
-mk_getline(INSTRUCTION *op, INSTRUCTION *var, INSTRUCTION *redir, OPCODE redirtype)
+mk_getline(INSTRUCTION *op, INSTRUCTION *var, INSTRUCTION *redir, int redirtype)
{
INSTRUCTION *ip;
INSTRUCTION *tp;
@@ -7903,73 +7895,72 @@ mk_for_loop(INSTRUCTION *forp, INSTRUCTION *init, INSTRUCTION *cond,
INSTRUCTION *incr, INSTRUCTION *body)
{
/*
- * [ Op_push_loop | z| y] <-- continue | break
* ------------------------
* init (may be NULL)
* ------------------------
* x:
* cond (Op_no_op if NULL)
* ------------------------
- * [ Op_jmp_false y ]
+ * [ Op_jmp_false tb ]
* ------------------------
* body (may be NULL)
* ------------------------
- * z:
- * incr (may be NULL)
- * [ Op_jmp x ]
+ * tc:
+ * incr (may be NULL)
+ * [ Op_jmp x ]
* ------------------------
- * y:[ Op_pop_loop ]
+ * tb:[ Op_no_op ]
*/
- INSTRUCTION *ip;
- INSTRUCTION *cp;
+ INSTRUCTION *ip, *tbreak, *tcont;
INSTRUCTION *jmp;
INSTRUCTION *pp_cond;
INSTRUCTION *ret;
- cp = instruction(Op_pop_loop);
-
- forp->opcode = Op_push_loop;
- forp->target_break = cp;
- ip = list_create(forp);
-
- if (init != NULL)
- (void) list_merge(ip, init);
+ tbreak = instruction(Op_no_op);
if (cond != NULL) {
add_lint(cond, LINT_assign_in_cond);
pp_cond = cond->nexti;
- (void) list_merge(ip, cond);
+ ip = cond;
(void) list_append(ip, instruction(Op_jmp_false));
- ip->lasti->target_jmp = cp;
+ ip->lasti->target_jmp = tbreak;
} else {
pp_cond = instruction(Op_no_op);
- (void) list_append(ip, pp_cond);
+ ip = list_create(pp_cond);
}
+ if (init != NULL)
+ ip = list_merge(init, ip);
+
if (do_profiling) {
(void) list_append(ip, instruction(Op_exec_count));
- (forp + 1)->opcode = Op_K_for;
(forp + 1)->forloop_cond = pp_cond;
(forp + 1)->forloop_body = ip->lasti;
}
if (body != NULL)
(void) list_merge(ip, body);
-
- if (incr != NULL) {
- forp->target_continue = incr->nexti;
- (void) list_merge(ip, incr);
- }
+
jmp = instruction(Op_jmp);
jmp->target_jmp = pp_cond;
if (incr == NULL)
- forp->target_continue = jmp;
- (void) list_append(ip, jmp);
+ tcont = jmp;
+ else {
+ tcont = incr->nexti;
+ (void) list_merge(ip, incr);
+ }
- ret = list_append(ip, cp);
+ (void) list_append(ip, jmp);
+ ret = list_append(ip, tbreak);
+ fix_break_continue(ret, tbreak, tcont);
- fix_break_continue(forp, cp, TRUE);
+ if (do_profiling) {
+ forp->target_break = tbreak;
+ forp->target_continue = tcont;
+ ret = list_prepend(ret, forp);
+ } /* else
+ forp is NULL */
return ret;
}
@@ -8095,20 +8086,16 @@ count_expressions(INSTRUCTION **list, int isarg)
return count;
}
-/* fix_break_continue --- fix up break & continue nodes in loop bodies */
+/* fix_break_continue --- fix up break & continue codes in loop bodies */
static void
-fix_break_continue(INSTRUCTION *start, INSTRUCTION *end, int check_continue)
+fix_break_continue(INSTRUCTION *list, INSTRUCTION *b_target, INSTRUCTION *c_target)
{
- INSTRUCTION *ip, *b_target, *c_target;
-
- assert(start->opcode == Op_push_loop);
- assert(end->opcode == Op_pop_loop);
+ INSTRUCTION *ip;
- b_target = start->target_break;
- c_target = start->target_continue;
+ list->lasti->nexti = NULL; /* just to make sure */
- for (ip = start; ip != end; ip = ip->nexti) {
+ for (ip = list->nexti; ip != NULL; ip = ip->nexti) {
switch (ip->opcode) {
case Op_K_break:
if (ip->target_jmp == NULL)
@@ -8116,7 +8103,7 @@ fix_break_continue(INSTRUCTION *start, INSTRUCTION *end, int check_continue)
break;
case Op_K_continue:
- if (check_continue && ip->target_jmp == NULL)
+ if (ip->target_jmp == NULL)
ip->target_jmp = c_target;
break;
@@ -8173,7 +8160,6 @@ release_symbols(NODE *symlist, int keep_globals)
* and free all associated memory.
*/
-
void
destroy_symbol(char *name)
{
@@ -8336,22 +8322,6 @@ free_bc_internal(INSTRUCTION *cp)
)
efree(cp->func_name);
break;
- case Op_K_switch:
- for (curr = cp->case_val; curr != NULL; curr = curr->nexti) {
- if (curr->opcode == Op_K_case &&
- curr->memory->type != Node_val
- ) {
- m = curr->memory;
- if (m->re_text != NULL)
- unref(m->re_text);
- if (m->re_reg != NULL)
- refree(m->re_reg);
- if (m->re_exp != NULL)
- unref(m->re_exp);
- freenode(m);
- }
- }
- break;
case Op_push_re:
case Op_match_rec:
case Op_match: