aboutsummaryrefslogtreecommitdiffstats
path: root/awkgram.c
diff options
context:
space:
mode:
Diffstat (limited to 'awkgram.c')
-rw-r--r--awkgram.c1925
1 files changed, 1054 insertions, 871 deletions
diff --git a/awkgram.c b/awkgram.c
index f8b93ad9..4a7d4af5 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -78,6 +78,7 @@ static void parms_shadow P((const char *fname, NODE *func));
static int isnoeffect P((NODETYPE t));
static int isassignable P((NODE *n));
static void dumpintlstr P((char *str, size_t len));
+static void dumpintlstr2 P((char *str1, size_t len1, char *str2, size_t len2));
static void count_args P((NODE *n));
enum defref { FUNC_DEFINE, FUNC_USE };
@@ -114,7 +115,7 @@ extern int errcount;
extern NODE *begin_block;
extern NODE *end_block;
-#line 96 "awkgram.y"
+#line 97 "awkgram.y"
typedef union {
long lval;
AWKNUM fval;
@@ -133,11 +134,11 @@ typedef union {
-#define YYFINAL 320
+#define YYFINAL 318
#define YYFLAG -32768
#define YYNTBASE 63
-#define YYTRANSLATE(x) ((unsigned)(x) <= 295 ? yytranslate[x] : 108)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 295 ? yytranslate[x] : 110)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -178,100 +179,100 @@ static const short yyprhs[] = { 0,
25, 28, 31, 34, 36, 39, 42, 44, 46, 48,
50, 52, 53, 61, 67, 72, 74, 78, 79, 84,
90, 95, 97, 100, 102, 105, 107, 110, 113, 116,
- 120, 122, 129, 138, 147, 160, 172, 175, 178, 185,
- 190, 193, 196, 200, 201, 206, 213, 217, 220, 222,
- 224, 231, 241, 243, 246, 247, 249, 250, 253, 254,
- 257, 260, 263, 266, 267, 269, 271, 275, 277, 280,
- 284, 285, 287, 288, 290, 292, 296, 298, 301, 305,
- 309, 310, 312, 314, 318, 320, 323, 327, 331, 332,
- 337, 343, 348, 353, 357, 361, 365, 369, 371, 374,
- 378, 382, 386, 390, 396, 398, 401, 402, 407, 411,
- 415, 419, 421, 424, 428, 432, 436, 442, 444, 447,
- 449, 453, 457, 461, 465, 469, 473, 476, 479, 482,
- 486, 491, 496, 498, 503, 505, 508, 511, 513, 515,
- 518, 521, 522, 524, 526, 531, 534, 537, 540, 542,
- 543, 545, 547
+ 120, 122, 129, 138, 147, 160, 172, 175, 178, 181,
+ 184, 188, 189, 194, 197, 203, 207, 213, 216, 218,
+ 219, 221, 223, 225, 232, 242, 244, 247, 248, 250,
+ 251, 254, 255, 258, 261, 264, 267, 268, 270, 272,
+ 276, 278, 281, 285, 286, 288, 289, 291, 293, 297,
+ 299, 302, 306, 310, 311, 313, 315, 319, 321, 324,
+ 328, 332, 333, 338, 344, 349, 354, 358, 362, 366,
+ 370, 372, 375, 379, 383, 387, 391, 397, 399, 402,
+ 403, 408, 412, 416, 420, 422, 425, 429, 433, 437,
+ 443, 445, 448, 450, 454, 458, 462, 466, 470, 474,
+ 477, 480, 483, 487, 492, 497, 499, 504, 506, 509,
+ 512, 514, 516, 519, 522, 523, 525, 527, 532, 535,
+ 538, 541, 543, 544, 546, 548
};
-static const short yyrhs[] = { 84,
- 64, 84, 0, 65, 0, 64, 65, 0, 1, 0,
+static const short yyrhs[] = { 86,
+ 64, 86, 0, 65, 0, 64, 65, 0, 1, 0,
64, 1, 0, 0, 0, 15, 66, 76, 0, 0,
16, 67, 76, 0, 15, 78, 0, 16, 78, 0,
73, 76, 0, 76, 0, 73, 78, 0, 70, 72,
0, 4, 0, 3, 0, 69, 0, 38, 0, 39,
- 0, 0, 30, 71, 68, 56, 87, 104, 84, 0,
- 102, 77, 103, 105, 84, 0, 102, 103, 105, 84,
- 0, 94, 0, 94, 42, 94, 0, 0, 50, 75,
- 5, 50, 0, 102, 77, 103, 105, 84, 0, 102,
- 103, 105, 84, 0, 79, 0, 77, 79, 0, 1,
- 0, 77, 1, 0, 83, 0, 106, 84, 0, 106,
- 84, 0, 102, 103, 0, 102, 77, 103, 0, 82,
- 0, 21, 56, 94, 104, 84, 79, 0, 22, 84,
- 79, 21, 56, 94, 104, 84, 0, 23, 56, 4,
- 33, 4, 104, 84, 79, 0, 23, 56, 89, 106,
- 84, 94, 106, 84, 89, 104, 84, 79, 0, 23,
- 56, 89, 106, 84, 106, 84, 89, 104, 84, 79,
- 0, 24, 78, 0, 25, 78, 0, 81, 56, 93,
- 104, 86, 78, 0, 81, 90, 86, 78, 0, 28,
- 78, 0, 32, 78, 0, 29, 89, 78, 0, 0,
- 19, 80, 89, 78, 0, 20, 4, 58, 93, 59,
- 78, 0, 20, 4, 78, 0, 94, 78, 0, 26,
- 0, 27, 0, 17, 56, 94, 104, 84, 79, 0,
- 17, 56, 94, 104, 84, 79, 18, 84, 79, 0,
- 13, 0, 83, 13, 0, 0, 83, 0, 0, 43,
- 98, 0, 0, 44, 94, 0, 10, 94, 0, 45,
- 94, 0, 46, 94, 0, 0, 88, 0, 4, 0,
- 88, 107, 4, 0, 1, 0, 88, 1, 0, 88,
- 107, 1, 0, 0, 94, 0, 0, 91, 0, 96,
- 0, 91, 107, 96, 0, 1, 0, 91, 1, 0,
- 91, 1, 96, 0, 91, 107, 1, 0, 0, 93,
- 0, 94, 0, 93, 107, 94, 0, 1, 0, 93,
- 1, 0, 93, 1, 94, 0, 93, 107, 1, 0,
- 0, 101, 11, 95, 94, 0, 56, 93, 104, 33,
- 4, 0, 94, 45, 31, 100, 0, 94, 46, 31,
- 100, 0, 31, 100, 85, 0, 94, 34, 94, 0,
- 94, 35, 94, 0, 94, 12, 94, 0, 74, 0,
- 52, 74, 0, 94, 33, 4, 0, 94, 9, 94,
- 0, 94, 43, 94, 0, 94, 44, 94, 0, 94,
- 40, 94, 41, 94, 0, 98, 0, 94, 98, 0,
- 0, 101, 11, 97, 96, 0, 96, 34, 96, 0,
- 96, 35, 96, 0, 31, 100, 85, 0, 74, 0,
- 52, 74, 0, 96, 12, 96, 0, 96, 33, 4,
- 0, 96, 9, 96, 0, 96, 40, 96, 41, 96,
- 0, 98, 0, 96, 98, 0, 99, 0, 98, 54,
- 98, 0, 98, 49, 98, 0, 98, 50, 98, 0,
- 98, 51, 98, 0, 98, 47, 98, 0, 98, 48,
- 98, 0, 101, 36, 0, 101, 37, 0, 52, 98,
- 0, 56, 94, 104, 0, 38, 56, 92, 104, 0,
- 39, 56, 92, 104, 0, 39, 0, 3, 56, 92,
- 104, 0, 101, 0, 36, 101, 0, 37, 101, 0,
- 7, 0, 8, 0, 48, 98, 0, 47, 98, 0,
- 0, 101, 0, 4, 0, 4, 58, 93, 59, 0,
- 55, 99, 0, 60, 84, 0, 61, 84, 0, 57,
- 0, 0, 106, 0, 62, 0, 42, 84, 0
+ 0, 0, 30, 71, 68, 56, 89, 106, 86, 0,
+ 104, 77, 105, 107, 86, 0, 104, 105, 107, 86,
+ 0, 96, 0, 96, 42, 96, 0, 0, 50, 75,
+ 5, 50, 0, 104, 77, 105, 107, 86, 0, 104,
+ 105, 107, 86, 0, 79, 0, 77, 79, 0, 1,
+ 0, 77, 1, 0, 85, 0, 108, 86, 0, 108,
+ 86, 0, 104, 105, 0, 104, 77, 105, 0, 84,
+ 0, 21, 56, 96, 106, 86, 79, 0, 22, 86,
+ 79, 21, 56, 96, 106, 86, 0, 23, 56, 4,
+ 33, 4, 106, 86, 79, 0, 23, 56, 82, 108,
+ 86, 96, 108, 86, 82, 106, 86, 79, 0, 23,
+ 56, 82, 108, 86, 108, 86, 82, 106, 86, 79,
+ 0, 24, 78, 0, 25, 78, 0, 28, 78, 0,
+ 32, 78, 0, 29, 91, 78, 0, 0, 19, 80,
+ 91, 78, 0, 81, 78, 0, 83, 56, 95, 106,
+ 88, 0, 83, 92, 88, 0, 20, 4, 58, 95,
+ 59, 0, 20, 4, 0, 96, 0, 0, 81, 0,
+ 26, 0, 27, 0, 17, 56, 96, 106, 86, 79,
+ 0, 17, 56, 96, 106, 86, 79, 18, 86, 79,
+ 0, 13, 0, 85, 13, 0, 0, 85, 0, 0,
+ 43, 100, 0, 0, 44, 96, 0, 10, 96, 0,
+ 45, 96, 0, 46, 96, 0, 0, 90, 0, 4,
+ 0, 90, 109, 4, 0, 1, 0, 90, 1, 0,
+ 90, 109, 1, 0, 0, 96, 0, 0, 93, 0,
+ 98, 0, 93, 109, 98, 0, 1, 0, 93, 1,
+ 0, 93, 1, 98, 0, 93, 109, 1, 0, 0,
+ 95, 0, 96, 0, 95, 109, 96, 0, 1, 0,
+ 95, 1, 0, 95, 1, 96, 0, 95, 109, 1,
+ 0, 0, 103, 11, 97, 96, 0, 56, 95, 106,
+ 33, 4, 0, 96, 45, 31, 102, 0, 96, 46,
+ 31, 102, 0, 31, 102, 87, 0, 96, 34, 96,
+ 0, 96, 35, 96, 0, 96, 12, 96, 0, 74,
+ 0, 52, 74, 0, 96, 33, 4, 0, 96, 9,
+ 96, 0, 96, 43, 96, 0, 96, 44, 96, 0,
+ 96, 40, 96, 41, 96, 0, 100, 0, 96, 100,
+ 0, 0, 103, 11, 99, 98, 0, 98, 34, 98,
+ 0, 98, 35, 98, 0, 31, 102, 87, 0, 74,
+ 0, 52, 74, 0, 98, 12, 98, 0, 98, 33,
+ 4, 0, 98, 9, 98, 0, 98, 40, 98, 41,
+ 98, 0, 100, 0, 98, 100, 0, 101, 0, 100,
+ 54, 100, 0, 100, 49, 100, 0, 100, 50, 100,
+ 0, 100, 51, 100, 0, 100, 47, 100, 0, 100,
+ 48, 100, 0, 103, 36, 0, 103, 37, 0, 52,
+ 100, 0, 56, 96, 106, 0, 38, 56, 94, 106,
+ 0, 39, 56, 94, 106, 0, 39, 0, 3, 56,
+ 94, 106, 0, 103, 0, 36, 103, 0, 37, 103,
+ 0, 7, 0, 8, 0, 48, 100, 0, 47, 100,
+ 0, 0, 103, 0, 4, 0, 4, 58, 95, 59,
+ 0, 55, 101, 0, 60, 86, 0, 61, 86, 0,
+ 57, 0, 0, 108, 0, 62, 0, 42, 86, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 157, 165, 173, 189, 190, 191, 195, 197, 211, 213,
- 228, 234, 240, 242, 244, 257, 266, 268, 270, 280,
- 281, 285, 289, 304, 309, 318, 320, 329, 331, 349,
- 351, 356, 362, 370, 372, 377, 378, 382, 384, 386,
- 388, 390, 392, 394, 422, 426, 431, 434, 437, 443,
- 465, 473, 492, 494, 499, 501, 503, 517, 522, 524,
- 529, 534, 541, 543, 547, 548, 552, 554, 559, 561,
- 563, 565, 567, 577, 579, 584, 586, 588, 590, 592,
- 598, 600, 605, 607, 612, 614, 620, 622, 624, 626,
- 631, 633, 638, 640, 646, 648, 650, 652, 657, 660,
- 665, 667, 672, 677, 683, 685, 687, 693, 703, 711,
- 713, 719, 721, 723, 725, 727, 732, 735, 736, 738,
- 740, 746, 748, 750, 752, 754, 756, 758, 760, 765,
- 767, 769, 771, 773, 775, 777, 779, 781, 786, 788,
- 790, 793, 795, 803, 810, 811, 813, 815, 817, 820,
- 828, 839, 841, 846, 848, 858, 863, 867, 871, 875,
- 876, 880, 883
+ 159, 167, 175, 191, 192, 193, 197, 199, 213, 215,
+ 230, 236, 242, 244, 246, 259, 268, 270, 272, 282,
+ 283, 287, 291, 306, 311, 320, 322, 331, 333, 351,
+ 353, 358, 364, 372, 374, 379, 380, 384, 386, 388,
+ 390, 392, 394, 396, 436, 440, 445, 448, 451, 459,
+ 478, 480, 485, 487, 499, 505, 527, 529, 543, 548,
+ 550, 555, 557, 562, 567, 574, 576, 580, 581, 585,
+ 587, 592, 594, 596, 598, 600, 610, 612, 617, 619,
+ 621, 623, 625, 631, 633, 638, 640, 645, 647, 653,
+ 655, 657, 659, 664, 666, 671, 673, 679, 681, 683,
+ 685, 690, 693, 698, 700, 705, 710, 716, 718, 720,
+ 726, 736, 744, 746, 752, 754, 756, 758, 760, 765,
+ 768, 769, 771, 773, 779, 781, 783, 785, 787, 789,
+ 791, 793, 798, 800, 802, 804, 806, 808, 810, 812,
+ 814, 819, 821, 823, 826, 828, 836, 843, 844, 846,
+ 848, 850, 853, 861, 872, 874, 879, 881, 891, 896,
+ 900, 904, 908, 909, 913, 916
};
#endif
@@ -288,10 +289,11 @@ static const char * const yytname[] = { "$","error","$undefined.","FUNC_CALL",
"'!'","UNARY","'^'","'$'","'('","')'","'['","']'","'{'","'}'","';'","start",
"program","rule","@1","@2","func_name","lex_builtin","function_prologue","@3",
"function_body","pattern","regexp","@4","action","statements","statement_term",
-"statement","@5","print","if_statement","nls","opt_nls","input_redir","output_redir",
-"opt_param_list","param_list","opt_exp","opt_rexpression_list","rexpression_list",
-"opt_expression_list","expression_list","exp","@6","rexp","@7","simp_exp","non_post_simp_exp",
-"opt_variable","variable","l_brace","r_brace","r_paren","opt_semi","semi","comma", NULL
+"statement","@5","simple_stmt","opt_simple_stmt","print","if_statement","nls",
+"opt_nls","input_redir","output_redir","opt_param_list","param_list","opt_exp",
+"opt_rexpression_list","rexpression_list","opt_expression_list","expression_list",
+"exp","@6","rexp","@7","simp_exp","non_post_simp_exp","opt_variable","variable",
+"l_brace","r_brace","r_paren","opt_semi","semi","comma", NULL
};
#endif
@@ -301,18 +303,18 @@ static const short yyr1[] = { 0,
69, 71, 70, 72, 72, 73, 73, 75, 74, 76,
76, 77, 77, 77, 77, 78, 78, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 80, 79, 79, 79, 79, 81, 81,
- 82, 82, 83, 83, 84, 84, 85, 85, 86, 86,
- 86, 86, 86, 87, 87, 88, 88, 88, 88, 88,
- 89, 89, 90, 90, 91, 91, 91, 91, 91, 91,
- 92, 92, 93, 93, 93, 93, 93, 93, 95, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 97, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 100, 100, 101, 101, 101, 102, 103, 104, 105,
- 105, 106, 107
+ 79, 80, 79, 79, 81, 81, 81, 81, 81, 82,
+ 82, 83, 83, 84, 84, 85, 85, 86, 86, 87,
+ 87, 88, 88, 88, 88, 88, 89, 89, 90, 90,
+ 90, 90, 90, 91, 91, 92, 92, 93, 93, 93,
+ 93, 93, 93, 94, 94, 95, 95, 95, 95, 95,
+ 95, 97, 96, 96, 96, 96, 96, 96, 96, 96,
+ 96, 96, 96, 96, 96, 96, 96, 96, 96, 99,
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 102, 102, 103, 103, 103, 104,
+ 105, 106, 107, 107, 108, 109
};
static const short yyr2[] = { 0,
@@ -320,505 +322,489 @@ static const short yyr2[] = { 0,
2, 2, 2, 1, 2, 2, 1, 1, 1, 1,
1, 0, 7, 5, 4, 1, 3, 0, 4, 5,
4, 1, 2, 1, 2, 1, 2, 2, 2, 3,
- 1, 6, 8, 8, 12, 11, 2, 2, 6, 4,
- 2, 2, 3, 0, 4, 6, 3, 2, 1, 1,
- 6, 9, 1, 2, 0, 1, 0, 2, 0, 2,
- 2, 2, 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, 0, 4,
- 5, 4, 4, 3, 3, 3, 3, 1, 2, 3,
- 3, 3, 3, 5, 1, 2, 0, 4, 3, 3,
- 3, 1, 2, 3, 3, 3, 5, 1, 2, 1,
- 3, 3, 3, 3, 3, 3, 2, 2, 2, 3,
- 4, 4, 1, 4, 1, 2, 2, 1, 1, 2,
- 2, 0, 1, 1, 4, 2, 2, 2, 1, 0,
- 1, 1, 2
+ 1, 6, 8, 8, 12, 11, 2, 2, 2, 2,
+ 3, 0, 4, 2, 5, 3, 5, 2, 1, 0,
+ 1, 1, 1, 6, 9, 1, 2, 0, 1, 0,
+ 2, 0, 2, 2, 2, 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, 0, 4, 5, 4, 4, 3, 3, 3, 3,
+ 1, 2, 3, 3, 3, 3, 5, 1, 2, 0,
+ 4, 3, 3, 3, 1, 2, 3, 3, 3, 5,
+ 1, 2, 1, 3, 3, 3, 3, 3, 3, 2,
+ 2, 2, 3, 4, 4, 1, 4, 1, 2, 2,
+ 1, 1, 2, 2, 0, 1, 1, 4, 2, 2,
+ 2, 1, 0, 1, 1, 2
};
-static const short yydefact[] = { 65,
- 63, 66, 0, 64, 4, 0, 154, 148, 149, 7,
- 9, 22, 152, 0, 0, 0, 143, 0, 0, 28,
- 0, 0, 0, 65, 0, 2, 0, 0, 108, 14,
- 26, 115, 130, 145, 0, 0, 0, 162, 0, 11,
- 36, 65, 0, 12, 0, 67, 153, 146, 147, 0,
- 0, 0, 0, 151, 145, 150, 0, 109, 139, 156,
- 145, 95, 0, 93, 157, 5, 3, 1, 16, 0,
+static const short yydefact[] = { 68,
+ 66, 69, 0, 67, 4, 0, 157, 151, 152, 7,
+ 9, 22, 155, 0, 0, 0, 146, 0, 0, 28,
+ 0, 0, 0, 68, 0, 2, 0, 0, 111, 14,
+ 26, 118, 133, 148, 0, 0, 0, 165, 0, 11,
+ 36, 68, 0, 12, 0, 70, 156, 149, 150, 0,
+ 0, 0, 0, 154, 148, 153, 0, 112, 142, 159,
+ 148, 98, 0, 96, 160, 5, 3, 1, 16, 0,
13, 15, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 116, 0, 0, 0, 0, 0, 0,
- 99, 137, 138, 34, 0, 54, 0, 0, 65, 0,
- 0, 0, 59, 60, 0, 81, 0, 65, 0, 32,
- 0, 41, 0, 0, 160, 65, 0, 0, 93, 0,
- 8, 37, 10, 18, 17, 20, 21, 0, 19, 0,
- 104, 0, 0, 0, 0, 96, 65, 159, 0, 0,
- 140, 0, 160, 111, 107, 110, 105, 106, 0, 27,
- 112, 113, 152, 152, 135, 136, 132, 133, 134, 131,
- 0, 0, 81, 0, 0, 0, 81, 47, 48, 51,
- 0, 82, 52, 158, 35, 33, 160, 87, 152, 0,
- 0, 122, 69, 0, 85, 128, 145, 58, 0, 39,
- 65, 161, 38, 144, 155, 0, 68, 141, 142, 29,
- 97, 163, 0, 98, 94, 160, 65, 0, 102, 103,
- 100, 0, 0, 0, 57, 0, 0, 154, 0, 53,
- 65, 67, 123, 0, 0, 0, 0, 0, 0, 88,
- 0, 0, 0, 0, 0, 0, 0, 129, 117, 40,
- 31, 78, 76, 0, 0, 101, 65, 25, 114, 65,
- 55, 0, 65, 0, 0, 65, 30, 121, 69, 71,
- 70, 72, 73, 50, 89, 90, 86, 126, 124, 125,
- 119, 120, 0, 0, 65, 79, 0, 24, 0, 0,
- 0, 0, 0, 0, 0, 0, 118, 23, 80, 77,
- 61, 56, 42, 0, 65, 0, 65, 49, 127, 65,
- 65, 0, 65, 81, 0, 43, 44, 81, 0, 62,
- 0, 65, 65, 0, 0, 46, 45, 0, 0, 0
+ 0, 0, 0, 119, 0, 0, 0, 0, 0, 0,
+ 102, 140, 141, 34, 0, 52, 0, 0, 68, 0,
+ 0, 0, 62, 63, 0, 84, 0, 68, 0, 32,
+ 0, 0, 41, 59, 0, 163, 68, 0, 0, 96,
+ 0, 8, 37, 10, 18, 17, 20, 21, 0, 19,
+ 0, 107, 0, 0, 0, 0, 99, 68, 162, 0,
+ 0, 143, 0, 163, 114, 110, 113, 108, 109, 0,
+ 27, 115, 116, 155, 155, 138, 139, 135, 136, 137,
+ 134, 0, 0, 84, 58, 0, 0, 60, 47, 48,
+ 49, 0, 85, 50, 161, 35, 33, 163, 54, 90,
+ 155, 0, 0, 125, 72, 0, 88, 131, 148, 0,
+ 39, 68, 164, 38, 147, 158, 0, 71, 144, 145,
+ 29, 100, 166, 0, 101, 97, 163, 68, 0, 105,
+ 106, 103, 0, 0, 0, 0, 0, 157, 61, 0,
+ 51, 68, 70, 126, 0, 0, 0, 0, 0, 56,
+ 91, 0, 0, 0, 0, 0, 0, 0, 132, 120,
+ 40, 31, 81, 79, 0, 0, 104, 68, 25, 117,
+ 68, 53, 0, 68, 0, 0, 68, 30, 124, 72,
+ 74, 73, 75, 76, 92, 93, 89, 129, 127, 128,
+ 122, 123, 0, 0, 68, 82, 0, 24, 0, 57,
+ 0, 0, 0, 0, 55, 0, 121, 23, 83, 80,
+ 64, 42, 0, 68, 0, 68, 130, 68, 68, 0,
+ 68, 60, 0, 43, 44, 60, 0, 65, 0, 68,
+ 68, 0, 0, 46, 45, 0, 0, 0
};
-static const short yydefgoto[] = { 318,
- 25, 26, 39, 43, 128, 129, 27, 45, 69, 28,
- 29, 57, 30, 109, 40, 110, 163, 111, 112, 2,
- 3, 131, 229, 244, 245, 171, 183, 184, 117, 118,
- 113, 161, 185, 274, 32, 33, 46, 34, 114, 115,
- 141, 191, 42, 140
+static const short yydefgoto[] = { 316,
+ 25, 26, 39, 43, 129, 130, 27, 45, 69, 28,
+ 29, 57, 30, 109, 40, 110, 164, 111, 220, 112,
+ 113, 2, 3, 132, 230, 245, 246, 172, 185, 186,
+ 118, 119, 114, 162, 187, 274, 32, 33, 46, 34,
+ 115, 116, 142, 192, 117, 141
};
-static const short yypact[] = { 2,
--32768, 4, 840,-32768,-32768, -33, -32,-32768,-32768, -4,
- -4,-32768, -1, -1, -1, -27, 34, 1832, 1832,-32768,
- 1811, 1832, 1158, 2, 898,-32768, 29, 33,-32768,-32768,
- 1322, 103,-32768, 72, 630, 1136, 1158,-32768, 29,-32768,
- 4, 2, 29,-32768, 84, 54,-32768,-32768,-32768, 1136,
- 1136, 1832, 1715, 53, 31, 53, 120,-32768, 53,-32768,
--32768,-32768, 39, 1267,-32768,-32768,-32768,-32768,-32768, 630,
--32768,-32768, 1715, 1715, 128, 1715, 1715, 1715, 1715, 1715,
- 1715, 104, 105, 103, 1832, 1832, 1832, 1832, 1832, 1832,
--32768,-32768,-32768,-32768, 88,-32768, 130, 89, 2, 90,
- -4, -4,-32768,-32768, -4, 1715, -4, 2, 721,-32768,
- 783,-32768, 1008, 630, 86, 2, 111, 43, 1422, 10,
--32768,-32768,-32768,-32768,-32768,-32768,-32768, 100,-32768, 1832,
--32768, 111, 111, 1267, 119, 1715, 2,-32768, 122, 1208,
--32768, 721, 86, 1886, 1869,-32768, 1522, 1472, 1372, 1422,
- 1886, 1886, -1, -1, 116, 116, 53, 53, 53, 53,
- 1715, 1715, 1715, 36, 1715, 948, 1752,-32768,-32768,-32768,
- -4, 1422,-32768,-32768,-32768,-32768, 86,-32768, -1, 1811,
- 1158,-32768, 95, 17, 1614, 103, 93,-32768, 721,-32768,
- 2,-32768,-32768,-32768,-32768, 9, 103,-32768,-32768,-32768,
- 1422,-32768, 167,-32768, 1422, 86, 2, 1715,-32768,-32768,
- 1422, 1267, -4, 1158,-32768, 1267, 151, -5, 86,-32768,
- 2, 54,-32768, 39, 1715, 1715, 1715, 1715, -4, 1774,
- 1230, 1774, 1774, 169, 1774, 1774, 1774, 103,-32768,-32768,
--32768,-32768,-32768, 111, 44,-32768, 2,-32768, 1422, 2,
--32768, 13, 2, 121, 171, 2,-32768,-32768, 95, 1422,
- 1422, 1422, 1422,-32768, 1614,-32768, 1614, 1280, 390,-32768,
- 1693, 1656, 1572, 1774, 2,-32768, 20,-32768, 948, -4,
- 948, 1715, 111, 1086, -4, 1774, 1614,-32768,-32768,-32768,
- 158,-32768,-32768, 1267, 2, 1064, 2,-32768, 1614, 2,
- 2, 948, 2, 1715, 948,-32768,-32768, 1715, 111,-32768,
- 111, 2, 2, 948, 948,-32768,-32768, 179, 180,-32768
+static const short yypact[] = { 4,
+-32768, 26, 848,-32768,-32768, -13, -17,-32768,-32768, 12,
+ 12,-32768, 15, 15, 15, -11, 11, 1772, 1772,-32768,
+ 1735, 1772, 1065, 4, 906,-32768, 56, -3,-32768,-32768,
+ 1229, 198,-32768, 17, 676, 1043, 1065,-32768, 56,-32768,
+ 26, 4, 56,-32768, 82, 35,-32768,-32768,-32768, 1043,
+ 1043, 1772, 1677, 53, 51, 53, 106,-32768, 53,-32768,
+-32768,-32768, 19, 1174,-32768,-32768,-32768,-32768,-32768, 676,
+-32768,-32768, 1677, 1677, 120, 1677, 1677, 1677, 1677, 1677,
+ 1677, 94, 99, 198, 1772, 1772, 1772, 1772, 1772, 1772,
+-32768,-32768,-32768,-32768, 75,-32768, 129, 79, 4, 83,
+ 12, 12,-32768,-32768, 12, 1677, 12, 4, 726,-32768,
+ 12, 788,-32768, 1329, 676, 78, 4, 89, 37, 1329,
+ 13,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 97,-32768,
+ 1772,-32768, 89, 89, 1174, 100, 1677, 4,-32768, 124,
+ 1115,-32768, 726, 78, 1814, 1789,-32768, 1429, 1379, 1279,
+ 1329, 1814, 1814, 15, 15, -14, -14, 53, 53, 53,
+ 53, 1677, 1677, 1677, 102, 1677, 956, 1544,-32768,-32768,
+-32768, 12, 1329,-32768,-32768,-32768,-32768, 78,-32768,-32768,
+ 15, 1735, 1065,-32768, 73, 20, 1521, 198, 118, 726,
+-32768, 4,-32768,-32768,-32768,-32768, 43, 198,-32768,-32768,
+-32768, 1329,-32768, 157,-32768, 1329, 78, 4, 1677,-32768,
+-32768, 1329, 1174, 12, 1065, 1174, 142, -7,-32768, 78,
+-32768, 4, 35,-32768, 19, 1677, 1677, 1677, 1677,-32768,
+ 1714, 1137, 1714, 1714, 160, 1714, 1714, 1714, 198,-32768,
+-32768,-32768,-32768,-32768, 89, 47,-32768, 4,-32768, 1329,
+ 4,-32768, 14, 4, 109, 165, 4,-32768,-32768, 73,
+ 1329, 1329, 1329, 1329, 1521,-32768, 1521, 1006, 1187,-32768,
+ 1655, 1618, 1479, 1714, 4,-32768, 59,-32768, 956,-32768,
+ 956, 1677, 89, 524,-32768, 1714, 1521,-32768,-32768,-32768,
+ 153,-32768, 1174, 4, 993, 4, 1521, 4, 4, 956,
+ 4, 1581, 956,-32768,-32768, 1581, 89,-32768, 89, 4,
+ 4, 956, 956,-32768,-32768, 175, 176,-32768
};
static const short yypgoto[] = {-32768,
--32768, 156,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 245,-32768, 78, -54, 403, 98,-32768,-32768,-32768, 210,
- -17, -34, -70,-32768,-32768, -161,-32768,-32768, 63, -18,
- -3,-32768, -194,-32768, 321, 170, -122, 97, 99, -58,
- 204, -142, 421, -180
+-32768, 152,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -15,-32768, 70, -57, 21, -75,-32768, -165, -275,-32768,
+-32768, 1, -24, -45, -81,-32768,-32768, 16,-32768,-32768,
+ 40, -21, 309,-32768, -89,-32768, 395, 166, -131, 168,
+ 131, -63, 18, -136, -6, -177
};
-#define YYLAST 1942
-
-
-static const short yytable[] = { 31,
- 207, 213, 7, 231, 63, 219, 65, 68, 1, 242,
- 136, 143, 243, 136, 1, 142, 4, 230, 120, 64,
- 289, 31, 36, 290, 122, 37, -84, 255, 50, -84,
- 209, 210, 119, 119, 221, 265, 267, 268, 269, 136,
- 271, 272, 273, 136, 276, 1, 119, 119, 1, 134,
- 177, 137, 37, 22, 137, 190, 222, 38, 137, 189,
- -84, -84, -84, 247, 277, -74, 92, 93, 195, 144,
- 145, 280, 147, 148, 149, 150, 151, 152, -84, 287,
- 137, 166, 91, 206, 137, 137, 124, 125, 24, 51,
- 174, 299, 24, 214, 38, 138, 130, 38, 193, -92,
- -75, 35, 172, 239, 225, 71, 90, 92, 93, 47,
- 48, 49, 132, 133, 55, 55, 121, 55, 61, 202,
- 123, 126, 127, 35, 135, 70, 35, 55, 92, 93,
- 240, 146, 201, 164, 153, 154, 205, 35, 226, 227,
- 228, 35, 309, 162, 165, 167, 311, 38, 55, 85,
- 86, 87, 88, 89, 203, 196, 90, 211, 212, 172,
- 55, 216, 224, 172, 87, 88, 89, 138, 200, 90,
- 246, 254, 270, 241, 283, 300, 282, 64, 319, 320,
- 67, 55, 55, 55, 55, 55, 55, 258, 285, 248,
- 0, 60, 0, 0, 0, 252, 0, 0, 0, 0,
- 0, 0, 0, 257, 249, 0, 176, 187, 0, 55,
- 119, 0, 0, 0, 0, 55, 0, 0, 0, 41,
- 41, 260, 261, 262, 263, 0, 55, 0, 0, 278,
- 55, 0, 279, 0, 0, 281, 0, 41, 284, 176,
- 55, 55, 0, 55, 55, 55, 55, 55, 55, 47,
- 47, 0, 0, 0, 0, 0, 0, 288, 0, 0,
- 0, 0, 0, 217, 0, 58, 139, 0, 55, 0,
- 0, 0, 0, 0, 0, 47, 55, 302, 294, 304,
- 296, 55, 305, 306, 0, 308, 176, 0, 0, 0,
- 0, 0, 0, 0, 314, 315, 0, 55, 0, 0,
- 172, 55, 0, 0, 172, 0, 0, 55, 55, 0,
- 41, 41, 55, 0, 41, 0, 41, 0, 0, 0,
- 194, 0, 41, 0, 0, 0, 187, 187, 187, 187,
- 0, 187, 187, 187, 0, 198, 199, 0, 54, 56,
- 0, 59, 0, 0, 0, 55, 0, 0, 0, 0,
- 0, 84, 0, 0, 0, 182, 55, 55, 55, 55,
- 0, 55, 0, 55, 55, 55, 0, 55, 55, 55,
- 187, 0, 59, 41, 0, 0, 291, 0, 293, 0,
- 41, 0, 187, 55, 84, 0, 0, 0, 0, 0,
- 55, 0, 55, 7, 0, 55, 8, 9, 232, 307,
- 0,-32768, 310, 0, 0, 155, 156, 157, 158, 159,
- 160, 316, 317, 44, 0, 250, 0, 0, 0, 253,
- 0, 0, 41, 0, 223, 14, 15, 259, 0, 0,
- 72, 186, 0, 84, 0, 0, 18, 19, 41, 84,
- 0, 52, 0, 0, 22, 53, 0, 275, 0, 0,
- 197, 0, 0, 0, 84, 116, 0, 0, 0, 0,
- 0, 0, 0, 0, 84, 84, 0, 84, 84, 84,
- 84, 84, 84, 0, 182, 182, 182, 182, 0, 182,
- 182, 182, 0, 0, 0, 0, 295, 0, 0, 41,
- 116, 0, 84, 0, 41, 0, 0, 301, 0, 0,
- 59, 0, 0, 168, 169, 238, 0, 170, 0, 173,
- 0, 0, 312, 0, 313, 188, 0, 0, 182, 0,
- 0, 84, 0, 0, 0, 84, 0, 0, 0, 116,
- 182, 84, 84, 0, 116, 192, 84, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 186, 186, 186, 186, 0, 186, 186, 186, 0, 0,
- 0, 0, 116, 192, 0, 0, 215, 0, 0, 84,
- 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
- 84, 84, 84, 84, 0, 238, 116, 238, 238, 238,
- 0, 238, 238, 238, 186, 0, 0, 192, 0, 0,
- 0, 0, 0, 0, 0, 0, 186, 238, 0, 116,
- 0, 0, 0, 0, 84, 251, 84, 0, 0, 238,
- 0, 0, 0, 0, 0, 0, 192, 0, 0, 0,
- 94, 264, 6, 7, 0, 0, 8, 9, 0, 256,
- 0, 0, 0, 0, 0, 0, 95, 0, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 0,
- 13, 107, 0, 0, 0, 14, 15, 16, 17, 0,
- 0, 0, 0, 0, 0, 0, 18, 19, 0, 20,
- 0, 21, 292, 0, 22, 23, 0, 298, 0, 24,
- 108, 38, 0, 0, 0, 0, 0, 0, 0, 116,
- 0, 116, 0, 0, 297, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 303, 0, 0, 0,
- 0, 175, 116, 6, 7, 116, 0, 8, 9, 0,
- 0, 0, 0, 0, 116, 116, 0, 95, 0, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 13, 107, 0, 0, 0, 14, 15, 16, 17,
- 0, 0, 0, 0, 0, 0, 0, 18, 19, 0,
- 20, 0, 21, 0, 0, 22, 23, 0, 0, 0,
- 24, 108, 38, 178, 0, 6, 7, 0, 0, 8,
- 9, 0, -83, 0, 0, -83, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 179, 0, 0, 0, 0, 14, 15,
- 16, 17, 0, 0, 0, 0, -83, -83, -83, 18,
- 19, 0, 20, 0, 180, 0, 0, 22, 181, -6,
- 5, 0, 6, 7, -83, 0, 8, 9, 0, 0,
- 0, 0, -6, 0, 10, 11, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
- 13, 0, 0, 0, 0, 14, 15, 16, 17, 0,
- 0, 0, 0, 0, 0, 0, 18, 19, 0, 20,
- 0, 21, 0, 0, 22, 23, 0, -65, 66, 24,
+#define YYLAST 1870
+
+
+static const short yytable[] = { 65,
+ 68, 63, 219, 42, 42, 58, 144, 208, 232, 1,
+ 41, 41, 143, 137, 137, 121, 1, 123, 7, 137,
+ 231, 42, 210, 211, 1, 256, 307, 91, 41, -87,
+ 309, 44, -87, 177, 87, 88, 89, 137, 4, 90,
+ 37, 222, 36, 243, 50, 178, 244, 276, 72, 223,
+ 37, 191, 92, 93, 138, 138, 24, 190, 38, 289,
+ 138, 138, 290, -87, -87, -87, 51, 177, 277, 22,
+ 248, 196, 280, 38, 167, 139, -87, 131, 138, 207,
+ 140, -87, 226, 175, 125, 126, 92, 93, 138, 133,
+ 134, 217, 194, -95, 42, 42, 184, 71, 42, -77,
+ 42, 41, 41, -78, 42, 41, 90, 41, 122, 193,
+ 136, 41, 124, 203, 177, 24, 227, 228, 229, 127,
+ 128, 169, 170, 147, 154, 171, 241, 174, 240, 155,
+ 163, 179, 165, 35, 166, 195, 219, 193, 168, 38,
+ 219, 265, 267, 268, 269, 139, 271, 272, 273, 201,
+ 199, 200, 197, 92, 93, 35, 204, 70, 35, 215,
+ 247, 225, 255, 270, 282, 42, 224, 242, 283, 35,
+ 298, 193, 41, 35, 317, 318, 67, 259, 285, 214,
+ 47, 48, 49, 249, 287, 55, 55, 60, 55, 61,
+ 0, 0, 221, 253, 0, 0, 297, 258, 55, 0,
+ 193, 0, 0, 291, 0, 292, 0, 42, 0, 0,
+ 0, 0, 0, 257, 41, 184, 184, 184, 184, 55,
+ 184, 184, 184, 278, 305, 0, 279, 308, 0, 281,
+ 251, 55, 284, 254, 252, 0, 314, 315, 0, 0,
+ 0, 0, 260, 0, 85, 86, 87, 88, 89, 0,
+ 288, 90, 55, 55, 55, 55, 55, 55, 184, 0,
+ 0, 0, 275, 0, 0, 0, 0, 0, 0, 300,
+ 184, 302, 0, 303, 304, 0, 306, 296, 0, 189,
+ 0, 55, 0, 0, 0, 312, 313, 55, 301, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 294, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 299, 31, 55, 55, 0, 55, 55, 55, 55, 55,
+ 55, 47, 47, 0, 310, 0, 311, 0, 0, 0,
+ 0, 64, 0, 31, 0, 0, 0, 0, 0, 0,
+ 55, 0, 0, 0, 120, 120, 0, 0, 47, 55,
+ 0, 0, 0, 0, 55, 0, 0, 0, 120, 120,
+ 0, 135, 0, 0, 0, 0, 0, 0, 0, 55,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 55,
+ 55, 145, 146, 55, 148, 149, 150, 151, 152, 153,
+ 0, 0, 0, 0, 0, 0, 0, 0, 189, 189,
+ 189, 189, 0, 189, 189, 189, 0, 0, 0, 0,
+ 0, 0, 54, 56, 173, 59, 0, 55, 0, 0,
+ 0, 0, 0, 0, 0, 84, 0, 0, 55, 55,
+ 55, 55, 55, 0, 55, 55, 55, 0, 55, 55,
+ 55, 189, 0, 0, 0, 202, 59, 0, 0, 206,
+ 0, 0, 0, 189, 55, 0, 0, 0, 84, 0,
+ 55, 0, 55, 0, 55, 0, 0, 0, 0, 0,
+ 212, 213, 173, 0, 216, 0, 0, 0, 0, 156,
+ 157, 158, 159, 160, 161, 0, 0, 0, 0, 0,
+ 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 188, 0, 84, 0,
+ 0, 0, 0, 0, 84, 0, 0, 250, 0, 0,
+ 0, 0, 0, 120, 0, 198, 6, 7, 0, 84,
+ 8, 9, 0, 0, 261, 262, 263, 264, 0, 84,
+ 84, 0, 84, 84, 84, 84, 84, 84, 0, 0,
+ 0, 0, 0, 0, 13, 0, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, 0, 84, 0, 0,
+ 18, 19, 0, 20, 0, 21, 59, 0, 22, 23,
+ 0, 239, 0, 0, 0, 38, 0, 0, 0, 0,
+ 293, 0, 295, 0, 0, 0, 84, 0, 0, 0,
+ 84, 0, 0, 0, 0, 0, 84, 84, 0, 0,
+ 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 188, 188, 188, 188, 0,
+ 188, 188, 188, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 84, 84, 84, 84, 239,
+ 0, 239, 239, 239, 0, 239, 239, 239, 188, 0,
+ 0, 0, 0, 0, 0, 0, 94, 0, 6, 7,
+ 188, 239, 8, 9, 0, 0, 0, 84, 0, 84,
+ 0, 239, 95, 0, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 0, 13, 107, 0, 0,
+ 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 0, 0, 18, 19, 0, 20, 176, 21, 6, 7,
+ 22, 23, 8, 9, 0, 24, 108, 38, 0, 0,
+ 0, 0, 95, 0, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 0, 13, 107, 0, 0,
+ 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 0, 0, 18, 19, 0, 20, 0, 21, 0, 0,
+ 22, 23, 0, 0, 0, 24, 108, 38, 180, 0,
+ 6, 7, 0, 0, 8, 9, 0, -86, 0, 0,
+ -86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
+ 0, -86, -86, -86, 18, 19, 0, 20, 0, 182,
+ 0, 0, 22, 183, -86, 0, 0, -6, 5, -86,
6, 7, 0, 0, 8, 9, 0, 0, 0, 0,
- 1, 0, 10, 11, 0, 0, 0, 0, 0, 0,
+ -6, 0, 10, 11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 12, 13, 0,
0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
0, 0, 0, 0, 18, 19, 0, 20, 0, 21,
- 6, 7, 22, 23, 8, 9, 0, 24, 0, 0,
- 0, 0, 0, 0, 95, 0, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 0, 13, 107,
- 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 0, 0, 0, 0, 18, 19, 0, 20, 0, 21,
- 0, 0, 22, 23, 0, 0, 0, 24, 0, 38,
- 6, 7, 0, 0, 8, 9, 73, 0, 0, 74,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 75, 76, 77, 14, 15, 16, 17, 78, 0, 0,
- 80, 81, 82, 83, 18, 19, 0, 0, 0, 52,
- 0, 0, 22, 53, 0, 0, 6, 7, 0, 38,
- 8, 9, 73, 0, 0, 74, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
- 0, 0, 8, 9, 0, 0, 75, 76, 77, 14,
- 15, 16, 17, 78, 0, 0, 80, 81, 82, 83,
- 18, 19, 0, 0, 0, 52, 13, 0, 22, 53,
- 0, 14, 15, 16, 17, 38, 0, 0, 0, 0,
- 0, 0, 18, 19, 0, 20, 62, 21, 6, 7,
- 22, 23, 8, 9, 0, 0, 0, 38, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 62, 0,
- 6, 7, 0, 0, 8, 9, 13, 0, 0, 0,
+ 0, 0, 22, 23, 0, -68, 66, 24, 6, 7,
+ 0, 0, 8, 9, 0, 0, 0, 0, 1, 0,
+ 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 13, 0, 0, 0,
0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
- 0, 0, 18, 19, 0, 20, 0, 21, 13, 0,
- 22, 23, -91, 14, 15, 16, 17, 0, 0, 0,
- 0, 0, 0, 0, 18, 19, 0, 20, 204, 21,
- 6, 7, 22, 23, 8, 9, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 266, 0, 6, 7, 0, 0, 8, 9, 13, 0,
- 0, 0, 0, 14, 15, 16, 17, 0, 0, 0,
- 0, 0, 0, 0, 18, 19, 0, 20, 0, 21,
- 179, 0, 22, 23, 0, 14, 15, 16, 17, 6,
- 7, 0, 0, 8, 9, 73, 18, 19, 74, 20,
- 0, 180, 0, 7, 22, 53, 8, 9,-32768, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
- 76, 77, 14, 15, 16, 17, 78, 0, 0, 80,
- 81, 82, 83, 18, 19, 14, 15, 0, 52, 0,
- 0, 22, 53, 138, 6, 7, 18, 19, 8, 9,
- 73, 52, 0, 74, 22, 53, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 76, 77, 14, 15, 16,
- 17, 78, 0, 79, 80, 81, 82, 83, 18, 19,
- 0, 0, 0, 52, 6, 7, 22, 53, 8, 9,
- 73, 0, 0, 74, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 76, 77, 14, 15, 16,
- 17, 78, 208, 0, 80, 81, 82, 83, 18, 19,
- 0, 0, 0, 52, 6, 7, 22, 53, 8, 9,
- 73, 0, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 0, 18, 19, 0, 20, 0, 21, 6, 7,
+ 22, 23, 8, 9, 0, 24, 0, 0, 0, 0,
+ 0, 0, 95, 0, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 0, 13, 107, 0, 0,
+ 0, 14, 15, 16, 17, 6, 7, 0, 0, 8,
+ 9, 73, 18, 19, 74, 20, 0, 21, 0, 7,
+ 22, 23, 8, 9,-32768, 24, 0, 38, 0, 0,
+ 0, 0, 0, 0, 0, 75, 76, 77, 14, 15,
+ 16, 17, 78, 0, 0, 80, 81, 82, 83, 18,
+ 19, 14, 15, 62, 52, 6, 7, 22, 53, 8,
+ 9, 0, 18, 19, 38, 0, 0, 52, 0, 0,
+ 22, 53, 0, 0, 0, 62, 0, 6, 7, 0,
+ 0, 8, 9, 13, 0, 0, 0, 0, 14, 15,
+ 16, 17, 0, 0, 0, 0, 0, 0, 0, 18,
+ 19, 0, 20, 0, 21, 13, 0, 22, 23, -94,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 0,
+ 0, 18, 19, 0, 20, 205, 21, 6, 7, 22,
+ 23, 8, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 266, 0, 6,
+ 7, 0, 0, 8, 9, 13, 0, 0, 0, 0,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 0,
+ 0, 18, 19, 0, 20, 0, 21, 181, 0, 22,
+ 23, 0, 14, 15, 16, 17, 6, 7, 0, 0,
+ 8, 9, 73, 18, 19, 74, 20, 0, 182, 0,
+ 7, 22, 53, 8, 9, 233, 0, 0,-32768, 0,
+ 0, 0, 0, 0, 0, 0, 75, 76, 77, 14,
+ 15, 16, 17, 78, 0, 0, 80, 81, 82, 83,
+ 18, 19, 14, 15, 0, 52, 0, 0, 22, 53,
+ 139, 6, 7, 18, 19, 8, 9, 73, 52, 0,
+ 74, 22, 53, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 76, 77, 14, 15, 16,
- 17, 78, 0, 0, 80, 81, 82, 83, 18, 19,
- 0, 0, 0, 52, 6, 7, 22, 53, 8, 9,
- 73, 0, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 75, 76, 77, 14, 15, 16, 17, 78, 0,
+ 79, 80, 81, 82, 83, 18, 19, 0, 0, 0,
+ 52, 6, 7, 22, 53, 8, 9, 73, 0, 0,
+ 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 76, 0, 14, 15, 16,
- 17, 0, 0, 0, 80, 81, 82, 83, 18, 19,
- 0, 0, 0, 52, 6, 7, 22, 53, 8, 9,
- 73, 0, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 75, 76, 77, 14, 15, 16, 17, 78, 209,
+ 0, 80, 81, 82, 83, 18, 19, 0, 0, 0,
+ 52, 6, 7, 22, 53, 8, 9, 73, 0, 0,
+ 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 0, 0, 14, 15, 16,
- 17, 0, 0, 0, 80, 81, 82, 83, 18, 19,
- 0, 0, 0, 52, 6, 7, 22, 53, 8, 9,
- 232, 0, 0, 233, 0, 0, 0, 0, 0, 0,
+ 0, 75, 76, 77, 14, 15, 16, 17, 78, 0,
+ 0, 80, 81, 82, 83, 18, 19, 0, 0, 0,
+ 52, 6, 7, 22, 53, 8, 9, 73, 0, 0,
+ 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 234, 235, 236, 14, 15, 16,
- 17, 237, 286, 0, 0, 0, 6, 7, 18, 19,
- 8, 9, 232, 52, 0, 233, 22, 53, 0, 0,
+ 0, 75, 76, 0, 14, 15, 16, 17, 0, 0,
+ 0, 80, 81, 82, 83, 18, 19, 0, 0, 0,
+ 52, 6, 7, 22, 53, 8, 9, 73, 0, 0,
+ 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 234, 235, 236, 14,
- 15, 16, 17, 237, 0, 0, 0, 0, 6, 7,
- 18, 19, 8, 9, 232, 52, 0, 233, 22, 53,
+ 0, 75, 0, 0, 14, 15, 16, 17, 0, 0,
+ 0, 80, 81, 82, 83, 18, 19, 0, 0, 0,
+ 52, 6, 7, 22, 53, 8, 9, 233, 0, 0,
+ 234, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 234, 235,
- 0, 14, 15, 16, 17, 6, 7, 0, 0, 8,
- 9, 232, 18, 19, 233, 0, 0, 52, 0, 0,
- 22, 53, 0, 0, 0, 0, 0, 6, 7, 0,
- 0, 8, 9, 0, 0, 234, 0, 0, 14, 15,
- 16, 17, 0, 0, 0, 0, 0, 0, 0, 18,
- 19, 0, 0, 0, 52, 13, 0, 22, 53, 0,
- 14, 15, 16, 17, 6, 218, 0, 0, 8, 9,
- 0, 18, 19, 0, 20, 0, 21, 0, 0, 22,
- 23, 0, 0, 0, 0, 0, 6, 7, 0, 0,
- 8, 9, 13, 0, 0, 0, 0, 14, 15, 16,
- 17, 0, 0, 0, 0, 0, 0, 0, 18, 19,
- 0, 20, 0, 21, 179, 0, 22, 23, 0, 14,
+ 0, 235, 236, 237, 14, 15, 16, 17, 238, 286,
+ 0, 0, 0, 6, 7, 18, 19, 8, 9, 233,
+ 52, 0, 234, 22, 53, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 218, 0, 0,
+ 8, 9, 0, 235, 236, 237, 14, 15, 16, 17,
+ 238, 0, 0, 97, 0, 0, 0, 18, 19, 103,
+ 104, 0, 52, 0, 13, 22, 53, 0, 0, 14,
15, 16, 17, 6, 7, 0, 0, 8, 9, 0,
- 18, 19, 0, 20, 0, 180, 0, 0, 22, 53,
- 0, 0, 0, 0, 6, 7, 0, 0, 8, 9,
- 0, 0, 0, 0, 0, 0, 14, 15, 16, 17,
- 0, 0, 0, 0, 0, 0, 0, 18, 19, 0,
- 20, 0, 52, 0, 0, 22, 53, 14, 15, 16,
- 17, 0, 7, 0, 0, 8, 9, 73, 18, 19,
--32768, 0, 0, 52, 0, 0, 22, 53, 0, 7,
- 0, 0, 8, 9,-32768, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 15, 0, 0, 0, 0,
+ 18, 19, 0, 20, 0, 21, 0, 0, 22, 23,
+ 97, 0, 0, 0, 0, 0, 103, 104, 0, 0,
+ 0, 13, 0, 0, 0, 0, 14, 15, 16, 17,
+ 6, 7, 0, 0, 8, 9, 233, 18, 19, 234,
+ 20, 0, 21, 0, 0, 22, 23, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 235, 236, 0, 14, 15, 16, 17, 6, 7, 0,
+ 0, 8, 9, 233, 18, 19, 234, 0, 0, 52,
+ 0, 0, 22, 53, 0, 0, 0, 0, 0, 6,
+ 7, 0, 0, 8, 9, 0, 0, 235, 0, 0,
+ 14, 15, 16, 17, 0, 0, 0, 0, 0, 0,
+ 0, 18, 19, 0, 0, 0, 52, 13, 0, 22,
+ 53, 0, 14, 15, 16, 17, 6, 7, 0, 0,
+ 8, 9, 0, 18, 19, 0, 20, 0, 21, 0,
+ 0, 22, 23, 0, 0, 0, 0, 6, 7, 0,
+ 0, 8, 9, 0, 181, 0, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 0, 0,
+ 18, 19, 0, 20, 0, 182, 0, 0, 22, 53,
+ 14, 15, 16, 17, 6, 7, 0, 0, 8, 9,
+ 0, 18, 19, 0, 20, 0, 52, 0, 0, 22,
+ 53, 0, 7, 0, 0, 8, 9, 73, 0, 0,
+-32768, 0, 0, 0, 0, 0, 0, 14, 15, 16,
+ 17, 0, 0, 0, 0, 0, 0, 7, 18, 19,
+ 8, 9,-32768, 52, 14, 15, 22, 53, 0, 0,
0, 80, 81, 82, 83, 18, 19, 0, 0, 0,
- 52, 14, 15, 22, 53, 0, 0, 0,-32768,-32768,
--32768,-32768, 18, 19, 0, 0, 0, 52, 0, 0,
- 22, 53
+ 52, 0, 0, 22, 53, 0, 0, 0, 0, 14,
+ 15, 0, 0, 0, 0, 0,-32768,-32768,-32768,-32768,
+ 18, 19, 0, 0, 0, 52, 0, 0, 22, 53
};
-static const short yycheck[] = { 3,
- 143, 163, 4, 184, 23, 167, 24, 25, 13, 1,
- 1, 70, 4, 1, 13, 70, 13, 1, 37, 23,
- 1, 25, 56, 4, 42, 58, 10, 33, 56, 13,
- 153, 154, 36, 37, 177, 230, 231, 232, 233, 1,
- 235, 236, 237, 1, 1, 13, 50, 51, 13, 53,
- 109, 42, 58, 55, 42, 114, 179, 62, 42, 114,
- 44, 45, 46, 206, 245, 57, 36, 37, 59, 73,
- 74, 59, 76, 77, 78, 79, 80, 81, 62, 274,
- 42, 99, 11, 142, 42, 42, 3, 4, 60, 56,
- 108, 286, 60, 58, 62, 57, 43, 62, 116, 57,
- 57, 3, 106, 11, 10, 28, 54, 36, 37, 13,
- 14, 15, 50, 51, 18, 19, 39, 21, 22, 137,
- 43, 38, 39, 25, 5, 27, 28, 31, 36, 37,
- 189, 4, 136, 4, 31, 31, 140, 39, 44, 45,
- 46, 43, 304, 56, 56, 56, 308, 62, 52, 47,
- 48, 49, 50, 51, 33, 56, 54, 161, 162, 163,
- 64, 165, 181, 167, 49, 50, 51, 57, 50, 54,
- 4, 21, 4, 191, 4, 18, 56, 181, 0, 0,
- 25, 85, 86, 87, 88, 89, 90, 222, 259, 207,
- -1, 22, -1, -1, -1, 214, -1, -1, -1, -1,
- -1, -1, -1, 221, 208, -1, 109, 111, -1, 113,
- 214, -1, -1, -1, -1, 119, -1, -1, -1, 10,
- 11, 225, 226, 227, 228, -1, 130, -1, -1, 247,
- 134, -1, 250, -1, -1, 253, -1, 28, 256, 142,
- 144, 145, -1, 147, 148, 149, 150, 151, 152, 153,
- 154, -1, -1, -1, -1, -1, -1, 275, -1, -1,
- -1, -1, -1, 166, -1, 21, 63, -1, 172, -1,
- -1, -1, -1, -1, -1, 179, 180, 295, 282, 297,
- 284, 185, 300, 301, -1, 303, 189, -1, -1, -1,
- -1, -1, -1, -1, 312, 313, -1, 201, -1, -1,
- 304, 205, -1, -1, 308, -1, -1, 211, 212, -1,
- 101, 102, 216, -1, 105, -1, 107, -1, -1, -1,
- 117, -1, 113, -1, -1, -1, 230, 231, 232, 233,
- -1, 235, 236, 237, -1, 132, 133, -1, 18, 19,
- -1, 21, -1, -1, -1, 249, -1, -1, -1, -1,
- -1, 31, -1, -1, -1, 111, 260, 261, 262, 263,
- -1, 265, -1, 267, 268, 269, -1, 271, 272, 273,
- 274, -1, 52, 164, -1, -1, 279, -1, 281, -1,
- 171, -1, 286, 287, 64, -1, -1, -1, -1, -1,
- 294, -1, 296, 4, -1, 299, 7, 8, 9, 302,
- -1, 12, 305, -1, -1, 85, 86, 87, 88, 89,
- 90, 314, 315, 11, -1, 212, -1, -1, -1, 216,
- -1, -1, 213, -1, 180, 36, 37, 224, -1, -1,
- 28, 111, -1, 113, -1, -1, 47, 48, 229, 119,
- -1, 52, -1, -1, 55, 56, -1, 244, -1, -1,
- 130, -1, -1, -1, 134, 35, -1, -1, -1, -1,
- -1, -1, -1, -1, 144, 145, -1, 147, 148, 149,
- 150, 151, 152, -1, 230, 231, 232, 233, -1, 235,
- 236, 237, -1, -1, -1, -1, 283, -1, -1, 280,
- 70, -1, 172, -1, 285, -1, -1, 294, -1, -1,
- 180, -1, -1, 101, 102, 185, -1, 105, -1, 107,
- -1, -1, 309, -1, 311, 113, -1, -1, 274, -1,
- -1, 201, -1, -1, -1, 205, -1, -1, -1, 109,
- 286, 211, 212, -1, 114, 115, 216, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 230, 231, 232, 233, -1, 235, 236, 237, -1, -1,
- -1, -1, 142, 143, -1, -1, 164, -1, -1, 249,
- -1, -1, -1, 171, -1, -1, -1, -1, -1, -1,
- 260, 261, 262, 263, -1, 265, 166, 267, 268, 269,
- -1, 271, 272, 273, 274, -1, -1, 177, -1, -1,
- -1, -1, -1, -1, -1, -1, 286, 287, -1, 189,
- -1, -1, -1, -1, 294, 213, 296, -1, -1, 299,
- -1, -1, -1, -1, -1, -1, 206, -1, -1, -1,
- 1, 229, 3, 4, -1, -1, 7, 8, -1, 219,
- -1, -1, -1, -1, -1, -1, 17, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, -1,
- 31, 32, -1, -1, -1, 36, 37, 38, 39, -1,
- -1, -1, -1, -1, -1, -1, 47, 48, -1, 50,
- -1, 52, 280, -1, 55, 56, -1, 285, -1, 60,
- 61, 62, -1, -1, -1, -1, -1, -1, -1, 279,
- -1, 281, -1, -1, 284, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 296, -1, -1, -1,
- -1, 1, 302, 3, 4, 305, -1, 7, 8, -1,
- -1, -1, -1, -1, 314, 315, -1, 17, -1, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- -1, 31, 32, -1, -1, -1, 36, 37, 38, 39,
- -1, -1, -1, -1, -1, -1, -1, 47, 48, -1,
- 50, -1, 52, -1, -1, 55, 56, -1, -1, -1,
- 60, 61, 62, 1, -1, 3, 4, -1, -1, 7,
- 8, -1, 10, -1, -1, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 31, -1, -1, -1, -1, 36, 37,
- 38, 39, -1, -1, -1, -1, 44, 45, 46, 47,
- 48, -1, 50, -1, 52, -1, -1, 55, 56, 0,
- 1, -1, 3, 4, 62, -1, 7, 8, -1, -1,
- -1, -1, 13, -1, 15, 16, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 30,
- 31, -1, -1, -1, -1, 36, 37, 38, 39, -1,
- -1, -1, -1, -1, -1, -1, 47, 48, -1, 50,
- -1, 52, -1, -1, 55, 56, -1, 0, 1, 60,
+static const short yycheck[] = { 24,
+ 25, 23, 168, 10, 11, 21, 70, 144, 186, 13,
+ 10, 11, 70, 1, 1, 37, 13, 42, 4, 1,
+ 1, 28, 154, 155, 13, 33, 302, 11, 28, 10,
+ 306, 11, 13, 109, 49, 50, 51, 1, 13, 54,
+ 58, 178, 56, 1, 56, 109, 4, 1, 28, 181,
+ 58, 115, 36, 37, 42, 42, 60, 115, 62, 1,
+ 42, 42, 4, 44, 45, 46, 56, 143, 246, 55,
+ 207, 59, 59, 62, 99, 57, 57, 43, 42, 143,
+ 63, 62, 10, 108, 3, 4, 36, 37, 42, 50,
+ 51, 167, 117, 57, 101, 102, 112, 28, 105, 57,
+ 107, 101, 102, 57, 111, 105, 54, 107, 39, 116,
+ 5, 111, 43, 138, 190, 60, 44, 45, 46, 38,
+ 39, 101, 102, 4, 31, 105, 190, 107, 11, 31,
+ 56, 111, 4, 3, 56, 118, 302, 144, 56, 62,
+ 306, 231, 232, 233, 234, 57, 236, 237, 238, 50,
+ 133, 134, 56, 36, 37, 25, 33, 27, 28, 58,
+ 4, 183, 21, 4, 56, 172, 182, 192, 4, 39,
+ 18, 178, 172, 43, 0, 0, 25, 223, 260, 164,
+ 13, 14, 15, 208, 274, 18, 19, 22, 21, 22,
+ -1, -1, 172, 215, -1, -1, 286, 222, 31, -1,
+ 207, -1, -1, 279, -1, 281, -1, 214, -1, -1,
+ -1, -1, -1, 220, 214, 231, 232, 233, 234, 52,
+ 236, 237, 238, 248, 300, -1, 251, 303, -1, 254,
+ 213, 64, 257, 216, 214, -1, 312, 313, -1, -1,
+ -1, -1, 225, -1, 47, 48, 49, 50, 51, -1,
+ 275, 54, 85, 86, 87, 88, 89, 90, 274, -1,
+ -1, -1, 245, -1, -1, -1, -1, -1, -1, 294,
+ 286, 296, -1, 298, 299, -1, 301, 284, -1, 112,
+ -1, 114, -1, -1, -1, 310, 311, 120, 295, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 131, -1,
+ 283, -1, 135, -1, -1, -1, -1, -1, -1, -1,
+ 293, 3, 145, 146, -1, 148, 149, 150, 151, 152,
+ 153, 154, 155, -1, 307, -1, 309, -1, -1, -1,
+ -1, 23, -1, 25, -1, -1, -1, -1, -1, -1,
+ 173, -1, -1, -1, 36, 37, -1, -1, 181, 182,
+ -1, -1, -1, -1, 187, -1, -1, -1, 50, 51,
+ -1, 53, -1, -1, -1, -1, -1, -1, -1, 202,
+ -1, -1, -1, 206, -1, -1, -1, -1, -1, 212,
+ 213, 73, 74, 216, 76, 77, 78, 79, 80, 81,
+ -1, -1, -1, -1, -1, -1, -1, -1, 231, 232,
+ 233, 234, -1, 236, 237, 238, -1, -1, -1, -1,
+ -1, -1, 18, 19, 106, 21, -1, 250, -1, -1,
+ -1, -1, -1, -1, -1, 31, -1, -1, 261, 262,
+ 263, 264, 265, -1, 267, 268, 269, -1, 271, 272,
+ 273, 274, -1, -1, -1, 137, 52, -1, -1, 141,
+ -1, -1, -1, 286, 287, -1, -1, -1, 64, -1,
+ 293, -1, 295, -1, 297, -1, -1, -1, -1, -1,
+ 162, 163, 164, -1, 166, -1, -1, -1, -1, 85,
+ 86, 87, 88, 89, 90, -1, -1, -1, -1, -1,
+ -1, 183, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 112, -1, 114, -1,
+ -1, -1, -1, -1, 120, -1, -1, 209, -1, -1,
+ -1, -1, -1, 215, -1, 131, 3, 4, -1, 135,
+ 7, 8, -1, -1, 226, 227, 228, 229, -1, 145,
+ 146, -1, 148, 149, 150, 151, 152, 153, -1, -1,
+ -1, -1, -1, -1, 31, -1, -1, -1, -1, 36,
+ 37, 38, 39, -1, -1, -1, -1, 173, -1, -1,
+ 47, 48, -1, 50, -1, 52, 182, -1, 55, 56,
+ -1, 187, -1, -1, -1, 62, -1, -1, -1, -1,
+ 282, -1, 284, -1, -1, -1, 202, -1, -1, -1,
+ 206, -1, -1, -1, -1, -1, 212, 213, -1, -1,
+ 216, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 231, 232, 233, 234, -1,
+ 236, 237, 238, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 250, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 261, 262, 263, 264, 265,
+ -1, 267, 268, 269, -1, 271, 272, 273, 274, -1,
+ -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
+ 286, 287, 7, 8, -1, -1, -1, 293, -1, 295,
+ -1, 297, 17, -1, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, -1, 31, 32, -1, -1,
+ -1, 36, 37, 38, 39, -1, -1, -1, -1, -1,
+ -1, -1, 47, 48, -1, 50, 1, 52, 3, 4,
+ 55, 56, 7, 8, -1, 60, 61, 62, -1, -1,
+ -1, -1, 17, -1, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, -1, 31, 32, -1, -1,
+ -1, 36, 37, 38, 39, -1, -1, -1, -1, -1,
+ -1, -1, 47, 48, -1, 50, -1, 52, -1, -1,
+ 55, 56, -1, -1, -1, 60, 61, 62, 1, -1,
+ 3, 4, -1, -1, 7, 8, -1, 10, -1, -1,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 31, -1,
+ -1, -1, -1, 36, 37, 38, 39, -1, -1, -1,
+ -1, 44, 45, 46, 47, 48, -1, 50, -1, 52,
+ -1, -1, 55, 56, 57, -1, -1, 0, 1, 62,
3, 4, -1, -1, 7, 8, -1, -1, -1, -1,
13, -1, 15, 16, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 30, 31, -1,
-1, -1, -1, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, -1, 50, -1, 52,
- 3, 4, 55, 56, 7, 8, -1, 60, -1, -1,
- -1, -1, -1, -1, 17, -1, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, -1, 31, 32,
- -1, -1, -1, 36, 37, 38, 39, -1, -1, -1,
- -1, -1, -1, -1, 47, 48, -1, 50, -1, 52,
- -1, -1, 55, 56, -1, -1, -1, 60, -1, 62,
- 3, 4, -1, -1, 7, 8, 9, -1, -1, 12,
- 13, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 33, 34, 35, 36, 37, 38, 39, 40, -1, -1,
- 43, 44, 45, 46, 47, 48, -1, -1, -1, 52,
- -1, -1, 55, 56, -1, -1, 3, 4, -1, 62,
- 7, 8, 9, -1, -1, 12, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
- -1, -1, 7, 8, -1, -1, 33, 34, 35, 36,
- 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
- 47, 48, -1, -1, -1, 52, 31, -1, 55, 56,
- -1, 36, 37, 38, 39, 62, -1, -1, -1, -1,
- -1, -1, 47, 48, -1, 50, 1, 52, 3, 4,
- 55, 56, 7, 8, -1, -1, -1, 62, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
- 3, 4, -1, -1, 7, 8, 31, -1, -1, -1,
+ -1, -1, 55, 56, -1, 0, 1, 60, 3, 4,
+ -1, -1, 7, 8, -1, -1, -1, -1, 13, -1,
+ 15, 16, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 30, 31, -1, -1, -1,
-1, 36, 37, 38, 39, -1, -1, -1, -1, -1,
- -1, -1, 47, 48, -1, 50, -1, 52, 31, -1,
- 55, 56, 57, 36, 37, 38, 39, -1, -1, -1,
- -1, -1, -1, -1, 47, 48, -1, 50, 1, 52,
- 3, 4, 55, 56, 7, 8, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1, -1, 3, 4, -1, -1, 7, 8, 31, -1,
- -1, -1, -1, 36, 37, 38, 39, -1, -1, -1,
- -1, -1, -1, -1, 47, 48, -1, 50, -1, 52,
- 31, -1, 55, 56, -1, 36, 37, 38, 39, 3,
- 4, -1, -1, 7, 8, 9, 47, 48, 12, 50,
- -1, 52, -1, 4, 55, 56, 7, 8, 9, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
- 34, 35, 36, 37, 38, 39, 40, -1, -1, 43,
- 44, 45, 46, 47, 48, 36, 37, -1, 52, -1,
- -1, 55, 56, 57, 3, 4, 47, 48, 7, 8,
- 9, 52, -1, 12, 55, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, 34, 35, 36, 37, 38,
- 39, 40, -1, 42, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, 52, 3, 4, 55, 56, 7, 8,
- 9, -1, -1, 12, -1, -1, -1, -1, -1, -1,
+ -1, -1, 47, 48, -1, 50, -1, 52, 3, 4,
+ 55, 56, 7, 8, -1, 60, -1, -1, -1, -1,
+ -1, -1, 17, -1, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, -1, 31, 32, -1, -1,
+ -1, 36, 37, 38, 39, 3, 4, -1, -1, 7,
+ 8, 9, 47, 48, 12, 50, -1, 52, -1, 4,
+ 55, 56, 7, 8, 9, 60, -1, 62, -1, -1,
+ -1, -1, -1, -1, -1, 33, 34, 35, 36, 37,
+ 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
+ 48, 36, 37, 1, 52, 3, 4, 55, 56, 7,
+ 8, -1, 47, 48, 62, -1, -1, 52, -1, -1,
+ 55, 56, -1, -1, -1, 1, -1, 3, 4, -1,
+ -1, 7, 8, 31, -1, -1, -1, -1, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, -1, -1, 47,
+ 48, -1, 50, -1, 52, 31, -1, 55, 56, 57,
+ 36, 37, 38, 39, -1, -1, -1, -1, -1, -1,
+ -1, 47, 48, -1, 50, 1, 52, 3, 4, 55,
+ 56, 7, 8, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1, -1, 3,
+ 4, -1, -1, 7, 8, 31, -1, -1, -1, -1,
+ 36, 37, 38, 39, -1, -1, -1, -1, -1, -1,
+ -1, 47, 48, -1, 50, -1, 52, 31, -1, 55,
+ 56, -1, 36, 37, 38, 39, 3, 4, -1, -1,
+ 7, 8, 9, 47, 48, 12, 50, -1, 52, -1,
+ 4, 55, 56, 7, 8, 9, -1, -1, 12, -1,
+ -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
+ 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
+ 47, 48, 36, 37, -1, 52, -1, -1, 55, 56,
+ 57, 3, 4, 47, 48, 7, 8, 9, 52, -1,
+ 12, 55, 56, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, -1, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, 52, 3, 4, 55, 56, 7, 8,
- 9, -1, -1, 12, -1, -1, -1, -1, -1, -1,
+ -1, 33, 34, 35, 36, 37, 38, 39, 40, -1,
+ 42, 43, 44, 45, 46, 47, 48, -1, -1, -1,
+ 52, 3, 4, 55, 56, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, 34, 35, 36, 37, 38,
- 39, 40, -1, -1, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, 52, 3, 4, 55, 56, 7, 8,
- 9, -1, -1, 12, -1, -1, -1, -1, -1, -1,
+ -1, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ -1, 43, 44, 45, 46, 47, 48, -1, -1, -1,
+ 52, 3, 4, 55, 56, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, 34, -1, 36, 37, 38,
- 39, -1, -1, -1, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, 52, 3, 4, 55, 56, 7, 8,
- 9, -1, -1, 12, -1, -1, -1, -1, -1, -1,
+ -1, 33, 34, 35, 36, 37, 38, 39, 40, -1,
+ -1, 43, 44, 45, 46, 47, 48, -1, -1, -1,
+ 52, 3, 4, 55, 56, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, -1, -1, 36, 37, 38,
- 39, -1, -1, -1, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, 52, 3, 4, 55, 56, 7, 8,
- 9, -1, -1, 12, -1, -1, -1, -1, -1, -1,
+ -1, 33, 34, -1, 36, 37, 38, 39, -1, -1,
+ -1, 43, 44, 45, 46, 47, 48, -1, -1, -1,
+ 52, 3, 4, 55, 56, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, -1, -1, -1, 3, 4, 47, 48,
- 7, 8, 9, 52, -1, 12, 55, 56, -1, -1,
+ -1, 33, -1, -1, 36, 37, 38, 39, -1, -1,
+ -1, 43, 44, 45, 46, 47, 48, -1, -1, -1,
+ 52, 3, 4, 55, 56, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
- 37, 38, 39, 40, -1, -1, -1, -1, 3, 4,
- 47, 48, 7, 8, 9, 52, -1, 12, 55, 56,
+ -1, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ -1, -1, -1, 3, 4, 47, 48, 7, 8, 9,
+ 52, -1, 12, 55, 56, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, -1, -1,
+ 7, 8, -1, 33, 34, 35, 36, 37, 38, 39,
+ 40, -1, -1, 20, -1, -1, -1, 47, 48, 26,
+ 27, -1, 52, -1, 31, 55, 56, -1, -1, 36,
+ 37, 38, 39, 3, 4, -1, -1, 7, 8, -1,
+ 47, 48, -1, 50, -1, 52, -1, -1, 55, 56,
+ 20, -1, -1, -1, -1, -1, 26, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, 36, 37, 38, 39,
+ 3, 4, -1, -1, 7, 8, 9, 47, 48, 12,
+ 50, -1, 52, -1, -1, 55, 56, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 33, 34,
- -1, 36, 37, 38, 39, 3, 4, -1, -1, 7,
- 8, 9, 47, 48, 12, -1, -1, 52, -1, -1,
- 55, 56, -1, -1, -1, -1, -1, 3, 4, -1,
- -1, 7, 8, -1, -1, 33, -1, -1, 36, 37,
- 38, 39, -1, -1, -1, -1, -1, -1, -1, 47,
- 48, -1, -1, -1, 52, 31, -1, 55, 56, -1,
+ 33, 34, -1, 36, 37, 38, 39, 3, 4, -1,
+ -1, 7, 8, 9, 47, 48, 12, -1, -1, 52,
+ -1, -1, 55, 56, -1, -1, -1, -1, -1, 3,
+ 4, -1, -1, 7, 8, -1, -1, 33, -1, -1,
+ 36, 37, 38, 39, -1, -1, -1, -1, -1, -1,
+ -1, 47, 48, -1, -1, -1, 52, 31, -1, 55,
+ 56, -1, 36, 37, 38, 39, 3, 4, -1, -1,
+ 7, 8, -1, 47, 48, -1, 50, -1, 52, -1,
+ -1, 55, 56, -1, -1, -1, -1, 3, 4, -1,
+ -1, 7, 8, -1, 31, -1, -1, -1, -1, 36,
+ 37, 38, 39, -1, -1, -1, -1, -1, -1, -1,
+ 47, 48, -1, 50, -1, 52, -1, -1, 55, 56,
36, 37, 38, 39, 3, 4, -1, -1, 7, 8,
-1, 47, 48, -1, 50, -1, 52, -1, -1, 55,
- 56, -1, -1, -1, -1, -1, 3, 4, -1, -1,
- 7, 8, 31, -1, -1, -1, -1, 36, 37, 38,
- 39, -1, -1, -1, -1, -1, -1, -1, 47, 48,
- -1, 50, -1, 52, 31, -1, 55, 56, -1, 36,
- 37, 38, 39, 3, 4, -1, -1, 7, 8, -1,
- 47, 48, -1, 50, -1, 52, -1, -1, 55, 56,
- -1, -1, -1, -1, 3, 4, -1, -1, 7, 8,
- -1, -1, -1, -1, -1, -1, 36, 37, 38, 39,
- -1, -1, -1, -1, -1, -1, -1, 47, 48, -1,
- 50, -1, 52, -1, -1, 55, 56, 36, 37, 38,
- 39, -1, 4, -1, -1, 7, 8, 9, 47, 48,
- 12, -1, -1, 52, -1, -1, 55, 56, -1, 4,
- -1, -1, 7, 8, 9, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 36, 37, -1, -1, -1, -1,
+ 56, -1, 4, -1, -1, 7, 8, 9, -1, -1,
+ 12, -1, -1, -1, -1, -1, -1, 36, 37, 38,
+ 39, -1, -1, -1, -1, -1, -1, 4, 47, 48,
+ 7, 8, 9, 52, 36, 37, 55, 56, -1, -1,
-1, 43, 44, 45, 46, 47, 48, -1, -1, -1,
- 52, 36, 37, 55, 56, -1, -1, -1, 43, 44,
- 45, 46, 47, 48, -1, -1, -1, 52, -1, -1,
- 55, 56
+ 52, -1, -1, 55, 56, -1, -1, -1, -1, 36,
+ 37, -1, -1, -1, -1, -1, 43, 44, 45, 46,
+ 47, 48, -1, -1, -1, 52, -1, -1, 55, 56
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple"
@@ -1366,14 +1352,14 @@ yyreduce:
switch (yyn) {
case 1:
-#line 158 "awkgram.y"
+#line 160 "awkgram.y"
{
expression_value = yyvsp[-1].nodeval;
check_funcs();
;
break;}
case 2:
-#line 166 "awkgram.y"
+#line 168 "awkgram.y"
{
if (yyvsp[0].nodeval != NULL)
yyval.nodeval = yyvsp[0].nodeval;
@@ -1383,7 +1369,7 @@ case 2:
;
break;}
case 3:
-#line 175 "awkgram.y"
+#line 177 "awkgram.y"
{
if (yyvsp[0].nodeval == NULL)
yyval.nodeval = yyvsp[-1].nodeval;
@@ -1400,23 +1386,23 @@ case 3:
;
break;}
case 4:
-#line 189 "awkgram.y"
+#line 191 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 5:
-#line 190 "awkgram.y"
+#line 192 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 6:
-#line 191 "awkgram.y"
+#line 193 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 7:
-#line 195 "awkgram.y"
+#line 197 "awkgram.y"
{ io_allowed = FALSE; ;
break;}
case 8:
-#line 197 "awkgram.y"
+#line 199 "awkgram.y"
{
if (begin_block != NULL) {
if (begin_block->type != Node_rule_list)
@@ -1433,11 +1419,11 @@ case 8:
;
break;}
case 9:
-#line 211 "awkgram.y"
+#line 213 "awkgram.y"
{ io_allowed = FALSE; parsing_end_rule = TRUE; ;
break;}
case 10:
-#line 213 "awkgram.y"
+#line 215 "awkgram.y"
{
if (end_block != NULL) {
if (end_block->type != Node_rule_list)
@@ -1455,7 +1441,7 @@ case 10:
;
break;}
case 11:
-#line 229 "awkgram.y"
+#line 231 "awkgram.y"
{
warning(_("BEGIN blocks must have an action part"));
errcount++;
@@ -1463,7 +1449,7 @@ case 11:
;
break;}
case 12:
-#line 235 "awkgram.y"
+#line 237 "awkgram.y"
{
warning(_("END blocks must have an action part"));
errcount++;
@@ -1471,15 +1457,15 @@ case 12:
;
break;}
case 13:
-#line 241 "awkgram.y"
+#line 243 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_rule_node, yyvsp[0].nodeval); yyerrok; ;
break;}
case 14:
-#line 243 "awkgram.y"
+#line 245 "awkgram.y"
{ yyval.nodeval = node((NODE *) NULL, Node_rule_node, yyvsp[0].nodeval); yyerrok; ;
break;}
case 15:
-#line 245 "awkgram.y"
+#line 247 "awkgram.y"
{
yyval.nodeval = node(yyvsp[-1].nodeval,
Node_rule_node,
@@ -1494,7 +1480,7 @@ case 15:
;
break;}
case 16:
-#line 258 "awkgram.y"
+#line 260 "awkgram.y"
{
func_install(yyvsp[-1].nodeval, yyvsp[0].nodeval);
yyval.nodeval = NULL;
@@ -1502,15 +1488,15 @@ case 16:
;
break;}
case 17:
-#line 267 "awkgram.y"
+#line 269 "awkgram.y"
{ yyval.sval = yyvsp[0].sval; ;
break;}
case 18:
-#line 269 "awkgram.y"
+#line 271 "awkgram.y"
{ yyval.sval = yyvsp[0].sval; ;
break;}
case 19:
-#line 271 "awkgram.y"
+#line 273 "awkgram.y"
{
yyerror(_("`%s' is a built-in function, it cannot be redefined"),
tokstart);
@@ -1519,13 +1505,13 @@ case 19:
;
break;}
case 22:
-#line 286 "awkgram.y"
+#line 288 "awkgram.y"
{
param_counter = 0;
;
break;}
case 23:
-#line 290 "awkgram.y"
+#line 292 "awkgram.y"
{
NODE *t;
@@ -1539,33 +1525,33 @@ case 23:
;
break;}
case 24:
-#line 305 "awkgram.y"
+#line 307 "awkgram.y"
{
yyval.nodeval = yyvsp[-3].nodeval;
can_return = FALSE;
;
break;}
case 25:
-#line 310 "awkgram.y"
+#line 312 "awkgram.y"
{
yyval.nodeval = node((NODE *) NULL, Node_K_return, (NODE *) NULL);
can_return = FALSE;
;
break;}
case 26:
-#line 319 "awkgram.y"
+#line 321 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
case 27:
-#line 321 "awkgram.y"
+#line 323 "awkgram.y"
{ yyval.nodeval = mkrangenode(node(yyvsp[-2].nodeval, Node_cond_pair, yyvsp[0].nodeval)); ;
break;}
case 28:
-#line 330 "awkgram.y"
+#line 332 "awkgram.y"
{ ++want_regexp; ;
break;}
case 29:
-#line 332 "awkgram.y"
+#line 334 "awkgram.y"
{
NODE *n;
size_t len;
@@ -1582,15 +1568,15 @@ case 29:
;
break;}
case 30:
-#line 350 "awkgram.y"
+#line 352 "awkgram.y"
{ yyval.nodeval = yyvsp[-3].nodeval; ;
break;}
case 31:
-#line 352 "awkgram.y"
+#line 354 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 32:
-#line 357 "awkgram.y"
+#line 359 "awkgram.y"
{
yyval.nodeval = yyvsp[0].nodeval;
if (do_lint && isnoeffect(yyval.nodeval->type))
@@ -1598,7 +1584,7 @@ case 32:
;
break;}
case 33:
-#line 363 "awkgram.y"
+#line 365 "awkgram.y"
{
if (yyvsp[-1].nodeval == NULL || yyvsp[-1].nodeval->type != Node_statement_list)
yyvsp[-1].nodeval = node(yyvsp[-1].nodeval, Node_statement_list, (NODE *) NULL);
@@ -1608,39 +1594,39 @@ case 33:
;
break;}
case 34:
-#line 371 "awkgram.y"
+#line 373 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 35:
-#line 373 "awkgram.y"
+#line 375 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 38:
-#line 383 "awkgram.y"
+#line 385 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 39:
-#line 385 "awkgram.y"
+#line 387 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
case 40:
-#line 387 "awkgram.y"
+#line 389 "awkgram.y"
{ yyval.nodeval = yyvsp[-1].nodeval; ;
break;}
case 41:
-#line 389 "awkgram.y"
+#line 391 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
case 42:
-#line 391 "awkgram.y"
+#line 393 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_while, yyvsp[0].nodeval); ;
break;}
case 43:
-#line 393 "awkgram.y"
+#line 395 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_K_do, yyvsp[-5].nodeval); ;
break;}
case 44:
-#line 395 "awkgram.y"
+#line 397 "awkgram.y"
{
/*
* Efficiency hack. Recognize the special case of
@@ -1655,14 +1641,26 @@ case 44:
* Check that the body is a `delete a[i]' statement,
* and that both the loop var and array names match.
*/
- if (yyvsp[0].nodeval != NULL && yyvsp[0].nodeval->type == Node_K_delete
- && yyvsp[0].nodeval->rnode != NULL
- && (yyvsp[0].nodeval->rnode->type == Node_var || yyvsp[0].nodeval->rnode->type == Node_param_list)
- && strcmp(yyvsp[-5].sval, yyvsp[0].nodeval->rnode->var_value->vname) == 0
- && strcmp(yyvsp[-3].sval, yyvsp[0].nodeval->lnode->vname) == 0) {
- yyvsp[0].nodeval->type = Node_K_delete_loop;
- yyval.nodeval = yyvsp[0].nodeval;
+ if (yyvsp[0].nodeval != NULL && yyvsp[0].nodeval->type == Node_K_delete) {
+ NODE *arr, *sub;
+
+ assert(yyvsp[0].nodeval->rnode->type == Node_expression_list);
+ arr = yyvsp[0].nodeval->lnode; /* array var */
+ sub = yyvsp[0].nodeval->rnode->lnode; /* index var */
+
+ if ( (arr->type == Node_var
+ || arr->type == Node_var_array
+ || arr->type == Node_param_list)
+ && (sub->type == Node_var || sub->type == Node_param_list)
+ && strcmp(yyvsp[-5].sval, sub->vname) == 0
+ && strcmp(yyvsp[-3].sval, arr->vname) == 0) {
+ yyvsp[0].nodeval->type = Node_K_delete_loop;
+ yyval.nodeval = yyvsp[0].nodeval;
+ }
+ else
+ goto regular_loop;
} else {
+ regular_loop:
yyval.nodeval = node(yyvsp[0].nodeval, Node_K_arrayfor,
make_for_loop(variable(yyvsp[-5].sval, CAN_FREE, Node_var),
(NODE *) NULL, variable(yyvsp[-3].sval, CAN_FREE, Node_var_array)));
@@ -1670,60 +1668,28 @@ case 44:
;
break;}
case 45:
-#line 423 "awkgram.y"
+#line 437 "awkgram.y"
{
yyval.nodeval = node(yyvsp[0].nodeval, Node_K_for, (NODE *) make_for_loop(yyvsp[-9].nodeval, yyvsp[-6].nodeval, yyvsp[-3].nodeval));
;
break;}
case 46:
-#line 427 "awkgram.y"
+#line 441 "awkgram.y"
{
yyval.nodeval = node(yyvsp[0].nodeval, Node_K_for,
(NODE *) make_for_loop(yyvsp[-8].nodeval, (NODE *) NULL, yyvsp[-3].nodeval));
;
break;}
case 47:
-#line 433 "awkgram.y"
+#line 447 "awkgram.y"
{ yyval.nodeval = node((NODE *) NULL, Node_K_break, (NODE *) NULL); ;
break;}
case 48:
-#line 436 "awkgram.y"
+#line 450 "awkgram.y"
{ yyval.nodeval = node((NODE *) NULL, Node_K_continue, (NODE *) NULL); ;
break;}
case 49:
-#line 438 "awkgram.y"
-{
- yyval.nodeval = node(yyvsp[-3].nodeval, yyvsp[-5].nodetypeval, yyvsp[-1].nodeval);
- if (yyval.nodeval->type == Node_K_printf)
- count_args(yyval.nodeval)
- ;
- break;}
-case 50:
-#line 444 "awkgram.y"
-{
- if (yyvsp[-3].nodetypeval == Node_K_print && yyvsp[-2].nodeval == NULL) {
- static int warned = FALSE;
-
- yyvsp[-2].nodeval = node(node(make_number(0.0),
- Node_field_spec,
- (NODE *) NULL),
- Node_expression_list,
- (NODE *) NULL);
-
- if (do_lint && ! io_allowed && ! warned) {
- warned = TRUE;
- lintwarn(
- _("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
- }
- }
-
- yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-3].nodetypeval, yyvsp[-1].nodeval);
- if (yyval.nodeval->type == Node_K_printf)
- count_args(yyval.nodeval)
- ;
- break;}
-case 51:
-#line 466 "awkgram.y"
+#line 452 "awkgram.y"
{ NODETYPE type;
if (! io_allowed)
@@ -1732,8 +1698,8 @@ case 51:
yyval.nodeval = node((NODE *) NULL, type, (NODE *) NULL);
;
break;}
-case 52:
-#line 474 "awkgram.y"
+case 50:
+#line 460 "awkgram.y"
{
if (do_lint)
lintwarn(_("`nextfile' is a gawk extension"));
@@ -1753,27 +1719,59 @@ case 52:
yyval.nodeval = node((NODE *) NULL, Node_K_nextfile, (NODE *) NULL);
;
break;}
-case 53:
-#line 493 "awkgram.y"
+case 51:
+#line 479 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_exit, (NODE *) NULL); ;
break;}
-case 54:
-#line 495 "awkgram.y"
+case 52:
+#line 481 "awkgram.y"
{
if (! can_return)
yyerror(_("`return' used outside function context"));
;
break;}
+case 53:
+#line 486 "awkgram.y"
+{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_return, (NODE *) NULL); ;
+ break;}
case 55:
#line 500 "awkgram.y"
-{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_return, (NODE *) NULL); ;
+{
+ yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-4].nodetypeval, yyvsp[0].nodeval);
+ if (yyval.nodeval->type == Node_K_printf)
+ count_args(yyval.nodeval);
+ ;
break;}
case 56:
-#line 502 "awkgram.y"
-{ yyval.nodeval = node(variable(yyvsp[-4].sval, CAN_FREE, Node_var_array), Node_K_delete, yyvsp[-2].nodeval); ;
+#line 506 "awkgram.y"
+{
+ if (yyvsp[-2].nodetypeval == Node_K_print && yyvsp[-1].nodeval == NULL) {
+ static int warned = FALSE;
+
+ yyvsp[-1].nodeval = node(node(make_number(0.0),
+ Node_field_spec,
+ (NODE *) NULL),
+ Node_expression_list,
+ (NODE *) NULL);
+
+ if (do_lint && ! io_allowed && ! warned) {
+ warned = TRUE;
+ lintwarn(
+ _("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
+ }
+ }
+
+ yyval.nodeval = node(yyvsp[-1].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval);
+ if (yyval.nodeval->type == Node_K_printf)
+ count_args(yyval.nodeval);
+ ;
break;}
case 57:
-#line 504 "awkgram.y"
+#line 528 "awkgram.y"
+{ yyval.nodeval = node(variable(yyvsp[-3].sval, CAN_FREE, Node_var_array), Node_K_delete, yyvsp[-1].nodeval); ;
+ break;}
+case 58:
+#line 530 "awkgram.y"
{
if (do_lint)
lintwarn(_("`delete array' is a gawk extension"));
@@ -1785,63 +1783,71 @@ case 57:
errcount++;
error(_("`delete array' is a gawk extension"));
}
- yyval.nodeval = node(variable(yyvsp[-1].sval, CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
+ yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
;
break;}
-case 58:
-#line 518 "awkgram.y"
-{ yyval.nodeval = yyvsp[-1].nodeval; ;
- break;}
case 59:
-#line 523 "awkgram.y"
-{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+#line 544 "awkgram.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
case 60:
-#line 525 "awkgram.y"
-{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+#line 549 "awkgram.y"
+{ yyval.nodeval = NULL; ;
break;}
case 61:
-#line 530 "awkgram.y"
+#line 551 "awkgram.y"
+{ yyval.nodeval = yyvsp[0].nodeval; ;
+ break;}
+case 62:
+#line 556 "awkgram.y"
+{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+ break;}
+case 63:
+#line 558 "awkgram.y"
+{ yyval.nodetypeval = yyvsp[0].nodetypeval; ;
+ break;}
+case 64:
+#line 563 "awkgram.y"
{
yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_if,
node(yyvsp[0].nodeval, Node_if_branches, (NODE *) NULL));
;
break;}
-case 62:
-#line 536 "awkgram.y"
+case 65:
+#line 569 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-6].nodeval, Node_K_if,
node(yyvsp[-3].nodeval, Node_if_branches, yyvsp[0].nodeval)); ;
break;}
-case 63:
-#line 542 "awkgram.y"
+case 66:
+#line 575 "awkgram.y"
{ want_assign = FALSE; ;
break;}
-case 67:
-#line 553 "awkgram.y"
+case 70:
+#line 586 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 68:
-#line 555 "awkgram.y"
+case 71:
+#line 588 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_input, (NODE *) NULL); ;
break;}
-case 69:
-#line 560 "awkgram.y"
+case 72:
+#line 593 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 70:
-#line 562 "awkgram.y"
+case 73:
+#line 595 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_output, (NODE *) NULL); ;
break;}
-case 71:
-#line 564 "awkgram.y"
+case 74:
+#line 597 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_append, (NODE *) NULL); ;
break;}
-case 72:
-#line 566 "awkgram.y"
+case 75:
+#line 599 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_pipe, (NODE *) NULL); ;
break;}
-case 73:
-#line 568 "awkgram.y"
+case 76:
+#line 601 "awkgram.y"
{
if (yyvsp[0].nodeval->type == Node_K_getline
&& yyvsp[0].nodeval->rnode->type == Node_redirect_twoway)
@@ -1849,170 +1855,170 @@ case 73:
yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_twoway, (NODE *) NULL);
;
break;}
-case 74:
-#line 578 "awkgram.y"
+case 77:
+#line 611 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 75:
-#line 580 "awkgram.y"
+case 78:
+#line 613 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 76:
-#line 585 "awkgram.y"
+case 79:
+#line 618 "awkgram.y"
{ yyval.nodeval = make_param(yyvsp[0].sval); ;
break;}
-case 77:
-#line 587 "awkgram.y"
+case 80:
+#line 620 "awkgram.y"
{ yyval.nodeval = append_right(yyvsp[-2].nodeval, make_param(yyvsp[0].sval)); yyerrok; ;
break;}
-case 78:
-#line 589 "awkgram.y"
+case 81:
+#line 622 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 79:
-#line 591 "awkgram.y"
+case 82:
+#line 624 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 80:
-#line 593 "awkgram.y"
+case 83:
+#line 626 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 81:
-#line 599 "awkgram.y"
+case 84:
+#line 632 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 82:
-#line 601 "awkgram.y"
+case 85:
+#line 634 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 83:
-#line 606 "awkgram.y"
+case 86:
+#line 639 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 84:
-#line 608 "awkgram.y"
+case 87:
+#line 641 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 85:
-#line 613 "awkgram.y"
+case 88:
+#line 646 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL); ;
break;}
-case 86:
-#line 615 "awkgram.y"
+case 89:
+#line 648 "awkgram.y"
{
yyval.nodeval = append_right(yyvsp[-2].nodeval,
node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL));
yyerrok;
;
break;}
-case 87:
-#line 621 "awkgram.y"
+case 90:
+#line 654 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 88:
-#line 623 "awkgram.y"
+case 91:
+#line 656 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 89:
-#line 625 "awkgram.y"
+case 92:
+#line 658 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 90:
-#line 627 "awkgram.y"
+case 93:
+#line 660 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 91:
-#line 632 "awkgram.y"
+case 94:
+#line 665 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 92:
-#line 634 "awkgram.y"
+case 95:
+#line 667 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 93:
-#line 639 "awkgram.y"
+case 96:
+#line 672 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL); ;
break;}
-case 94:
-#line 641 "awkgram.y"
+case 97:
+#line 674 "awkgram.y"
{
yyval.nodeval = append_right(yyvsp[-2].nodeval,
node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL));
yyerrok;
;
break;}
-case 95:
-#line 647 "awkgram.y"
+case 98:
+#line 680 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 96:
-#line 649 "awkgram.y"
+case 99:
+#line 682 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 97:
-#line 651 "awkgram.y"
+case 100:
+#line 684 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 98:
-#line 653 "awkgram.y"
+case 101:
+#line 686 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 99:
-#line 658 "awkgram.y"
+case 102:
+#line 691 "awkgram.y"
{ want_assign = FALSE; ;
break;}
-case 100:
-#line 660 "awkgram.y"
+case 103:
+#line 693 "awkgram.y"
{
if (do_lint && yyvsp[0].nodeval->type == Node_regex)
lintwarn(_("regular expression on right of assignment"));
yyval.nodeval = node(yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval);
;
break;}
-case 101:
-#line 666 "awkgram.y"
+case 104:
+#line 699 "awkgram.y"
{ yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-3].nodeval); ;
break;}
-case 102:
-#line 668 "awkgram.y"
+case 105:
+#line 701 "awkgram.y"
{
yyval.nodeval = node(yyvsp[0].nodeval, Node_K_getline,
node(yyvsp[-3].nodeval, Node_redirect_pipein, (NODE *) NULL));
;
break;}
-case 103:
-#line 673 "awkgram.y"
+case 106:
+#line 706 "awkgram.y"
{
yyval.nodeval = node(yyvsp[0].nodeval, Node_K_getline,
node(yyvsp[-3].nodeval, Node_redirect_twoway, (NODE *) NULL));
;
break;}
-case 104:
-#line 678 "awkgram.y"
+case 107:
+#line 711 "awkgram.y"
{
if (do_lint && ! io_allowed && parsing_end_rule && yyvsp[0].nodeval == NULL)
lintwarn(_("non-redirected `getline' undefined inside END action"));
yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_getline, yyvsp[0].nodeval);
;
break;}
-case 105:
-#line 684 "awkgram.y"
+case 108:
+#line 717 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ;
break;}
-case 106:
-#line 686 "awkgram.y"
+case 109:
+#line 719 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ;
break;}
-case 107:
-#line 688 "awkgram.y"
+case 110:
+#line 721 "awkgram.y"
{
if (yyvsp[-2].nodeval->type == Node_regex)
warning(_("regular expression on left of `~' or `!~' operator"));
yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval));
;
break;}
-case 108:
-#line 694 "awkgram.y"
+case 111:
+#line 727 "awkgram.y"
{
yyval.nodeval = yyvsp[0].nodeval;
if (do_lint && tokstart[0] == '*') {
@@ -2023,8 +2029,8 @@ case 108:
}
;
break;}
-case 109:
-#line 704 "awkgram.y"
+case 112:
+#line 737 "awkgram.y"
{
yyval.nodeval = node(node(make_number(0.0),
Node_field_spec,
@@ -2033,144 +2039,144 @@ case 109:
yyvsp[0].nodeval);
;
break;}
-case 110:
-#line 712 "awkgram.y"
+case 113:
+#line 745 "awkgram.y"
{ yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-2].nodeval); ;
break;}
-case 111:
-#line 714 "awkgram.y"
+case 114:
+#line 747 "awkgram.y"
{
if (do_lint && yyvsp[0].nodeval->type == Node_regex)
lintwarn(_("regular expression on right of comparison"));
yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval);
;
break;}
-case 112:
-#line 720 "awkgram.y"
+case 115:
+#line 753 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_less, yyvsp[0].nodeval); ;
break;}
-case 113:
-#line 722 "awkgram.y"
+case 116:
+#line 755 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_greater, yyvsp[0].nodeval); ;
break;}
-case 114:
-#line 724 "awkgram.y"
+case 117:
+#line 757 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));;
break;}
-case 115:
-#line 726 "awkgram.y"
+case 118:
+#line 759 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 116:
-#line 728 "awkgram.y"
+case 119:
+#line 761 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ;
break;}
-case 117:
-#line 733 "awkgram.y"
+case 120:
+#line 766 "awkgram.y"
{ want_assign = FALSE; ;
break;}
-case 118:
-#line 735 "awkgram.y"
+case 121:
+#line 768 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, yyvsp[0].nodeval); ;
break;}
-case 119:
-#line 737 "awkgram.y"
+case 122:
+#line 770 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); ;
break;}
-case 120:
-#line 739 "awkgram.y"
+case 123:
+#line 772 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); ;
break;}
-case 121:
-#line 741 "awkgram.y"
+case 124:
+#line 774 "awkgram.y"
{
if (do_lint && ! io_allowed && yyvsp[0].nodeval == NULL)
lintwarn(_("non-redirected `getline' undefined inside BEGIN or END action"));
yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_getline, yyvsp[0].nodeval);
;
break;}
-case 122:
-#line 747 "awkgram.y"
+case 125:
+#line 780 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 123:
-#line 749 "awkgram.y"
+case 126:
+#line 782 "awkgram.y"
{ yyval.nodeval = node((NODE *) NULL, Node_nomatch, yyvsp[0].nodeval); ;
break;}
-case 124:
-#line 751 "awkgram.y"
+case 127:
+#line 784 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval)); ;
break;}
-case 125:
-#line 753 "awkgram.y"
+case 128:
+#line 786 "awkgram.y"
{ yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-2].nodeval); ;
break;}
-case 126:
-#line 755 "awkgram.y"
+case 129:
+#line 788 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval); ;
break;}
-case 127:
-#line 757 "awkgram.y"
+case 130:
+#line 790 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));;
break;}
-case 128:
-#line 759 "awkgram.y"
+case 131:
+#line 792 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 129:
-#line 761 "awkgram.y"
+case 132:
+#line 794 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); ;
break;}
-case 131:
-#line 768 "awkgram.y"
+case 134:
+#line 801 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_exp, yyvsp[0].nodeval); ;
break;}
-case 132:
-#line 770 "awkgram.y"
+case 135:
+#line 803 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_times, yyvsp[0].nodeval); ;
break;}
-case 133:
-#line 772 "awkgram.y"
+case 136:
+#line 805 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_quotient, yyvsp[0].nodeval); ;
break;}
-case 134:
-#line 774 "awkgram.y"
+case 137:
+#line 807 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_mod, yyvsp[0].nodeval); ;
break;}
-case 135:
-#line 776 "awkgram.y"
+case 138:
+#line 809 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_plus, yyvsp[0].nodeval); ;
break;}
-case 136:
-#line 778 "awkgram.y"
+case 139:
+#line 811 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-2].nodeval, Node_minus, yyvsp[0].nodeval); ;
break;}
-case 137:
-#line 780 "awkgram.y"
+case 140:
+#line 813 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_postincrement, (NODE *) NULL); ;
break;}
-case 138:
-#line 782 "awkgram.y"
+case 141:
+#line 815 "awkgram.y"
{ yyval.nodeval = node(yyvsp[-1].nodeval, Node_postdecrement, (NODE *) NULL); ;
break;}
-case 139:
-#line 787 "awkgram.y"
+case 142:
+#line 820 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_not, (NODE *) NULL); ;
break;}
-case 140:
-#line 789 "awkgram.y"
+case 143:
+#line 822 "awkgram.y"
{ yyval.nodeval = yyvsp[-1].nodeval; ;
break;}
-case 141:
-#line 792 "awkgram.y"
+case 144:
+#line 825 "awkgram.y"
{ yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ;
break;}
-case 142:
-#line 794 "awkgram.y"
+case 145:
+#line 827 "awkgram.y"
{ yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); ;
break;}
-case 143:
-#line 796 "awkgram.y"
+case 146:
+#line 829 "awkgram.y"
{
if (do_lint)
lintwarn(_("call of `length' without parentheses is not portable"));
@@ -2179,8 +2185,8 @@ case 143:
warning(_("call of `length' without parentheses is deprecated by POSIX"));
;
break;}
-case 144:
-#line 804 "awkgram.y"
+case 147:
+#line 837 "awkgram.y"
{
yyval.nodeval = node(yyvsp[-1].nodeval, Node_func_call, make_string(yyvsp[-3].sval, strlen(yyvsp[-3].sval)));
func_use(yyvsp[-3].sval, FUNC_USE);
@@ -2188,34 +2194,34 @@ case 144:
free(yyvsp[-3].sval);
;
break;}
-case 146:
-#line 812 "awkgram.y"
+case 149:
+#line 845 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_preincrement, (NODE *) NULL); ;
break;}
-case 147:
-#line 814 "awkgram.y"
+case 150:
+#line 847 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_predecrement, (NODE *) NULL); ;
break;}
-case 148:
-#line 816 "awkgram.y"
+case 151:
+#line 849 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 149:
-#line 818 "awkgram.y"
+case 152:
+#line 851 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 150:
-#line 821 "awkgram.y"
+case 153:
+#line 854 "awkgram.y"
{
- if (yyvsp[0].nodeval->type == Node_val) {
+ if (yyvsp[0].nodeval->type == Node_val && (yyvsp[0].nodeval->flags & (STR|STRING)) == 0) {
yyvsp[0].nodeval->numbr = -(force_number(yyvsp[0].nodeval));
yyval.nodeval = yyvsp[0].nodeval;
} else
yyval.nodeval = node(yyvsp[0].nodeval, Node_unary_minus, (NODE *) NULL);
;
break;}
-case 151:
-#line 829 "awkgram.y"
+case 154:
+#line 862 "awkgram.y"
{
/*
* was: $$ = $2
@@ -2224,20 +2230,20 @@ case 151:
yyval.nodeval = node (make_number(0.0), Node_plus, yyvsp[0].nodeval);
;
break;}
-case 152:
-#line 840 "awkgram.y"
+case 155:
+#line 873 "awkgram.y"
{ yyval.nodeval = NULL; ;
break;}
-case 153:
-#line 842 "awkgram.y"
+case 156:
+#line 875 "awkgram.y"
{ yyval.nodeval = yyvsp[0].nodeval; ;
break;}
-case 154:
-#line 847 "awkgram.y"
+case 157:
+#line 880 "awkgram.y"
{ yyval.nodeval = variable(yyvsp[0].sval, CAN_FREE, Node_var); ;
break;}
-case 155:
-#line 849 "awkgram.y"
+case 158:
+#line 882 "awkgram.y"
{
if (yyvsp[-1].nodeval == NULL) {
fatal(_("invalid subscript expression"));
@@ -2248,24 +2254,24 @@ case 155:
yyval.nodeval = node(variable(yyvsp[-3].sval, CAN_FREE, Node_var_array), Node_subscript, yyvsp[-1].nodeval);
;
break;}
-case 156:
-#line 859 "awkgram.y"
+case 159:
+#line 892 "awkgram.y"
{ yyval.nodeval = node(yyvsp[0].nodeval, Node_field_spec, (NODE *) NULL); ;
break;}
-case 158:
-#line 867 "awkgram.y"
+case 161:
+#line 900 "awkgram.y"
{ yyerrok; ;
break;}
-case 159:
-#line 871 "awkgram.y"
+case 162:
+#line 904 "awkgram.y"
{ yyerrok; ;
break;}
-case 162:
-#line 880 "awkgram.y"
+case 165:
+#line 913 "awkgram.y"
{ yyerrok; want_assign = FALSE; ;
break;}
-case 163:
-#line 883 "awkgram.y"
+case 166:
+#line 916 "awkgram.y"
{ yyerrok; ;
break;}
}
@@ -2490,7 +2496,7 @@ yyerrhandle:
}
return 1;
}
-#line 886 "awkgram.y"
+#line 919 "awkgram.y"
struct token {
@@ -2527,6 +2533,7 @@ static struct token tokentab[] = {
{"continue", Node_K_continue, LEX_CONTINUE, 0, 0},
{"cos", Node_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_cos},
{"dcgettext", Node_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_dcgettext},
+{"dcngettext", Node_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3)|A(4)|A(5), do_dcngettext},
{"delete", Node_K_delete, LEX_DELETE, NOT_OLD, 0},
{"do", Node_K_do, LEX_DO, NOT_OLD, 0},
{"else", Node_illegal, LEX_ELSE, 0, 0},
@@ -2577,6 +2584,20 @@ static struct token tokentab[] = {
{"xor", Node_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor},
};
+#ifdef MBS_SUPPORT
+/* Variable containing the current shift state. */
+static mbstate_t cur_mbstate;
+/* Ring buffer containing current characters. */
+#define MAX_CHAR_IN_RING_BUFFER 8
+#define RING_BUFFER_SIZE (MAX_CHAR_IN_RING_BUFFER * MB_LEN_MAX)
+static char cur_char_ring[RING_BUFFER_SIZE];
+/* Index for ring buffers. */
+static int cur_ring_idx;
+/* This macro means that last nextc() return a singlebyte character
+ or 1st byte of a multibyte character. */
+#define nextc_is_1stbyte (cur_char_ring[cur_ring_idx] == 1)
+#endif /* MBS_SUPPORT */
+
/* getfname --- return name of a builtin function (for pretty printing) */
const char *
@@ -2614,7 +2635,8 @@ static void
const char *mesg = NULL;
register char *bp, *cp;
char *scan;
- char buf[120];
+ char *buf;
+ int count;
static char end_of_file_line[] = "(END OF FILE)";
errcount++;
@@ -2641,11 +2663,24 @@ static void
bp = thisline + strlen(thisline);
}
msg("%.*s", (int) (bp - thisline), thisline);
+
+#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__
+ va_start(args, m);
+ if (mesg == NULL)
+ mesg = m;
+#else
+ va_start(args);
+ if (mesg == NULL)
+ mesg = va_arg(args, char *);
+#endif
+ count = (bp - thisline) + strlen(mesg) + 2 + 1;
+ emalloc(buf, char *, count, "yyerror");
+
bp = buf;
- cp = buf + sizeof(buf) - 24; /* 24 more than longest msg. input */
+
if (lexptr != NULL) {
scan = thisline;
- while (bp < cp && scan < lexeme)
+ while (scan < lexeme)
if (*scan++ == '\t')
*bp++ = '\t';
else
@@ -2653,18 +2688,10 @@ static void
*bp++ = '^';
*bp++ = ' ';
}
-#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__
- va_start(args, m);
- if (mesg == NULL)
- mesg = m;
-#else
- va_start(args);
- if (mesg == NULL)
- mesg = va_arg(args, char *);
-#endif
strcpy(bp, mesg);
err("", buf, args);
va_end(args);
+ free(buf);
}
/* get_src_buf --- read the next buffer of source program */
@@ -2845,6 +2872,75 @@ tokexpand()
/* nextc --- get the next input character */
+#ifdef MBS_SUPPORT
+
+static int
+nextc()
+{
+ if (MB_CUR_MAX > 1) {
+ /* Update the buffer index. */
+ cur_ring_idx = (cur_ring_idx == RING_BUFFER_SIZE - 1)? 0 :
+ cur_ring_idx + 1;
+
+ /* Did we already check the current character? */
+ if (cur_char_ring[cur_ring_idx] == 0) {
+ /* No, we need to check the next character on the buffer. */
+ int idx, work_ring_idx = cur_ring_idx;
+ mbstate_t tmp_state;
+ size_t mbclen;
+
+ if (!lexptr || lexptr >= lexend)
+ if (!get_src_buf()) {
+ return EOF;
+ }
+
+ for (idx = 0 ; lexptr + idx < lexend ; idx++) {
+ tmp_state = cur_mbstate;
+ mbclen = mbrlen(lexptr, idx + 1, &tmp_state);
+
+ if (mbclen == 1 || mbclen == (size_t)-1 || mbclen == 0) {
+ /* It is a singlebyte character, non-complete multibyte
+ character or EOF. We treat it as a singlebyte
+ character. */
+ cur_char_ring[work_ring_idx] = 1;
+ break;
+ } else if (mbclen == (size_t)-2) {
+ /* It is not a complete multibyte character. */
+ cur_char_ring[work_ring_idx] = idx + 1;
+ } else {
+ /* mbclen > 1 */
+ cur_char_ring[work_ring_idx] = mbclen;
+ break;
+ }
+ work_ring_idx = (work_ring_idx == RING_BUFFER_SIZE - 1)?
+ 0 : work_ring_idx + 1;
+ }
+ cur_mbstate = tmp_state;
+
+ /* Put a mark on the position on which we write next character. */
+ work_ring_idx = (work_ring_idx == RING_BUFFER_SIZE - 1)?
+ 0 : work_ring_idx + 1;
+ cur_char_ring[work_ring_idx] = 0;
+ }
+
+ return (int) (unsigned char) *lexptr++;
+ }
+ else {
+ int c;
+
+ if (lexptr && lexptr < lexend)
+ c = (int) (unsigned char) *lexptr++;
+ else if (get_src_buf())
+ c = (int) (unsigned char) *lexptr++;
+ else
+ c = EOF;
+
+ return c;
+ }
+}
+
+#else /* MBS_SUPPORT */
+
#if GAWKDEBUG
int
nextc()
@@ -2867,10 +2963,29 @@ nextc()
)
#endif
+#endif /* MBS_SUPPORT */
+
/* pushback --- push a character back on the input */
+#ifdef MBS_SUPPORT
+
+static void
+pushback()
+{
+ if (MB_CUR_MAX > 1) {
+ cur_ring_idx = (cur_ring_idx == 0)? RING_BUFFER_SIZE - 1 :
+ cur_ring_idx - 1;
+ (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
+ } else
+ (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
+}
+
+#else
+
#define pushback() (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr)
+#endif /* MBS_SUPPORT */
+
/* allow_newline --- allow newline after &&, ||, ? and : */
static void
@@ -2925,7 +3040,7 @@ yylex()
return 0;
}
pushback();
-#ifdef OS2
+#if defined OS2 || defined __EMX__
/*
* added for OS/2's extproc feature of cmd.exe
* (like #! in BSD sh)
@@ -2960,6 +3075,9 @@ yylex()
tok = tokstart;
for (;;) {
c = nextc();
+#ifdef MBS_SUPPORT
+ if (MB_CUR_MAX == 1 || nextc_is_1stbyte)
+#endif
switch (c) {
case '[':
/* one day check for `.' and `=' too */
@@ -3017,6 +3135,9 @@ retry:
tok = tokstart;
yylval.nodetypeval = Node_illegal;
+#ifdef MBS_SUPPORT
+ if (MB_CUR_MAX == 1 || nextc_is_1stbyte)
+#endif
switch (c) {
case EOF:
if (lasttok != NEWLINE) {
@@ -3258,6 +3379,9 @@ retry:
yyerror(_("unterminated string"));
exit(1);
}
+#ifdef MBS_SUPPORT
+ if (MB_CUR_MAX == 1 || nextc_is_1stbyte)
+#endif
if (c == '\\') {
c = nextc();
if (c == '\n') {
@@ -3387,9 +3511,15 @@ retry:
eof_warned = TRUE;
}
tokadd('\0');
- if (! do_traditional && isnondecimal(tokstart))
+ if (! do_traditional && isnondecimal(tokstart)) {
+ static short warned = FALSE;
+ if (do_lint && ! warned) {
+ warned = TRUE;
+ lintwarn("numeric constant `%.*s' treated as octal or hexadecimal",
+ strlen(tokstart)-1, tokstart);
+ }
yylval.nodeval = make_number(nondec2awknum(tokstart, strlen(tokstart)));
- else
+ } else
yylval.nodeval = make_number(atof(tokstart));
yylval.nodeval->flags |= PERM;
return lasttok = YNUMBER;
@@ -3424,7 +3554,21 @@ retry:
exit(1);
}
- if (! do_traditional && c == '_') {
+ /*
+ * Lots of fog here. Consider:
+ *
+ * print "xyzzy"$_"foo"
+ *
+ * Without the check for ` lasttok != '$'' ', this is parsed as
+ *
+ * print "xxyzz" $(_"foo")
+ *
+ * With the check, it is "correctly" parsed as three
+ * string concatenations. Sigh. This seems to be
+ * "more correct", but this is definitely one of those
+ * occasions where the interactions are funny.
+ */
+ if (! do_traditional && c == '_' && lasttok != '$') {
if ((c = nextc()) == '"') {
intlstr = TRUE;
goto string;
@@ -3561,7 +3705,7 @@ snode(NODE *subn, NODETYPE op, int idx)
/* traverse expression list to see how many args. given */
for (n = subn; n != NULL; n = n->rnode) {
nexp++;
- if (nexp > 3)
+ if (nexp > 5)
break;
}
@@ -3655,9 +3799,22 @@ snode(NODE *subn, NODETYPE op, int idx)
/* don't dump it, the lexer already did */
else
dumpintlstr(str->stptr, str->stlen);
+ } else if (do_intl /* --gen-po */
+ && r->proc == do_dcngettext /* dcngettext(...) */
+ && subn->lnode->type == Node_val /* 1st arg is constant */
+ && (subn->lnode->flags & STR) != 0 /* it's a string constant */
+ && subn->rnode->lnode->type == Node_val /* 2nd arg is constant too */
+ && (subn->rnode->lnode->flags & STR) != 0) { /* it's a string constant */
+ /* ala xgettext, dcngettext("some string", "some plural" ...) dumps the string */
+ NODE *str1 = subn->lnode;
+ NODE *str2 = subn->rnode->lnode;
+
+ if (((str1->flags | str2->flags) & INTLSTR) != 0)
+ warning(_("use of dcngettext(_\"...\") is incorrect: remove leading underscore"));
+ else
+ dumpintlstr2(str1->stptr, str1->stlen, str2->stptr, str2->stlen);
}
-
r->subnode = subn;
if (r->proc == do_sprintf) {
count_args(r);
@@ -4334,7 +4491,7 @@ mk_rexp(NODE *exp)
return exp;
getnode(n);
- n->type = Node_regex;
+ n->type = Node_dynregex;
n->re_exp = exp;
n->re_text = NULL;
n->re_reg = NULL;
@@ -4436,7 +4593,7 @@ isassignable(register NODE *n)
NODE *
stopme(NODE *tree)
{
- return tmp_number((AWKNUM) 0.0);
+ return 0;
}
/* dumpintlstr --- write out an initial .po file entry for the string */
@@ -4456,10 +4613,36 @@ dumpintlstr(char *str, size_t len)
}
printf("msgid ");
- fflush(stdout);
pp_string_fp(stdout, str, len, '"', TRUE);
putchar('\n');
printf("msgstr \"\"\n\n");
+ fflush(stdout);
+}
+
+/* dumpintlstr2 --- write out an initial .po file entry for the string and its plural */
+
+static void
+dumpintlstr2(char *str1, size_t len1, char *str2, size_t len2)
+{
+ char *cp;
+
+ /* See the GNU gettext distribution for details on the file format */
+
+ if (source != NULL) {
+ /* ala the gettext sources, remove leading `./'s */
+ for (cp = source; cp[0] == '.' && cp[1] == '/'; cp += 2)
+ continue;
+ printf("#: %s:%d\n", cp, sourceline);
+ }
+
+ printf("msgid ");
+ pp_string_fp(stdout, str1, len1, '"', TRUE);
+ putchar('\n');
+ printf("msgid_plural ");
+ pp_string_fp(stdout, str2, len2, '"', TRUE);
+ putchar('\n');
+ printf("msgstr[0] \"\"\nmsgstr[1] \"\"\n\n");
+ fflush(stdout);
}
/* count_args --- count the number of printf arguments */