598
638
static const yytype_uint16 yyprhs[] =
600
0, 0, 3, 7, 8, 11, 14, 17, 20, 23,
601
24, 26, 30, 32, 34, 36, 38, 44, 46, 48,
602
50, 52, 54, 55, 63, 64, 68, 70, 72, 73,
603
76, 79, 81, 84, 87, 91, 93, 103, 110, 119,
604
128, 141, 153, 156, 159, 162, 165, 169, 170, 175,
605
178, 179, 184, 190, 193, 198, 200, 201, 203, 205,
606
206, 209, 212, 218, 223, 225, 228, 231, 233, 235,
607
237, 239, 241, 247, 248, 249, 253, 260, 270, 272,
608
275, 276, 278, 279, 282, 283, 285, 287, 291, 293,
609
296, 300, 301, 303, 304, 306, 308, 312, 314, 317,
610
321, 325, 329, 333, 337, 341, 345, 349, 355, 357,
611
359, 361, 364, 366, 368, 370, 372, 374, 376, 379,
612
381, 385, 389, 393, 397, 401, 405, 409, 412, 415,
613
421, 426, 430, 434, 438, 442, 446, 450, 452, 455,
614
459, 464, 469, 471, 473, 475, 478, 481, 483, 485,
615
488, 491, 493, 496, 501, 502, 504, 506, 511, 513,
616
517, 519, 521, 522, 525, 528, 530, 531, 533, 535,
640
0, 0, 3, 4, 7, 10, 13, 16, 19, 22,
641
25, 30, 32, 35, 37, 38, 40, 44, 46, 48,
642
50, 52, 58, 60, 62, 64, 67, 69, 71, 72,
643
80, 81, 85, 87, 89, 90, 93, 96, 98, 101,
644
104, 108, 110, 120, 127, 136, 145, 158, 170, 172,
645
175, 178, 181, 184, 188, 189, 194, 197, 198, 203,
646
204, 209, 214, 216, 217, 219, 221, 222, 225, 228,
647
234, 239, 241, 244, 247, 249, 251, 253, 255, 257,
648
261, 262, 263, 267, 274, 284, 286, 289, 290, 292,
649
293, 296, 297, 299, 301, 305, 307, 310, 314, 315,
650
317, 318, 320, 322, 326, 328, 331, 335, 339, 343,
651
347, 351, 355, 359, 363, 369, 371, 373, 375, 378,
652
380, 382, 384, 386, 388, 390, 393, 395, 399, 403,
653
407, 411, 415, 419, 423, 426, 429, 435, 440, 444,
654
448, 452, 456, 460, 464, 466, 469, 473, 478, 483,
655
485, 487, 489, 492, 495, 497, 499, 502, 505, 507,
656
510, 515, 516, 518, 519, 522, 524, 527, 529, 533,
657
535, 538, 541, 543, 546, 548, 552, 554, 556, 557,
658
560, 563, 565, 566, 568, 570, 572
620
661
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
621
static const yytype_int8 yyrhs[] =
662
static const yytype_int16 yyrhs[] =
623
71, 0, -1, 100, 72, 100, -1, -1, 72, 73,
624
-1, 72, 1, -1, 74, 75, -1, 74, 84, -1,
625
78, 75, -1, -1, 107, -1, 107, 50, 107, -1,
626
16, -1, 17, -1, 22, -1, 23, -1, 121, 83,
627
122, 124, 100, -1, 4, -1, 3, -1, 77, -1,
628
44, -1, 45, -1, -1, 36, 79, 76, 62, 102,
629
123, 100, -1, -1, 82, 81, 5, -1, 56, -1,
630
47, -1, -1, 83, 85, -1, 83, 1, -1, 99,
631
-1, 125, 100, -1, 125, 100, -1, 121, 83, 122,
632
-1, 98, -1, 24, 62, 107, 123, 100, 121, 90,
633
100, 122, -1, 27, 62, 107, 123, 100, 85, -1,
634
28, 100, 85, 27, 62, 107, 123, 100, -1, 29,
635
62, 4, 39, 4, 123, 100, 85, -1, 29, 62,
636
89, 125, 100, 107, 125, 100, 89, 123, 100, 85,
637
-1, 29, 62, 89, 125, 100, 125, 100, 89, 123,
638
100, 85, -1, 30, 84, -1, 31, 84, -1, 34,
639
84, -1, 38, 84, -1, 35, 104, 84, -1, -1,
640
20, 86, 104, 84, -1, 87, 84, -1, -1, 94,
641
88, 95, 96, -1, 21, 4, 64, 106, 65, -1,
642
21, 4, -1, 21, 62, 4, 63, -1, 107, -1,
643
-1, 87, -1, 91, -1, -1, 91, 92, -1, 91,
644
1, -1, 25, 93, 126, 100, 83, -1, 26, 126,
645
100, 83, -1, 7, -1, 54, 7, -1, 53, 7,
646
-1, 8, -1, 80, -1, 32, -1, 33, -1, 105,
647
-1, 62, 107, 127, 106, 123, -1, -1, -1, 10,
648
97, 111, -1, 18, 62, 107, 123, 100, 85, -1,
649
18, 62, 107, 123, 100, 85, 19, 100, 85, -1,
650
46, -1, 99, 46, -1, -1, 99, -1, -1, 51,
651
112, -1, -1, 103, -1, 4, -1, 103, 127, 4,
652
-1, 1, -1, 103, 1, -1, 103, 127, 1, -1,
653
-1, 107, -1, -1, 106, -1, 107, -1, 106, 127,
654
107, -1, 1, -1, 106, 1, -1, 106, 1, 107,
655
-1, 106, 127, 1, -1, 118, 108, 107, -1, 107,
656
40, 107, -1, 107, 41, 107, -1, 107, 14, 107,
657
-1, 107, 39, 4, -1, 107, 110, 107, -1, 107,
658
48, 107, 49, 107, -1, 111, -1, 13, -1, 12,
659
-1, 47, 13, -1, 9, -1, 51, -1, 109, -1,
660
52, -1, 112, -1, 113, -1, 111, 112, -1, 114,
661
-1, 112, 60, 112, -1, 112, 55, 112, -1, 112,
662
56, 112, -1, 112, 57, 112, -1, 112, 53, 112,
663
-1, 112, 54, 112, -1, 37, 117, 101, -1, 118,
664
42, -1, 118, 43, -1, 62, 106, 123, 39, 4,
665
-1, 111, 11, 37, 117, -1, 113, 60, 112, -1,
666
113, 55, 112, -1, 113, 56, 112, -1, 113, 57,
667
112, -1, 113, 53, 112, -1, 113, 54, 112, -1,
668
80, -1, 58, 112, -1, 62, 107, 123, -1, 44,
669
62, 105, 123, -1, 45, 62, 105, 123, -1, 45,
670
-1, 115, -1, 118, -1, 42, 118, -1, 43, 118,
671
-1, 7, -1, 8, -1, 54, 112, -1, 53, 112,
672
-1, 116, -1, 66, 116, -1, 3, 62, 105, 123,
673
-1, -1, 118, -1, 4, -1, 4, 64, 106, 65,
674
-1, 119, -1, 61, 114, 120, -1, 42, -1, 43,
675
-1, -1, 67, 100, -1, 68, 100, -1, 63, -1,
676
-1, 125, -1, 69, -1, 49, -1, 50, 100, -1
664
75, 0, -1, -1, 75, 76, -1, 75, 105, -1,
665
75, 47, -1, 75, 1, -1, 78, 79, -1, 78,
666
88, -1, 82, 79, -1, 68, 48, 77, 88, -1,
667
6, -1, 6, 1, -1, 1, -1, -1, 113, -1,
668
113, 54, 113, -1, 17, -1, 18, -1, 36, -1,
669
37, -1, 133, 87, 134, 136, 106, -1, 4, -1,
670
3, -1, 81, -1, 68, 49, -1, 45, -1, 46,
671
-1, -1, 35, 83, 80, 66, 108, 135, 106, -1,
672
-1, 86, 85, 5, -1, 60, -1, 51, -1, -1,
673
87, 89, -1, 87, 1, -1, 105, -1, 137, 106,
674
-1, 137, 106, -1, 133, 87, 134, -1, 104, -1,
675
23, 66, 113, 135, 106, 133, 96, 106, 134, -1,
676
26, 66, 113, 135, 106, 89, -1, 27, 106, 89,
677
26, 66, 113, 135, 106, -1, 28, 66, 4, 40,
678
130, 135, 106, 89, -1, 28, 66, 95, 137, 106,
679
113, 137, 106, 95, 135, 106, 89, -1, 28, 66,
680
95, 137, 106, 137, 106, 95, 135, 106, 89, -1,
681
90, -1, 29, 88, -1, 30, 88, -1, 33, 88,
682
-1, 39, 88, -1, 34, 110, 88, -1, -1, 21,
683
91, 110, 88, -1, 92, 88, -1, -1, 100, 93,
684
101, 102, -1, -1, 22, 4, 94, 124, -1, 22,
685
66, 4, 67, -1, 113, -1, -1, 92, -1, 97,
686
-1, -1, 97, 98, -1, 97, 1, -1, 24, 99,
687
138, 106, 87, -1, 25, 138, 106, 87, -1, 7,
688
-1, 58, 7, -1, 57, 7, -1, 8, -1, 84,
689
-1, 31, -1, 32, -1, 111, -1, 66, 112, 135,
690
-1, -1, -1, 10, 103, 117, -1, 19, 66, 113,
691
135, 106, 89, -1, 19, 66, 113, 135, 106, 89,
692
20, 106, 89, -1, 50, -1, 105, 50, -1, -1,
693
105, -1, -1, 55, 118, -1, -1, 109, -1, 4,
694
-1, 109, 139, 4, -1, 1, -1, 109, 1, -1,
695
109, 139, 1, -1, -1, 113, -1, -1, 112, -1,
696
113, -1, 112, 139, 113, -1, 1, -1, 112, 1,
697
-1, 112, 1, 113, -1, 112, 139, 1, -1, 131,
698
114, 113, -1, 113, 41, 113, -1, 113, 42, 113,
699
-1, 113, 14, 113, -1, 113, 40, 130, -1, 113,
700
116, 113, -1, 113, 52, 113, 53, 113, -1, 117,
701
-1, 13, -1, 12, -1, 51, 13, -1, 9, -1,
702
55, -1, 115, -1, 56, -1, 118, -1, 119, -1,
703
117, 118, -1, 120, -1, 118, 64, 118, -1, 118,
704
59, 118, -1, 118, 60, 118, -1, 118, 61, 118,
705
-1, 118, 57, 118, -1, 118, 58, 118, -1, 38,
706
123, 107, -1, 131, 43, -1, 131, 44, -1, 66,
707
112, 135, 40, 130, -1, 117, 11, 38, 123, -1,
708
119, 64, 118, -1, 119, 59, 118, -1, 119, 60,
709
118, -1, 119, 61, 118, -1, 119, 57, 118, -1,
710
119, 58, 118, -1, 84, -1, 62, 118, -1, 66,
711
113, 135, -1, 45, 66, 111, 135, -1, 46, 66,
712
111, 135, -1, 46, -1, 121, -1, 131, -1, 43,
713
131, -1, 44, 131, -1, 7, -1, 8, -1, 58,
714
118, -1, 57, 118, -1, 122, -1, 68, 122, -1,
715
3, 66, 111, 135, -1, -1, 131, -1, -1, 125,
716
16, -1, 126, -1, 125, 126, -1, 127, -1, 69,
717
112, 70, -1, 127, -1, 128, 127, -1, 128, 16,
718
-1, 4, -1, 4, 129, -1, 130, -1, 65, 120,
719
132, -1, 43, -1, 44, -1, -1, 71, 106, -1,
720
72, 106, -1, 67, -1, -1, 137, -1, 73, -1,
679
724
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
680
725
static const yytype_uint16 yyrline[] =
682
0, 187, 187, 193, 195, 200, 212, 216, 234, 245,
683
248, 252, 262, 271, 280, 285, 293, 298, 300, 302,
684
313, 314, 319, 318, 342, 341, 367, 368, 373, 374,
685
392, 397, 398, 402, 404, 406, 408, 410, 412, 414,
686
458, 462, 467, 470, 473, 485, 523, 526, 525, 535,
687
547, 547, 578, 580, 598, 620, 626, 627, 632, 685,
688
686, 703, 708, 710, 715, 717, 722, 724, 726, 731,
689
732, 740, 741, 747, 752, 752, 764, 769, 776, 777,
690
780, 782, 787, 788, 794, 795, 800, 802, 804, 806,
691
808, 815, 816, 822, 823, 828, 830, 836, 838, 840,
692
842, 847, 853, 855, 857, 863, 869, 875, 877, 882,
693
884, 886, 891, 893, 897, 898, 903, 905, 907, 912,
694
914, 916, 918, 920, 922, 924, 926, 947, 949, 951,
695
964, 969, 971, 973, 975, 977, 979, 984, 986, 988,
696
990, 993, 995, 1009, 1010, 1011, 1013, 1015, 1017, 1020,
697
1028, 1039, 1044, 1060, 1071, 1072, 1077, 1079, 1094, 1104,
698
1119, 1120, 1121, 1125, 1129, 1133, 1136, 1138, 1142, 1146,
727
0, 215, 215, 217, 222, 223, 227, 239, 243, 254,
728
262, 270, 279, 281, 287, 288, 290, 316, 326, 336,
729
342, 351, 361, 363, 365, 376, 381, 382, 387, 386,
730
416, 415, 446, 448, 453, 454, 467, 472, 473, 477,
731
479, 481, 488, 509, 555, 598, 708, 715, 722, 732,
732
741, 750, 757, 782, 797, 796, 808, 820, 820, 916,
733
916, 944, 970, 976, 977, 982, 1035, 1036, 1048, 1053,
734
1072, 1090, 1095, 1102, 1108, 1113, 1121, 1123, 1132, 1133,
735
1141, 1146, 1146, 1157, 1161, 1169, 1170, 1173, 1175, 1180,
736
1181, 1188, 1190, 1194, 1200, 1207, 1209, 1211, 1218, 1219,
737
1225, 1226, 1231, 1233, 1238, 1240, 1242, 1244, 1250, 1256,
738
1258, 1260, 1275, 1284, 1290, 1292, 1297, 1299, 1301, 1309,
739
1311, 1316, 1318, 1323, 1325, 1327, 1375, 1377, 1379, 1381,
740
1383, 1385, 1387, 1389, 1410, 1415, 1420, 1443, 1449, 1451,
741
1453, 1455, 1457, 1459, 1464, 1468, 1508, 1510, 1516, 1522,
742
1534, 1535, 1536, 1541, 1546, 1550, 1554, 1566, 1579, 1584,
743
1620, 1638, 1639, 1645, 1646, 1651, 1653, 1660, 1677, 1694,
744
1696, 1703, 1708, 1716, 1730, 1742, 1751, 1755, 1759, 1763,
745
1767, 1771, 1774, 1776, 1780, 1784, 1788
797
848
means the default is an error. */
798
849
static const yytype_uint8 yydefact[] =
800
80, 78, 0, 81, 3, 1, 79, 0, 5, 0,
801
156, 147, 148, 12, 13, 14, 15, 22, 154, 0,
802
0, 0, 142, 27, 0, 0, 26, 0, 0, 0,
803
0, 4, 0, 0, 137, 24, 2, 10, 108, 116,
804
117, 119, 143, 151, 144, 158, 0, 0, 0, 82,
805
155, 145, 146, 0, 0, 150, 144, 149, 138, 0,
806
162, 144, 97, 0, 95, 152, 80, 168, 6, 7,
807
31, 28, 80, 8, 0, 112, 0, 0, 0, 0,
808
0, 0, 113, 115, 114, 0, 0, 118, 0, 0,
809
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810
110, 109, 127, 128, 0, 0, 0, 0, 95, 0,
811
18, 17, 20, 21, 0, 19, 0, 126, 0, 0,
812
0, 160, 161, 159, 98, 80, 165, 0, 0, 139,
813
163, 0, 32, 25, 104, 105, 102, 103, 0, 11,
814
106, 154, 124, 125, 121, 122, 123, 120, 135, 136,
815
132, 133, 134, 131, 111, 101, 153, 157, 0, 83,
816
140, 141, 99, 170, 0, 100, 96, 30, 0, 47,
817
0, 0, 0, 80, 0, 0, 0, 69, 70, 0,
818
91, 0, 80, 29, 0, 50, 35, 55, 28, 166,
819
80, 0, 130, 88, 86, 0, 0, 129, 0, 91,
820
53, 0, 0, 0, 0, 56, 42, 43, 44, 0,
821
92, 45, 164, 49, 0, 0, 80, 167, 33, 107,
822
80, 89, 0, 0, 0, 0, 0, 0, 0, 0,
823
156, 57, 0, 46, 0, 73, 71, 34, 16, 23,
824
90, 87, 80, 48, 0, 54, 80, 80, 0, 0,
825
80, 95, 74, 51, 0, 52, 0, 0, 0, 0,
826
0, 0, 0, 76, 59, 37, 0, 80, 0, 80,
827
0, 75, 80, 80, 0, 80, 0, 80, 56, 72,
828
0, 0, 61, 0, 0, 60, 38, 39, 56, 0,
829
77, 36, 64, 67, 0, 0, 68, 0, 169, 80,
830
0, 80, 66, 65, 80, 28, 80, 0, 28, 0,
851
2, 0, 1, 6, 0, 172, 154, 155, 17, 18,
852
28, 19, 20, 161, 0, 0, 0, 149, 5, 85,
853
33, 0, 0, 32, 0, 0, 0, 0, 3, 0,
854
0, 144, 30, 4, 15, 115, 123, 124, 126, 150,
855
158, 174, 151, 0, 0, 169, 0, 173, 0, 89,
856
162, 152, 153, 0, 0, 0, 157, 151, 156, 145,
857
0, 178, 151, 104, 0, 102, 0, 159, 87, 184,
858
7, 8, 37, 34, 87, 9, 0, 86, 119, 0,
859
0, 0, 0, 0, 0, 120, 122, 121, 0, 0,
860
125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861
0, 0, 0, 117, 116, 134, 135, 0, 0, 0,
862
0, 102, 0, 171, 170, 23, 22, 26, 27, 0,
863
0, 24, 0, 133, 0, 0, 0, 176, 177, 175,
864
105, 87, 181, 0, 0, 146, 13, 0, 0, 88,
865
179, 0, 38, 31, 111, 112, 109, 110, 0, 16,
866
113, 161, 131, 132, 128, 129, 130, 127, 142, 143,
867
139, 140, 141, 138, 118, 108, 160, 168, 25, 0,
868
90, 147, 148, 106, 186, 0, 107, 103, 12, 10,
869
36, 0, 54, 0, 0, 0, 87, 0, 0, 0,
870
76, 77, 0, 98, 0, 87, 35, 48, 0, 57,
871
41, 62, 34, 182, 87, 0, 137, 95, 93, 0,
872
0, 136, 0, 98, 59, 0, 0, 0, 0, 63,
873
49, 50, 51, 0, 99, 52, 180, 56, 0, 0,
874
87, 183, 39, 114, 87, 96, 0, 0, 0, 163,
875
0, 0, 0, 0, 172, 64, 0, 53, 0, 80,
876
78, 40, 21, 29, 97, 94, 87, 55, 60, 0,
877
165, 167, 61, 87, 87, 0, 0, 87, 0, 81,
878
58, 0, 164, 166, 0, 0, 0, 0, 0, 79,
879
0, 83, 66, 43, 0, 87, 0, 87, 82, 87,
880
87, 0, 87, 0, 87, 63, 0, 0, 68, 0,
881
0, 67, 44, 45, 63, 0, 84, 42, 71, 74,
882
0, 0, 75, 0, 185, 87, 0, 87, 73, 72,
883
87, 34, 87, 0, 34, 0, 0, 47, 0, 46
834
886
/* YYDEFGOTO[NTERM-NUM]. */
835
887
static const yytype_int16 yydefgoto[] =
837
-1, 2, 7, 31, 32, 68, 114, 115, 33, 48,
838
34, 74, 35, 131, 69, 183, 199, 184, 214, 232,
839
273, 274, 285, 297, 185, 235, 253, 262, 186, 3,
840
4, 117, 195, 196, 209, 106, 107, 187, 105, 84,
841
85, 38, 39, 40, 41, 42, 43, 49, 44, 45,
842
123, 188, 189, 129, 216, 190, 299, 128
889
-1, 1, 28, 138, 29, 70, 120, 121, 30, 48,
890
31, 76, 32, 141, 71, 196, 197, 213, 198, 228,
891
239, 246, 290, 291, 301, 313, 199, 249, 270, 280,
892
200, 139, 140, 123, 209, 210, 223, 109, 110, 201,
893
108, 87, 88, 35, 36, 37, 38, 39, 40, 49,
894
258, 259, 260, 45, 46, 47, 41, 42, 129, 202,
895
203, 135, 230, 204, 315, 134
845
898
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
847
#define YYPACT_NINF -263
900
#define YYPACT_NINF -267
848
901
static const yytype_int16 yypact[] =
850
-27, -263, 29, -23, -263, -263, -263, 365, -263, -21,
851
-18, -263, -263, -263, -263, -263, -263, -263, 9, 9,
852
9, -15, -10, -263, 1014, 1014, -263, 1014, 1039, 792,
853
48, -263, -31, -14, -263, -263, -263, 712, 958, 195,
854
274, -263, -263, -263, 176, -263, 764, 792, 126, 3,
855
-263, -263, -263, 764, 764, 2, -11, 2, 2, 1014,
856
-8, -263, -263, 44, 389, -263, -27, -263, -263, -263,
857
-23, -263, -27, -263, 58, -263, 1014, 65, 1014, 1014,
858
1014, 1014, -263, -263, -263, 1014, 31, 195, 1014, 1014,
859
1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
860
-263, -263, -263, -263, 83, 1014, 42, 10, 907, 21,
861
-263, -263, -263, -263, 50, -263, 1014, -263, 42, 42,
862
389, -263, -263, -263, 1014, -27, -263, 75, 848, -263,
863
-263, 547, -263, -263, 117, -263, 194, 97, 824, 907,
864
52, 9, 181, 181, 2, 2, 2, 2, 181, 181,
865
2, 2, 2, 2, -263, 907, -263, -263, 17, 195,
866
-263, -263, 907, -263, 111, -263, 907, -263, 54, -263,
867
4, 55, 59, -27, 61, -29, -29, -263, -263, -29,
868
1014, -29, -27, -263, -29, -263, -263, 907, -263, 56,
869
-27, 1014, -263, -263, -263, 42, 47, -263, 1014, 1014,
870
63, 124, 1014, 1014, 680, 875, -263, -263, -263, -29,
871
907, -263, -263, -263, 616, 547, -27, -263, -263, 907,
872
-27, -263, 23, 389, -29, 792, 69, 389, 389, 106,
873
-25, -263, 56, -263, 792, 125, -263, -263, -263, -263,
874
-263, -263, -27, -263, 43, -263, -27, -27, 72, 135,
875
-27, 588, -263, -263, 680, -263, -14, 680, 1014, 42,
876
736, 792, 1014, 123, -263, -263, 389, -27, 306, -27,
877
44, 958, -27, -27, 32, -27, 680, -27, 931, -263,
878
680, 82, -263, 91, 102, -263, -263, -263, 931, 42,
879
-263, -263, -263, -263, 139, 158, -263, 102, -263, -27,
880
42, -27, -263, -263, -27, -263, -27, 680, -263, 435,
903
-267, 330, -267, -267, -36, -37, -267, -267, -267, -267,
904
-267, -267, -267, 20, 20, 20, -30, -20, -267, -267,
905
-267, 973, 973, -267, 973, 1018, 799, 6, -267, -15,
906
-21, -267, -267, 10, 1057, 947, 300, 325, -267, -267,
907
-267, -267, 299, 731, 799, -267, 53, -267, 112, 66,
908
-267, -267, -267, 731, 731, 122, 70, -3, 70, 70,
909
973, 88, -267, -267, 50, 1051, 25, -267, 97, -267,
910
-267, -267, 10, -267, 97, -267, 143, -267, -267, 973,
911
146, 973, 973, 973, 973, -267, -267, -267, 973, 113,
912
300, 973, 973, 973, 973, 973, 973, 973, 973, 973,
913
973, 973, 973, -267, -267, -267, -267, 139, 973, 87,
914
118, 1086, 7, -267, -267, -267, -267, -267, -267, 121,
915
96, -267, 973, -267, 87, 87, 1051, -267, -267, -267,
916
973, 97, -267, 137, 825, -267, -267, 36, -16, 10,
917
-267, 547, -267, -267, 19, -267, 260, 251, 1080, 1086,
918
105, 20, 115, 115, 70, 70, 70, 70, 115, 115,
919
70, 70, 70, 70, -267, 1086, -267, -267, -267, 63,
920
300, -267, -267, 1086, -267, 146, -267, 1086, -267, -267,
921
-267, 116, -267, 45, 120, 124, 97, 129, -16, -16,
922
-267, -267, -16, 973, -16, 97, -267, -267, -16, -267,
923
-267, 1086, -267, 123, 97, 973, -267, -267, -267, 87,
924
117, -267, 973, 973, -267, 193, 973, 973, 660, 870,
925
-267, -267, -267, -16, 1086, -267, -267, -267, 593, 547,
926
97, -267, -267, 1086, 97, -267, 72, 1051, -16, -37,
927
133, 1051, 1051, 175, -22, -267, 123, -267, 799, 192,
928
-267, -267, -267, -267, -267, -267, 97, -267, -267, 90,
929
-267, -267, -267, 97, 97, 141, 146, 97, 50, -267,
930
-267, 660, -267, -267, -21, 660, 973, 87, 705, 137,
931
973, 183, -267, -267, 1051, 97, 262, 97, 947, 97,
932
97, 38, 97, 660, 97, 902, 660, 136, -267, 198,
933
156, -267, -267, -267, 902, 87, -267, -267, -267, -267,
934
203, 210, -267, 156, -267, 97, 87, 97, -267, -267,
935
97, -267, 97, 660, -267, 401, 660, -267, 474, -267
884
938
/* YYPGOTO[NTERM-NUM]. */
885
939
static const yytype_int16 yypgoto[] =
887
-263, -263, -263, -263, -263, 145, -263, -263, -263, -263,
888
-111, -263, -263, -186, 114, -167, -263, -193, -263, -262,
889
-263, -263, -263, -263, -263, -263, -263, -263, -263, -2,
890
-7, -263, -263, -263, -13, -47, -19, -4, -263, -263,
891
-263, -81, 187, -263, 157, -263, 160, 51, 64, -263,
892
-263, -28, -214, 78, -263, 132, -106, -187
941
-267, -267, -267, -267, -267, 188, -267, -267, -267, -267,
942
-77, -267, -267, -197, 56, -170, -267, -267, -192, -267,
943
-267, -266, -267, -267, -267, -267, -267, -267, -267, -267,
944
-267, 43, 34, -267, -267, -267, 11, -39, -23, -1,
945
-267, -267, -267, -52, 44, -267, 201, -267, -10, 82,
946
-267, -267, -19, -40, -267, -267, -73, -2, -267, -28,
947
-213, -54, -267, -25, -79, 26
895
950
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
896
951
positive, shift that token. If negative, reduce the rule which
897
952
number is the opposite. If zero, do what YYDEFACT says.
898
953
If YYTABLE_NINF, syntax error. */
899
#define YYTABLE_NINF -95
954
#define YYTABLE_NINF -102
900
955
static const yytype_int16 yytable[] =
902
36, 237, 215, 37, 71, 71, 118, 119, 200, 222,
903
63, 124, 231, 10, 249, 1, 289, 1, 193, 1,
904
-94, 194, 124, 6, 240, 64, 300, 241, 109, 5,
905
70, 102, 103, 282, 121, 122, 66, 229, 67, 47,
906
67, 46, 108, 108, 124, 124, 47, 53, 221, 108,
907
108, 9, 54, 66, 116, 120, -94, 283, 284, 130,
908
125, -95, 93, 133, 261, 132, 201, 291, 141, 135,
909
28, 125, 134, -94, 136, 137, 138, 139, -58, -94,
910
-84, 140, 50, 51, 52, 231, 157, 263, 56, 56,
911
265, 56, 61, 125, 125, 231, 154, 125, 292, 293,
912
-58, 155, 56, -95, -95, 126, 75, 126, 255, 287,
913
-85, 76, 158, 290, 164, 197, 198, 202, 163, 309,
914
162, 203, 312, 205, 166, 67, 75, 225, 226, 110,
915
111, -95, 245, 248, 258, 252, 77, 78, 23, 259,
916
311, 127, 272, 313, 294, 295, 302, 26, 82, 83,
917
182, 298, 56, 56, 56, 56, 56, 56, 56, 56,
918
56, 56, 56, 56, 72, 303, 204, 236, 82, 83,
919
112, 113, 296, 70, 70, 212, 210, 70, 73, 70,
920
56, 271, 70, 218, 156, 60, 224, 219, 100, 101,
921
65, 304, 192, 0, 223, 210, 160, 161, 227, 228,
922
0, 0, 0, 75, 0, 50, 244, 70, 76, 238,
923
108, 55, 57, 239, 58, 63, 0, 0, 102, 103,
924
0, 108, 70, 104, 0, 87, 0, 0, 264, 0,
925
251, 0, 0, 77, 0, 254, 90, 91, 92, 256,
926
257, 93, 270, 260, 0, 82, 83, 0, 88, 89,
927
90, 91, 92, 0, 266, 93, 268, 108, 0, 0,
928
276, 0, 278, 0, 0, 280, 281, 0, 286, 0,
929
288, 0, 0, 220, 0, 142, 143, 144, 145, 146,
930
147, 148, 149, 150, 151, 152, 153, 0, 0, 206,
931
207, 0, 305, 208, 307, 211, 0, 308, 213, 310,
932
0, 242, 0, 159, 0, 246, 247, 72, 72, 0,
933
0, 72, 0, 72, 0, 75, 72, 0, 0, 0,
934
76, 217, 0, 233, 0, 0, 56, 94, 95, 96,
935
97, 98, 0, 0, 99, 56, 0, 267, 243, 0,
936
0, 72, 0, 0, 275, 77, 78, 79, 279, 0,
937
0, 0, 0, 0, 80, 0, 72, 82, 83, 0,
938
0, 0, 0, 0, 250, -80, 8, 301, 9, 10,
939
0, 0, 11, 12, 0, 67, 0, 0, 306, 0,
940
0, 13, 14, 0, 0, 0, 0, 15, 16, 0,
941
0, 0, 269, 0, 0, 0, 0, 0, 75, 0,
942
277, 17, 18, 76, 0, 0, 0, 19, 20, 21,
943
22, 1, 23, 0, 0, 0, 0, 0, 24, 25,
944
0, 26, 0, 27, 0, 0, 28, 29, 77, 78,
945
79, 30, -9, 0, -9, 0, 167, 80, 9, 10,
946
82, 83, 11, 12, 0, 0, 0, 0, 0, 0,
947
0, 0, 126, 168, 0, 169, 170, 0, 87, 171,
948
-63, -63, 172, 173, 174, 175, 176, 177, 178, 179,
949
180, 0, 18, 181, 0, 0, 0, 19, 20, 21,
950
22, -63, 23, 0, 0, 0, 0, 0, 24, 25,
951
0, 26, 167, 27, 9, 10, 28, 29, 11, 12,
952
0, 30, 66, -63, 67, 0, 0, 0, 0, 168,
953
0, 169, 170, 0, 0, 171, -62, -62, 172, 173,
954
174, 175, 176, 177, 178, 179, 180, 0, 18, 181,
955
0, 0, 0, 19, 20, 21, 22, -62, 23, 0,
956
0, 0, 0, 0, 24, 25, 0, 26, 167, 27,
957
9, 10, 28, 29, 11, 12, 0, 30, 66, -62,
958
67, 0, 0, 0, 0, 168, 0, 169, 170, 0,
959
0, 171, 0, 0, 172, 173, 174, 175, 176, 177,
960
178, 179, 180, 0, 18, 181, 0, 0, 0, 19,
961
20, 21, 22, 0, 23, 0, 0, 75, 0, 0,
962
24, 25, 76, 26, 0, 27, 0, 0, 28, 29,
963
0, 0, 0, 30, 66, 182, 67, 62, 0, 9,
964
10, 0, 0, 11, 12, 0, -93, 77, 78, 79,
965
0, 0, 0, 0, 0, 0, 80, 0, 125, 82,
966
83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
967
0, 126, 0, 18, 0, 0, 0, 0, 19, 20,
968
21, 22, -93, 23, 0, 0, 0, 0, 0, 24,
969
25, 0, 26, 0, 27, 0, 0, 28, 234, -93,
970
0, 0, 30, 9, 10, -93, 0, 11, 12, 0,
971
0, 0, 0, 0, 0, 0, 0, 0, 168, 0,
972
169, 170, 0, 0, 171, 0, 0, 172, 173, 174,
973
175, 176, 177, 178, 179, 180, 0, 18, 181, 0,
974
0, 75, 19, 20, 21, 22, 76, 23, 0, 0,
975
0, 0, 0, 24, 25, 0, 26, 0, 27, 9,
976
10, 28, 29, 11, 12, 0, 30, 66, 0, 67,
977
0, 77, 78, 79, 0, 0, 0, 0, 0, 0,
978
80, 0, 81, 82, 83, 62, 0, 9, 10, 0,
979
0, 11, 12, 18, 0, 0, 0, 0, 19, 20,
980
21, 22, 0, 23, 0, 0, 0, 0, 0, 24,
981
25, 0, 26, 62, 27, 9, 10, 28, 29, 11,
982
12, 18, 30, 0, 0, 67, 19, 20, 21, 22,
983
0, 23, 0, 0, 0, 0, 0, 24, 25, 0,
984
26, 0, 27, 0, 0, 28, 29, -93, 0, 18,
985
30, 0, 0, 75, 19, 20, 21, 22, 76, 23,
986
0, 0, 0, 0, 0, 24, 25, 0, 26, 165,
987
27, 9, 10, 28, 29, 11, 12, 0, 30, 0,
988
0, 0, 0, 77, 78, 79, 0, 0, 0, 0,
989
0, 0, 80, 191, 0, 82, 83, 0, 9, 230,
990
0, 0, 11, 12, 0, 18, 0, 0, 0, 0,
991
19, 20, 21, 22, 0, 23, 170, 0, 0, 0,
992
0, 24, 25, 0, 26, 0, 27, 177, 178, 28,
993
29, 0, 18, 0, 30, 0, 75, 19, 20, 21,
994
22, 76, 23, 0, 0, 0, 0, 0, 24, 25,
995
0, 26, 0, 27, 9, 10, 28, 29, 11, 12,
996
0, 30, 0, 0, 0, 0, 77, 78, 79, 0,
997
0, 0, 170, 0, 0, 80, 0, 0, 82, 83,
998
0, 9, 10, 177, 178, 11, 12, 0, 18, 86,
999
0, 0, 0, 19, 20, 21, 22, 0, 23, 0,
1000
0, 0, 0, 0, 24, 25, 0, 26, 0, 27,
1001
0, 0, 28, 29, 0, 18, 0, 30, 0, 0,
1002
19, 20, 21, 22, 0, 23, 0, 0, 0, 0,
1003
0, 24, 25, 0, 26, 0, 27, 9, 10, 28,
1004
29, 11, 12, 0, 30, 0, 0, 0, 0, 0,
1005
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006
0, 0, 9, 10, 0, 0, 11, 12, 0, 0,
1007
0, 18, 0, 0, 0, 0, 19, 20, 21, 22,
1008
0, 23, 0, 0, 0, 0, 0, 24, 25, 0,
1009
26, 0, 27, 0, 0, 28, 29, 0, 0, 0,
1010
30, 19, 20, 21, 22, 0, 23, 0, 0, 0,
1011
0, 0, 24, 25, 0, 26, 0, 27, 0, 0,
957
34, 73, 73, 64, 74, 229, 114, 145, 130, 4,
958
133, 50, 51, 52, 124, 125, 251, 67, 266, 57,
959
57, 112, 57, 62, 5, 65, 136, 245, 78, 305,
960
43, 137, 44, 57, 19, 19, 53, 178, 316, 298,
961
105, 106, 111, 111, 33, 67, 54, 44, 243, 214,
962
68, 130, 111, 111, 66, 166, 68, 69, 69, 126,
963
77, 131, 299, 300, 207, 56, 58, 208, 59, 113,
964
171, 172, 72, 254, 85, 86, 255, 167, 144, 90,
965
146, 147, 148, 149, 307, 25, -11, 150, -65, 57,
966
57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
967
57, 281, 211, 245, 131, 283, 272, 165, 142, -11,
968
-65, 215, 245, 74, -102, 115, 116, 132, 235, 130,
969
57, 122, 44, 303, 325, 4, 306, 328, -101, 173,
970
-91, 127, 128, 177, 96, 152, 153, 154, 155, 156,
971
157, 158, 159, 160, 161, 162, 163, 19, 143, 50,
972
5, 151, 164, 327, 132, 234, 329, 117, 118, 44,
973
-102, -102, 169, 74, 74, 174, 170, 74, -101, 74,
974
168, 131, 131, 74, 93, 94, 95, 175, 231, 96,
975
119, 72, 212, 256, -92, -101, 216, 263, 264, 250,
976
217, -101, 224, 277, 179, 219, 69, 240, 74, 261,
977
262, 265, 269, 289, 233, 308, 309, 276, 195, 314,
978
318, 237, 224, 74, 279, 241, 242, 319, 75, 261,
979
218, 267, 312, 285, 238, 268, 61, 111, 288, 226,
980
292, 72, 72, 206, 320, 72, 236, 72, 232, 0,
981
273, 72, 0, 0, 220, 221, 282, 65, 222, 20,
982
225, 317, 0, 287, 227, 310, 311, 0, 23, 0,
983
78, 294, 322, 0, 252, 79, 72, 0, 253, 78,
984
0, 78, 0, 0, 79, 284, 79, 286, 57, 247,
985
0, 72, 0, 0, 0, 0, 57, 0, 0, 0,
986
271, 80, 81, 0, 257, 0, 0, 274, 275, 0,
987
80, 278, 80, 81, 82, 0, 85, 86, 0, 0,
988
0, 103, 104, 0, 83, 85, 86, 85, 86, 293,
989
0, 295, 0, 296, 297, 0, 302, 0, 304, 0,
990
2, 3, 90, 4, 5, 69, 0, 6, 7, 0,
991
0, 0, 105, 106, 0, 0, 0, 8, 9, 321,
992
107, 323, 0, 0, 324, 0, 326, 91, 92, 93,
993
94, 95, 0, 0, 96, 10, 11, 12, 13, 0,
994
0, 0, 0, 14, 15, 16, 17, 18, 0, 0,
995
19, 20, 97, 98, 99, 100, 101, 21, 22, 102,
996
23, 0, 24, 0, 0, 25, 26, 0, 27, 0,
997
0, -14, 180, -14, 4, 5, 0, 0, 6, 7,
998
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999
181, 0, 182, 183, 184, -70, -70, 185, 186, 187,
1000
188, 189, 190, 191, 192, 193, 0, 0, 0, 13,
1001
194, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1002
0, -70, 20, 0, 0, 0, 0, 0, 21, 22,
1003
0, 23, 0, 24, 0, 0, 25, 26, 0, 55,
1004
0, 0, 68, -70, 69, 180, 0, 4, 5, 0,
1005
0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
1006
0, 0, 0, 181, 0, 182, 183, 184, -69, -69,
1007
185, 186, 187, 188, 189, 190, 191, 192, 193, 0,
1008
0, 0, 13, 194, 0, 0, 0, 14, 15, 16,
1009
17, 0, 0, 0, -69, 20, 0, 0, 0, 0,
1010
0, 21, 22, 0, 23, 0, 24, 0, 0, 25,
1011
26, 0, 55, 0, 0, 68, -69, 69, 180, 0,
1012
4, 5, 0, 0, 6, 7, 0, 0, 0, 0,
1013
0, 0, 0, 0, 0, 0, 181, 0, 182, 183,
1014
184, 0, 0, 185, 186, 187, 188, 189, 190, 191,
1015
192, 193, 0, 0, 0, 13, 194, 0, 0, 0,
1016
14, 15, 16, 17, 63, 0, 4, 5, 20, 0,
1017
6, 7, 0, -100, 21, 22, 0, 23, 0, 24,
1018
0, 0, 25, 26, 0, 55, 0, 0, 68, 195,
1019
69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020
0, 13, 0, 0, 0, 0, 14, 15, 16, 17,
1021
0, 0, 0, -100, 20, 0, 0, 0, 0, 0,
1022
21, 22, 0, 23, 0, 24, 0, 0, 25, 248,
1023
-100, 55, 0, 4, 5, 0, -100, 6, 7, 0,
1024
0, 0, 0, 0, 0, 0, 0, 0, 0, 181,
1025
0, 182, 183, 184, 0, 0, 185, 186, 187, 188,
1026
189, 190, 191, 192, 193, 0, 0, 0, 13, 194,
1027
0, 0, 0, 14, 15, 16, 17, 0, 4, 5,
1028
0, 20, 6, 7, 0, 0, 0, 21, 22, 0,
1029
23, 0, 24, 0, 0, 25, 26, 0, 55, 0,
1030
0, 68, 63, 69, 4, 5, 0, 0, 6, 7,
1031
0, 0, 0, 13, 0, 0, 0, 0, 14, 15,
1032
16, 17, 0, 0, 0, 0, 20, 0, 0, 0,
1033
0, 0, 21, 22, 0, 23, 0, 24, 0, 13,
1034
25, 26, 0, 55, 14, 15, 16, 17, 69, 0,
1035
0, 0, 20, 0, 0, 0, 0, 0, 21, 22,
1036
0, 23, 0, 24, 0, 0, 25, 26, -100, 55,
1037
63, 0, 4, 5, 0, 0, 6, 7, 0, 0,
1038
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039
0, 0, 0, 0, 0, 0, 176, 0, 4, 5,
1040
0, 0, 6, 7, 0, 0, 0, 13, 0, 0,
1041
0, 0, 14, 15, 16, 17, 0, 0, 0, 0,
1042
20, 0, 0, 0, 0, 0, 21, 22, 0, 23,
1043
0, 24, 0, 13, 25, 26, 0, 55, 14, 15,
1044
16, 17, 0, 4, 244, 0, 20, 6, 7, 0,
1045
0, 0, 21, 22, 0, 23, 0, 24, 0, 0,
1046
25, 26, 183, 55, 0, 0, 0, 0, 0, 0,
1047
0, 190, 191, 0, 0, 4, 5, 0, 13, 6,
1048
7, 0, 0, 14, 15, 16, 17, 0, 0, 0,
1049
0, 20, 0, 0, 183, 0, 0, 21, 22, 0,
1050
23, 0, 24, 190, 191, 25, 26, 0, 55, 0,
1051
13, 0, 0, 0, 0, 14, 15, 16, 17, 0,
1052
4, 5, 0, 20, 6, 7, 0, 0, 89, 21,
1053
22, 0, 23, 0, 24, 0, 0, 25, 26, 0,
1054
55, 0, 0, 0, 0, 0, 4, 5, 0, 0,
1055
6, 7, 0, 0, 0, 13, 0, 0, 0, 0,
1056
14, 15, 16, 17, 0, 0, 0, 0, 20, 0,
1057
0, 0, 0, 0, 21, 22, 0, 23, 0, 24,
1058
0, 13, 25, 26, 0, 55, 14, 15, 16, 17,
1059
0, 4, 5, 0, 20, 6, 7, 0, 0, 0,
1060
21, 22, 0, 23, 0, 24, 0, 0, 25, 26,
1061
0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
1062
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1063
78, 14, 15, 16, 17, 79, 78, 0, 0, 20,
1064
0, 79, 0, 0, 0, 21, 22, 0, 23, 0,
1065
24, 0, 0, 25, 60, 0, 55, 0, 0, 78,
1066
0, 80, 81, 82, 79, 78, 0, 80, 81, 82,
1067
79, 0, 0, 83, 0, 0, 85, 86, 0, 83,
1068
0, 84, 85, 86, 0, 0, 0, 0, 132, 0,
1069
80, 81, 82, 0, 0, 0, 80, 81, 82, 0,
1070
0, 0, 83, 205, 0, 85, 86, 0, 83, 0,
1015
1074
static const yytype_int16 yycheck[] =
1017
7, 215, 188, 7, 32, 33, 53, 54, 4, 196,
1018
29, 1, 205, 4, 39, 46, 278, 46, 1, 46,
1019
10, 4, 1, 46, 1, 29, 288, 4, 47, 0,
1020
32, 42, 43, 1, 42, 43, 67, 204, 69, 64,
1021
69, 62, 46, 47, 1, 1, 64, 62, 1, 53,
1022
54, 3, 62, 67, 51, 59, 46, 25, 26, 66,
1023
50, 9, 60, 5, 251, 72, 62, 281, 37, 4,
1024
61, 50, 76, 63, 78, 79, 80, 81, 46, 69,
1025
63, 85, 18, 19, 20, 278, 65, 254, 24, 25,
1026
257, 27, 28, 50, 50, 288, 13, 50, 7, 8,
1027
68, 105, 38, 51, 52, 63, 9, 63, 65, 276,
1028
63, 14, 62, 280, 39, 4, 62, 62, 125, 305,
1029
124, 62, 308, 62, 128, 69, 9, 64, 4, 3,
1030
4, 14, 63, 27, 62, 10, 39, 40, 47, 4,
1031
307, 63, 19, 310, 53, 54, 7, 56, 51, 52,
1032
68, 49, 88, 89, 90, 91, 92, 93, 94, 95,
1033
96, 97, 98, 99, 32, 7, 173, 214, 51, 52,
1034
44, 45, 283, 175, 176, 182, 180, 179, 33, 181,
1035
116, 262, 184, 190, 106, 28, 199, 191, 12, 13,
1036
30, 297, 141, -1, 198, 199, 118, 119, 202, 203,
1037
-1, -1, -1, 9, -1, 141, 225, 209, 14, 216,
1038
214, 24, 25, 220, 27, 234, -1, -1, 42, 43,
1039
-1, 225, 224, 47, -1, 38, -1, -1, 256, -1,
1040
234, -1, -1, 39, -1, 242, 55, 56, 57, 246,
1041
247, 60, 261, 250, -1, 51, 52, -1, 53, 54,
1042
55, 56, 57, -1, 258, 60, 260, 261, -1, -1,
1043
267, -1, 269, -1, -1, 272, 273, -1, 275, -1,
1044
277, -1, -1, 195, -1, 88, 89, 90, 91, 92,
1045
93, 94, 95, 96, 97, 98, 99, -1, -1, 175,
1046
176, -1, 299, 179, 301, 181, -1, 304, 184, 306,
1047
-1, 223, -1, 116, -1, 227, 228, 175, 176, -1,
1048
-1, 179, -1, 181, -1, 9, 184, -1, -1, -1,
1049
14, 189, -1, 209, -1, -1, 262, 53, 54, 55,
1050
56, 57, -1, -1, 60, 271, -1, 259, 224, -1,
1051
-1, 209, -1, -1, 266, 39, 40, 41, 270, -1,
1052
-1, -1, -1, -1, 48, -1, 224, 51, 52, -1,
1053
-1, -1, -1, -1, 232, 0, 1, 289, 3, 4,
1054
-1, -1, 7, 8, -1, 69, -1, -1, 300, -1,
1055
-1, 16, 17, -1, -1, -1, -1, 22, 23, -1,
1056
-1, -1, 260, -1, -1, -1, -1, -1, 9, -1,
1057
268, 36, 37, 14, -1, -1, -1, 42, 43, 44,
1058
45, 46, 47, -1, -1, -1, -1, -1, 53, 54,
1059
-1, 56, -1, 58, -1, -1, 61, 62, 39, 40,
1060
41, 66, 67, -1, 69, -1, 1, 48, 3, 4,
1061
51, 52, 7, 8, -1, -1, -1, -1, -1, -1,
1062
-1, -1, 63, 18, -1, 20, 21, -1, 271, 24,
1063
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1064
35, -1, 37, 38, -1, -1, -1, 42, 43, 44,
1065
45, 46, 47, -1, -1, -1, -1, -1, 53, 54,
1066
-1, 56, 1, 58, 3, 4, 61, 62, 7, 8,
1067
-1, 66, 67, 68, 69, -1, -1, -1, -1, 18,
1068
-1, 20, 21, -1, -1, 24, 25, 26, 27, 28,
1069
29, 30, 31, 32, 33, 34, 35, -1, 37, 38,
1070
-1, -1, -1, 42, 43, 44, 45, 46, 47, -1,
1071
-1, -1, -1, -1, 53, 54, -1, 56, 1, 58,
1072
3, 4, 61, 62, 7, 8, -1, 66, 67, 68,
1073
69, -1, -1, -1, -1, 18, -1, 20, 21, -1,
1074
-1, 24, -1, -1, 27, 28, 29, 30, 31, 32,
1075
33, 34, 35, -1, 37, 38, -1, -1, -1, 42,
1076
43, 44, 45, -1, 47, -1, -1, 9, -1, -1,
1077
53, 54, 14, 56, -1, 58, -1, -1, 61, 62,
1078
-1, -1, -1, 66, 67, 68, 69, 1, -1, 3,
1079
4, -1, -1, 7, 8, -1, 10, 39, 40, 41,
1080
-1, -1, -1, -1, -1, -1, 48, -1, 50, 51,
1081
52, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1082
-1, 63, -1, 37, -1, -1, -1, -1, 42, 43,
1083
44, 45, 46, 47, -1, -1, -1, -1, -1, 53,
1084
54, -1, 56, -1, 58, -1, -1, 61, 62, 63,
1085
-1, -1, 66, 3, 4, 69, -1, 7, 8, -1,
1086
-1, -1, -1, -1, -1, -1, -1, -1, 18, -1,
1087
20, 21, -1, -1, 24, -1, -1, 27, 28, 29,
1088
30, 31, 32, 33, 34, 35, -1, 37, 38, -1,
1089
-1, 9, 42, 43, 44, 45, 14, 47, -1, -1,
1090
-1, -1, -1, 53, 54, -1, 56, -1, 58, 3,
1091
4, 61, 62, 7, 8, -1, 66, 67, -1, 69,
1092
-1, 39, 40, 41, -1, -1, -1, -1, -1, -1,
1093
48, -1, 50, 51, 52, 1, -1, 3, 4, -1,
1094
-1, 7, 8, 37, -1, -1, -1, -1, 42, 43,
1095
44, 45, -1, 47, -1, -1, -1, -1, -1, 53,
1096
54, -1, 56, 1, 58, 3, 4, 61, 62, 7,
1097
8, 37, 66, -1, -1, 69, 42, 43, 44, 45,
1098
-1, 47, -1, -1, -1, -1, -1, 53, 54, -1,
1099
56, -1, 58, -1, -1, 61, 62, 63, -1, 37,
1100
66, -1, -1, 9, 42, 43, 44, 45, 14, 47,
1101
-1, -1, -1, -1, -1, 53, 54, -1, 56, 1,
1102
58, 3, 4, 61, 62, 7, 8, -1, 66, -1,
1103
-1, -1, -1, 39, 40, 41, -1, -1, -1, -1,
1104
-1, -1, 48, 49, -1, 51, 52, -1, 3, 4,
1105
-1, -1, 7, 8, -1, 37, -1, -1, -1, -1,
1106
42, 43, 44, 45, -1, 47, 21, -1, -1, -1,
1107
-1, 53, 54, -1, 56, -1, 58, 32, 33, 61,
1108
62, -1, 37, -1, 66, -1, 9, 42, 43, 44,
1109
45, 14, 47, -1, -1, -1, -1, -1, 53, 54,
1110
-1, 56, -1, 58, 3, 4, 61, 62, 7, 8,
1111
-1, 66, -1, -1, -1, -1, 39, 40, 41, -1,
1112
-1, -1, 21, -1, -1, 48, -1, -1, 51, 52,
1113
-1, 3, 4, 32, 33, 7, 8, -1, 37, 11,
1114
-1, -1, -1, 42, 43, 44, 45, -1, 47, -1,
1115
-1, -1, -1, -1, 53, 54, -1, 56, -1, 58,
1116
-1, -1, 61, 62, -1, 37, -1, 66, -1, -1,
1117
42, 43, 44, 45, -1, 47, -1, -1, -1, -1,
1118
-1, 53, 54, -1, 56, -1, 58, 3, 4, 61,
1119
62, 7, 8, -1, 66, -1, -1, -1, -1, -1,
1120
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1121
-1, -1, 3, 4, -1, -1, 7, 8, -1, -1,
1122
-1, 37, -1, -1, -1, -1, 42, 43, 44, 45,
1123
-1, 47, -1, -1, -1, -1, -1, 53, 54, -1,
1124
56, -1, 58, -1, -1, 61, 62, -1, -1, -1,
1125
66, 42, 43, 44, 45, -1, 47, -1, -1, -1,
1126
-1, -1, 53, 54, -1, 56, -1, 58, -1, -1,
1127
61, 62, -1, -1, -1, 66
1076
1, 29, 30, 26, 29, 202, 46, 80, 1, 3,
1077
64, 13, 14, 15, 53, 54, 229, 27, 40, 21,
1078
22, 44, 24, 25, 4, 26, 1, 219, 9, 295,
1079
66, 6, 69, 35, 50, 50, 66, 1, 304, 1,
1080
43, 44, 43, 44, 1, 55, 66, 69, 218, 4,
1081
71, 1, 53, 54, 48, 109, 71, 73, 73, 60,
1082
50, 54, 24, 25, 1, 21, 22, 4, 24, 16,
1083
124, 125, 29, 1, 55, 56, 4, 70, 79, 35,
1084
81, 82, 83, 84, 297, 65, 50, 88, 50, 91,
1085
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1086
102, 271, 175, 295, 54, 275, 16, 108, 74, 73,
1087
72, 66, 304, 138, 9, 3, 4, 67, 1, 1,
1088
122, 55, 69, 293, 321, 3, 296, 324, 10, 130,
1089
67, 43, 44, 134, 64, 91, 92, 93, 94, 95,
1090
96, 97, 98, 99, 100, 101, 102, 50, 5, 151,
1091
4, 38, 13, 323, 67, 209, 326, 45, 46, 69,
1092
55, 56, 66, 188, 189, 131, 122, 192, 50, 194,
1093
49, 54, 54, 198, 59, 60, 61, 40, 203, 64,
1094
68, 138, 66, 237, 67, 67, 66, 241, 242, 228,
1095
66, 73, 193, 266, 138, 66, 73, 4, 223, 239,
1096
67, 26, 10, 20, 205, 7, 8, 66, 72, 53,
1097
7, 212, 213, 238, 268, 216, 217, 7, 30, 259,
1098
186, 246, 299, 277, 213, 248, 25, 228, 280, 195,
1099
284, 188, 189, 151, 313, 192, 210, 194, 204, -1,
1100
259, 198, -1, -1, 188, 189, 274, 248, 192, 51,
1101
194, 305, -1, 278, 198, 57, 58, -1, 60, -1,
1102
9, 286, 316, -1, 230, 14, 223, -1, 234, 9,
1103
-1, 9, -1, -1, 14, 276, 14, 278, 280, 223,
1104
-1, 238, -1, -1, -1, -1, 288, -1, -1, -1,
1105
256, 40, 41, -1, 238, -1, -1, 263, 264, -1,
1106
40, 267, 40, 41, 42, -1, 55, 56, -1, -1,
1107
-1, 12, 13, -1, 52, 55, 56, 55, 56, 285,
1108
-1, 287, -1, 289, 290, -1, 292, -1, 294, -1,
1109
0, 1, 288, 3, 4, 73, -1, 7, 8, -1,
1110
-1, -1, 43, 44, -1, -1, -1, 17, 18, 315,
1111
51, 317, -1, -1, 320, -1, 322, 57, 58, 59,
1112
60, 61, -1, -1, 64, 35, 36, 37, 38, -1,
1113
-1, -1, -1, 43, 44, 45, 46, 47, -1, -1,
1114
50, 51, 57, 58, 59, 60, 61, 57, 58, 64,
1115
60, -1, 62, -1, -1, 65, 66, -1, 68, -1,
1116
-1, 71, 1, 73, 3, 4, -1, -1, 7, 8,
1117
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1118
19, -1, 21, 22, 23, 24, 25, 26, 27, 28,
1119
29, 30, 31, 32, 33, 34, -1, -1, -1, 38,
1120
39, -1, -1, -1, 43, 44, 45, 46, -1, -1,
1121
-1, 50, 51, -1, -1, -1, -1, -1, 57, 58,
1122
-1, 60, -1, 62, -1, -1, 65, 66, -1, 68,
1123
-1, -1, 71, 72, 73, 1, -1, 3, 4, -1,
1124
-1, 7, 8, -1, -1, -1, -1, -1, -1, -1,
1125
-1, -1, -1, 19, -1, 21, 22, 23, 24, 25,
1126
26, 27, 28, 29, 30, 31, 32, 33, 34, -1,
1127
-1, -1, 38, 39, -1, -1, -1, 43, 44, 45,
1128
46, -1, -1, -1, 50, 51, -1, -1, -1, -1,
1129
-1, 57, 58, -1, 60, -1, 62, -1, -1, 65,
1130
66, -1, 68, -1, -1, 71, 72, 73, 1, -1,
1131
3, 4, -1, -1, 7, 8, -1, -1, -1, -1,
1132
-1, -1, -1, -1, -1, -1, 19, -1, 21, 22,
1133
23, -1, -1, 26, 27, 28, 29, 30, 31, 32,
1134
33, 34, -1, -1, -1, 38, 39, -1, -1, -1,
1135
43, 44, 45, 46, 1, -1, 3, 4, 51, -1,
1136
7, 8, -1, 10, 57, 58, -1, 60, -1, 62,
1137
-1, -1, 65, 66, -1, 68, -1, -1, 71, 72,
1138
73, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1139
-1, 38, -1, -1, -1, -1, 43, 44, 45, 46,
1140
-1, -1, -1, 50, 51, -1, -1, -1, -1, -1,
1141
57, 58, -1, 60, -1, 62, -1, -1, 65, 66,
1142
67, 68, -1, 3, 4, -1, 73, 7, 8, -1,
1143
-1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
1144
-1, 21, 22, 23, -1, -1, 26, 27, 28, 29,
1145
30, 31, 32, 33, 34, -1, -1, -1, 38, 39,
1146
-1, -1, -1, 43, 44, 45, 46, -1, 3, 4,
1147
-1, 51, 7, 8, -1, -1, -1, 57, 58, -1,
1148
60, -1, 62, -1, -1, 65, 66, -1, 68, -1,
1149
-1, 71, 1, 73, 3, 4, -1, -1, 7, 8,
1150
-1, -1, -1, 38, -1, -1, -1, -1, 43, 44,
1151
45, 46, -1, -1, -1, -1, 51, -1, -1, -1,
1152
-1, -1, 57, 58, -1, 60, -1, 62, -1, 38,
1153
65, 66, -1, 68, 43, 44, 45, 46, 73, -1,
1154
-1, -1, 51, -1, -1, -1, -1, -1, 57, 58,
1155
-1, 60, -1, 62, -1, -1, 65, 66, 67, 68,
1156
1, -1, 3, 4, -1, -1, 7, 8, -1, -1,
1157
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1158
-1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
1159
-1, -1, 7, 8, -1, -1, -1, 38, -1, -1,
1160
-1, -1, 43, 44, 45, 46, -1, -1, -1, -1,
1161
51, -1, -1, -1, -1, -1, 57, 58, -1, 60,
1162
-1, 62, -1, 38, 65, 66, -1, 68, 43, 44,
1163
45, 46, -1, 3, 4, -1, 51, 7, 8, -1,
1164
-1, -1, 57, 58, -1, 60, -1, 62, -1, -1,
1165
65, 66, 22, 68, -1, -1, -1, -1, -1, -1,
1166
-1, 31, 32, -1, -1, 3, 4, -1, 38, 7,
1167
8, -1, -1, 43, 44, 45, 46, -1, -1, -1,
1168
-1, 51, -1, -1, 22, -1, -1, 57, 58, -1,
1169
60, -1, 62, 31, 32, 65, 66, -1, 68, -1,
1170
38, -1, -1, -1, -1, 43, 44, 45, 46, -1,
1171
3, 4, -1, 51, 7, 8, -1, -1, 11, 57,
1172
58, -1, 60, -1, 62, -1, -1, 65, 66, -1,
1173
68, -1, -1, -1, -1, -1, 3, 4, -1, -1,
1174
7, 8, -1, -1, -1, 38, -1, -1, -1, -1,
1175
43, 44, 45, 46, -1, -1, -1, -1, 51, -1,
1176
-1, -1, -1, -1, 57, 58, -1, 60, -1, 62,
1177
-1, 38, 65, 66, -1, 68, 43, 44, 45, 46,
1178
-1, 3, 4, -1, 51, 7, 8, -1, -1, -1,
1179
57, 58, -1, 60, -1, 62, -1, -1, 65, 66,
1180
-1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
1181
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1182
9, 43, 44, 45, 46, 14, 9, -1, -1, 51,
1183
-1, 14, -1, -1, -1, 57, 58, -1, 60, -1,
1184
62, -1, -1, 65, 66, -1, 68, -1, -1, 9,
1185
-1, 40, 41, 42, 14, 9, -1, 40, 41, 42,
1186
14, -1, -1, 52, -1, -1, 55, 56, -1, 52,
1187
-1, 54, 55, 56, -1, -1, -1, -1, 67, -1,
1188
40, 41, 42, -1, -1, -1, 40, 41, 42, -1,
1189
-1, -1, 52, 53, -1, 55, 56, -1, 52, -1,
1130
1193
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1131
1194
symbol of state STATE-NUM. */
1132
1195
static const yytype_uint8 yystos[] =
1134
0, 46, 71, 99, 100, 0, 46, 72, 1, 3,
1135
4, 7, 8, 16, 17, 22, 23, 36, 37, 42,
1136
43, 44, 45, 47, 53, 54, 56, 58, 61, 62,
1137
66, 73, 74, 78, 80, 82, 100, 107, 111, 112,
1138
113, 114, 115, 116, 118, 119, 62, 64, 79, 117,
1139
118, 118, 118, 62, 62, 112, 118, 112, 112, 62,
1140
114, 118, 1, 106, 107, 116, 67, 69, 75, 84,
1141
99, 121, 125, 75, 81, 9, 14, 39, 40, 41,
1142
48, 50, 51, 52, 109, 110, 11, 112, 53, 54,
1143
55, 56, 57, 60, 53, 54, 55, 56, 57, 60,
1144
12, 13, 42, 43, 47, 108, 105, 106, 107, 106,
1145
3, 4, 44, 45, 76, 77, 51, 101, 105, 105,
1146
107, 42, 43, 120, 1, 50, 63, 123, 127, 123,
1147
100, 83, 100, 5, 107, 4, 107, 107, 107, 107,
1148
107, 37, 112, 112, 112, 112, 112, 112, 112, 112,
1149
112, 112, 112, 112, 13, 107, 123, 65, 62, 112,
1150
123, 123, 107, 100, 39, 1, 107, 1, 18, 20,
1151
21, 24, 27, 28, 29, 30, 31, 32, 33, 34,
1152
35, 38, 68, 85, 87, 94, 98, 107, 121, 122,
1153
125, 49, 117, 1, 4, 102, 103, 4, 62, 86,
1154
4, 62, 62, 62, 100, 62, 84, 84, 84, 104,
1155
107, 84, 100, 84, 88, 83, 124, 125, 100, 107,
1156
123, 1, 127, 107, 104, 64, 4, 107, 107, 85,
1157
4, 87, 89, 84, 62, 95, 105, 122, 100, 100,
1158
1, 4, 123, 84, 106, 63, 123, 123, 27, 39,
1159
125, 107, 10, 96, 100, 65, 100, 100, 62, 4,
1160
100, 127, 97, 85, 121, 85, 107, 123, 107, 125,
1161
106, 111, 19, 90, 91, 123, 100, 125, 100, 123,
1162
100, 100, 1, 25, 26, 92, 100, 85, 100, 89,
1163
85, 122, 7, 8, 53, 54, 80, 93, 49, 126,
1164
89, 123, 7, 7, 126, 100, 123, 100, 100, 83,
1197
0, 75, 0, 1, 3, 4, 7, 8, 17, 18,
1198
35, 36, 37, 38, 43, 44, 45, 46, 47, 50,
1199
51, 57, 58, 60, 62, 65, 66, 68, 76, 78,
1200
82, 84, 86, 105, 113, 117, 118, 119, 120, 121,
1201
122, 130, 131, 66, 69, 127, 128, 129, 83, 123,
1202
131, 131, 131, 66, 66, 68, 118, 131, 118, 118,
1203
66, 120, 131, 1, 112, 113, 48, 122, 71, 73,
1204
79, 88, 105, 133, 137, 79, 85, 50, 9, 14,
1205
40, 41, 42, 52, 54, 55, 56, 115, 116, 11,
1206
118, 57, 58, 59, 60, 61, 64, 57, 58, 59,
1207
60, 61, 64, 12, 13, 43, 44, 51, 114, 111,
1208
112, 113, 112, 16, 127, 3, 4, 45, 46, 68,
1209
80, 81, 55, 107, 111, 111, 113, 43, 44, 132,
1210
1, 54, 67, 135, 139, 135, 1, 6, 77, 105,
1211
106, 87, 106, 5, 113, 130, 113, 113, 113, 113,
1212
113, 38, 118, 118, 118, 118, 118, 118, 118, 118,
1213
118, 118, 118, 118, 13, 113, 135, 70, 49, 66,
1214
118, 135, 135, 113, 106, 40, 1, 113, 1, 88,
1215
1, 19, 21, 22, 23, 26, 27, 28, 29, 30,
1216
31, 32, 33, 34, 39, 72, 89, 90, 92, 100,
1217
104, 113, 133, 134, 137, 53, 123, 1, 4, 108,
1218
109, 130, 66, 91, 4, 66, 66, 66, 106, 66,
1219
88, 88, 88, 110, 113, 88, 106, 88, 93, 87,
1220
136, 137, 106, 113, 135, 1, 139, 113, 110, 94,
1221
4, 113, 113, 89, 4, 92, 95, 88, 66, 101,
1222
111, 134, 106, 106, 1, 4, 135, 88, 124, 125,
1223
126, 127, 67, 135, 135, 26, 40, 137, 112, 10,
1224
102, 106, 16, 126, 106, 106, 66, 130, 106, 135,
1225
103, 89, 133, 89, 113, 135, 113, 137, 117, 20,
1226
96, 97, 135, 106, 137, 106, 106, 106, 1, 24,
1227
25, 98, 106, 89, 106, 95, 89, 134, 7, 8,
1228
57, 58, 84, 99, 53, 138, 95, 135, 7, 7,
1229
138, 106, 135, 106, 106, 87, 106, 89, 87, 89
1168
1232
#define yyerrok (yyerrstatus = 0)
2321
2571
* Check that the body is a `delete a[i]' statement,
2322
2572
* and that both the loop var and array names match.
2324
if ((yyvsp[(8) - (8)].nodeval) != NULL && (yyvsp[(8) - (8)].nodeval)->type == Node_K_delete && (yyvsp[(8) - (8)].nodeval)->rnode != NULL) {
2327
assert((yyvsp[(8) - (8)].nodeval)->rnode->type == Node_expression_list);
2328
arr = (yyvsp[(8) - (8)].nodeval)->lnode; /* array var */
2329
sub = (yyvsp[(8) - (8)].nodeval)->rnode->lnode; /* index var */
2331
if ( (arr->type == Node_var_new
2332
|| arr->type == Node_var_array
2333
|| arr->type == Node_param_list)
2334
&& (sub->type == Node_var_new
2335
|| sub->type == Node_var
2336
|| sub->type == Node_param_list)
2337
&& strcmp((yyvsp[(3) - (8)].sval), sub->vname) == 0
2338
&& strcmp((yyvsp[(5) - (8)].sval), arr->vname) == 0) {
2339
(yyvsp[(8) - (8)].nodeval)->type = Node_K_delete_loop;
2340
(yyval.nodeval) = (yyvsp[(8) - (8)].nodeval);
2341
free((yyvsp[(3) - (8)].sval)); /* thanks to valgrind for pointing these out */
2342
free((yyvsp[(5) - (8)].sval));
2575
INSTRUCTION *ip = (yyvsp[(8) - (8)])->nexti->nexti;
2577
if ((yyvsp[(5) - (8)])->nexti->opcode == Op_push && (yyvsp[(5) - (8)])->lasti == (yyvsp[(5) - (8)])->nexti)
2578
arr = (yyvsp[(5) - (8)])->nexti->memory;
2580
&& ip->opcode == Op_no_op
2581
&& ip->nexti->opcode == Op_push_array
2582
&& strcmp(ip->nexti->memory->vname, arr->vname) == 0
2583
&& ip->nexti->nexti == (yyvsp[(8) - (8)])->lasti
2585
(void) make_assignable((yyvsp[(8) - (8)])->nexti);
2586
(yyvsp[(8) - (8)])->lasti->opcode = Op_K_delete_loop;
2587
(yyvsp[(8) - (8)])->lasti->expr_count = 0;
2588
bcfree((yyvsp[(1) - (8)]));
2590
bcfree((yyvsp[(3) - (8)]));
2591
bcfree((yyvsp[(4) - (8)]));
2592
bcfree((yyvsp[(5) - (8)]));
2593
(yyval) = (yyvsp[(8) - (8)]);
2348
(yyval.nodeval) = node((yyvsp[(8) - (8)].nodeval), Node_K_arrayfor,
2349
make_for_loop(variable((yyvsp[(3) - (8)].sval), CAN_FREE, Node_var),
2350
(NODE *) NULL, variable((yyvsp[(5) - (8)].sval), CAN_FREE, Node_var_array)));
2357
/* Line 1455 of yacc.c */
2358
#line 459 "awkgram.y"
2360
(yyval.nodeval) = node((yyvsp[(12) - (12)].nodeval), Node_K_for, (NODE *) make_for_loop((yyvsp[(3) - (12)].nodeval), (yyvsp[(6) - (12)].nodeval), (yyvsp[(9) - (12)].nodeval)));
2366
/* Line 1455 of yacc.c */
2367
#line 463 "awkgram.y"
2369
(yyval.nodeval) = node((yyvsp[(11) - (11)].nodeval), Node_K_for,
2370
(NODE *) make_for_loop((yyvsp[(3) - (11)].nodeval), (NODE *) NULL, (yyvsp[(8) - (11)].nodeval)));
2376
/* Line 1455 of yacc.c */
2377
#line 469 "awkgram.y"
2378
{ (yyval.nodeval) = node((NODE *) NULL, Node_K_break, (NODE *) NULL); }
2383
/* Line 1455 of yacc.c */
2384
#line 472 "awkgram.y"
2385
{ (yyval.nodeval) = node((NODE *) NULL, Node_K_continue, (NODE *) NULL); }
2390
/* Line 1455 of yacc.c */
2391
#line 474 "awkgram.y"
2394
if (begin_or_end_rule)
2395
yyerror(_("`%s' used in %s action"), "next",
2396
(parsing_end_rule ? "END" : "BEGIN"));
2397
else if (beginfile_or_endfile_rule)
2398
yyerror(_("`%s' used in %s action"), "next",
2399
(parsing_endfile_rule ? "ENDFILE" : "BEGINFILE"));
2401
(yyval.nodeval) = node((NODE *) NULL, type, (NODE *) NULL);
2407
/* Line 1455 of yacc.c */
2408
#line 486 "awkgram.y"
2410
static short warned = FALSE;
2412
if (do_traditional) {
2414
* can't use yyerror, since may have overshot
2418
error(_("`nextfile' is a gawk extension"));
2420
if (do_lint && ! warned) {
2422
lintwarn(_("`nextfile' is a gawk extension"));
2424
if (begin_or_end_rule) {
2427
error(_("`%s' used in %s action"), "nextfile",
2428
(parsing_end_rule ? "END" : "BEGIN"));
2431
else if (beginfile_or_endfile_rule) {
2434
error(_("`%s' used in %s action"), "nextfile",
2435
(parsing_endfile_rule ? "END" : "BEGIN"));
2438
else if (parsing_endfile_rule) {
2441
error(_("`%s' used in %s action"), "nextfile",
2442
(parsing_endfile_rule ? "ENDFILE" : "BEGINFILE"));
2444
(yyval.nodeval) = node((NODE *) NULL, Node_K_nextfile, (NODE *) NULL);
2597
/* [ Op_push_array a ]
2598
* [ Op_arrayfor_init| w ]
2599
* [ Op_push_loop | z | y ]
2600
* z: [ Op_arrayfor_incr | y ]
2601
* [ Op_var_assign if any ]
2607
* w: [Op_arrayfor_final ]
2611
ip = (yyvsp[(5) - (8)]);
2612
ip->nexti->opcode = Op_push_array;
2613
(yyvsp[(3) - (8)])->opcode = Op_arrayfor_init;
2614
(void) list_append(ip, (yyvsp[(3) - (8)]));
2616
(yyvsp[(4) - (8)])->opcode = Op_arrayfor_incr;
2617
(yyvsp[(4) - (8)])->array_var = variable(var_name, Node_var);
2618
(yyvsp[(1) - (8)])->opcode = Op_push_loop;
2619
(yyvsp[(1) - (8)])->target_continue = (yyvsp[(4) - (8)]);
2621
(void) list_append(ip, (yyvsp[(1) - (8)]));
2623
/* add update_FOO instruction if necessary */
2624
if ((yyvsp[(4) - (8)])->array_var->type == Node_var && (yyvsp[(4) - (8)])->array_var->var_update) {
2625
(void) list_append(ip, instruction(Op_var_update));
2626
ip->lasti->memory = (yyvsp[(4) - (8)])->array_var;
2628
(void) list_append(ip, (yyvsp[(4) - (8)]));
2630
/* add set_FOO instruction if necessary */
2631
if ((yyvsp[(4) - (8)])->array_var->type == Node_var && (yyvsp[(4) - (8)])->array_var->var_assign) {
2632
(void) list_append(ip, instruction(Op_var_assign));
2633
ip->lasti->memory = (yyvsp[(4) - (8)])->array_var;
2637
(void) list_append(ip, instruction(Op_exec_count));
2638
((yyvsp[(1) - (8)]) + 1)->opcode = Op_K_arrayfor;
2639
((yyvsp[(1) - (8)]) + 1)->forloop_cond = (yyvsp[(4) - (8)]);
2640
((yyvsp[(1) - (8)]) + 1)->forloop_body = ip->lasti;
2643
if ((yyvsp[(8) - (8)]) != NULL)
2644
(void) list_merge(ip, (yyvsp[(8) - (8)]));
2646
(void) list_append(ip, instruction(Op_jmp));
2647
ip->lasti->target_jmp = (yyvsp[(4) - (8)]);
2648
(void) list_append(ip, instruction(Op_pop_loop));
2649
(yyvsp[(4) - (8)])->target_jmp = (yyvsp[(1) - (8)])->target_break = ip->lasti;
2650
(yyval) = list_append(ip, instruction(Op_arrayfor_final));
2651
(yyvsp[(3) - (8)])->target_jmp = (yyval)->lasti;
2653
fix_break_continue((yyvsp[(1) - (8)]), (yyvsp[(4) - (8)])->target_jmp, TRUE);
2450
2663
/* Line 1455 of yacc.c */
2451
#line 524 "awkgram.y"
2452
{ (yyval.nodeval) = node((yyvsp[(2) - (3)].nodeval), Node_K_exit, (NODE *) NULL); }
2664
#line 709 "awkgram.y"
2666
(yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), (yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)]));
2457
2675
/* Line 1455 of yacc.c */
2458
#line 526 "awkgram.y"
2676
#line 716 "awkgram.y"
2461
yyerror(_("`return' used outside function context"));
2678
(yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), (INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)]));
2467
2687
/* Line 1455 of yacc.c */
2468
#line 531 "awkgram.y"
2688
#line 723 "awkgram.y"
2470
(yyval.nodeval) = node((yyvsp[(3) - (4)].nodeval) == NULL ? Nnull_string : (yyvsp[(3) - (4)].nodeval),
2471
Node_K_return, (NODE *) NULL);
2691
(yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_exec_count));
2693
(yyval) = (yyvsp[(1) - (1)]);
2699
/* Line 1455 of yacc.c */
2700
#line 733 "awkgram.y"
2702
if (! break_allowed)
2703
yyerror(_("`break' is not allowed outside a loop or switch"));
2705
(yyvsp[(1) - (2)])->target_jmp = NULL;
2706
(yyval) = list_create((yyvsp[(1) - (2)]));
2477
2713
/* Line 1455 of yacc.c */
2478
#line 547 "awkgram.y"
2479
{ in_print = TRUE; in_parens = 0; }
2714
#line 742 "awkgram.y"
2716
if (! continue_allowed)
2717
yyerror(_("`continue' is not allowed outside a loop"));
2719
(yyvsp[(1) - (2)])->target_jmp = NULL;
2720
(yyval) = list_create((yyvsp[(1) - (2)]));
2484
2727
/* Line 1455 of yacc.c */
2485
#line 548 "awkgram.y"
2728
#line 751 "awkgram.y"
2488
* Optimization: plain `print' has no expression list, so $3 is null.
2489
* If $3 is an expression list with one element (rnode == null)
2490
* and lnode is a field spec for field 0, we have `print $0'.
2491
* For both, use Node_K_print_rec, which is faster for these two cases.
2493
if ((yyvsp[(1) - (4)].nodetypeval) == Node_K_print &&
2494
((yyvsp[(3) - (4)].nodeval) == NULL
2495
|| ((yyvsp[(3) - (4)].nodeval)->type == Node_expression_list
2496
&& (yyvsp[(3) - (4)].nodeval)->rnode == NULL
2497
&& (yyvsp[(3) - (4)].nodeval)->lnode->type == Node_field_spec
2498
&& (yyvsp[(3) - (4)].nodeval)->lnode->lnode->type == Node_val
2499
&& (yyvsp[(3) - (4)].nodeval)->lnode->lnode->numbr == 0.0))
2501
static short warned = FALSE;
2503
(yyval.nodeval) = node(NULL, Node_K_print_rec, (yyvsp[(4) - (4)].nodeval));
2505
if (do_lint && (yyvsp[(3) - (4)].nodeval) == NULL && begin_or_end_rule && ! warned) {
2508
_("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
2511
(yyval.nodeval) = node((yyvsp[(3) - (4)].nodeval), (yyvsp[(1) - (4)].nodetypeval), (yyvsp[(4) - (4)].nodeval));
2512
if ((yyval.nodeval)->type == Node_K_printf)
2513
count_args((yyval.nodeval));
2731
yyerror(_("`next' used in %s action"), ruletab[rule]);
2732
(yyvsp[(1) - (2)])->target_jmp = ip_rec;
2733
(yyval) = list_create((yyvsp[(1) - (2)]));
2520
2739
/* Line 1455 of yacc.c */
2521
#line 579 "awkgram.y"
2522
{ (yyval.nodeval) = node(variable((yyvsp[(2) - (5)].sval), CAN_FREE, Node_var_array), Node_K_delete, (yyvsp[(4) - (5)].nodeval)); }
2740
#line 758 "awkgram.y"
2742
static short warned = FALSE;
2744
if (do_traditional) {
2746
* can't use yyerror, since may have overshot
2750
error(_("`nextfile' is a gawk extension"));
2752
if (do_lint && ! warned) {
2754
lintwarn(_("`nextfile' is a gawk extension"));
2756
if (rule == BEGIN || rule == END || rule == ENDFILE) {
2758
error(_("`nextfile' used in %s action"), ruletab[rule]);
2761
(yyvsp[(1) - (2)])->target_jmp = ip_newfile;
2762
(yyvsp[(1) - (2)])->target_endfile = ip_endfile;
2763
(yyval) = list_create((yyvsp[(1) - (2)]));
2527
2769
/* Line 1455 of yacc.c */
2528
#line 581 "awkgram.y"
2770
#line 783 "awkgram.y"
2530
static short warned = FALSE;
2773
(yyvsp[(1) - (3)])->target_jmp = ip_atexit;
2775
(yyvsp[(1) - (3)])->target_jmp = ip_end; /* first instruction (no-op) in end block */
2532
if (do_lint && ! warned) {
2534
lintwarn(_("`delete array' is a gawk extension"));
2536
if (do_traditional) {
2538
* can't use yyerror, since may have overshot
2542
error(_("`delete array' is a gawk extension"));
2544
(yyval.nodeval) = node(variable((yyvsp[(2) - (2)].sval), CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
2777
if ((yyvsp[(2) - (3)]) == NULL) {
2778
(yyval) = list_create((yyvsp[(1) - (3)]));
2779
(void) list_prepend((yyval), instruction(Op_push_i));
2780
(yyval)->nexti->memory = Nnull_string;
2782
(yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
2550
2788
/* Line 1455 of yacc.c */
2551
#line 599 "awkgram.y"
2789
#line 797 "awkgram.y"
2554
* this is for tawk compatibility. maybe the warnings
2555
* should always be done.
2557
static short warned = FALSE;
2559
if (do_lint && ! warned) {
2561
lintwarn(_("`delete(array)' is a non-portable tawk extension"));
2563
if (do_traditional) {
2565
* can't use yyerror, since may have overshot
2569
error(_("`delete(array)' is a non-portable tawk extension"));
2571
(yyval.nodeval) = node(variable((yyvsp[(3) - (4)].sval), CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
2792
yyerror(_("`return' used outside function context"));
2577
2798
/* Line 1455 of yacc.c */
2578
#line 621 "awkgram.y"
2579
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
2584
/* Line 1455 of yacc.c */
2585
#line 626 "awkgram.y"
2586
{ (yyval.nodeval) = NULL; }
2799
#line 800 "awkgram.y"
2801
if ((yyvsp[(3) - (4)]) == NULL) {
2802
(yyval) = list_create((yyvsp[(1) - (4)]));
2803
(void) list_prepend((yyval), instruction(Op_push_i));
2804
(yyval)->nexti->memory = Nnull_string;
2806
(yyval) = list_append((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
2591
2812
/* Line 1455 of yacc.c */
2592
#line 628 "awkgram.y"
2593
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
2813
#line 820 "awkgram.y"
2814
{ in_print = TRUE; in_parens = 0; }
2598
2819
/* Line 1455 of yacc.c */
2599
#line 633 "awkgram.y"
2820
#line 821 "awkgram.y"
2601
if ((yyvsp[(1) - (1)].nodeval) == NULL) {
2602
(yyval.nodeval) = NULL;
2823
* Optimization: plain `print' has no expression list, so $3 is null.
2824
* If $3 is NULL or is a bytecode list for $0 use Op_K_print_rec,
2825
* which is faster for these two cases.
2828
if ((yyvsp[(1) - (4)])->opcode == Op_K_print &&
2829
((yyvsp[(3) - (4)]) == NULL
2830
|| ((yyvsp[(3) - (4)])->lasti->opcode == Op_field_spec
2831
&& (yyvsp[(3) - (4)])->nexti->nexti->nexti == (yyvsp[(3) - (4)])->lasti
2832
&& (yyvsp[(3) - (4)])->nexti->nexti->opcode == Op_push_i
2833
&& (yyvsp[(3) - (4)])->nexti->nexti->memory->type == Node_val
2834
&& (yyvsp[(3) - (4)])->nexti->nexti->memory->numbr == 0.0)
2837
static short warned = FALSE;
2838
/* -----------------
2843
* ------------------
2844
* [Op_K_print_rec | NULL | redir_type | expr_count]
2847
if ((yyvsp[(3) - (4)]) != NULL) {
2848
bcfree((yyvsp[(3) - (4)])->lasti); /* Op_field_spec */
2849
(yyvsp[(3) - (4)])->nexti->nexti->memory->flags &= ~PERM;
2850
(yyvsp[(3) - (4)])->nexti->nexti->memory->flags |= MALLOC;
2851
unref((yyvsp[(3) - (4)])->nexti->nexti->memory); /* Node_val */
2852
bcfree((yyvsp[(3) - (4)])->nexti->nexti); /* Op_push_i */
2853
bcfree((yyvsp[(3) - (4)])->nexti); /* Op_list */
2854
bcfree((yyvsp[(3) - (4)])); /* Op_list */
2856
if (do_lint && (rule == BEGIN || rule == END) && ! warned) {
2859
_("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
2863
(yyvsp[(1) - (4)])->expr_count = 0;
2864
(yyvsp[(1) - (4)])->opcode = Op_K_print_rec;
2865
if ((yyvsp[(4) - (4)]) == NULL) { /* no redircetion */
2866
(yyvsp[(1) - (4)])->redir_type = 0;
2867
(yyval) = list_create((yyvsp[(1) - (4)]));
2870
ip = (yyvsp[(4) - (4)])->nexti;
2871
(yyvsp[(1) - (4)])->redir_type = ip->redir_type;
2872
(yyvsp[(4) - (4)])->nexti = ip->nexti;
2874
(yyval) = list_append((yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]));
2605
NODE *head = (yyvsp[(1) - (1)].nodeval);
2608
const char **case_values = NULL;
2614
emalloc(case_values, const char **, sizeof(char*) * maxcount, "switch_body");
2615
for (curr = (yyvsp[(1) - (1)].nodeval); curr != NULL; curr = curr->rnode) {
2616
/* Assure that case statement values are unique. */
2617
if (curr->lnode->type == Node_K_case) {
2620
if (curr->lnode->lnode->type == Node_regex)
2621
caseval = curr->lnode->lnode->re_exp->stptr;
2623
caseval = force_string(tree_eval(curr->lnode->lnode))->stptr;
2625
for (i = 0; i < case_count; i++)
2626
if (strcmp(caseval, case_values[i]) == 0)
2627
yyerror(_("duplicate case values in switch body: %s"), caseval);
2629
if (case_count >= maxcount) {
2631
erealloc(case_values, const char **, sizeof(char*) * maxcount, "switch_body");
2633
case_values[case_count++] = caseval;
2635
/* Otherwise save a pointer to the default node. */
2637
yyerror(_("Duplicate `default' detected in switch body"));
2877
/* -----------------
2881
* [ expression_list ]
2882
* ------------------
2883
* [$1 | NULL | redir_type | expr_count]
2887
if ((yyvsp[(4) - (4)]) == NULL) { /* no redirection */
2888
if ((yyvsp[(3) - (4)]) == NULL) { /* printf without arg */
2889
(yyvsp[(1) - (4)])->expr_count = 0;
2890
(yyvsp[(1) - (4)])->redir_type = 0;
2891
(yyval) = list_create((yyvsp[(1) - (4)]));
2893
INSTRUCTION *t = (yyvsp[(3) - (4)]);
2894
(yyvsp[(1) - (4)])->expr_count = count_expressions(&t, FALSE);
2895
(yyvsp[(1) - (4)])->redir_type = 0;
2896
(yyval) = list_append(t, (yyvsp[(1) - (4)]));
2900
ip = (yyvsp[(4) - (4)])->nexti;
2901
(yyvsp[(1) - (4)])->redir_type = ip->redir_type;
2902
(yyvsp[(4) - (4)])->nexti = ip->nexti;
2904
if ((yyvsp[(3) - (4)]) == NULL) {
2905
(yyvsp[(1) - (4)])->expr_count = 0;
2906
(yyval) = list_append((yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]));
2908
INSTRUCTION *t = (yyvsp[(3) - (4)]);
2909
(yyvsp[(1) - (4)])->expr_count = count_expressions(&t, FALSE);
2910
(yyval) = list_append(list_merge((yyvsp[(4) - (4)]), t), (yyvsp[(1) - (4)]));
2644
/* Create the switch body. */
2645
(yyval.nodeval) = node(head, Node_switch_body, dflt);
2652
2919
/* Line 1455 of yacc.c */
2653
#line 685 "awkgram.y"
2654
{ (yyval.nodeval) = NULL; }
2920
#line 916 "awkgram.y"
2921
{ sub_counter = 0; }
2659
2926
/* Line 1455 of yacc.c */
2660
#line 687 "awkgram.y"
2927
#line 917 "awkgram.y"
2662
if ((yyvsp[(2) - (2)].nodeval) == NULL)
2663
(yyval.nodeval) = (yyvsp[(1) - (2)].nodeval);
2665
if (do_lint && isnoeffect((yyvsp[(2) - (2)].nodeval)->type))
2666
lintwarn(_("statement may have no effect"));
2667
if ((yyvsp[(1) - (2)].nodeval) == NULL)
2668
(yyval.nodeval) = node((yyvsp[(2) - (2)].nodeval), Node_case_list, (NODE *) NULL);
2670
(yyval.nodeval) = append_right(
2671
((yyvsp[(1) - (2)].nodeval)->type == Node_case_list ? (yyvsp[(1) - (2)].nodeval) : node((yyvsp[(1) - (2)].nodeval), Node_case_list, (NODE *) NULL)),
2672
((yyvsp[(2) - (2)].nodeval)->type == Node_case_list ? (yyvsp[(2) - (2)].nodeval) : node((yyvsp[(2) - (2)].nodeval), Node_case_list, (NODE *) NULL))
2929
char *arr = (yyvsp[(2) - (4)])->lextok;
2931
(yyvsp[(2) - (4)])->opcode = Op_push_array;
2932
(yyvsp[(2) - (4)])->memory = variable(arr, Node_var_array);
2934
if ((yyvsp[(4) - (4)]) == NULL) {
2935
static short warned = FALSE;
2936
if (do_lint && ! warned) {
2938
lintwarn(_("`delete array' is a gawk extension"));
2940
if (do_traditional) {
2942
* can't use yyerror, since may have overshot
2946
error(_("`delete array' is a gawk extension"));
2948
(yyvsp[(1) - (4)])->expr_count = 0;
2949
(yyval) = list_append(list_create((yyvsp[(2) - (4)])), (yyvsp[(1) - (4)]));
2951
(yyvsp[(1) - (4)])->expr_count = sub_counter;
2952
(yyval) = list_append(list_append((yyvsp[(4) - (4)]), (yyvsp[(2) - (4)])), (yyvsp[(1) - (4)]));
2681
2959
/* Line 1455 of yacc.c */
2682
#line 704 "awkgram.y"
2683
{ (yyval.nodeval) = NULL; }
2960
#line 949 "awkgram.y"
2962
static short warned = FALSE;
2963
char *arr = (yyvsp[(3) - (4)])->lextok;
2965
if (do_lint && ! warned) {
2967
lintwarn(_("`delete(array)' is a non-portable tawk extension"));
2969
if (do_traditional) {
2971
* can't use yyerror, since may have overshot
2975
error(_("`delete(array)' is a non-portable tawk extension"));
2977
(yyvsp[(3) - (4)])->memory = variable(arr, Node_var_array);
2978
(yyvsp[(3) - (4)])->opcode = Op_push_array;
2979
(yyvsp[(1) - (4)])->expr_count = 0;
2980
(yyval) = list_append(list_create((yyvsp[(3) - (4)])), (yyvsp[(1) - (4)]));
2688
2986
/* Line 1455 of yacc.c */
2689
#line 709 "awkgram.y"
2690
{ (yyval.nodeval) = node((yyvsp[(2) - (5)].nodeval), Node_K_case, (yyvsp[(5) - (5)].nodeval)); }
2987
#line 971 "awkgram.y"
2988
{ (yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
2695
2993
/* Line 1455 of yacc.c */
2696
#line 711 "awkgram.y"
2697
{ (yyval.nodeval) = node((NODE *) NULL, Node_K_default, (yyvsp[(4) - (4)].nodeval)); }
2994
#line 976 "awkgram.y"
2702
3000
/* Line 1455 of yacc.c */
2703
#line 716 "awkgram.y"
2704
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3001
#line 978 "awkgram.y"
3002
{ (yyval) = (yyvsp[(1) - (1)]); }
2709
3007
/* Line 1455 of yacc.c */
2710
#line 718 "awkgram.y"
3008
#line 983 "awkgram.y"
2712
(yyvsp[(2) - (2)].nodeval)->numbr = -(force_number((yyvsp[(2) - (2)].nodeval)));
2713
(yyval.nodeval) = (yyvsp[(2) - (2)].nodeval);
3010
INSTRUCTION *dflt = NULL;
3012
if ((yyvsp[(1) - (1)]) != NULL) {
3014
const char **case_values = NULL;
3019
emalloc(case_values, const char **, sizeof(char *) * maxcount, "statement");
3021
for (curr = (yyvsp[(1) - (1)])->case_val->nexti; curr != NULL; curr = curr->nexti) {
3022
if (curr->opcode == Op_K_case) {
3024
if (curr->memory->type == Node_regex)
3025
caseval = curr->memory->re_exp->stptr;
3027
caseval = force_string(curr->memory)->stptr;
3028
for (i = 0; i < case_count; i++)
3029
if (strcmp(caseval, case_values[i]) == 0)
3030
yyerror(_("duplicate case values in switch body: %s"), caseval);
3032
if (case_count >= maxcount) {
3034
erealloc(case_values, const char **, sizeof(char*) * maxcount, "statement");
3036
case_values[case_count++] = caseval;
3038
/* Otherwise save a pointer to the default node. */
3040
yyerror(_("duplicate `default' detected in switch body"));
3046
(yyval) = list_prepend((yyvsp[(1) - (1)])->case_stmt, instruction(Op_K_switch));
3047
(yyval)->nexti->case_val = (yyvsp[(1) - (1)])->case_val->nexti;
3048
(yyval)->nexti->switch_dflt = dflt;
3049
bcfree((yyvsp[(1) - (1)])->case_val); /* Op_list */
3050
bcfree((yyvsp[(1) - (1)])); /* Op_case_list */
3052
(yyval) = list_create(instruction(Op_K_switch));
3053
(yyval)->nexti->case_val = NULL;
3054
(yyval)->nexti->switch_dflt = NULL;
2719
3061
/* Line 1455 of yacc.c */
2720
#line 723 "awkgram.y"
2721
{ (yyval.nodeval) = (yyvsp[(2) - (2)].nodeval); }
3062
#line 1035 "awkgram.y"
2726
3068
/* Line 1455 of yacc.c */
2727
#line 725 "awkgram.y"
2728
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3069
#line 1037 "awkgram.y"
3071
if ((yyvsp[(1) - (2)]) == NULL) {
3072
(yyvsp[(2) - (2)])->case_val = list_create((yyvsp[(2) - (2)])->case_val);
3073
(yyval) = (yyvsp[(2) - (2)]);
3075
(void) list_append((yyvsp[(1) - (2)])->case_val, (yyvsp[(2) - (2)])->case_val);
3076
(void) list_merge((yyvsp[(1) - (2)])->case_stmt, (yyvsp[(2) - (2)])->case_stmt);
3077
bcfree((yyvsp[(2) - (2)])); /* Op_case_list */
3078
(yyval) = (yyvsp[(1) - (2)]);
2733
3085
/* Line 1455 of yacc.c */
2734
#line 727 "awkgram.y"
2735
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3086
#line 1049 "awkgram.y"
3092
/* Line 1455 of yacc.c */
3093
#line 1054 "awkgram.y"
3095
INSTRUCTION *casestmt = (yyvsp[(5) - (5)]);
3097
(yyvsp[(1) - (5)])->memory = (yyvsp[(2) - (5)])->memory;
3098
bcfree((yyvsp[(2) - (5)]));
3099
if ((yyvsp[(5) - (5)]) == NULL)
3100
casestmt = list_create(instruction(Op_no_op));
3102
(void) list_prepend(casestmt, instruction(Op_exec_count));
3104
(yyvsp[(1) - (5)])->target_stmt = casestmt->nexti;
3106
/* recycle $3 as Op_case_list */
3107
(yyvsp[(3) - (5)])->opcode = Op_case_list;
3108
(yyvsp[(3) - (5)])->case_val = (yyvsp[(1) - (5)]); /* Op_K_case */
3109
(yyvsp[(3) - (5)])->case_stmt = casestmt; /* Op_list */
3110
(yyval) = (yyvsp[(3) - (5)]);
3116
/* Line 1455 of yacc.c */
3117
#line 1073 "awkgram.y"
3119
INSTRUCTION *casestmt = (yyvsp[(4) - (4)]);
3121
if ((yyvsp[(4) - (4)]) == NULL)
3122
casestmt = list_create(instruction(Op_no_op));
3124
(void) list_prepend(casestmt, instruction(Op_exec_count));
3126
(yyvsp[(1) - (4)])->target_stmt = casestmt->nexti;
3127
(yyvsp[(2) - (4)])->opcode = Op_case_list;
3128
(yyvsp[(2) - (4)])->case_val = (yyvsp[(1) - (4)]); /* Op_K_default */
3129
(yyvsp[(2) - (4)])->case_stmt = casestmt; /* Op_list */
3130
(yyval) = (yyvsp[(2) - (4)]);
3136
/* Line 1455 of yacc.c */
3137
#line 1091 "awkgram.y"
3139
(yyvsp[(1) - (1)])->opcode = Op_K_case;
3140
(yyval) = (yyvsp[(1) - (1)]);
2740
3146
/* Line 1455 of yacc.c */
2741
#line 742 "awkgram.y"
2742
{ (yyval.nodeval) = node((yyvsp[(2) - (5)].nodeval), Node_expression_list, (yyvsp[(4) - (5)].nodeval)); }
3147
#line 1096 "awkgram.y"
3149
(yyvsp[(2) - (2)])->memory->numbr = -(force_number((yyvsp[(2) - (2)])->memory));
3150
bcfree((yyvsp[(1) - (2)]));
3151
(yyvsp[(2) - (2)])->opcode = Op_K_case;
3152
(yyval) = (yyvsp[(2) - (2)]);
2747
3158
/* Line 1455 of yacc.c */
2748
#line 747 "awkgram.y"
3159
#line 1103 "awkgram.y"
2752
(yyval.nodeval) = NULL;
3161
bcfree((yyvsp[(1) - (2)]));
3162
(yyvsp[(2) - (2)])->opcode = Op_K_case;
3163
(yyval) = (yyvsp[(2) - (2)]);
2758
3169
/* Line 1455 of yacc.c */
2759
#line 752 "awkgram.y"
2760
{ in_print = FALSE; in_parens = 0; }
3170
#line 1109 "awkgram.y"
3172
(yyvsp[(1) - (1)])->opcode = Op_K_case;
3173
(yyval) = (yyvsp[(1) - (1)]);
2765
3179
/* Line 1455 of yacc.c */
2766
#line 753 "awkgram.y"
3180
#line 1114 "awkgram.y"
2768
(yyval.nodeval) = node((yyvsp[(3) - (3)].nodeval), (yyvsp[(1) - (3)].nodetypeval), (NODE *) NULL);
2769
if ((yyvsp[(1) - (3)].nodetypeval) == Node_redirect_twoway
2770
&& (yyvsp[(3) - (3)].nodeval)->type == Node_K_getline
2771
&& (yyvsp[(3) - (3)].nodeval)->rnode != NULL
2772
&& (yyvsp[(3) - (3)].nodeval)->rnode->type == Node_redirect_twoway)
2773
yyerror(_("multistage two-way pipelines don't work"));
3182
(yyvsp[(1) - (1)])->opcode = Op_K_case;
3183
(yyval) = (yyvsp[(1) - (1)]);
2779
3189
/* Line 1455 of yacc.c */
2780
#line 765 "awkgram.y"
2782
(yyval.nodeval) = node((yyvsp[(3) - (6)].nodeval), Node_K_if,
2783
node((yyvsp[(6) - (6)].nodeval), Node_if_branches, (NODE *) NULL));
3190
#line 1122 "awkgram.y"
3191
{ (yyval) = (yyvsp[(1) - (1)]); }
2789
3196
/* Line 1455 of yacc.c */
2790
#line 771 "awkgram.y"
2791
{ (yyval.nodeval) = node((yyvsp[(3) - (9)].nodeval), Node_K_if,
2792
node((yyvsp[(6) - (9)].nodeval), Node_if_branches, (yyvsp[(9) - (9)].nodeval))); }
3197
#line 1124 "awkgram.y"
3198
{ (yyval) = (yyvsp[(1) - (1)]); }
3203
/* Line 1455 of yacc.c */
3204
#line 1134 "awkgram.y"
3206
(yyval) = (yyvsp[(2) - (3)]);
3212
/* Line 1455 of yacc.c */
3213
#line 1141 "awkgram.y"
3223
/* Line 1455 of yacc.c */
3224
#line 1146 "awkgram.y"
3225
{ in_print = FALSE; in_parens = 0; }
2797
3230
/* Line 1455 of yacc.c */
2798
#line 787 "awkgram.y"
2799
{ (yyval.nodeval) = NULL; }
3231
#line 1147 "awkgram.y"
3233
if ((yyvsp[(1) - (3)])->redir_type == redirect_twoway
3234
&& (yyvsp[(3) - (3)])->lasti->opcode == Op_K_getline_redir
3235
&& (yyvsp[(3) - (3)])->lasti->redir_type == redirect_twoway)
3236
yyerror(_("multistage two-way pipelines don't work"));
3237
(yyval) = list_prepend((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
2804
3243
/* Line 1455 of yacc.c */
2805
#line 789 "awkgram.y"
2806
{ (yyval.nodeval) = node((yyvsp[(2) - (2)].nodeval), Node_redirect_input, (NODE *) NULL); }
3244
#line 1158 "awkgram.y"
3246
(yyval) = mk_condition((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]), (yyvsp[(6) - (6)]), NULL, NULL);
2811
3252
/* Line 1455 of yacc.c */
2812
#line 794 "awkgram.y"
2813
{ (yyval.nodeval) = NULL; }
2818
/* Line 1455 of yacc.c */
2819
#line 796 "awkgram.y"
2820
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
2825
/* Line 1455 of yacc.c */
2826
#line 801 "awkgram.y"
2827
{ (yyval.nodeval) = make_param((yyvsp[(1) - (1)].sval)); }
2832
/* Line 1455 of yacc.c */
2833
#line 803 "awkgram.y"
2834
{ (yyval.nodeval) = append_right((yyvsp[(1) - (3)].nodeval), make_param((yyvsp[(3) - (3)].sval))); yyerrok; }
2839
/* Line 1455 of yacc.c */
2840
#line 805 "awkgram.y"
2841
{ (yyval.nodeval) = NULL; }
3253
#line 1163 "awkgram.y"
3255
(yyval) = mk_condition((yyvsp[(3) - (9)]), (yyvsp[(1) - (9)]), (yyvsp[(6) - (9)]), (yyvsp[(7) - (9)]), (yyvsp[(9) - (9)]));
2846
3261
/* Line 1455 of yacc.c */
2847
#line 807 "awkgram.y"
2848
{ (yyval.nodeval) = NULL; }
3262
#line 1180 "awkgram.y"
2853
3268
/* Line 1455 of yacc.c */
2854
#line 809 "awkgram.y"
2855
{ (yyval.nodeval) = NULL; }
2860
/* Line 1455 of yacc.c */
2861
#line 815 "awkgram.y"
2862
{ (yyval.nodeval) = NULL; }
2867
/* Line 1455 of yacc.c */
2868
#line 817 "awkgram.y"
2869
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3269
#line 1182 "awkgram.y"
3271
bcfree((yyvsp[(1) - (2)]));
3272
(yyval) = (yyvsp[(2) - (2)]);
2874
3278
/* Line 1455 of yacc.c */
2875
#line 822 "awkgram.y"
2876
{ (yyval.nodeval) = NULL; }
3279
#line 1195 "awkgram.y"
3281
append_param((yyvsp[(1) - (1)])->lextok);
3282
(yyvsp[(1) - (1)])->lextok = NULL;
3283
bcfree((yyvsp[(1) - (1)]));
2881
3289
/* Line 1455 of yacc.c */
2882
#line 824 "awkgram.y"
2883
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3290
#line 1201 "awkgram.y"
3292
append_param((yyvsp[(3) - (3)])->lextok);
3293
(yyvsp[(3) - (3)])->lextok = NULL;
3294
bcfree((yyvsp[(3) - (3)]));
2888
3301
/* Line 1455 of yacc.c */
2889
#line 829 "awkgram.y"
2890
{ (yyval.nodeval) = node((yyvsp[(1) - (1)].nodeval), Node_expression_list, (NODE *) NULL); }
3302
#line 1208 "awkgram.y"
3303
{ /* func_params = NULL; */ }
2895
3308
/* Line 1455 of yacc.c */
2896
#line 831 "awkgram.y"
2898
(yyval.nodeval) = append_right((yyvsp[(1) - (3)].nodeval),
2899
node((yyvsp[(3) - (3)].nodeval), Node_expression_list, (NODE *) NULL));
3309
#line 1210 "awkgram.y"
3310
{ /* func_params = NULL; */ }
2906
3315
/* Line 1455 of yacc.c */
2907
#line 837 "awkgram.y"
2908
{ (yyval.nodeval) = NULL; }
3316
#line 1212 "awkgram.y"
3317
{ /* func_params = NULL; */ }
2913
3322
/* Line 1455 of yacc.c */
2914
#line 839 "awkgram.y"
2915
{ (yyval.nodeval) = NULL; }
3323
#line 1218 "awkgram.y"
2920
3329
/* Line 1455 of yacc.c */
2921
#line 841 "awkgram.y"
2922
{ (yyval.nodeval) = NULL; }
3330
#line 1220 "awkgram.y"
3331
{ (yyval) = (yyvsp[(1) - (1)]); }
2927
3336
/* Line 1455 of yacc.c */
2928
#line 843 "awkgram.y"
2929
{ (yyval.nodeval) = NULL; }
3337
#line 1225 "awkgram.y"
2934
3343
/* Line 1455 of yacc.c */
2935
#line 848 "awkgram.y"
2937
if (do_lint && (yyvsp[(3) - (3)].nodeval)->type == Node_regex)
2938
lintwarn(_("regular expression on right of assignment"));
2939
(yyval.nodeval) = optimize_concat((yyvsp[(1) - (3)].nodeval), (yyvsp[(2) - (3)].nodetypeval), (yyvsp[(3) - (3)].nodeval));
3344
#line 1227 "awkgram.y"
3345
{ (yyval) = (yyvsp[(1) - (1)]); }
2945
3350
/* Line 1455 of yacc.c */
2946
#line 854 "awkgram.y"
2947
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_and, (yyvsp[(3) - (3)].nodeval)); }
3351
#line 1232 "awkgram.y"
3352
{ (yyval) = mk_expression_list(NULL, (yyvsp[(1) - (1)])); }
2952
3357
/* Line 1455 of yacc.c */
2953
#line 856 "awkgram.y"
2954
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_or, (yyvsp[(3) - (3)].nodeval)); }
3358
#line 1234 "awkgram.y"
3360
(yyval) = mk_expression_list((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));
2959
3367
/* Line 1455 of yacc.c */
2960
#line 858 "awkgram.y"
2962
if ((yyvsp[(1) - (3)].nodeval)->type == Node_regex)
2963
warning(_("regular expression on left of `~' or `!~' operator"));
2964
(yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), (yyvsp[(2) - (3)].nodetypeval), mk_rexp((yyvsp[(3) - (3)].nodeval)));
3368
#line 1239 "awkgram.y"
2970
3374
/* Line 1455 of yacc.c */
2971
#line 864 "awkgram.y"
2974
warning(_("old awk does not support the keyword `in' except after `for'"));
2975
(yyval.nodeval) = node(variable((yyvsp[(3) - (3)].sval), CAN_FREE, Node_var_array), Node_in_array, (yyvsp[(1) - (3)].nodeval));
3375
#line 1241 "awkgram.y"
2981
3381
/* Line 1455 of yacc.c */
2982
#line 870 "awkgram.y"
2984
if (do_lint && (yyvsp[(3) - (3)].nodeval)->type == Node_regex)
2985
lintwarn(_("regular expression on right of comparison"));
2986
(yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), (yyvsp[(2) - (3)].nodetypeval), (yyvsp[(3) - (3)].nodeval));
3382
#line 1243 "awkgram.y"
2992
3388
/* Line 1455 of yacc.c */
2993
#line 876 "awkgram.y"
2994
{ (yyval.nodeval) = node((yyvsp[(1) - (5)].nodeval), Node_cond_exp, node((yyvsp[(3) - (5)].nodeval), Node_if_branches, (yyvsp[(5) - (5)].nodeval)));}
3389
#line 1245 "awkgram.y"
2999
3395
/* Line 1455 of yacc.c */
3000
#line 878 "awkgram.y"
3001
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3396
#line 1251 "awkgram.y"
3398
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
3399
lintwarn(_("regular expression on right of assignment"));
3400
(yyval) = mk_assignment((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)]));
3006
3406
/* Line 1455 of yacc.c */
3007
#line 883 "awkgram.y"
3008
{ (yyval.nodetypeval) = (yyvsp[(1) - (1)].nodetypeval); }
3407
#line 1257 "awkgram.y"
3408
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3013
3413
/* Line 1455 of yacc.c */
3014
#line 885 "awkgram.y"
3015
{ (yyval.nodetypeval) = (yyvsp[(1) - (1)].nodetypeval); }
3414
#line 1259 "awkgram.y"
3415
{ (yyval) = mk_boolean((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3020
3420
/* Line 1455 of yacc.c */
3021
#line 887 "awkgram.y"
3022
{ (yyval.nodetypeval) = Node_assign_quotient; }
3421
#line 1261 "awkgram.y"
3423
if ((yyvsp[(1) - (3)])->lasti->opcode == Op_match_rec)
3424
warning(_("regular expression on left of `~' or `!~' operator"));
3426
if ((yyvsp[(3) - (3)])->lasti == (yyvsp[(3) - (3)])->nexti && (yyvsp[(3) - (3)])->nexti->opcode == Op_match_rec) {
3427
(yyvsp[(2) - (3)])->memory = (yyvsp[(3) - (3)])->nexti->memory;
3428
bcfree((yyvsp[(3) - (3)])->nexti); /* Op_match_rec */
3429
bcfree((yyvsp[(3) - (3)])); /* Op_list */
3430
(yyval) = list_append((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]));
3432
(yyvsp[(2) - (3)])->memory = make_regnode(Node_dynregex, NULL);
3433
(yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
3027
3440
/* Line 1455 of yacc.c */
3028
#line 892 "awkgram.y"
3029
{ (yyval.nodetypeval) = (yyvsp[(1) - (1)].nodetypeval); }
3441
#line 1276 "awkgram.y"
3444
warning(_("old awk does not support the keyword `in' except after `for'"));
3445
(yyvsp[(3) - (3)])->nexti->opcode = Op_push_array;
3446
(yyvsp[(2) - (3)])->opcode = Op_in_array;
3447
(yyvsp[(2) - (3)])->expr_count = 1;
3448
(yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
3034
3454
/* Line 1455 of yacc.c */
3035
#line 894 "awkgram.y"
3036
{ (yyval.nodetypeval) = Node_less; }
3455
#line 1285 "awkgram.y"
3457
if (do_lint && (yyvsp[(3) - (3)])->lasti->opcode == Op_match_rec)
3458
lintwarn(_("regular expression on right of comparison"));
3459
(yyval) = list_append(list_merge((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])), (yyvsp[(2) - (3)]));
3465
/* Line 1455 of yacc.c */
3466
#line 1291 "awkgram.y"
3467
{ (yyval) = mk_condition((yyvsp[(1) - (5)]), (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), (yyvsp[(5) - (5)])); }
3041
3472
/* Line 1455 of yacc.c */
3042
#line 899 "awkgram.y"
3043
{ (yyval.nodetypeval) = Node_greater; }
3473
#line 1293 "awkgram.y"
3474
{ (yyval) = (yyvsp[(1) - (1)]); }
3048
3479
/* Line 1455 of yacc.c */
3049
#line 904 "awkgram.y"
3050
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3480
#line 1298 "awkgram.y"
3481
{ (yyval) = (yyvsp[(1) - (1)]); }
3055
3486
/* Line 1455 of yacc.c */
3056
#line 906 "awkgram.y"
3057
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3487
#line 1300 "awkgram.y"
3488
{ (yyval) = (yyvsp[(1) - (1)]); }
3062
3493
/* Line 1455 of yacc.c */
3063
#line 908 "awkgram.y"
3064
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (2)].nodeval), Node_concat, (yyvsp[(2) - (2)].nodeval)); }
3494
#line 1302 "awkgram.y"
3496
(yyvsp[(2) - (2)])->opcode = Op_assign_quotient;
3497
(yyval) = (yyvsp[(2) - (2)]);
3503
/* Line 1455 of yacc.c */
3504
#line 1310 "awkgram.y"
3505
{ (yyval) = (yyvsp[(1) - (1)]); }
3069
3510
/* Line 1455 of yacc.c */
3070
#line 915 "awkgram.y"
3071
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_exp, (yyvsp[(3) - (3)].nodeval)); }
3511
#line 1312 "awkgram.y"
3512
{ (yyval) = (yyvsp[(1) - (1)]); }
3076
3517
/* Line 1455 of yacc.c */
3077
#line 917 "awkgram.y"
3078
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_times, (yyvsp[(3) - (3)].nodeval)); }
3518
#line 1317 "awkgram.y"
3519
{ (yyval) = (yyvsp[(1) - (1)]); }
3083
3524
/* Line 1455 of yacc.c */
3084
#line 919 "awkgram.y"
3085
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_quotient, (yyvsp[(3) - (3)].nodeval)); }
3525
#line 1319 "awkgram.y"
3526
{ (yyval) = (yyvsp[(1) - (1)]); }
3090
3531
/* Line 1455 of yacc.c */
3091
#line 921 "awkgram.y"
3092
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_mod, (yyvsp[(3) - (3)].nodeval)); }
3532
#line 1324 "awkgram.y"
3533
{ (yyval) = (yyvsp[(1) - (1)]); }
3097
3538
/* Line 1455 of yacc.c */
3098
#line 923 "awkgram.y"
3099
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_plus, (yyvsp[(3) - (3)].nodeval)); }
3539
#line 1326 "awkgram.y"
3540
{ (yyval) = (yyvsp[(1) - (1)]); }
3104
3545
/* Line 1455 of yacc.c */
3105
#line 925 "awkgram.y"
3106
{ (yyval.nodeval) = constant_fold((yyvsp[(1) - (3)].nodeval), Node_minus, (yyvsp[(3) - (3)].nodeval)); }
3111
/* Line 1455 of yacc.c */
3112
#line 927 "awkgram.y"
3546
#line 1328 "awkgram.y"
3115
* In BEGINFILE/ENDFILE, allow `getline var < file'
3117
if (beginfile_or_endfile_rule) {
3118
if ((yyvsp[(2) - (3)].nodeval) != NULL && (yyvsp[(3) - (3)].nodeval) != NULL)
3121
if ((yyvsp[(2) - (3)].nodeval) != NULL)
3122
fatal(_("`getline var' invalid inside %s rule"),
3123
parsing_endfile_rule ? "ENDFILE" : "BEGINFILE");
3125
fatal(_("`getline' invalid inside %s rule"),
3126
parsing_endfile_rule ? "ENDFILE" : "BEGINFILE");
3129
if (do_lint && parsing_end_rule && (yyvsp[(3) - (3)].nodeval) == NULL)
3130
lintwarn(_("non-redirected `getline' undefined inside END action"));
3131
(yyval.nodeval) = node((yyvsp[(2) - (3)].nodeval), Node_K_getline, (yyvsp[(3) - (3)].nodeval));
3549
int is_simple_var = FALSE;
3550
INSTRUCTION *ip1, *ip2;
3552
if ((yyvsp[(1) - (2)])->lasti->opcode == Op_concat) {
3553
/* multiple (> 2) adjacent strings optimization */
3554
is_simple_var = ((yyvsp[(1) - (2)])->lasti->concat_flag & CSVAR);
3555
count = (yyvsp[(1) - (2)])->lasti->expr_count + 1;
3556
(yyvsp[(1) - (2)])->lasti->opcode = Op_no_op;
3558
is_simple_var = ((yyvsp[(1) - (2)])->nexti->opcode == Op_push
3559
&& (yyvsp[(1) - (2)])->lasti == (yyvsp[(1) - (2)])->nexti); /* first exp. is a simple
3560
* variable?; kludge for use
3561
* in Op_assign_concat.
3564
ip1 = (yyvsp[(1) - (2)])->nexti;
3565
ip2 = (yyvsp[(2) - (2)])->nexti;
3566
if (ip1->memory != NULL && ip1->memory->type == Node_val && ip1 == (yyvsp[(1) - (2)])->lasti
3567
&& ip2->memory != NULL && ip2->memory->type == Node_val && ip2 == (yyvsp[(2) - (2)])->lasti && do_optimize > 1){
3570
ip1->memory = force_string(ip1->memory);
3571
ip2->memory = force_string(ip2->memory);
3572
nlen = ip1->memory->stlen + ip2->memory->stlen;
3573
erealloc(ip1->memory->stptr, char *, nlen + 2, "constant fold");
3574
memcpy(ip1->memory->stptr + ip1->memory->stlen, ip2->memory->stptr, ip2->memory->stlen);
3575
ip1->memory->stlen = nlen;
3576
ip1->memory->stptr[nlen] = '\0';
3577
ip1->memory->flags &= ~(NUMCUR|NUMBER);
3578
ip1->memory->flags |= (STRING|STRCUR);
3579
bcfree((yyvsp[(2) - (2)]));
3581
(yyvsp[(1) - (2)])->opcode = Op_push_i;
3582
(yyval) = (yyvsp[(1) - (2)]);
3584
(yyval) = list_append(list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])), instruction(Op_concat));
3585
(yyval)->lasti->concat_flag = (is_simple_var ? CSVAR : 0);
3586
(yyval)->lasti->expr_count = count;
3587
if (count > max_args)
3137
3595
/* Line 1455 of yacc.c */
3138
#line 948 "awkgram.y"
3139
{ (yyval.nodeval) = node((yyvsp[(1) - (2)].nodeval), Node_postincrement, (NODE *) NULL); }
3596
#line 1378 "awkgram.y"
3597
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3144
3602
/* Line 1455 of yacc.c */
3145
#line 950 "awkgram.y"
3146
{ (yyval.nodeval) = node((yyvsp[(1) - (2)].nodeval), Node_postdecrement, (NODE *) NULL); }
3603
#line 1380 "awkgram.y"
3604
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3151
3609
/* Line 1455 of yacc.c */
3152
#line 952 "awkgram.y"
3155
warning(_("old awk does not support the keyword `in' except after `for'"));
3156
warning(_("old awk does not support multidimensional arrays"));
3158
(yyval.nodeval) = node(variable((yyvsp[(5) - (5)].sval), CAN_FREE, Node_var_array), Node_in_array, (yyvsp[(2) - (5)].nodeval));
3610
#line 1382 "awkgram.y"
3611
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3164
3616
/* Line 1455 of yacc.c */
3165
#line 965 "awkgram.y"
3167
(yyval.nodeval) = node((yyvsp[(4) - (4)].nodeval), Node_K_getline,
3168
node((yyvsp[(1) - (4)].nodeval), (yyvsp[(2) - (4)].nodetypeval), (NODE *) NULL));
3617
#line 1384 "awkgram.y"
3618
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3174
3623
/* Line 1455 of yacc.c */
3175
#line 970 "awkgram.y"
3176
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_exp, (yyvsp[(3) - (3)].nodeval)); }
3624
#line 1386 "awkgram.y"
3625
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3181
3630
/* Line 1455 of yacc.c */
3182
#line 972 "awkgram.y"
3183
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_times, (yyvsp[(3) - (3)].nodeval)); }
3631
#line 1388 "awkgram.y"
3632
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3188
3637
/* Line 1455 of yacc.c */
3189
#line 974 "awkgram.y"
3190
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_quotient, (yyvsp[(3) - (3)].nodeval)); }
3638
#line 1390 "awkgram.y"
3641
* In BEGINFILE/ENDFILE, allow `getline var < file'
3643
if (rule == BEGINFILE || rule == ENDFILE) {
3644
if ((yyvsp[(2) - (3)]) != NULL && (yyvsp[(3) - (3)]) != NULL)
3647
if ((yyvsp[(2) - (3)]) != NULL)
3648
yyerror(_("`getline var' invalid inside `%s' rule"), ruletab[rule]);
3650
yyerror(_("`getline' invalid inside `%s' rule"), ruletab[rule]);
3655
if (do_lint && rule == END && (yyvsp[(3) - (3)]) == NULL)
3656
lintwarn(_("non-redirected `getline' undefined inside END action"));
3657
(yyval) = mk_getline((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]), redirect_input);
3195
3663
/* Line 1455 of yacc.c */
3196
#line 976 "awkgram.y"
3197
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_mod, (yyvsp[(3) - (3)].nodeval)); }
3664
#line 1411 "awkgram.y"
3666
(yyvsp[(2) - (2)])->opcode = Op_postincrement;
3667
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
3202
3673
/* Line 1455 of yacc.c */
3203
#line 978 "awkgram.y"
3204
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_plus, (yyvsp[(3) - (3)].nodeval)); }
3674
#line 1416 "awkgram.y"
3676
(yyvsp[(2) - (2)])->opcode = Op_postdecrement;
3677
(yyval) = mk_assignment((yyvsp[(1) - (2)]), NULL, (yyvsp[(2) - (2)]));
3209
3683
/* Line 1455 of yacc.c */
3210
#line 980 "awkgram.y"
3211
{ (yyval.nodeval) = node((yyvsp[(1) - (3)].nodeval), Node_minus, (yyvsp[(3) - (3)].nodeval)); }
3684
#line 1421 "awkgram.y"
3687
warning(_("old awk does not support the keyword `in' except after `for'"));
3688
warning(_("old awk does not support multidimensional arrays"));
3690
(yyvsp[(5) - (5)])->nexti->opcode = Op_push_array;
3691
(yyvsp[(4) - (5)])->opcode = Op_in_array;
3692
if ((yyvsp[(2) - (5)]) == NULL) { /* error */
3694
(yyvsp[(4) - (5)])->expr_count = 0;
3695
(yyval) = list_merge((yyvsp[(5) - (5)]), (yyvsp[(4) - (5)]));
3697
INSTRUCTION *t = (yyvsp[(2) - (5)]);
3698
(yyvsp[(4) - (5)])->expr_count = count_expressions(&t, FALSE);
3699
(yyval) = list_append(list_merge(t, (yyvsp[(5) - (5)])), (yyvsp[(4) - (5)]));
3216
3706
/* Line 1455 of yacc.c */
3217
#line 985 "awkgram.y"
3218
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3707
#line 1444 "awkgram.y"
3709
(yyval) = mk_getline((yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]), (yyvsp[(1) - (4)]), (yyvsp[(2) - (4)])->redir_type);
3710
bcfree((yyvsp[(2) - (4)]));
3223
3716
/* Line 1455 of yacc.c */
3224
#line 987 "awkgram.y"
3225
{ (yyval.nodeval) = constant_fold((yyvsp[(2) - (2)].nodeval), Node_not, (NODE *) NULL); }
3717
#line 1450 "awkgram.y"
3718
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3230
3723
/* Line 1455 of yacc.c */
3231
#line 989 "awkgram.y"
3232
{ (yyval.nodeval) = (yyvsp[(2) - (3)].nodeval); }
3724
#line 1452 "awkgram.y"
3725
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3237
3730
/* Line 1455 of yacc.c */
3238
#line 992 "awkgram.y"
3239
{ (yyval.nodeval) = snode((yyvsp[(3) - (4)].nodeval), Node_builtin, (int) (yyvsp[(1) - (4)].lval)); }
3731
#line 1454 "awkgram.y"
3732
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3244
3737
/* Line 1455 of yacc.c */
3245
#line 994 "awkgram.y"
3246
{ (yyval.nodeval) = snode((yyvsp[(3) - (4)].nodeval), Node_builtin, (int) (yyvsp[(1) - (4)].lval)); }
3738
#line 1456 "awkgram.y"
3739
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3251
3744
/* Line 1455 of yacc.c */
3252
#line 996 "awkgram.y"
3745
#line 1458 "awkgram.y"
3746
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3751
/* Line 1455 of yacc.c */
3752
#line 1460 "awkgram.y"
3753
{ (yyval) = mk_binary((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), (yyvsp[(2) - (3)])); }
3758
/* Line 1455 of yacc.c */
3759
#line 1465 "awkgram.y"
3254
static short warned1 = FALSE, warned2 = FALSE;
3256
if (do_lint && ! warned1) {
3258
lintwarn(_("call of `length' without parentheses is not portable"));
3260
(yyval.nodeval) = snode((NODE *) NULL, Node_builtin, (int) (yyvsp[(1) - (1)].lval));
3261
if (do_posix && ! warned2) {
3263
warning(_("call of `length' without parentheses is deprecated by POSIX"));
3761
(yyval) = list_create((yyvsp[(1) - (1)]));
3270
3767
/* Line 1455 of yacc.c */
3271
#line 1012 "awkgram.y"
3272
{ (yyval.nodeval) = node((yyvsp[(2) - (2)].nodeval), Node_preincrement, (NODE *) NULL); }
3768
#line 1469 "awkgram.y"
3770
if ((yyvsp[(2) - (2)])->opcode == Op_match_rec) {
3771
(yyvsp[(2) - (2)])->opcode = Op_nomatch;
3772
(yyvsp[(1) - (2)])->opcode = Op_push_i;
3773
(yyvsp[(1) - (2)])->memory = mk_number(0.0, (PERM|NUMCUR|NUMBER));
3774
(yyval) = list_append(list_append(list_create((yyvsp[(1) - (2)])),
3775
instruction(Op_field_spec)), (yyvsp[(2) - (2)]));
3778
ip = (yyvsp[(2) - (2)])->nexti;
3779
if (ip->memory->type == Node_val && (yyvsp[(2) - (2)])->lasti == ip && do_optimize > 1) {
3781
if ((ip->memory->flags & (STRCUR|STRING)) != 0) {
3782
if (ip->memory->stlen == 0) {
3783
ret = make_number((AWKNUM) 1.0);
3785
ret = make_number((AWKNUM) 0.0);
3788
if (ip->memory->numbr == 0) {
3789
ret = make_number((AWKNUM) 1.0);
3791
ret = make_number((AWKNUM) 0.0);
3794
ret->flags &= ~MALLOC;
3796
(yyvsp[(1) - (2)])->memory = ret;
3797
(yyvsp[(1) - (2)])->opcode = Op_push_i;
3799
bcfree((yyvsp[(2) - (2)]));
3800
(yyval) = list_create((yyvsp[(1) - (2)]));
3802
(yyvsp[(1) - (2)])->opcode = Op_not;
3803
add_lint((yyvsp[(2) - (2)]), LINT_assign_in_cond);
3804
(yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
3277
3812
/* Line 1455 of yacc.c */
3278
#line 1014 "awkgram.y"
3279
{ (yyval.nodeval) = node((yyvsp[(2) - (2)].nodeval), Node_predecrement, (NODE *) NULL); }
3813
#line 1509 "awkgram.y"
3814
{ (yyval) = (yyvsp[(2) - (3)]); }
3284
3819
/* Line 1455 of yacc.c */
3285
#line 1016 "awkgram.y"
3286
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3820
#line 1511 "awkgram.y"
3822
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
3823
if ((yyval) == NULL)
3291
3830
/* Line 1455 of yacc.c */
3292
#line 1018 "awkgram.y"
3293
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3831
#line 1517 "awkgram.y"
3833
(yyval) = snode((yyvsp[(3) - (4)]), (yyvsp[(1) - (4)]));
3834
if ((yyval) == NULL)
3298
3841
/* Line 1455 of yacc.c */
3299
#line 1021 "awkgram.y"
3301
if ((yyvsp[(2) - (2)].nodeval)->type == Node_val && ((yyvsp[(2) - (2)].nodeval)->flags & (STRCUR|STRING)) == 0) {
3302
(yyvsp[(2) - (2)].nodeval)->numbr = -(force_number((yyvsp[(2) - (2)].nodeval)));
3303
(yyval.nodeval) = (yyvsp[(2) - (2)].nodeval);
3305
(yyval.nodeval) = node((yyvsp[(2) - (2)].nodeval), Node_unary_minus, (NODE *) NULL);
3311
/* Line 1455 of yacc.c */
3312
#line 1029 "awkgram.y"
3316
* POSIX semantics: force a conversion to numeric type
3318
(yyval.nodeval) = node (make_number(0.0), Node_plus, (yyvsp[(2) - (2)].nodeval));
3324
/* Line 1455 of yacc.c */
3325
#line 1040 "awkgram.y"
3327
func_use((yyvsp[(1) - (1)].nodeval)->rnode->stptr, FUNC_USE);
3328
(yyval.nodeval) = (yyvsp[(1) - (1)].nodeval);
3842
#line 1523 "awkgram.y"
3844
static short warned1 = FALSE;
3846
if (do_lint && ! warned1) {
3848
lintwarn(_("call of `length' without parentheses is not portable"));
3850
(yyval) = snode(NULL, (yyvsp[(1) - (1)]));
3851
if ((yyval) == NULL)
3334
3858
/* Line 1455 of yacc.c */
3335
#line 1045 "awkgram.y"
3859
#line 1537 "awkgram.y"
3337
/* indirect function call */
3338
static short warned = FALSE;
3340
if (do_lint && ! warned) {
3342
lintwarn(_("indirect function calls are a gawk extension"));
3345
(yyval.nodeval) = (yyvsp[(2) - (2)].nodeval);
3346
(yyval.nodeval)->type = Node_indirect_func_call;
3861
(yyvsp[(1) - (2)])->opcode = Op_preincrement;
3862
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
3352
3868
/* Line 1455 of yacc.c */
3353
#line 1061 "awkgram.y"
3869
#line 1542 "awkgram.y"
3355
(yyval.nodeval) = node((yyvsp[(3) - (4)].nodeval), Node_func_call, make_string((yyvsp[(1) - (4)].sval), strlen((yyvsp[(1) - (4)].sval))));
3356
(yyval.nodeval)->funcbody = NULL;
3357
param_sanity((yyvsp[(3) - (4)].nodeval));
3358
free((yyvsp[(1) - (4)].sval));
3871
(yyvsp[(1) - (2)])->opcode = Op_predecrement;
3872
(yyval) = mk_assignment((yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)]));
3364
3878
/* Line 1455 of yacc.c */
3365
#line 1071 "awkgram.y"
3366
{ (yyval.nodeval) = NULL; }
3879
#line 1547 "awkgram.y"
3881
(yyval) = list_create((yyvsp[(1) - (1)]));
3371
3887
/* Line 1455 of yacc.c */
3372
#line 1073 "awkgram.y"
3373
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3888
#line 1551 "awkgram.y"
3890
(yyval) = list_create((yyvsp[(1) - (1)]));
3378
3896
/* Line 1455 of yacc.c */
3379
#line 1078 "awkgram.y"
3380
{ (yyval.nodeval) = variable((yyvsp[(1) - (1)].sval), CAN_FREE, Node_var_new); }
3897
#line 1555 "awkgram.y"
3899
if ((yyvsp[(2) - (2)])->lasti->opcode == Op_push_i
3900
&& ((yyvsp[(2) - (2)])->lasti->memory->flags & (STRCUR|STRING)) == 0) {
3901
(yyvsp[(2) - (2)])->lasti->memory->numbr = -(force_number((yyvsp[(2) - (2)])->lasti->memory));
3902
(yyval) = (yyvsp[(2) - (2)]);
3903
bcfree((yyvsp[(1) - (2)]));
3905
(yyvsp[(1) - (2)])->opcode = Op_unary_minus;
3906
(yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
3385
3913
/* Line 1455 of yacc.c */
3386
#line 1080 "awkgram.y"
3914
#line 1567 "awkgram.y"
3390
if ((n = lookup((yyvsp[(1) - (4)].sval))) != NULL && ! isarray(n)) {
3391
yyerror(_("use of non-array as array"));
3392
(yyval.nodeval) = node(variable((yyvsp[(1) - (4)].sval), CAN_FREE, Node_var_array), Node_subscript, (yyvsp[(3) - (4)].nodeval));
3393
} else if ((yyvsp[(3) - (4)].nodeval) == NULL) {
3394
fatal(_("invalid subscript expression"));
3395
} else if ((yyvsp[(3) - (4)].nodeval)->rnode == NULL) {
3396
(yyval.nodeval) = node(variable((yyvsp[(1) - (4)].sval), CAN_FREE, Node_var_array), Node_subscript, (yyvsp[(3) - (4)].nodeval)->lnode);
3397
freenode((yyvsp[(3) - (4)].nodeval));
3399
(yyval.nodeval) = node(variable((yyvsp[(1) - (4)].sval), CAN_FREE, Node_var_array), Node_subscript, (yyvsp[(3) - (4)].nodeval));
3918
* POSIX semantics: force a conversion to numeric type
3920
(yyvsp[(1) - (2)])->opcode = Op_plus_i;
3921
(yyvsp[(1) - (2)])->memory = mk_number((AWKNUM) 0.0, (PERM|NUMCUR|NUMBER));
3922
(yyval) = list_append((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
3405
3928
/* Line 1455 of yacc.c */
3406
#line 1094 "awkgram.y"
3407
{ (yyval.nodeval) = (yyvsp[(1) - (1)].nodeval); }
3929
#line 1580 "awkgram.y"
3931
func_use((yyvsp[(1) - (1)])->lasti->func_name, FUNC_USE);
3932
(yyval) = (yyvsp[(1) - (1)]);
3412
3938
/* Line 1455 of yacc.c */
3413
#line 1105 "awkgram.y"
3939
#line 1585 "awkgram.y"
3415
NODE *n = node((yyvsp[(2) - (3)].nodeval), Node_field_spec, (NODE *) NULL);
3416
if ((yyvsp[(3) - (3)].sval) != NULL) {
3417
if ((yyvsp[(3) - (3)].sval)[0] == '+')
3418
(yyval.nodeval) = node(n, Node_postincrement, (NODE *) NULL);
3420
(yyval.nodeval) = node(n, Node_postdecrement, (NODE *) NULL);
3422
(yyval.nodeval) = n;
3941
/* indirect function call */
3945
static short warned = FALSE;
3946
const char *msg = _("indirect function calls are a gawk extension");
3948
if (do_traditional || do_posix)
3950
else if (do_lint && ! warned) {
3952
lintwarn("%s", msg);
3955
f = (yyvsp[(2) - (2)])->lasti;
3956
f->opcode = Op_indirect_func_call;
3957
name = estrdup(f->func_name, strlen(f->func_name));
3958
indirect_var = variable(name, Node_var_new);
3959
if (is_std_var(name))
3960
yyerror(_("can not use special variable `%s' for indirect function call"), name);
3961
t = instruction(Op_push);
3962
t->memory = indirect_var;
3964
/* prepend indirect var instead of appending to arguments (opt_expression_list),
3965
* and pop it off in setup_frame (eval.c) (left to right evaluation order); Test case:
3970
(yyval) = list_prepend((yyvsp[(2) - (2)]), t);
3429
3976
/* Line 1455 of yacc.c */
3430
#line 1119 "awkgram.y"
3431
{ (yyval.sval) = "+"; }
3977
#line 1621 "awkgram.y"
3979
param_sanity((yyvsp[(3) - (4)]));
3980
(yyvsp[(1) - (4)])->opcode = Op_func_call;
3981
(yyvsp[(1) - (4)])->func_body = NULL;
3982
if ((yyvsp[(3) - (4)]) == NULL) { /* no argument or error */
3983
((yyvsp[(1) - (4)]) + 1)->expr_count = 0;
3984
(yyval) = list_create((yyvsp[(1) - (4)]));
3986
INSTRUCTION *t = (yyvsp[(3) - (4)]);
3987
((yyvsp[(1) - (4)]) + 1)->expr_count = count_expressions(&t, TRUE);
3988
(yyval) = list_append(t, (yyvsp[(1) - (4)]));
3436
3995
/* Line 1455 of yacc.c */
3437
#line 1120 "awkgram.y"
3438
{ (yyval.sval) = "-"; }
3996
#line 1638 "awkgram.y"
3443
4002
/* Line 1455 of yacc.c */
3444
#line 1121 "awkgram.y"
3445
{ (yyval.sval) = NULL; }
4003
#line 1640 "awkgram.y"
4004
{ (yyval) = (yyvsp[(1) - (1)]); }
4009
/* Line 1455 of yacc.c */
4010
#line 1645 "awkgram.y"
3450
4016
/* Line 1455 of yacc.c */
3451
#line 1129 "awkgram.y"
4017
#line 1647 "awkgram.y"
4018
{ (yyval) = (yyvsp[(1) - (2)]); }
3457
4023
/* Line 1455 of yacc.c */
3458
#line 1133 "awkgram.y"
4024
#line 1652 "awkgram.y"
4025
{ (yyval) = (yyvsp[(1) - (1)]); }
4030
/* Line 1455 of yacc.c */
4031
#line 1654 "awkgram.y"
4033
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
4039
/* Line 1455 of yacc.c */
4040
#line 1661 "awkgram.y"
4042
INSTRUCTION *ip = (yyvsp[(1) - (1)])->lasti;
4043
int count = ip->sub_count; /* # of SUBSEP-seperated expressions */
4045
/* change Op_subscript or Op_sub_array to Op_concat */
4046
ip->opcode = Op_concat;
4047
ip->concat_flag = CSUBSEP;
4048
ip->expr_count = count;
4050
ip->opcode = Op_no_op;
4051
sub_counter++; /* count # of dimensions */
4052
(yyval) = (yyvsp[(1) - (1)]);
3464
4058
/* Line 1455 of yacc.c */
3465
#line 1142 "awkgram.y"
4059
#line 1678 "awkgram.y"
4061
INSTRUCTION *t = (yyvsp[(2) - (3)]);
4062
if ((yyvsp[(2) - (3)]) == NULL) {
4064
error(_("invalid subscript expression"));
4065
/* install Null string as subscript. */
4066
t = list_create(instruction(Op_push_i));
4067
t->nexti->memory = Nnull_string;
4068
(yyvsp[(3) - (3)])->sub_count = 1;
4070
(yyvsp[(3) - (3)])->sub_count = count_expressions(&t, FALSE);
4071
(yyval) = list_append(t, (yyvsp[(3) - (3)]));
3471
4077
/* Line 1455 of yacc.c */
3472
#line 1146 "awkgram.y"
4078
#line 1695 "awkgram.y"
4079
{ (yyval) = (yyvsp[(1) - (1)]); }
3478
4084
/* Line 1455 of yacc.c */
3479
#line 1149 "awkgram.y"
3485
/* Line 1455 of yacc.c */
3486
#line 3487 "awkgram.c"
4085
#line 1697 "awkgram.y"
4087
(yyval) = list_merge((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
4093
/* Line 1455 of yacc.c */
4094
#line 1704 "awkgram.y"
4095
{ (yyval) = (yyvsp[(1) - (2)]); }
4100
/* Line 1455 of yacc.c */
4101
#line 1709 "awkgram.y"
4103
char *var_name = (yyvsp[(1) - (1)])->lextok;
4105
(yyvsp[(1) - (1)])->opcode = Op_push;
4106
(yyvsp[(1) - (1)])->memory = variable(var_name, Node_var_new);
4107
(yyval) = list_create((yyvsp[(1) - (1)]));
4113
/* Line 1455 of yacc.c */
4114
#line 1717 "awkgram.y"
4118
char *arr = (yyvsp[(1) - (2)])->lextok;
4119
if ((n = lookup(arr)) != NULL && ! isarray(n))
4120
yyerror(_("use of non-array as array"));
4121
(yyvsp[(1) - (2)])->memory = variable(arr, Node_var_array);
4122
(yyvsp[(1) - (2)])->opcode = Op_push_array;
4123
(yyval) = list_prepend((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
4129
/* Line 1455 of yacc.c */
4130
#line 1731 "awkgram.y"
4132
INSTRUCTION *ip = (yyvsp[(1) - (1)])->nexti;
4133
if (ip->opcode == Op_push
4134
&& ip->memory->type == Node_var
4135
&& ip->memory->var_update
4137
(yyval) = list_prepend((yyvsp[(1) - (1)]), instruction(Op_var_update));
4138
(yyval)->nexti->memory = ip->memory;
4140
(yyval) = (yyvsp[(1) - (1)]);
4146
/* Line 1455 of yacc.c */
4147
#line 1743 "awkgram.y"
4149
(yyval) = list_append((yyvsp[(2) - (3)]), (yyvsp[(1) - (3)]));
4150
if ((yyvsp[(3) - (3)]) != NULL)
4151
mk_assignment((yyvsp[(2) - (3)]), NULL, (yyvsp[(3) - (3)]));
4157
/* Line 1455 of yacc.c */
4158
#line 1752 "awkgram.y"
4160
(yyvsp[(1) - (1)])->opcode = Op_postincrement;
4166
/* Line 1455 of yacc.c */
4167
#line 1756 "awkgram.y"
4169
(yyvsp[(1) - (1)])->opcode = Op_postdecrement;
4175
/* Line 1455 of yacc.c */
4176
#line 1759 "awkgram.y"
4182
/* Line 1455 of yacc.c */
4183
#line 1767 "awkgram.y"
4189
/* Line 1455 of yacc.c */
4190
#line 1771 "awkgram.y"
4196
/* Line 1455 of yacc.c */
4197
#line 1780 "awkgram.y"
4203
/* Line 1455 of yacc.c */
4204
#line 1784 "awkgram.y"
4205
{ (yyval) = (yyvsp[(1) - (1)]); yyerrok; }
4210
/* Line 1455 of yacc.c */
4211
#line 1788 "awkgram.y"
4217
/* Line 1455 of yacc.c */
4218
#line 4231 "awkgram.c"
3487
4219
default: break;
3489
4221
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);