]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/bash/bash52-018
bash: Update the patches applied to bash
[ipfire-2.x.git] / src / patches / bash / bash52-018
CommitLineData
de1cd0d5
AB
1 BASH PATCH REPORT
2 =================
3
4Bash-Release: 5.2
5Patch-ID: bash52-018
6
7Bug-Reported-by: Todd Stein <toddbstein@gmail.com>
8 Eduardo A . Bustamante López <dualbus@gmail.com>
9Bug-Reference-ID:
10 <Y/SHWg7/+sc19k7P@system76-pc>
11Bug-Reference-URL: https://savannah.gnu.org/support/?110745
12 https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00141.html
13
14Bug-Description:
15
16There are two problems with returning tokens to yyparse() when the shell
17encounters a syntax error or when it reads EOF.
18
19When reading a WORD token, the parser has to return the correct value to
20yyparse. Previous versions returned a value < 0, which the bash parser
21translated into YYERRCODE for bison, and in newer versions of bison, the
22appropriate reset actions didn't happen. We should return YYUNDEF, which
23bison uses for `invalid token'. Since we can return a token < 0 for both
24invalid tokens and EOF, the bash tokenizer needs to differentiate between
25those two cases.
26
27Patch (apply with `patch -p0'):
28
29*** ../bash-5.2-patched/parse.y 2022-12-13 12:09:02.000000000 -0500
30--- parse.y 2023-11-08 14:29:13.000000000 -0500
31***************
32*** 453,456 ****
33--- 453,471 ----
34 }
35 }
36+ | error YYEOF
37+ {
38+ global_command = (COMMAND *)NULL;
39+ if (last_command_exit_value == 0)
40+ last_command_exit_value = EX_BADUSAGE; /* force error return */
41+ if (interactive && parse_and_execute_level == 0)
42+ {
43+ handle_eof_input_unit ();
44+ YYACCEPT;
45+ }
46+ else
47+ {
48+ YYABORT;
49+ }
50+ }
51 | yacc_EOF
52 {
53***************
54*** 2898,2904 ****
55 if (current_token < 0)
56 #if defined (YYERRCODE) && !defined (YYUNDEF)
57! current_token = YYERRCODE;
58 #else
59! current_token = YYerror;
60 #endif
61
62--- 2913,2919 ----
63 if (current_token < 0)
64 #if defined (YYERRCODE) && !defined (YYUNDEF)
65! current_token = EOF_Reached ? YYEOF : YYERRCODE;
66 #else
67! current_token = EOF_Reached ? YYEOF : YYUNDEF;
68 #endif
69
70***************
71*** 3695,3698 ****
72--- 3711,3715 ----
73 parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
74 EOF_Reached = 1; /* XXX */
75+ parser_state |= PST_NOERROR; /* avoid redundant error message */
76 return (&matched_pair_error);
77 }
78***************
79*** 4157,4160 ****
80--- 4172,4176 ----
81
82 /* yyparse() has already called yyerror() and reset_parser() */
83+ parser_state |= PST_NOERROR;
84 return (&matched_pair_error);
85 }
86
87*** /Users/chet/src/bash/bash-5.2-patched/y.tab.c 2022-12-13 12:09:02.000000000 -0500
88--- y.tab.c 2023-11-08 14:38:01.000000000 -0500
89***************
90*** 993,997 ****
91
92 /* YYFINAL -- State number of the termination state. */
93! #define YYFINAL 121
94 /* YYLAST -- Last index in YYTABLE. */
95 #define YYLAST 740
96--- 993,997 ----
97
98 /* YYFINAL -- State number of the termination state. */
99! #define YYFINAL 122
100 /* YYLAST -- Last index in YYTABLE. */
101 #define YYLAST 740
102***************
103*** 1002,1008 ****
104 #define YYNNTS 38
105 /* YYNRULES -- Number of rules. */
106! #define YYNRULES 174
107 /* YYNSTATES -- Number of states. */
108! #define YYNSTATES 349
109
110 /* YYMAXUTOK -- Last valid token kind. */
111--- 1002,1008 ----
112 #define YYNNTS 38
113 /* YYNRULES -- Number of rules. */
114! #define YYNRULES 175
115 /* YYNSTATES -- Number of states. */
116! #define YYNSTATES 350
117
118 /* YYMAXUTOK -- Last valid token kind. */
119***************
120*** 1058,1079 ****
121 static const yytype_int16 yyrline[] =
122 {
123! 0, 395, 395, 406, 414, 423, 438, 455, 465, 467,
124! 471, 477, 483, 489, 495, 501, 507, 513, 519, 525,
125! 531, 537, 543, 549, 555, 561, 568, 575, 582, 589,
126! 596, 603, 609, 615, 621, 627, 633, 639, 645, 651,
127! 657, 663, 669, 675, 681, 687, 693, 699, 705, 711,
128! 717, 723, 729, 735, 743, 745, 747, 751, 755, 766,
129! 768, 772, 774, 776, 792, 794, 798, 800, 802, 804,
130! 806, 808, 810, 812, 814, 816, 818, 822, 827, 832,
131! 837, 842, 847, 852, 857, 864, 870, 876, 882, 890,
132! 895, 900, 905, 910, 915, 920, 925, 932, 937, 942,
133! 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009,
134! 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077,
135! 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104,
136! 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141,
137! 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178,
138! 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251,
139! 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326,
140! 1349, 1353, 1355, 1357, 1359
141 };
142 #endif
143--- 1058,1079 ----
144 static const yytype_int16 yyrline[] =
145 {
146! 0, 395, 395, 406, 414, 423, 438, 455, 470, 480,
147! 482, 486, 492, 498, 504, 510, 516, 522, 528, 534,
148! 540, 546, 552, 558, 564, 570, 576, 583, 590, 597,
149! 604, 611, 618, 624, 630, 636, 642, 648, 654, 660,
150! 666, 672, 678, 684, 690, 696, 702, 708, 714, 720,
151! 726, 732, 738, 744, 750, 758, 760, 762, 766, 770,
152! 781, 783, 787, 789, 791, 807, 809, 813, 815, 817,
153! 819, 821, 823, 825, 827, 829, 831, 833, 837, 842,
154! 847, 852, 857, 862, 867, 872, 879, 885, 891, 897,
155! 905, 910, 915, 920, 925, 930, 935, 940, 947, 952,
156! 957, 964, 966, 968, 970, 974, 976, 1007, 1014, 1018,
157! 1024, 1029, 1046, 1051, 1068, 1075, 1077, 1079, 1084, 1088,
158! 1092, 1096, 1098, 1100, 1104, 1105, 1109, 1111, 1113, 1115,
159! 1119, 1121, 1123, 1125, 1127, 1129, 1133, 1135, 1144, 1150,
160! 1156, 1157, 1164, 1168, 1170, 1172, 1179, 1181, 1188, 1192,
161! 1193, 1196, 1198, 1200, 1204, 1205, 1214, 1229, 1247, 1264,
162! 1266, 1268, 1275, 1278, 1282, 1284, 1290, 1296, 1316, 1339,
163! 1341, 1364, 1368, 1370, 1372, 1374
164 };
165 #endif
166***************
167*** 1120,1124 ****
168 #endif
169
170! #define YYPACT_NINF (-152)
171
172 #define yypact_value_is_default(Yyn) \
173--- 1120,1124 ----
174 #endif
175
176! #define YYPACT_NINF (-125)
177
178 #define yypact_value_is_default(Yyn) \
179***************
180*** 1134,1172 ****
181 static const yytype_int16 yypact[] =
182 {
183! 328, 80, -152, -11, -1, 3, -152, -152, 15, 637,
184! -5, 433, 149, -28, -152, 187, 684, -152, 18, 28,
185! 130, 38, 139, 50, 52, 60, 65, 74, -152, -152,
186! -152, 89, 104, -152, -152, 97, -152, -152, 246, -152,
187! 670, -152, -152, -152, -152, -152, -152, -152, -152, -152,
188! -152, -152, -152, 146, 211, -152, 1, 433, -152, -152,
189! 135, 484, -152, 59, 61, 90, 167, 171, 10, 71,
190! 246, 670, 144, -152, -152, -152, -152, -152, 165, -152,
191! 142, 179, 192, 140, 194, 160, 227, 245, 252, 253,
192! 260, 261, 262, 162, 269, 178, 270, 272, 273, 274,
193! 277, -152, -152, -152, -152, -152, -152, -152, -152, -152,
194! -152, -152, -152, -152, -152, 168, 379, -152, -152, 173,
195! 244, -152, -152, -152, -152, 670, -152, -152, -152, -152,
196! -152, 535, 535, -152, -152, -152, -152, -152, -152, -152,
197! 205, -152, 14, -152, 36, -152, -152, -152, -152, 84,
198! -152, -152, -152, 249, 670, -152, 670, 670, -152, -152,
199! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
200! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
201! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
202! -152, -152, -152, -152, 484, 484, 203, 203, 586, 586,
203! 145, -152, -152, -152, -152, -152, -152, 0, -152, 119,
204! -152, 291, 248, 66, 88, -152, 119, -152, 296, 297,
205! 35, -152, 670, 670, 35, -152, -152, 1, 1, -152,
206! -152, -152, 306, 484, 484, 484, 484, 484, 305, 169,
207! -152, 7, -152, -152, 302, -152, 131, -152, 265, -152,
208! -152, -152, -152, -152, -152, 304, 131, -152, 266, -152,
209! -152, -152, 35, -152, 313, 317, -152, -152, -152, 225,
210! 225, 225, -152, -152, -152, -152, 206, 25, -152, -152,
211! 307, -42, 319, 276, -152, -152, -152, 95, -152, 322,
212! 283, 332, 284, -152, -152, 102, -152, -152, -152, -152,
213! -152, -152, -152, -152, 45, 323, -152, -152, -152, 106,
214! -152, -152, -152, -152, -152, -152, 109, -152, -152, 264,
215! -152, -152, -152, 484, -152, -152, 333, 293, -152, -152,
216! 338, 300, -152, -152, -152, 484, 345, 303, -152, -152,
217! 346, 309, -152, -152, -152, -152, -152, -152, -152
218 };
219
220--- 1134,1172 ----
221 static const yytype_int16 yypact[] =
222 {
223! 329, 27, -125, 8, 81, 10, -125, -125, 16, 38,
224! 0, 434, -5, -16, -125, 670, 684, -125, 33, 43,
225! 62, 63, 71, 69, 94, 105, 108, 116, -125, -125,
226! -125, 125, 139, -125, -125, 111, -125, -125, 626, -125,
227! 648, -125, -125, -125, -125, -125, -125, -125, -125, -125,
228! -125, -125, -125, 5, -21, -125, -15, 434, -125, -125,
229! -125, 196, 485, -125, 157, 2, 180, 207, 222, 227,
230! 638, 626, 648, 224, -125, -125, -125, -125, -125, 219,
231! -125, 185, 223, 228, 140, 230, 161, 232, 233, 234,
232! 236, 241, 248, 249, 162, 250, 163, 251, 254, 256,
233! 257, 258, -125, -125, -125, -125, -125, -125, -125, -125,
234! -125, -125, -125, -125, -125, -125, 225, 380, -125, -125,
235! 229, 231, -125, -125, -125, -125, 648, -125, -125, -125,
236! -125, -125, 536, 536, -125, -125, -125, -125, -125, -125,
237! -125, 214, -125, -7, -125, 85, -125, -125, -125, -125,
238! 89, -125, -125, -125, 235, 648, -125, 648, 648, -125,
239! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
240! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
241! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
242! -125, -125, -125, -125, -125, 485, 485, 138, 138, 587,
243! 587, 17, -125, -125, -125, -125, -125, -125, 88, -125,
244! 122, -125, 274, 238, 100, 101, -125, 122, -125, 276,
245! 278, 260, -125, 648, 648, 260, -125, -125, -15, -15,
246! -125, -125, -125, 287, 485, 485, 485, 485, 485, 290,
247! 164, -125, 26, -125, -125, 285, -125, 131, -125, 242,
248! -125, -125, -125, -125, -125, -125, 288, 131, -125, 243,
249! -125, -125, -125, 260, -125, 297, 302, -125, -125, -125,
250! 152, 152, 152, -125, -125, -125, -125, 170, 61, -125,
251! -125, 281, -36, 293, 252, -125, -125, -125, 102, -125,
252! 298, 255, 300, 262, -125, -125, 103, -125, -125, -125,
253! -125, -125, -125, -125, -125, -33, 296, -125, -125, -125,
254! 110, -125, -125, -125, -125, -125, -125, 112, -125, -125,
255! 189, -125, -125, -125, 485, -125, -125, 310, 267, -125,
256! -125, 314, 275, -125, -125, -125, 485, 318, 277, -125,
257! -125, 320, 279, -125, -125, -125, -125, -125, -125, -125
258 };
259
260***************
261*** 1176,1214 ****
262 static const yytype_uint8 yydefact[] =
263 {
264! 0, 0, 153, 0, 0, 0, 153, 153, 0, 0,
265! 0, 0, 171, 54, 55, 0, 0, 118, 0, 0,
266! 0, 0, 0, 0, 0, 0, 0, 0, 153, 4,
267! 7, 0, 0, 153, 153, 0, 56, 59, 61, 170,
268! 62, 66, 76, 70, 67, 64, 72, 3, 65, 71,
269! 73, 74, 75, 0, 155, 162, 163, 0, 5, 6,
270! 0, 0, 153, 153, 0, 153, 0, 0, 0, 54,
271! 113, 109, 0, 151, 150, 152, 167, 164, 172, 173,
272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
273! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274! 0, 16, 25, 40, 34, 49, 31, 43, 37, 46,
275! 28, 52, 53, 22, 19, 0, 0, 10, 11, 0,
276! 0, 1, 54, 60, 57, 63, 148, 149, 2, 153,
277! 153, 156, 157, 153, 153, 166, 165, 153, 154, 137,
278! 138, 147, 0, 153, 0, 153, 153, 153, 153, 0,
279! 153, 153, 153, 153, 104, 102, 111, 110, 119, 174,
280! 153, 18, 27, 42, 36, 51, 33, 45, 39, 48,
281! 30, 24, 21, 14, 15, 17, 26, 41, 35, 50,
282! 32, 44, 38, 47, 29, 23, 20, 12, 13, 107,
283! 108, 117, 106, 58, 0, 0, 160, 161, 0, 0,
284! 0, 153, 153, 153, 153, 153, 153, 0, 153, 0,
285! 153, 0, 0, 0, 0, 153, 0, 153, 0, 0,
286! 0, 153, 105, 112, 0, 158, 159, 169, 168, 153,
287! 153, 114, 0, 0, 0, 140, 141, 139, 0, 123,
288! 153, 0, 153, 153, 0, 8, 0, 153, 0, 87,
289! 88, 153, 153, 153, 153, 0, 0, 153, 0, 68,
290! 69, 103, 0, 100, 0, 0, 116, 142, 143, 144,
291! 145, 146, 99, 129, 131, 133, 124, 0, 97, 135,
292! 0, 0, 0, 0, 77, 9, 153, 0, 78, 0,
293! 0, 0, 0, 89, 153, 0, 90, 101, 115, 153,
294! 130, 132, 134, 98, 0, 0, 153, 79, 80, 0,
295! 153, 153, 85, 86, 91, 92, 0, 153, 153, 120,
296! 153, 136, 125, 126, 153, 153, 0, 0, 153, 153,
297! 0, 0, 153, 122, 127, 128, 0, 0, 83, 84,
298! 0, 0, 95, 96, 121, 81, 82, 93, 94
299 };
300
301--- 1176,1214 ----
302 static const yytype_uint8 yydefact[] =
303 {
304! 0, 0, 154, 0, 0, 0, 154, 154, 0, 0,
305! 0, 0, 172, 55, 56, 0, 0, 119, 0, 0,
306! 0, 0, 0, 0, 0, 0, 0, 0, 154, 4,
307! 8, 0, 0, 154, 154, 0, 57, 60, 62, 171,
308! 63, 67, 77, 71, 68, 65, 73, 3, 66, 72,
309! 74, 75, 76, 0, 156, 163, 164, 0, 7, 5,
310! 6, 0, 0, 154, 154, 0, 154, 0, 0, 0,
311! 55, 114, 110, 0, 152, 151, 153, 168, 165, 173,
312! 174, 0, 0, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
314! 0, 0, 17, 26, 41, 35, 50, 32, 44, 38,
315! 47, 29, 53, 54, 23, 20, 0, 0, 11, 12,
316! 0, 0, 1, 55, 61, 58, 64, 149, 150, 2,
317! 154, 154, 157, 158, 154, 154, 167, 166, 154, 155,
318! 138, 139, 148, 0, 154, 0, 154, 154, 154, 154,
319! 0, 154, 154, 154, 154, 105, 103, 112, 111, 120,
320! 175, 154, 19, 28, 43, 37, 52, 34, 46, 40,
321! 49, 31, 25, 22, 15, 16, 18, 27, 42, 36,
322! 51, 33, 45, 39, 48, 30, 24, 21, 13, 14,
323! 108, 109, 118, 107, 59, 0, 0, 161, 162, 0,
324! 0, 0, 154, 154, 154, 154, 154, 154, 0, 154,
325! 0, 154, 0, 0, 0, 0, 154, 0, 154, 0,
326! 0, 0, 154, 106, 113, 0, 159, 160, 170, 169,
327! 154, 154, 115, 0, 0, 0, 141, 142, 140, 0,
328! 124, 154, 0, 154, 154, 0, 9, 0, 154, 0,
329! 88, 89, 154, 154, 154, 154, 0, 0, 154, 0,
330! 69, 70, 104, 0, 101, 0, 0, 117, 143, 144,
331! 145, 146, 147, 100, 130, 132, 134, 125, 0, 98,
332! 136, 0, 0, 0, 0, 78, 10, 154, 0, 79,
333! 0, 0, 0, 0, 90, 154, 0, 91, 102, 116,
334! 154, 131, 133, 135, 99, 0, 0, 154, 80, 81,
335! 0, 154, 154, 86, 87, 92, 93, 0, 154, 154,
336! 121, 154, 137, 126, 127, 154, 154, 0, 0, 154,
337! 154, 0, 0, 154, 123, 128, 129, 0, 0, 84,
338! 85, 0, 0, 96, 97, 122, 82, 83, 94, 95
339 };
340
341***************
342*** 1216,1223 ****
343 static const yytype_int16 yypgoto[] =
344 {
345! -152, -152, 112, -29, -14, -64, 360, -152, -8, -152,
346! -152, -152, -152, -152, -151, -152, -152, -152, -152, -152,
347! -152, -152, 13, -152, 136, -152, 98, -2, -152, 30,
348! -152, -54, -26, -152, -123, 6, 78, -152
349 };
350
351--- 1216,1223 ----
352 static const yytype_int16 yypgoto[] =
353 {
354! -125, -125, 126, -25, -28, -65, 335, -125, -8, -125,
355! -125, -125, -125, -125, -96, -125, -125, -125, -125, -125,
356! -125, -125, 28, -125, 109, -125, 68, -2, -125, -11,
357! -125, -54, -26, -125, -124, 6, 34, -125
358 };
359
360***************
361*** 1225,1232 ****
362 static const yytype_int16 yydefgoto[] =
363 {
364! 0, 35, 246, 36, 37, 125, 38, 39, 40, 41,
365! 42, 43, 44, 45, 155, 46, 47, 48, 49, 50,
366! 51, 52, 232, 238, 239, 240, 281, 120, 139, 140,
367! 128, 76, 61, 53, 54, 141, 56, 57
368 };
369
370--- 1225,1232 ----
371 static const yytype_int16 yydefgoto[] =
372 {
373! 0, 35, 247, 36, 37, 126, 38, 39, 40, 41,
374! 42, 43, 44, 45, 156, 46, 47, 48, 49, 50,
375! 51, 52, 233, 239, 240, 241, 282, 121, 140, 141,
376! 129, 77, 62, 53, 54, 142, 56, 57
377 };
378
379***************
380*** 1236,1390 ****
381 static const yytype_int16 yytable[] =
382 {
383! 60, 71, 116, 135, 66, 67, 55, 157, 196, 197,
384! 147, 124, 305, 2, 242, 62, 278, 77, 3, 306,
385! 4, 5, 6, 7, 123, 63, 115, 72, 10, 65,
386! 64, 119, 80, 279, 303, 206, 142, 144, 2, 149,
387! 17, 68, 124, 3, 101, 4, 5, 6, 7, 133,
388! 208, 279, 138, 10, 102, 134, 123, 209, 243, 138,
389! 154, 156, 152, 136, 106, 17, 138, 280, 33, 261,
390! 153, 225, 226, 263, 2, 145, 110, 138, 111, 3,
391! 251, 4, 5, 6, 7, 280, 112, 138, 138, 10,
392! 222, 113, 223, 33, 210, 34, 193, 121, 215, 305,
393! 114, 17, 253, 194, 195, 216, 320, 198, 199, 310,
394! 143, 297, 73, 74, 75, 117, 317, 207, 138, 146,
395! 324, 213, 214, 328, 252, 124, 220, 124, 193, 33,
396! 118, 34, 58, 59, 224, 200, 138, 55, 55, 137,
397! 138, 148, 217, 211, 212, 245, 254, 138, 218, 219,
398! 229, 230, 231, 311, 138, 247, 103, 285, 138, 104,
399! 318, 138, 257, 158, 325, 107, 163, 329, 108, 164,
400! 73, 74, 75, 78, 79, 233, 234, 235, 236, 237,
401! 241, 150, 73, 74, 75, 151, 167, 105, 177, 168,
402! 159, 178, 286, 193, 193, 262, 109, 165, 126, 127,
403! 55, 55, 294, 160, 181, 161, 244, 182, 248, 273,
404! 274, 275, 154, 255, 277, 258, 154, 169, 162, 179,
405! 166, 287, 81, 82, 83, 84, 85, 264, 265, 189,
406! 86, 295, 191, 87, 88, 183, 129, 130, 201, 202,
407! 282, 283, 89, 90, 129, 130, 300, 301, 302, 289,
408! 290, 291, 292, 170, 154, 203, 204, 205, 201, 202,
409! 309, 131, 132, 267, 268, 269, 270, 271, 316, 332,
410! 230, 171, 122, 14, 15, 16, 227, 228, 172, 173,
411! 323, 18, 19, 20, 21, 22, 174, 175, 176, 23,
412! 24, 25, 26, 27, 335, 180, 184, 319, 185, 186,
413! 187, 31, 32, 188, 322, 192, 249, 250, 326, 327,
414! 221, 259, 260, 266, 272, 330, 331, 284, 334, 293,
415! 298, 299, 336, 337, 288, 296, 340, 341, 256, 1,
416! 344, 2, 333, 279, 307, 308, 3, 312, 4, 5,
417! 6, 7, 313, 315, 8, 9, 10, 314, 338, 321,
418! 11, 12, 339, 342, 13, 14, 15, 16, 17, 343,
419! 345, 347, 346, 18, 19, 20, 21, 22, 348, 70,
420! 0, 23, 24, 25, 26, 27, 276, 28, 304, 0,
421! 29, 30, 2, 31, 32, 0, 33, 3, 34, 4,
422! 5, 6, 7, 0, 0, 8, 9, 10, 0, 0,
423! 0, 11, 12, 0, 0, 13, 14, 15, 16, 17,
424 0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
425! 0, 0, 23, 24, 25, 26, 27, 0, 0, 0,
426! 0, 138, 0, 0, 31, 32, 2, 33, 0, 34,
427! 190, 3, 0, 4, 5, 6, 7, 0, 0, 8,
428! 9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
429! 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
430! 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
431! 27, 0, 0, 0, 73, 74, 75, 2, 31, 32,
432! 0, 33, 3, 34, 4, 5, 6, 7, 0, 0,
433 8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
434 13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
435 19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
436! 26, 27, 0, 0, 0, 0, 138, 0, 2, 31,
437 32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
438 0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
439 0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
440 18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
441! 25, 26, 27, 0, 0, 0, 0, 0, 0, 2,
442 31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
443! 0, 0, 8, 9, 10, 0, 0, 0, 0, 0,
444 0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
445 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
446! 24, 25, 26, 27, 0, 0, 0, 0, 138, 0,
447 2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
448! 7, 0, 0, 0, 0, 10, 0, 0, 0, 0,
449! 0, 0, 0, 69, 14, 15, 16, 17, 0, 0,
450 0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
451! 23, 24, 25, 26, 27, 0, 0, 0, 0, 0,
452! 0, 0, 31, 32, 0, 33, 0, 34, 15, 16,
453! 0, 0, 0, 0, 0, 18, 19, 20, 21, 22,
454! 0, 0, 0, 23, 24, 25, 26, 27, 0, 91,
455! 92, 93, 94, 95, 0, 31, 32, 96, 0, 0,
456! 97, 98, 0, 0, 0, 0, 0, 0, 0, 99,
457! 100
458 };
459
460 static const yytype_int16 yycheck[] =
461 {
462! 2, 9, 28, 57, 6, 7, 0, 71, 131, 132,
463! 64, 40, 54, 3, 14, 26, 9, 11, 8, 61,
464! 10, 11, 12, 13, 38, 26, 28, 32, 18, 26,
465! 31, 33, 60, 26, 9, 21, 62, 63, 3, 65,
466! 30, 26, 71, 8, 26, 10, 11, 12, 13, 48,
467! 14, 26, 52, 18, 26, 54, 70, 21, 58, 52,
468! 68, 69, 52, 57, 26, 30, 52, 60, 58, 220,
469! 60, 194, 195, 224, 3, 14, 26, 52, 26, 8,
470! 14, 10, 11, 12, 13, 60, 26, 52, 52, 18,
471! 154, 26, 156, 58, 58, 60, 125, 0, 14, 54,
472! 26, 30, 14, 129, 130, 21, 61, 133, 134, 14,
473! 51, 262, 51, 52, 53, 26, 14, 143, 52, 58,
474! 14, 147, 148, 14, 58, 154, 152, 156, 157, 58,
475! 26, 60, 52, 53, 160, 137, 52, 131, 132, 4,
476! 52, 51, 58, 145, 146, 26, 58, 52, 150, 151,
477! 5, 6, 7, 58, 52, 209, 26, 26, 52, 29,
478! 58, 52, 216, 19, 58, 26, 26, 58, 29, 29,
479! 51, 52, 53, 24, 25, 201, 202, 203, 204, 205,
480! 206, 14, 51, 52, 53, 14, 26, 57, 26, 29,
481! 25, 29, 246, 222, 223, 221, 57, 57, 52, 53,
482! 194, 195, 256, 61, 26, 26, 208, 29, 210, 40,
483! 41, 42, 220, 215, 240, 217, 224, 57, 26, 57,
484! 26, 247, 35, 36, 37, 38, 39, 229, 230, 61,
485! 43, 257, 59, 46, 47, 57, 33, 34, 33, 34,
486! 242, 243, 55, 56, 33, 34, 40, 41, 42, 251,
487! 252, 253, 254, 26, 262, 50, 51, 52, 33, 34,
488! 286, 50, 51, 233, 234, 235, 236, 237, 294, 5,
489! 6, 26, 26, 27, 28, 29, 198, 199, 26, 26,
490! 306, 35, 36, 37, 38, 39, 26, 26, 26, 43,
491! 44, 45, 46, 47, 320, 26, 26, 299, 26, 26,
492! 26, 55, 56, 26, 306, 61, 15, 59, 310, 311,
493! 61, 15, 15, 7, 9, 317, 318, 15, 320, 15,
494! 7, 4, 324, 325, 59, 59, 328, 329, 216, 1,
495! 332, 3, 319, 26, 15, 59, 8, 15, 10, 11,
496! 12, 13, 59, 59, 16, 17, 18, 15, 15, 26,
497! 22, 23, 59, 15, 26, 27, 28, 29, 30, 59,
498! 15, 15, 59, 35, 36, 37, 38, 39, 59, 9,
499! -1, 43, 44, 45, 46, 47, 240, 49, 280, -1,
500! 52, 53, 3, 55, 56, -1, 58, 8, 60, 10,
501! 11, 12, 13, -1, -1, 16, 17, 18, -1, -1,
502! -1, 22, 23, -1, -1, 26, 27, 28, 29, 30,
503 -1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
504! -1, -1, 43, 44, 45, 46, 47, -1, -1, -1,
505! -1, 52, -1, -1, 55, 56, 3, 58, -1, 60,
506! 61, 8, -1, 10, 11, 12, 13, -1, -1, 16,
507! 17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
508! 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
509! 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
510! 47, -1, -1, -1, 51, 52, 53, 3, 55, 56,
511! -1, 58, 8, 60, 10, 11, 12, 13, -1, -1,
512 16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
513 26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
514 36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
515! 46, 47, -1, -1, -1, -1, 52, -1, 3, 55,
516 56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
517 -1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
518 -1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
519 35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
520! 45, 46, 47, -1, -1, -1, -1, -1, -1, 3,
521 55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
522! -1, -1, 16, 17, 18, -1, -1, -1, -1, -1,
523 -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
524 -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
525! 44, 45, 46, 47, -1, -1, -1, -1, 52, -1,
526 3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
527! 13, -1, -1, -1, -1, 18, -1, -1, -1, -1,
528 -1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
529 -1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
530! 43, 44, 45, 46, 47, -1, -1, -1, -1, -1,
531! -1, -1, 55, 56, -1, 58, -1, 60, 28, 29,
532! -1, -1, -1, -1, -1, 35, 36, 37, 38, 39,
533! -1, -1, -1, 43, 44, 45, 46, 47, -1, 35,
534 36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
535 46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
536--- 1236,1390 ----
537 static const yytype_int16 yytable[] =
538 {
539! 61, 72, 117, 136, 67, 68, 55, 158, 197, 198,
540! 124, 148, 130, 131, 207, 125, 146, 78, 306, 79,
541! 80, 306, 230, 231, 232, 307, 116, 58, 321, 132,
542! 133, 120, 73, 134, 63, 279, 66, 143, 145, 135,
543! 150, 2, 69, 124, 81, 139, 3, 125, 4, 5,
544! 6, 7, 280, 74, 75, 76, 10, 127, 128, 102,
545! 147, 155, 157, 137, 70, 14, 15, 16, 17, 103,
546! 304, 226, 227, 18, 19, 20, 21, 22, 139, 59,
547! 60, 23, 24, 25, 26, 27, 281, 280, 104, 107,
548! 223, 105, 224, 31, 32, 111, 33, 108, 34, 209,
549! 109, 194, 243, 216, 195, 196, 210, 64, 199, 200,
550! 217, 122, 65, 139, 252, 254, 311, 318, 208, 106,
551! 112, 281, 214, 215, 325, 262, 329, 221, 110, 264,
552! 125, 113, 125, 194, 114, 225, 201, 139, 55, 55,
553! 139, 139, 115, 211, 212, 213, 244, 218, 246, 219,
554! 220, 118, 139, 139, 139, 139, 248, 286, 253, 255,
555! 312, 319, 139, 258, 139, 119, 164, 298, 326, 165,
556! 330, 130, 131, 74, 75, 76, 234, 235, 236, 237,
557! 238, 242, 74, 75, 76, 202, 203, 168, 178, 182,
558! 169, 179, 183, 287, 333, 231, 263, 166, 194, 194,
559! 138, 55, 55, 295, 274, 275, 276, 245, 144, 249,
560! 301, 302, 303, 155, 256, 278, 259, 155, 170, 180,
561! 184, 151, 288, 268, 269, 270, 271, 272, 265, 266,
562! 2, 149, 296, 228, 229, 3, 152, 4, 5, 6,
563! 7, 283, 284, 159, 160, 10, 161, 202, 203, 162,
564! 290, 291, 292, 293, 163, 155, 167, 17, 171, 172,
565! 173, 310, 174, 2, 204, 205, 206, 175, 3, 317,
566! 4, 5, 6, 7, 176, 177, 181, 185, 10, 153,
567! 186, 324, 187, 188, 189, 33, 190, 154, 192, 250,
568! 17, 260, 193, 261, 267, 336, 222, 251, 320, 273,
569! 285, 289, 297, 294, 299, 323, 300, 280, 308, 327,
570! 328, 309, 139, 313, 314, 315, 331, 332, 33, 335,
571! 34, 316, 322, 337, 338, 339, 340, 341, 342, 343,
572! 1, 345, 2, 346, 344, 348, 347, 3, 349, 4,
573! 5, 6, 7, 257, 71, 8, 9, 10, 334, 305,
574! 277, 11, 12, 0, 0, 13, 14, 15, 16, 17,
575 0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
576! 0, 0, 23, 24, 25, 26, 27, 0, 28, 0,
577! 0, 29, 30, 2, 31, 32, 0, 33, 3, 34,
578! 4, 5, 6, 7, 0, 0, 8, 9, 10, 0,
579! 0, 0, 11, 12, 0, 0, 13, 14, 15, 16,
580! 17, 0, 0, 0, 0, 18, 19, 20, 21, 22,
581! 0, 0, 0, 23, 24, 25, 26, 27, 0, 0,
582! 0, 0, 139, 0, 0, 31, 32, 2, 33, 0,
583! 34, 191, 3, 0, 4, 5, 6, 7, 0, 0,
584 8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
585 13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
586 19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
587! 26, 27, 0, 0, 0, 74, 75, 76, 2, 31,
588 32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
589 0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
590 0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
591 18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
592! 25, 26, 27, 0, 0, 0, 0, 139, 0, 2,
593 31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
594! 0, 0, 8, 9, 10, 0, 0, 0, 11, 12,
595 0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
596 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
597! 24, 25, 26, 27, 0, 0, 0, 0, 0, 0,
598 2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
599! 7, 0, 0, 8, 9, 10, 0, 0, 0, 0,
600! 0, 0, 0, 13, 14, 15, 16, 17, 0, 0,
601 0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
602! 23, 24, 25, 26, 27, 0, 0, 0, 0, 139,
603! 0, 2, 31, 32, 0, 33, 3, 34, 4, 5,
604! 6, 7, 123, 14, 15, 16, 10, 0, 0, 0,
605! 0, 18, 19, 20, 21, 22, 0, 0, 17, 23,
606! 24, 25, 26, 27, 0, 0, 15, 16, 0, 0,
607! 0, 31, 32, 18, 19, 20, 21, 22, 0, 0,
608! 0, 23, 24, 25, 26, 27, 33, 0, 34, 0,
609! 0, 0, 0, 31, 32, 82, 83, 84, 85, 86,
610! 0, 0, 0, 87, 0, 0, 88, 89, 0, 92,
611! 93, 94, 95, 96, 0, 90, 91, 97, 0, 0,
612! 98, 99, 0, 0, 0, 0, 0, 0, 0, 100,
613! 101
614 };
615
616 static const yytype_int16 yycheck[] =
617 {
618! 2, 9, 28, 57, 6, 7, 0, 72, 132, 133,
619! 38, 65, 33, 34, 21, 40, 14, 11, 54, 24,
620! 25, 54, 5, 6, 7, 61, 28, 0, 61, 50,
621! 51, 33, 32, 48, 26, 9, 26, 63, 64, 54,
622! 66, 3, 26, 71, 60, 52, 8, 72, 10, 11,
623! 12, 13, 26, 51, 52, 53, 18, 52, 53, 26,
624! 58, 69, 70, 57, 26, 27, 28, 29, 30, 26,
625! 9, 195, 196, 35, 36, 37, 38, 39, 52, 52,
626! 53, 43, 44, 45, 46, 47, 60, 26, 26, 26,
627! 155, 29, 157, 55, 56, 26, 58, 26, 60, 14,
628! 29, 126, 14, 14, 130, 131, 21, 26, 134, 135,
629! 21, 0, 31, 52, 14, 14, 14, 14, 144, 57,
630! 26, 60, 148, 149, 14, 221, 14, 153, 57, 225,
631! 155, 26, 157, 158, 26, 161, 138, 52, 132, 133,
632! 52, 52, 26, 58, 146, 147, 58, 58, 26, 151,
633! 152, 26, 52, 52, 52, 52, 210, 26, 58, 58,
634! 58, 58, 52, 217, 52, 26, 26, 263, 58, 29,
635! 58, 33, 34, 51, 52, 53, 202, 203, 204, 205,
636! 206, 207, 51, 52, 53, 33, 34, 26, 26, 26,
637! 29, 29, 29, 247, 5, 6, 222, 57, 223, 224,
638! 4, 195, 196, 257, 40, 41, 42, 209, 51, 211,
639! 40, 41, 42, 221, 216, 241, 218, 225, 57, 57,
640! 57, 14, 248, 234, 235, 236, 237, 238, 230, 231,
641! 3, 51, 258, 199, 200, 8, 14, 10, 11, 12,
642! 13, 243, 244, 19, 25, 18, 61, 33, 34, 26,
643! 252, 253, 254, 255, 26, 263, 26, 30, 26, 26,
644! 26, 287, 26, 3, 50, 51, 52, 26, 8, 295,
645! 10, 11, 12, 13, 26, 26, 26, 26, 18, 52,
646! 26, 307, 26, 26, 26, 58, 61, 60, 59, 15,
647! 30, 15, 61, 15, 7, 321, 61, 59, 300, 9,
648! 15, 59, 59, 15, 7, 307, 4, 26, 15, 311,
649! 312, 59, 52, 15, 59, 15, 318, 319, 58, 321,
650! 60, 59, 26, 325, 326, 15, 59, 329, 330, 15,
651! 1, 333, 3, 15, 59, 15, 59, 8, 59, 10,
652! 11, 12, 13, 217, 9, 16, 17, 18, 320, 281,
653! 241, 22, 23, -1, -1, 26, 27, 28, 29, 30,
654 -1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
655! -1, -1, 43, 44, 45, 46, 47, -1, 49, -1,
656! -1, 52, 53, 3, 55, 56, -1, 58, 8, 60,
657! 10, 11, 12, 13, -1, -1, 16, 17, 18, -1,
658! -1, -1, 22, 23, -1, -1, 26, 27, 28, 29,
659! 30, -1, -1, -1, -1, 35, 36, 37, 38, 39,
660! -1, -1, -1, 43, 44, 45, 46, 47, -1, -1,
661! -1, -1, 52, -1, -1, 55, 56, 3, 58, -1,
662! 60, 61, 8, -1, 10, 11, 12, 13, -1, -1,
663 16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
664 26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
665 36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
666! 46, 47, -1, -1, -1, 51, 52, 53, 3, 55,
667 56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
668 -1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
669 -1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
670 35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
671! 45, 46, 47, -1, -1, -1, -1, 52, -1, 3,
672 55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
673! -1, -1, 16, 17, 18, -1, -1, -1, 22, 23,
674 -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
675 -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
676! 44, 45, 46, 47, -1, -1, -1, -1, -1, -1,
677 3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
678! 13, -1, -1, 16, 17, 18, -1, -1, -1, -1,
679 -1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
680 -1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
681! 43, 44, 45, 46, 47, -1, -1, -1, -1, 52,
682! -1, 3, 55, 56, -1, 58, 8, 60, 10, 11,
683! 12, 13, 26, 27, 28, 29, 18, -1, -1, -1,
684! -1, 35, 36, 37, 38, 39, -1, -1, 30, 43,
685! 44, 45, 46, 47, -1, -1, 28, 29, -1, -1,
686! -1, 55, 56, 35, 36, 37, 38, 39, -1, -1,
687! -1, 43, 44, 45, 46, 47, 58, -1, 60, -1,
688! -1, -1, -1, 55, 56, 35, 36, 37, 38, 39,
689! -1, -1, -1, 43, -1, -1, 46, 47, -1, 35,
690 36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
691 46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
692***************
693*** 1401,1434 ****
694 53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
695 70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
696! 81, 82, 83, 95, 96, 97, 98, 99, 52, 53,
697! 89, 94, 26, 26, 31, 26, 89, 89, 26, 26,
698! 68, 70, 32, 51, 52, 53, 93, 97, 24, 25,
699! 60, 35, 36, 37, 38, 39, 43, 46, 47, 55,
700! 56, 35, 36, 37, 38, 39, 43, 46, 47, 55,
701! 56, 26, 26, 26, 29, 57, 26, 26, 29, 57,
702! 26, 26, 26, 26, 26, 89, 94, 26, 26, 89,
703! 89, 0, 26, 66, 65, 67, 52, 53, 92, 33,
704! 34, 50, 51, 48, 54, 93, 97, 4, 52, 90,
705! 91, 97, 94, 51, 94, 14, 58, 93, 51, 94,
706! 14, 14, 52, 60, 70, 76, 70, 67, 19, 25,
707! 61, 26, 26, 26, 29, 57, 26, 26, 29, 57,
708! 26, 26, 26, 26, 26, 26, 26, 26, 29, 57,
709! 26, 26, 29, 57, 26, 26, 26, 26, 26, 61,
710! 61, 59, 61, 65, 94, 94, 96, 96, 94, 94,
711! 89, 33, 34, 50, 51, 52, 21, 94, 14, 21,
712! 58, 89, 89, 94, 94, 14, 21, 58, 89, 89,
713! 94, 61, 67, 67, 94, 96, 96, 98, 98, 5,
714! 6, 7, 84, 94, 94, 94, 94, 94, 85, 86,
715! 87, 94, 14, 58, 89, 26, 64, 93, 89, 15,
716! 59, 14, 58, 14, 58, 89, 64, 93, 89, 15,
717! 15, 76, 94, 76, 89, 89, 7, 91, 91, 91,
718! 91, 91, 9, 40, 41, 42, 86, 94, 9, 26,
719! 60, 88, 89, 89, 15, 26, 93, 94, 59, 89,
720! 89, 89, 89, 15, 93, 94, 59, 76, 7, 4,
721! 40, 41, 42, 9, 88, 54, 61, 15, 59, 94,
722! 14, 58, 15, 59, 15, 59, 94, 14, 58, 89,
723! 61, 26, 89, 94, 14, 58, 89, 89, 14, 58,
724! 89, 89, 5, 84, 89, 94, 89, 89, 15, 59,
725! 89, 89, 15, 59, 89, 15, 59, 15, 59
726 };
727
728--- 1401,1434 ----
729 53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
730 70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
731! 81, 82, 83, 95, 96, 97, 98, 99, 0, 52,
732! 53, 89, 94, 26, 26, 31, 26, 89, 89, 26,
733! 26, 68, 70, 32, 51, 52, 53, 93, 97, 24,
734! 25, 60, 35, 36, 37, 38, 39, 43, 46, 47,
735! 55, 56, 35, 36, 37, 38, 39, 43, 46, 47,
736! 55, 56, 26, 26, 26, 29, 57, 26, 26, 29,
737! 57, 26, 26, 26, 26, 26, 89, 94, 26, 26,
738! 89, 89, 0, 26, 66, 65, 67, 52, 53, 92,
739! 33, 34, 50, 51, 48, 54, 93, 97, 4, 52,
740! 90, 91, 97, 94, 51, 94, 14, 58, 93, 51,
741! 94, 14, 14, 52, 60, 70, 76, 70, 67, 19,
742! 25, 61, 26, 26, 26, 29, 57, 26, 26, 29,
743! 57, 26, 26, 26, 26, 26, 26, 26, 26, 29,
744! 57, 26, 26, 29, 57, 26, 26, 26, 26, 26,
745! 61, 61, 59, 61, 65, 94, 94, 96, 96, 94,
746! 94, 89, 33, 34, 50, 51, 52, 21, 94, 14,
747! 21, 58, 89, 89, 94, 94, 14, 21, 58, 89,
748! 89, 94, 61, 67, 67, 94, 96, 96, 98, 98,
749! 5, 6, 7, 84, 94, 94, 94, 94, 94, 85,
750! 86, 87, 94, 14, 58, 89, 26, 64, 93, 89,
751! 15, 59, 14, 58, 14, 58, 89, 64, 93, 89,
752! 15, 15, 76, 94, 76, 89, 89, 7, 91, 91,
753! 91, 91, 91, 9, 40, 41, 42, 86, 94, 9,
754! 26, 60, 88, 89, 89, 15, 26, 93, 94, 59,
755! 89, 89, 89, 89, 15, 93, 94, 59, 76, 7,
756! 4, 40, 41, 42, 9, 88, 54, 61, 15, 59,
757! 94, 14, 58, 15, 59, 15, 59, 94, 14, 58,
758! 89, 61, 26, 89, 94, 14, 58, 89, 89, 14,
759! 58, 89, 89, 5, 84, 89, 94, 89, 89, 15,
760! 59, 89, 89, 15, 59, 89, 15, 59, 15, 59
761 };
762
763***************
764*** 1436,1457 ****
765 static const yytype_int8 yyr1[] =
766 {
767! 0, 62, 63, 63, 63, 63, 63, 63, 64, 64,
768! 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
769 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
770 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
771 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
772! 65, 65, 65, 65, 66, 66, 66, 67, 67, 68,
773! 68, 69, 69, 69, 69, 69, 70, 70, 70, 70,
774! 70, 70, 70, 70, 70, 70, 70, 71, 71, 71,
775! 71, 71, 71, 71, 71, 72, 72, 72, 72, 73,
776! 73, 73, 73, 73, 73, 73, 73, 74, 74, 74,
777! 75, 75, 75, 75, 76, 76, 77, 78, 78, 79,
778! 79, 79, 79, 79, 80, 80, 80, 81, 82, 83,
779! 84, 84, 84, 85, 85, 86, 86, 86, 86, 87,
780! 87, 87, 87, 87, 87, 88, 88, 89, 89, 90,
781! 90, 90, 91, 91, 91, 91, 91, 91, 92, 92,
782! 93, 93, 93, 94, 94, 95, 95, 95, 96, 96,
783! 96, 96, 96, 97, 97, 97, 97, 97, 98, 98,
784! 98, 99, 99, 99, 99
785 };
786
787--- 1436,1457 ----
788 static const yytype_int8 yyr1[] =
789 {
790! 0, 62, 63, 63, 63, 63, 63, 63, 63, 64,
791! 64, 65, 65, 65, 65, 65, 65, 65, 65, 65,
792 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
793 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
794 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
795! 65, 65, 65, 65, 65, 66, 66, 66, 67, 67,
796! 68, 68, 69, 69, 69, 69, 69, 70, 70, 70,
797! 70, 70, 70, 70, 70, 70, 70, 70, 71, 71,
798! 71, 71, 71, 71, 71, 71, 72, 72, 72, 72,
799! 73, 73, 73, 73, 73, 73, 73, 73, 74, 74,
800! 74, 75, 75, 75, 75, 76, 76, 77, 78, 78,
801! 79, 79, 79, 79, 79, 80, 80, 80, 81, 82,
802! 83, 84, 84, 84, 85, 85, 86, 86, 86, 86,
803! 87, 87, 87, 87, 87, 87, 88, 88, 89, 89,
804! 90, 90, 90, 91, 91, 91, 91, 91, 91, 92,
805! 92, 93, 93, 93, 94, 94, 95, 95, 95, 96,
806! 96, 96, 96, 96, 97, 97, 97, 97, 97, 98,
807! 98, 98, 99, 99, 99, 99
808 };
809
810***************
811*** 1459,1480 ****
812 static const yytype_int8 yyr2[] =
813 {
814! 0, 2, 2, 1, 1, 2, 2, 1, 1, 2,
815! 2, 2, 3, 3, 3, 3, 2, 3, 3, 2,
816 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
817 3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
818! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
819! 3, 3, 2, 2, 1, 1, 1, 1, 2, 1,
820! 2, 1, 1, 2, 1, 1, 1, 1, 5, 5,
821! 1, 1, 1, 1, 1, 1, 1, 6, 6, 7,
822! 7, 10, 10, 9, 9, 7, 7, 5, 5, 6,
823! 6, 7, 7, 10, 10, 9, 9, 6, 7, 6,
824! 5, 6, 3, 5, 1, 2, 3, 3, 3, 2,
825! 3, 3, 4, 2, 5, 7, 6, 3, 1, 3,
826! 4, 6, 5, 1, 2, 4, 4, 5, 5, 2,
827! 3, 2, 3, 2, 3, 1, 3, 2, 2, 3,
828! 3, 3, 4, 4, 4, 4, 4, 1, 1, 1,
829! 1, 1, 1, 0, 2, 1, 2, 2, 4, 4,
830! 3, 3, 1, 1, 2, 2, 2, 2, 4, 4,
831! 1, 1, 2, 2, 3
832 };
833
834--- 1459,1480 ----
835 static const yytype_int8 yyr2[] =
836 {
837! 0, 2, 2, 1, 1, 2, 2, 2, 1, 1,
838! 2, 2, 2, 3, 3, 3, 3, 2, 3, 3,
839! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
840 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
841 3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
842! 2, 3, 3, 2, 2, 1, 1, 1, 1, 2,
843! 1, 2, 1, 1, 2, 1, 1, 1, 1, 5,
844! 5, 1, 1, 1, 1, 1, 1, 1, 6, 6,
845! 7, 7, 10, 10, 9, 9, 7, 7, 5, 5,
846! 6, 6, 7, 7, 10, 10, 9, 9, 6, 7,
847! 6, 5, 6, 3, 5, 1, 2, 3, 3, 3,
848! 2, 3, 3, 4, 2, 5, 7, 6, 3, 1,
849! 3, 4, 6, 5, 1, 2, 4, 4, 5, 5,
850! 2, 3, 2, 3, 2, 3, 1, 3, 2, 2,
851! 3, 3, 3, 4, 4, 4, 4, 4, 1, 1,
852! 1, 1, 1, 1, 0, 2, 1, 2, 2, 4,
853! 4, 3, 3, 1, 1, 2, 2, 2, 2, 4,
854! 4, 1, 1, 2, 2, 3
855 };
856
857***************
858*** 2019,2025 ****
859 break;
860
861! case 7: /* inputunit: yacc_EOF */
862 #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
863 {
864 /* Case of EOF seen by itself. Do ignoreeof or
865 not. */
866--- 2019,2044 ----
867 break;
868
869! case 7: /* inputunit: error $end */
870 #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
871 {
872+ global_command = (COMMAND *)NULL;
873+ if (last_command_exit_value == 0)
874+ last_command_exit_value = EX_BADUSAGE; /* force error return */
875+ if (interactive && parse_and_execute_level == 0)
876+ {
877+ handle_eof_input_unit ();
878+ YYACCEPT;
879+ }
880+ else
881+ {
882+ YYABORT;
883+ }
884+ }
885+ #line 2038 "y.tab.c"
886+ break;
887+
888+ case 8: /* inputunit: yacc_EOF */
889+ #line 471 "/usr/local/src/chet/src/bash/src/parse.y"
890+ {
891 /* Case of EOF seen by itself. Do ignoreeof or
892 not. */
893***************
894*** 2028,2048 ****
895 YYACCEPT;
896 }
897! #line 2031 "y.tab.c"
898 break;
899
900! case 8: /* word_list: WORD */
901! #line 466 "/usr/local/src/chet/src/bash/src/parse.y"
902 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
903! #line 2037 "y.tab.c"
904 break;
905
906! case 9: /* word_list: word_list WORD */
907! #line 468 "/usr/local/src/chet/src/bash/src/parse.y"
908 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
909! #line 2043 "y.tab.c"
910 break;
911
912! case 10: /* redirection: '>' WORD */
913! #line 472 "/usr/local/src/chet/src/bash/src/parse.y"
914 {
915 source.dest = 1;
916--- 2047,2067 ----
917 YYACCEPT;
918 }
919! #line 2050 "y.tab.c"
920 break;
921
922! case 9: /* word_list: WORD */
923! #line 481 "/usr/local/src/chet/src/bash/src/parse.y"
924 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
925! #line 2056 "y.tab.c"
926 break;
927
928! case 10: /* word_list: word_list WORD */
929! #line 483 "/usr/local/src/chet/src/bash/src/parse.y"
930 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
931! #line 2062 "y.tab.c"
932 break;
933
934! case 11: /* redirection: '>' WORD */
935! #line 487 "/usr/local/src/chet/src/bash/src/parse.y"
936 {
937 source.dest = 1;
938***************
939*** 2050,2058 ****
940 (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
941 }
942! #line 2053 "y.tab.c"
943 break;
944
945! case 11: /* redirection: '<' WORD */
946! #line 478 "/usr/local/src/chet/src/bash/src/parse.y"
947 {
948 source.dest = 0;
949--- 2069,2077 ----
950 (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
951 }
952! #line 2072 "y.tab.c"
953 break;
954
955! case 12: /* redirection: '<' WORD */
956! #line 493 "/usr/local/src/chet/src/bash/src/parse.y"
957 {
958 source.dest = 0;
959***************
960*** 2060,2068 ****
961 (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
962 }
963! #line 2063 "y.tab.c"
964 break;
965
966! case 12: /* redirection: NUMBER '>' WORD */
967! #line 484 "/usr/local/src/chet/src/bash/src/parse.y"
968 {
969 source.dest = (yyvsp[-2].number);
970--- 2079,2087 ----
971 (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
972 }
973! #line 2082 "y.tab.c"
974 break;
975
976! case 13: /* redirection: NUMBER '>' WORD */
977! #line 499 "/usr/local/src/chet/src/bash/src/parse.y"
978 {
979 source.dest = (yyvsp[-2].number);
980***************
981*** 2070,2078 ****
982 (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
983 }
984! #line 2073 "y.tab.c"
985 break;
986
987! case 13: /* redirection: NUMBER '<' WORD */
988! #line 490 "/usr/local/src/chet/src/bash/src/parse.y"
989 {
990 source.dest = (yyvsp[-2].number);
991--- 2089,2097 ----
992 (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
993 }
994! #line 2092 "y.tab.c"
995 break;
996
997! case 14: /* redirection: NUMBER '<' WORD */
998! #line 505 "/usr/local/src/chet/src/bash/src/parse.y"
999 {
1000 source.dest = (yyvsp[-2].number);
1001***************
1002*** 2080,2088 ****
1003 (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
1004 }
1005! #line 2083 "y.tab.c"
1006 break;
1007
1008! case 14: /* redirection: REDIR_WORD '>' WORD */
1009! #line 496 "/usr/local/src/chet/src/bash/src/parse.y"
1010 {
1011 source.filename = (yyvsp[-2].word);
1012--- 2099,2107 ----
1013 (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
1014 }
1015! #line 2102 "y.tab.c"
1016 break;
1017
1018! case 15: /* redirection: REDIR_WORD '>' WORD */
1019! #line 511 "/usr/local/src/chet/src/bash/src/parse.y"
1020 {
1021 source.filename = (yyvsp[-2].word);
1022***************
1023*** 2090,2098 ****
1024 (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
1025 }
1026! #line 2093 "y.tab.c"
1027 break;
1028
1029! case 15: /* redirection: REDIR_WORD '<' WORD */
1030! #line 502 "/usr/local/src/chet/src/bash/src/parse.y"
1031 {
1032 source.filename = (yyvsp[-2].word);
1033--- 2109,2117 ----
1034 (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
1035 }
1036! #line 2112 "y.tab.c"
1037 break;
1038
1039! case 16: /* redirection: REDIR_WORD '<' WORD */
1040! #line 517 "/usr/local/src/chet/src/bash/src/parse.y"
1041 {
1042 source.filename = (yyvsp[-2].word);
1043***************
1044*** 2100,2108 ****
1045 (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
1046 }
1047! #line 2103 "y.tab.c"
1048 break;
1049
1050! case 16: /* redirection: GREATER_GREATER WORD */
1051! #line 508 "/usr/local/src/chet/src/bash/src/parse.y"
1052 {
1053 source.dest = 1;
1054--- 2119,2127 ----
1055 (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
1056 }
1057! #line 2122 "y.tab.c"
1058 break;
1059
1060! case 17: /* redirection: GREATER_GREATER WORD */
1061! #line 523 "/usr/local/src/chet/src/bash/src/parse.y"
1062 {
1063 source.dest = 1;
1064***************
1065*** 2110,2118 ****
1066 (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
1067 }
1068! #line 2113 "y.tab.c"
1069 break;
1070
1071! case 17: /* redirection: NUMBER GREATER_GREATER WORD */
1072! #line 514 "/usr/local/src/chet/src/bash/src/parse.y"
1073 {
1074 source.dest = (yyvsp[-2].number);
1075--- 2129,2137 ----
1076 (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
1077 }
1078! #line 2132 "y.tab.c"
1079 break;
1080
1081! case 18: /* redirection: NUMBER GREATER_GREATER WORD */
1082! #line 529 "/usr/local/src/chet/src/bash/src/parse.y"
1083 {
1084 source.dest = (yyvsp[-2].number);
1085***************
1086*** 2120,2128 ****
1087 (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
1088 }
1089! #line 2123 "y.tab.c"
1090 break;
1091
1092! case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */
1093! #line 520 "/usr/local/src/chet/src/bash/src/parse.y"
1094 {
1095 source.filename = (yyvsp[-2].word);
1096--- 2139,2147 ----
1097 (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
1098 }
1099! #line 2142 "y.tab.c"
1100 break;
1101
1102! case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD */
1103! #line 535 "/usr/local/src/chet/src/bash/src/parse.y"
1104 {
1105 source.filename = (yyvsp[-2].word);
1106***************
1107*** 2130,2138 ****
1108 (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
1109 }
1110! #line 2133 "y.tab.c"
1111 break;
1112
1113! case 19: /* redirection: GREATER_BAR WORD */
1114! #line 526 "/usr/local/src/chet/src/bash/src/parse.y"
1115 {
1116 source.dest = 1;
1117--- 2149,2157 ----
1118 (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
1119 }
1120! #line 2152 "y.tab.c"
1121 break;
1122
1123! case 20: /* redirection: GREATER_BAR WORD */
1124! #line 541 "/usr/local/src/chet/src/bash/src/parse.y"
1125 {
1126 source.dest = 1;
1127***************
1128*** 2140,2148 ****
1129 (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
1130 }
1131! #line 2143 "y.tab.c"
1132 break;
1133
1134! case 20: /* redirection: NUMBER GREATER_BAR WORD */
1135! #line 532 "/usr/local/src/chet/src/bash/src/parse.y"
1136 {
1137 source.dest = (yyvsp[-2].number);
1138--- 2159,2167 ----
1139 (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
1140 }
1141! #line 2162 "y.tab.c"
1142 break;
1143
1144! case 21: /* redirection: NUMBER GREATER_BAR WORD */
1145! #line 547 "/usr/local/src/chet/src/bash/src/parse.y"
1146 {
1147 source.dest = (yyvsp[-2].number);
1148***************
1149*** 2150,2158 ****
1150 (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
1151 }
1152! #line 2153 "y.tab.c"
1153 break;
1154
1155! case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */
1156! #line 538 "/usr/local/src/chet/src/bash/src/parse.y"
1157 {
1158 source.filename = (yyvsp[-2].word);
1159--- 2169,2177 ----
1160 (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
1161 }
1162! #line 2172 "y.tab.c"
1163 break;
1164
1165! case 22: /* redirection: REDIR_WORD GREATER_BAR WORD */
1166! #line 553 "/usr/local/src/chet/src/bash/src/parse.y"
1167 {
1168 source.filename = (yyvsp[-2].word);
1169***************
1170*** 2160,2168 ****
1171 (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
1172 }
1173! #line 2163 "y.tab.c"
1174 break;
1175
1176! case 22: /* redirection: LESS_GREATER WORD */
1177! #line 544 "/usr/local/src/chet/src/bash/src/parse.y"
1178 {
1179 source.dest = 0;
1180--- 2179,2187 ----
1181 (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
1182 }
1183! #line 2182 "y.tab.c"
1184 break;
1185
1186! case 23: /* redirection: LESS_GREATER WORD */
1187! #line 559 "/usr/local/src/chet/src/bash/src/parse.y"
1188 {
1189 source.dest = 0;
1190***************
1191*** 2170,2178 ****
1192 (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
1193 }
1194! #line 2173 "y.tab.c"
1195 break;
1196
1197! case 23: /* redirection: NUMBER LESS_GREATER WORD */
1198! #line 550 "/usr/local/src/chet/src/bash/src/parse.y"
1199 {
1200 source.dest = (yyvsp[-2].number);
1201--- 2189,2197 ----
1202 (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
1203 }
1204! #line 2192 "y.tab.c"
1205 break;
1206
1207! case 24: /* redirection: NUMBER LESS_GREATER WORD */
1208! #line 565 "/usr/local/src/chet/src/bash/src/parse.y"
1209 {
1210 source.dest = (yyvsp[-2].number);
1211***************
1212*** 2180,2188 ****
1213 (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
1214 }
1215! #line 2183 "y.tab.c"
1216 break;
1217
1218! case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */
1219! #line 556 "/usr/local/src/chet/src/bash/src/parse.y"
1220 {
1221 source.filename = (yyvsp[-2].word);
1222--- 2199,2207 ----
1223 (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
1224 }
1225! #line 2202 "y.tab.c"
1226 break;
1227
1228! case 25: /* redirection: REDIR_WORD LESS_GREATER WORD */
1229! #line 571 "/usr/local/src/chet/src/bash/src/parse.y"
1230 {
1231 source.filename = (yyvsp[-2].word);
1232***************
1233*** 2190,2198 ****
1234 (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
1235 }
1236! #line 2193 "y.tab.c"
1237 break;
1238
1239! case 25: /* redirection: LESS_LESS WORD */
1240! #line 562 "/usr/local/src/chet/src/bash/src/parse.y"
1241 {
1242 source.dest = 0;
1243--- 2209,2217 ----
1244 (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
1245 }
1246! #line 2212 "y.tab.c"
1247 break;
1248
1249! case 26: /* redirection: LESS_LESS WORD */
1250! #line 577 "/usr/local/src/chet/src/bash/src/parse.y"
1251 {
1252 source.dest = 0;
1253***************
1254*** 2201,2209 ****
1255 push_heredoc ((yyval.redirect));
1256 }
1257! #line 2204 "y.tab.c"
1258 break;
1259
1260! case 26: /* redirection: NUMBER LESS_LESS WORD */
1261! #line 569 "/usr/local/src/chet/src/bash/src/parse.y"
1262 {
1263 source.dest = (yyvsp[-2].number);
1264--- 2220,2228 ----
1265 push_heredoc ((yyval.redirect));
1266 }
1267! #line 2223 "y.tab.c"
1268 break;
1269
1270! case 27: /* redirection: NUMBER LESS_LESS WORD */
1271! #line 584 "/usr/local/src/chet/src/bash/src/parse.y"
1272 {
1273 source.dest = (yyvsp[-2].number);
1274***************
1275*** 2212,2220 ****
1276 push_heredoc ((yyval.redirect));
1277 }
1278! #line 2215 "y.tab.c"
1279 break;
1280
1281! case 27: /* redirection: REDIR_WORD LESS_LESS WORD */
1282! #line 576 "/usr/local/src/chet/src/bash/src/parse.y"
1283 {
1284 source.filename = (yyvsp[-2].word);
1285--- 2231,2239 ----
1286 push_heredoc ((yyval.redirect));
1287 }
1288! #line 2234 "y.tab.c"
1289 break;
1290
1291! case 28: /* redirection: REDIR_WORD LESS_LESS WORD */
1292! #line 591 "/usr/local/src/chet/src/bash/src/parse.y"
1293 {
1294 source.filename = (yyvsp[-2].word);
1295***************
1296*** 2223,2231 ****
1297 push_heredoc ((yyval.redirect));
1298 }
1299! #line 2226 "y.tab.c"
1300 break;
1301
1302! case 28: /* redirection: LESS_LESS_MINUS WORD */
1303! #line 583 "/usr/local/src/chet/src/bash/src/parse.y"
1304 {
1305 source.dest = 0;
1306--- 2242,2250 ----
1307 push_heredoc ((yyval.redirect));
1308 }
1309! #line 2245 "y.tab.c"
1310 break;
1311
1312! case 29: /* redirection: LESS_LESS_MINUS WORD */
1313! #line 598 "/usr/local/src/chet/src/bash/src/parse.y"
1314 {
1315 source.dest = 0;
1316***************
1317*** 2234,2242 ****
1318 push_heredoc ((yyval.redirect));
1319 }
1320! #line 2237 "y.tab.c"
1321 break;
1322
1323! case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */
1324! #line 590 "/usr/local/src/chet/src/bash/src/parse.y"
1325 {
1326 source.dest = (yyvsp[-2].number);
1327--- 2253,2261 ----
1328 push_heredoc ((yyval.redirect));
1329 }
1330! #line 2256 "y.tab.c"
1331 break;
1332
1333! case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD */
1334! #line 605 "/usr/local/src/chet/src/bash/src/parse.y"
1335 {
1336 source.dest = (yyvsp[-2].number);
1337***************
1338*** 2245,2253 ****
1339 push_heredoc ((yyval.redirect));
1340 }
1341! #line 2248 "y.tab.c"
1342 break;
1343
1344! case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */
1345! #line 597 "/usr/local/src/chet/src/bash/src/parse.y"
1346 {
1347 source.filename = (yyvsp[-2].word);
1348--- 2264,2272 ----
1349 push_heredoc ((yyval.redirect));
1350 }
1351! #line 2267 "y.tab.c"
1352 break;
1353
1354! case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */
1355! #line 612 "/usr/local/src/chet/src/bash/src/parse.y"
1356 {
1357 source.filename = (yyvsp[-2].word);
1358***************
1359*** 2256,2264 ****
1360 push_heredoc ((yyval.redirect));
1361 }
1362! #line 2259 "y.tab.c"
1363 break;
1364
1365! case 31: /* redirection: LESS_LESS_LESS WORD */
1366! #line 604 "/usr/local/src/chet/src/bash/src/parse.y"
1367 {
1368 source.dest = 0;
1369--- 2275,2283 ----
1370 push_heredoc ((yyval.redirect));
1371 }
1372! #line 2278 "y.tab.c"
1373 break;
1374
1375! case 32: /* redirection: LESS_LESS_LESS WORD */
1376! #line 619 "/usr/local/src/chet/src/bash/src/parse.y"
1377 {
1378 source.dest = 0;
1379***************
1380*** 2266,2274 ****
1381 (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
1382 }
1383! #line 2269 "y.tab.c"
1384 break;
1385
1386! case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */
1387! #line 610 "/usr/local/src/chet/src/bash/src/parse.y"
1388 {
1389 source.dest = (yyvsp[-2].number);
1390--- 2285,2293 ----
1391 (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
1392 }
1393! #line 2288 "y.tab.c"
1394 break;
1395
1396! case 33: /* redirection: NUMBER LESS_LESS_LESS WORD */
1397! #line 625 "/usr/local/src/chet/src/bash/src/parse.y"
1398 {
1399 source.dest = (yyvsp[-2].number);
1400***************
1401*** 2276,2284 ****
1402 (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
1403 }
1404! #line 2279 "y.tab.c"
1405 break;
1406
1407! case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */
1408! #line 616 "/usr/local/src/chet/src/bash/src/parse.y"
1409 {
1410 source.filename = (yyvsp[-2].word);
1411--- 2295,2303 ----
1412 (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
1413 }
1414! #line 2298 "y.tab.c"
1415 break;
1416
1417! case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */
1418! #line 631 "/usr/local/src/chet/src/bash/src/parse.y"
1419 {
1420 source.filename = (yyvsp[-2].word);
1421***************
1422*** 2286,2294 ****
1423 (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
1424 }
1425! #line 2289 "y.tab.c"
1426 break;
1427
1428! case 34: /* redirection: LESS_AND NUMBER */
1429! #line 622 "/usr/local/src/chet/src/bash/src/parse.y"
1430 {
1431 source.dest = 0;
1432--- 2305,2313 ----
1433 (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
1434 }
1435! #line 2308 "y.tab.c"
1436 break;
1437
1438! case 35: /* redirection: LESS_AND NUMBER */
1439! #line 637 "/usr/local/src/chet/src/bash/src/parse.y"
1440 {
1441 source.dest = 0;
1442***************
1443*** 2296,2304 ****
1444 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
1445 }
1446! #line 2299 "y.tab.c"
1447 break;
1448
1449! case 35: /* redirection: NUMBER LESS_AND NUMBER */
1450! #line 628 "/usr/local/src/chet/src/bash/src/parse.y"
1451 {
1452 source.dest = (yyvsp[-2].number);
1453--- 2315,2323 ----
1454 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
1455 }
1456! #line 2318 "y.tab.c"
1457 break;
1458
1459! case 36: /* redirection: NUMBER LESS_AND NUMBER */
1460! #line 643 "/usr/local/src/chet/src/bash/src/parse.y"
1461 {
1462 source.dest = (yyvsp[-2].number);
1463***************
1464*** 2306,2314 ****
1465 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
1466 }
1467! #line 2309 "y.tab.c"
1468 break;
1469
1470! case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */
1471! #line 634 "/usr/local/src/chet/src/bash/src/parse.y"
1472 {
1473 source.filename = (yyvsp[-2].word);
1474--- 2325,2333 ----
1475 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
1476 }
1477! #line 2328 "y.tab.c"
1478 break;
1479
1480! case 37: /* redirection: REDIR_WORD LESS_AND NUMBER */
1481! #line 649 "/usr/local/src/chet/src/bash/src/parse.y"
1482 {
1483 source.filename = (yyvsp[-2].word);
1484***************
1485*** 2316,2324 ****
1486 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
1487 }
1488! #line 2319 "y.tab.c"
1489 break;
1490
1491! case 37: /* redirection: GREATER_AND NUMBER */
1492! #line 640 "/usr/local/src/chet/src/bash/src/parse.y"
1493 {
1494 source.dest = 1;
1495--- 2335,2343 ----
1496 (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
1497 }
1498! #line 2338 "y.tab.c"
1499 break;
1500
1501! case 38: /* redirection: GREATER_AND NUMBER */
1502! #line 655 "/usr/local/src/chet/src/bash/src/parse.y"
1503 {
1504 source.dest = 1;
1505***************
1506*** 2326,2334 ****
1507 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
1508 }
1509! #line 2329 "y.tab.c"
1510 break;
1511
1512! case 38: /* redirection: NUMBER GREATER_AND NUMBER */
1513! #line 646 "/usr/local/src/chet/src/bash/src/parse.y"
1514 {
1515 source.dest = (yyvsp[-2].number);
1516--- 2345,2353 ----
1517 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
1518 }
1519! #line 2348 "y.tab.c"
1520 break;
1521
1522! case 39: /* redirection: NUMBER GREATER_AND NUMBER */
1523! #line 661 "/usr/local/src/chet/src/bash/src/parse.y"
1524 {
1525 source.dest = (yyvsp[-2].number);
1526***************
1527*** 2336,2344 ****
1528 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
1529 }
1530! #line 2339 "y.tab.c"
1531 break;
1532
1533! case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */
1534! #line 652 "/usr/local/src/chet/src/bash/src/parse.y"
1535 {
1536 source.filename = (yyvsp[-2].word);
1537--- 2355,2363 ----
1538 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
1539 }
1540! #line 2358 "y.tab.c"
1541 break;
1542
1543! case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER */
1544! #line 667 "/usr/local/src/chet/src/bash/src/parse.y"
1545 {
1546 source.filename = (yyvsp[-2].word);
1547***************
1548*** 2346,2354 ****
1549 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
1550 }
1551! #line 2349 "y.tab.c"
1552 break;
1553
1554! case 40: /* redirection: LESS_AND WORD */
1555! #line 658 "/usr/local/src/chet/src/bash/src/parse.y"
1556 {
1557 source.dest = 0;
1558--- 2365,2373 ----
1559 (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
1560 }
1561! #line 2368 "y.tab.c"
1562 break;
1563
1564! case 41: /* redirection: LESS_AND WORD */
1565! #line 673 "/usr/local/src/chet/src/bash/src/parse.y"
1566 {
1567 source.dest = 0;
1568***************
1569*** 2356,2364 ****
1570 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
1571 }
1572! #line 2359 "y.tab.c"
1573 break;
1574
1575! case 41: /* redirection: NUMBER LESS_AND WORD */
1576! #line 664 "/usr/local/src/chet/src/bash/src/parse.y"
1577 {
1578 source.dest = (yyvsp[-2].number);
1579--- 2375,2383 ----
1580 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
1581 }
1582! #line 2378 "y.tab.c"
1583 break;
1584
1585! case 42: /* redirection: NUMBER LESS_AND WORD */
1586! #line 679 "/usr/local/src/chet/src/bash/src/parse.y"
1587 {
1588 source.dest = (yyvsp[-2].number);
1589***************
1590*** 2366,2374 ****
1591 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
1592 }
1593! #line 2369 "y.tab.c"
1594 break;
1595
1596! case 42: /* redirection: REDIR_WORD LESS_AND WORD */
1597! #line 670 "/usr/local/src/chet/src/bash/src/parse.y"
1598 {
1599 source.filename = (yyvsp[-2].word);
1600--- 2385,2393 ----
1601 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
1602 }
1603! #line 2388 "y.tab.c"
1604 break;
1605
1606! case 43: /* redirection: REDIR_WORD LESS_AND WORD */
1607! #line 685 "/usr/local/src/chet/src/bash/src/parse.y"
1608 {
1609 source.filename = (yyvsp[-2].word);
1610***************
1611*** 2376,2384 ****
1612 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
1613 }
1614! #line 2379 "y.tab.c"
1615 break;
1616
1617! case 43: /* redirection: GREATER_AND WORD */
1618! #line 676 "/usr/local/src/chet/src/bash/src/parse.y"
1619 {
1620 source.dest = 1;
1621--- 2395,2403 ----
1622 (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
1623 }
1624! #line 2398 "y.tab.c"
1625 break;
1626
1627! case 44: /* redirection: GREATER_AND WORD */
1628! #line 691 "/usr/local/src/chet/src/bash/src/parse.y"
1629 {
1630 source.dest = 1;
1631***************
1632*** 2386,2394 ****
1633 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
1634 }
1635! #line 2389 "y.tab.c"
1636 break;
1637
1638! case 44: /* redirection: NUMBER GREATER_AND WORD */
1639! #line 682 "/usr/local/src/chet/src/bash/src/parse.y"
1640 {
1641 source.dest = (yyvsp[-2].number);
1642--- 2405,2413 ----
1643 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
1644 }
1645! #line 2408 "y.tab.c"
1646 break;
1647
1648! case 45: /* redirection: NUMBER GREATER_AND WORD */
1649! #line 697 "/usr/local/src/chet/src/bash/src/parse.y"
1650 {
1651 source.dest = (yyvsp[-2].number);
1652***************
1653*** 2396,2404 ****
1654 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
1655 }
1656! #line 2399 "y.tab.c"
1657 break;
1658
1659! case 45: /* redirection: REDIR_WORD GREATER_AND WORD */
1660! #line 688 "/usr/local/src/chet/src/bash/src/parse.y"
1661 {
1662 source.filename = (yyvsp[-2].word);
1663--- 2415,2423 ----
1664 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
1665 }
1666! #line 2418 "y.tab.c"
1667 break;
1668
1669! case 46: /* redirection: REDIR_WORD GREATER_AND WORD */
1670! #line 703 "/usr/local/src/chet/src/bash/src/parse.y"
1671 {
1672 source.filename = (yyvsp[-2].word);
1673***************
1674*** 2406,2414 ****
1675 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
1676 }
1677! #line 2409 "y.tab.c"
1678 break;
1679
1680! case 46: /* redirection: GREATER_AND '-' */
1681! #line 694 "/usr/local/src/chet/src/bash/src/parse.y"
1682 {
1683 source.dest = 1;
1684--- 2425,2433 ----
1685 (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
1686 }
1687! #line 2428 "y.tab.c"
1688 break;
1689
1690! case 47: /* redirection: GREATER_AND '-' */
1691! #line 709 "/usr/local/src/chet/src/bash/src/parse.y"
1692 {
1693 source.dest = 1;
1694***************
1695*** 2416,2424 ****
1696 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1697 }
1698! #line 2419 "y.tab.c"
1699 break;
1700
1701! case 47: /* redirection: NUMBER GREATER_AND '-' */
1702! #line 700 "/usr/local/src/chet/src/bash/src/parse.y"
1703 {
1704 source.dest = (yyvsp[-2].number);
1705--- 2435,2443 ----
1706 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1707 }
1708! #line 2438 "y.tab.c"
1709 break;
1710
1711! case 48: /* redirection: NUMBER GREATER_AND '-' */
1712! #line 715 "/usr/local/src/chet/src/bash/src/parse.y"
1713 {
1714 source.dest = (yyvsp[-2].number);
1715***************
1716*** 2426,2434 ****
1717 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1718 }
1719! #line 2429 "y.tab.c"
1720 break;
1721
1722! case 48: /* redirection: REDIR_WORD GREATER_AND '-' */
1723! #line 706 "/usr/local/src/chet/src/bash/src/parse.y"
1724 {
1725 source.filename = (yyvsp[-2].word);
1726--- 2445,2453 ----
1727 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1728 }
1729! #line 2448 "y.tab.c"
1730 break;
1731
1732! case 49: /* redirection: REDIR_WORD GREATER_AND '-' */
1733! #line 721 "/usr/local/src/chet/src/bash/src/parse.y"
1734 {
1735 source.filename = (yyvsp[-2].word);
1736***************
1737*** 2436,2444 ****
1738 (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
1739 }
1740! #line 2439 "y.tab.c"
1741 break;
1742
1743! case 49: /* redirection: LESS_AND '-' */
1744! #line 712 "/usr/local/src/chet/src/bash/src/parse.y"
1745 {
1746 source.dest = 0;
1747--- 2455,2463 ----
1748 (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
1749 }
1750! #line 2458 "y.tab.c"
1751 break;
1752
1753! case 50: /* redirection: LESS_AND '-' */
1754! #line 727 "/usr/local/src/chet/src/bash/src/parse.y"
1755 {
1756 source.dest = 0;
1757***************
1758*** 2446,2454 ****
1759 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1760 }
1761! #line 2449 "y.tab.c"
1762 break;
1763
1764! case 50: /* redirection: NUMBER LESS_AND '-' */
1765! #line 718 "/usr/local/src/chet/src/bash/src/parse.y"
1766 {
1767 source.dest = (yyvsp[-2].number);
1768--- 2465,2473 ----
1769 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1770 }
1771! #line 2468 "y.tab.c"
1772 break;
1773
1774! case 51: /* redirection: NUMBER LESS_AND '-' */
1775! #line 733 "/usr/local/src/chet/src/bash/src/parse.y"
1776 {
1777 source.dest = (yyvsp[-2].number);
1778***************
1779*** 2456,2464 ****
1780 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1781 }
1782! #line 2459 "y.tab.c"
1783 break;
1784
1785! case 51: /* redirection: REDIR_WORD LESS_AND '-' */
1786! #line 724 "/usr/local/src/chet/src/bash/src/parse.y"
1787 {
1788 source.filename = (yyvsp[-2].word);
1789--- 2475,2483 ----
1790 (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
1791 }
1792! #line 2478 "y.tab.c"
1793 break;
1794
1795! case 52: /* redirection: REDIR_WORD LESS_AND '-' */
1796! #line 739 "/usr/local/src/chet/src/bash/src/parse.y"
1797 {
1798 source.filename = (yyvsp[-2].word);
1799***************
1800*** 2466,2474 ****
1801 (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
1802 }
1803! #line 2469 "y.tab.c"
1804 break;
1805
1806! case 52: /* redirection: AND_GREATER WORD */
1807! #line 730 "/usr/local/src/chet/src/bash/src/parse.y"
1808 {
1809 source.dest = 1;
1810--- 2485,2493 ----
1811 (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
1812 }
1813! #line 2488 "y.tab.c"
1814 break;
1815
1816! case 53: /* redirection: AND_GREATER WORD */
1817! #line 745 "/usr/local/src/chet/src/bash/src/parse.y"
1818 {
1819 source.dest = 1;
1820***************
1821*** 2476,2484 ****
1822 (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
1823 }
1824! #line 2479 "y.tab.c"
1825 break;
1826
1827! case 53: /* redirection: AND_GREATER_GREATER WORD */
1828! #line 736 "/usr/local/src/chet/src/bash/src/parse.y"
1829 {
1830 source.dest = 1;
1831--- 2495,2503 ----
1832 (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
1833 }
1834! #line 2498 "y.tab.c"
1835 break;
1836
1837! case 54: /* redirection: AND_GREATER_GREATER WORD */
1838! #line 751 "/usr/local/src/chet/src/bash/src/parse.y"
1839 {
1840 source.dest = 1;
1841***************
1842*** 2486,2520 ****
1843 (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
1844 }
1845! #line 2489 "y.tab.c"
1846 break;
1847
1848! case 54: /* simple_command_element: WORD */
1849! #line 744 "/usr/local/src/chet/src/bash/src/parse.y"
1850 { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
1851! #line 2495 "y.tab.c"
1852 break;
1853
1854! case 55: /* simple_command_element: ASSIGNMENT_WORD */
1855! #line 746 "/usr/local/src/chet/src/bash/src/parse.y"
1856 { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
1857! #line 2501 "y.tab.c"
1858 break;
1859
1860! case 56: /* simple_command_element: redirection */
1861! #line 748 "/usr/local/src/chet/src/bash/src/parse.y"
1862 { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
1863! #line 2507 "y.tab.c"
1864 break;
1865
1866! case 57: /* redirection_list: redirection */
1867! #line 752 "/usr/local/src/chet/src/bash/src/parse.y"
1868 {
1869 (yyval.redirect) = (yyvsp[0].redirect);
1870 }
1871! #line 2515 "y.tab.c"
1872 break;
1873
1874! case 58: /* redirection_list: redirection_list redirection */
1875! #line 756 "/usr/local/src/chet/src/bash/src/parse.y"
1876 {
1877 register REDIRECT *t;
1878--- 2505,2539 ----
1879 (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
1880 }
1881! #line 2508 "y.tab.c"
1882 break;
1883
1884! case 55: /* simple_command_element: WORD */
1885! #line 759 "/usr/local/src/chet/src/bash/src/parse.y"
1886 { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
1887! #line 2514 "y.tab.c"
1888 break;
1889
1890! case 56: /* simple_command_element: ASSIGNMENT_WORD */
1891! #line 761 "/usr/local/src/chet/src/bash/src/parse.y"
1892 { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
1893! #line 2520 "y.tab.c"
1894 break;
1895
1896! case 57: /* simple_command_element: redirection */
1897! #line 763 "/usr/local/src/chet/src/bash/src/parse.y"
1898 { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
1899! #line 2526 "y.tab.c"
1900 break;
1901
1902! case 58: /* redirection_list: redirection */
1903! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
1904 {
1905 (yyval.redirect) = (yyvsp[0].redirect);
1906 }
1907! #line 2534 "y.tab.c"
1908 break;
1909
1910! case 59: /* redirection_list: redirection_list redirection */
1911! #line 771 "/usr/local/src/chet/src/bash/src/parse.y"
1912 {
1913 register REDIRECT *t;
1914***************
1915*** 2525,2557 ****
1916 (yyval.redirect) = (yyvsp[-1].redirect);
1917 }
1918! #line 2528 "y.tab.c"
1919 break;
1920
1921! case 59: /* simple_command: simple_command_element */
1922! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
1923 { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
1924! #line 2534 "y.tab.c"
1925 break;
1926
1927! case 60: /* simple_command: simple_command simple_command_element */
1928! #line 769 "/usr/local/src/chet/src/bash/src/parse.y"
1929 { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
1930! #line 2540 "y.tab.c"
1931 break;
1932
1933! case 61: /* command: simple_command */
1934! #line 773 "/usr/local/src/chet/src/bash/src/parse.y"
1935 { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
1936! #line 2546 "y.tab.c"
1937 break;
1938
1939! case 62: /* command: shell_command */
1940! #line 775 "/usr/local/src/chet/src/bash/src/parse.y"
1941 { (yyval.command) = (yyvsp[0].command); }
1942! #line 2552 "y.tab.c"
1943 break;
1944
1945! case 63: /* command: shell_command redirection_list */
1946! #line 777 "/usr/local/src/chet/src/bash/src/parse.y"
1947 {
1948 COMMAND *tc;
1949--- 2544,2576 ----
1950 (yyval.redirect) = (yyvsp[-1].redirect);
1951 }
1952! #line 2547 "y.tab.c"
1953 break;
1954
1955! case 60: /* simple_command: simple_command_element */
1956! #line 782 "/usr/local/src/chet/src/bash/src/parse.y"
1957 { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
1958! #line 2553 "y.tab.c"
1959 break;
1960
1961! case 61: /* simple_command: simple_command simple_command_element */
1962! #line 784 "/usr/local/src/chet/src/bash/src/parse.y"
1963 { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
1964! #line 2559 "y.tab.c"
1965 break;
1966
1967! case 62: /* command: simple_command */
1968! #line 788 "/usr/local/src/chet/src/bash/src/parse.y"
1969 { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
1970! #line 2565 "y.tab.c"
1971 break;
1972
1973! case 63: /* command: shell_command */
1974! #line 790 "/usr/local/src/chet/src/bash/src/parse.y"
1975 { (yyval.command) = (yyvsp[0].command); }
1976! #line 2571 "y.tab.c"
1977 break;
1978
1979! case 64: /* command: shell_command redirection_list */
1980! #line 792 "/usr/local/src/chet/src/bash/src/parse.y"
1981 {
1982 COMMAND *tc;
1983***************
1984*** 2569,2727 ****
1985 (yyval.command) = (yyvsp[-1].command);
1986 }
1987! #line 2572 "y.tab.c"
1988 break;
1989
1990! case 64: /* command: function_def */
1991! #line 793 "/usr/local/src/chet/src/bash/src/parse.y"
1992 { (yyval.command) = (yyvsp[0].command); }
1993! #line 2578 "y.tab.c"
1994 break;
1995
1996! case 65: /* command: coproc */
1997! #line 795 "/usr/local/src/chet/src/bash/src/parse.y"
1998 { (yyval.command) = (yyvsp[0].command); }
1999! #line 2584 "y.tab.c"
2000 break;
2001
2002! case 66: /* shell_command: for_command */
2003! #line 799 "/usr/local/src/chet/src/bash/src/parse.y"
2004 { (yyval.command) = (yyvsp[0].command); }
2005! #line 2590 "y.tab.c"
2006 break;
2007
2008! case 67: /* shell_command: case_command */
2009! #line 801 "/usr/local/src/chet/src/bash/src/parse.y"
2010 { (yyval.command) = (yyvsp[0].command); }
2011! #line 2596 "y.tab.c"
2012 break;
2013
2014! case 68: /* shell_command: WHILE compound_list DO compound_list DONE */
2015! #line 803 "/usr/local/src/chet/src/bash/src/parse.y"
2016 { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
2017! #line 2602 "y.tab.c"
2018 break;
2019
2020! case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */
2021! #line 805 "/usr/local/src/chet/src/bash/src/parse.y"
2022 { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
2023! #line 2608 "y.tab.c"
2024 break;
2025
2026! case 70: /* shell_command: select_command */
2027! #line 807 "/usr/local/src/chet/src/bash/src/parse.y"
2028 { (yyval.command) = (yyvsp[0].command); }
2029! #line 2614 "y.tab.c"
2030 break;
2031
2032! case 71: /* shell_command: if_command */
2033! #line 809 "/usr/local/src/chet/src/bash/src/parse.y"
2034 { (yyval.command) = (yyvsp[0].command); }
2035! #line 2620 "y.tab.c"
2036 break;
2037
2038! case 72: /* shell_command: subshell */
2039! #line 811 "/usr/local/src/chet/src/bash/src/parse.y"
2040 { (yyval.command) = (yyvsp[0].command); }
2041! #line 2626 "y.tab.c"
2042 break;
2043
2044! case 73: /* shell_command: group_command */
2045! #line 813 "/usr/local/src/chet/src/bash/src/parse.y"
2046 { (yyval.command) = (yyvsp[0].command); }
2047! #line 2632 "y.tab.c"
2048 break;
2049
2050! case 74: /* shell_command: arith_command */
2051! #line 815 "/usr/local/src/chet/src/bash/src/parse.y"
2052 { (yyval.command) = (yyvsp[0].command); }
2053! #line 2638 "y.tab.c"
2054 break;
2055
2056! case 75: /* shell_command: cond_command */
2057! #line 817 "/usr/local/src/chet/src/bash/src/parse.y"
2058 { (yyval.command) = (yyvsp[0].command); }
2059! #line 2644 "y.tab.c"
2060 break;
2061
2062! case 76: /* shell_command: arith_for_command */
2063! #line 819 "/usr/local/src/chet/src/bash/src/parse.y"
2064 { (yyval.command) = (yyvsp[0].command); }
2065! #line 2650 "y.tab.c"
2066 break;
2067
2068! case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */
2069! #line 823 "/usr/local/src/chet/src/bash/src/parse.y"
2070 {
2071 (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2072 if (word_top > 0) word_top--;
2073 }
2074! #line 2659 "y.tab.c"
2075 break;
2076
2077! case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */
2078! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
2079 {
2080 (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2081 if (word_top > 0) word_top--;
2082 }
2083! #line 2668 "y.tab.c"
2084 break;
2085
2086! case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */
2087! #line 833 "/usr/local/src/chet/src/bash/src/parse.y"
2088 {
2089 (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2090 if (word_top > 0) word_top--;
2091 }
2092! #line 2677 "y.tab.c"
2093 break;
2094
2095! case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */
2096! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
2097 {
2098 (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2099 if (word_top > 0) word_top--;
2100 }
2101! #line 2686 "y.tab.c"
2102 break;
2103
2104! case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
2105! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
2106 {
2107 (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2108 if (word_top > 0) word_top--;
2109 }
2110! #line 2695 "y.tab.c"
2111 break;
2112
2113! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
2114! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
2115 {
2116 (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2117 if (word_top > 0) word_top--;
2118 }
2119! #line 2704 "y.tab.c"
2120 break;
2121
2122! case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */
2123! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
2124 {
2125 (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2126 if (word_top > 0) word_top--;
2127 }
2128! #line 2713 "y.tab.c"
2129 break;
2130
2131! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
2132! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
2133 {
2134 (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2135 if (word_top > 0) word_top--;
2136 }
2137! #line 2722 "y.tab.c"
2138 break;
2139
2140! case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */
2141! #line 865 "/usr/local/src/chet/src/bash/src/parse.y"
2142 {
2143 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
2144--- 2588,2746 ----
2145 (yyval.command) = (yyvsp[-1].command);
2146 }
2147! #line 2591 "y.tab.c"
2148 break;
2149
2150! case 65: /* command: function_def */
2151! #line 808 "/usr/local/src/chet/src/bash/src/parse.y"
2152 { (yyval.command) = (yyvsp[0].command); }
2153! #line 2597 "y.tab.c"
2154 break;
2155
2156! case 66: /* command: coproc */
2157! #line 810 "/usr/local/src/chet/src/bash/src/parse.y"
2158 { (yyval.command) = (yyvsp[0].command); }
2159! #line 2603 "y.tab.c"
2160 break;
2161
2162! case 67: /* shell_command: for_command */
2163! #line 814 "/usr/local/src/chet/src/bash/src/parse.y"
2164 { (yyval.command) = (yyvsp[0].command); }
2165! #line 2609 "y.tab.c"
2166 break;
2167
2168! case 68: /* shell_command: case_command */
2169! #line 816 "/usr/local/src/chet/src/bash/src/parse.y"
2170 { (yyval.command) = (yyvsp[0].command); }
2171! #line 2615 "y.tab.c"
2172 break;
2173
2174! case 69: /* shell_command: WHILE compound_list DO compound_list DONE */
2175! #line 818 "/usr/local/src/chet/src/bash/src/parse.y"
2176 { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
2177! #line 2621 "y.tab.c"
2178 break;
2179
2180! case 70: /* shell_command: UNTIL compound_list DO compound_list DONE */
2181! #line 820 "/usr/local/src/chet/src/bash/src/parse.y"
2182 { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
2183! #line 2627 "y.tab.c"
2184 break;
2185
2186! case 71: /* shell_command: select_command */
2187! #line 822 "/usr/local/src/chet/src/bash/src/parse.y"
2188 { (yyval.command) = (yyvsp[0].command); }
2189! #line 2633 "y.tab.c"
2190 break;
2191
2192! case 72: /* shell_command: if_command */
2193! #line 824 "/usr/local/src/chet/src/bash/src/parse.y"
2194 { (yyval.command) = (yyvsp[0].command); }
2195! #line 2639 "y.tab.c"
2196 break;
2197
2198! case 73: /* shell_command: subshell */
2199! #line 826 "/usr/local/src/chet/src/bash/src/parse.y"
2200 { (yyval.command) = (yyvsp[0].command); }
2201! #line 2645 "y.tab.c"
2202 break;
2203
2204! case 74: /* shell_command: group_command */
2205! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
2206 { (yyval.command) = (yyvsp[0].command); }
2207! #line 2651 "y.tab.c"
2208 break;
2209
2210! case 75: /* shell_command: arith_command */
2211! #line 830 "/usr/local/src/chet/src/bash/src/parse.y"
2212 { (yyval.command) = (yyvsp[0].command); }
2213! #line 2657 "y.tab.c"
2214 break;
2215
2216! case 76: /* shell_command: cond_command */
2217! #line 832 "/usr/local/src/chet/src/bash/src/parse.y"
2218 { (yyval.command) = (yyvsp[0].command); }
2219! #line 2663 "y.tab.c"
2220 break;
2221
2222! case 77: /* shell_command: arith_for_command */
2223! #line 834 "/usr/local/src/chet/src/bash/src/parse.y"
2224 { (yyval.command) = (yyvsp[0].command); }
2225! #line 2669 "y.tab.c"
2226 break;
2227
2228! case 78: /* for_command: FOR WORD newline_list DO compound_list DONE */
2229! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
2230 {
2231 (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2232 if (word_top > 0) word_top--;
2233 }
2234! #line 2678 "y.tab.c"
2235 break;
2236
2237! case 79: /* for_command: FOR WORD newline_list '{' compound_list '}' */
2238! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
2239 {
2240 (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2241 if (word_top > 0) word_top--;
2242 }
2243! #line 2687 "y.tab.c"
2244 break;
2245
2246! case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */
2247! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
2248 {
2249 (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2250 if (word_top > 0) word_top--;
2251 }
2252! #line 2696 "y.tab.c"
2253 break;
2254
2255! case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */
2256! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
2257 {
2258 (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2259 if (word_top > 0) word_top--;
2260 }
2261! #line 2705 "y.tab.c"
2262 break;
2263
2264! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
2265! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
2266 {
2267 (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2268 if (word_top > 0) word_top--;
2269 }
2270! #line 2714 "y.tab.c"
2271 break;
2272
2273! case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
2274! #line 863 "/usr/local/src/chet/src/bash/src/parse.y"
2275 {
2276 (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2277 if (word_top > 0) word_top--;
2278 }
2279! #line 2723 "y.tab.c"
2280 break;
2281
2282! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */
2283! #line 868 "/usr/local/src/chet/src/bash/src/parse.y"
2284 {
2285 (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2286 if (word_top > 0) word_top--;
2287 }
2288! #line 2732 "y.tab.c"
2289 break;
2290
2291! case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
2292! #line 873 "/usr/local/src/chet/src/bash/src/parse.y"
2293 {
2294 (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2295 if (word_top > 0) word_top--;
2296 }
2297! #line 2741 "y.tab.c"
2298 break;
2299
2300! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */
2301! #line 880 "/usr/local/src/chet/src/bash/src/parse.y"
2302 {
2303 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
2304***************
2305*** 2729,2737 ****
2306 if (word_top > 0) word_top--;
2307 }
2308! #line 2732 "y.tab.c"
2309 break;
2310
2311! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */
2312! #line 871 "/usr/local/src/chet/src/bash/src/parse.y"
2313 {
2314 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
2315--- 2748,2756 ----
2316 if (word_top > 0) word_top--;
2317 }
2318! #line 2751 "y.tab.c"
2319 break;
2320
2321! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */
2322! #line 886 "/usr/local/src/chet/src/bash/src/parse.y"
2323 {
2324 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
2325***************
2326*** 2739,2747 ****
2327 if (word_top > 0) word_top--;
2328 }
2329! #line 2742 "y.tab.c"
2330 break;
2331
2332! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */
2333! #line 877 "/usr/local/src/chet/src/bash/src/parse.y"
2334 {
2335 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
2336--- 2758,2766 ----
2337 if (word_top > 0) word_top--;
2338 }
2339! #line 2761 "y.tab.c"
2340 break;
2341
2342! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */
2343! #line 892 "/usr/local/src/chet/src/bash/src/parse.y"
2344 {
2345 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
2346***************
2347*** 2749,2757 ****
2348 if (word_top > 0) word_top--;
2349 }
2350! #line 2752 "y.tab.c"
2351 break;
2352
2353! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */
2354! #line 883 "/usr/local/src/chet/src/bash/src/parse.y"
2355 {
2356 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
2357--- 2768,2776 ----
2358 if (word_top > 0) word_top--;
2359 }
2360! #line 2771 "y.tab.c"
2361 break;
2362
2363! case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */
2364! #line 898 "/usr/local/src/chet/src/bash/src/parse.y"
2365 {
2366 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
2367***************
2368*** 2759,2896 ****
2369 if (word_top > 0) word_top--;
2370 }
2371! #line 2762 "y.tab.c"
2372 break;
2373
2374! case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */
2375! #line 891 "/usr/local/src/chet/src/bash/src/parse.y"
2376 {
2377 (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2378 if (word_top > 0) word_top--;
2379 }
2380! #line 2771 "y.tab.c"
2381 break;
2382
2383! case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */
2384! #line 896 "/usr/local/src/chet/src/bash/src/parse.y"
2385 {
2386 (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2387 if (word_top > 0) word_top--;
2388 }
2389! #line 2780 "y.tab.c"
2390 break;
2391
2392! case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */
2393! #line 901 "/usr/local/src/chet/src/bash/src/parse.y"
2394 {
2395 (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2396 if (word_top > 0) word_top--;
2397 }
2398! #line 2789 "y.tab.c"
2399 break;
2400
2401! case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */
2402! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
2403 {
2404 (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2405 if (word_top > 0) word_top--;
2406 }
2407! #line 2798 "y.tab.c"
2408 break;
2409
2410! case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
2411! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
2412 {
2413 (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2414 if (word_top > 0) word_top--;
2415 }
2416! #line 2807 "y.tab.c"
2417 break;
2418
2419! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
2420! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
2421 {
2422 (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2423 if (word_top > 0) word_top--;
2424 }
2425! #line 2816 "y.tab.c"
2426 break;
2427
2428! case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */
2429! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
2430 {
2431 (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2432 if (word_top > 0) word_top--;
2433 }
2434! #line 2825 "y.tab.c"
2435 break;
2436
2437! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
2438! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
2439 {
2440 (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2441 if (word_top > 0) word_top--;
2442 }
2443! #line 2834 "y.tab.c"
2444 break;
2445
2446! case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */
2447! #line 933 "/usr/local/src/chet/src/bash/src/parse.y"
2448 {
2449 (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
2450 if (word_top > 0) word_top--;
2451 }
2452! #line 2843 "y.tab.c"
2453 break;
2454
2455! case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */
2456! #line 938 "/usr/local/src/chet/src/bash/src/parse.y"
2457 {
2458 (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
2459 if (word_top > 0) word_top--;
2460 }
2461! #line 2852 "y.tab.c"
2462 break;
2463
2464! case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */
2465! #line 943 "/usr/local/src/chet/src/bash/src/parse.y"
2466 {
2467 (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
2468 if (word_top > 0) word_top--;
2469 }
2470! #line 2861 "y.tab.c"
2471 break;
2472
2473! case 100: /* function_def: WORD '(' ')' newline_list function_body */
2474! #line 950 "/usr/local/src/chet/src/bash/src/parse.y"
2475 { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
2476! #line 2867 "y.tab.c"
2477 break;
2478
2479! case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */
2480! #line 952 "/usr/local/src/chet/src/bash/src/parse.y"
2481 { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
2482! #line 2873 "y.tab.c"
2483 break;
2484
2485! case 102: /* function_def: FUNCTION WORD function_body */
2486! #line 954 "/usr/local/src/chet/src/bash/src/parse.y"
2487 { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
2488! #line 2879 "y.tab.c"
2489 break;
2490
2491! case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */
2492! #line 956 "/usr/local/src/chet/src/bash/src/parse.y"
2493 { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
2494! #line 2885 "y.tab.c"
2495 break;
2496
2497! case 104: /* function_body: shell_command */
2498! #line 960 "/usr/local/src/chet/src/bash/src/parse.y"
2499 { (yyval.command) = (yyvsp[0].command); }
2500! #line 2891 "y.tab.c"
2501 break;
2502
2503! case 105: /* function_body: shell_command redirection_list */
2504! #line 962 "/usr/local/src/chet/src/bash/src/parse.y"
2505 {
2506 COMMAND *tc;
2507--- 2778,2915 ----
2508 if (word_top > 0) word_top--;
2509 }
2510! #line 2781 "y.tab.c"
2511 break;
2512
2513! case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE */
2514! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
2515 {
2516 (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2517 if (word_top > 0) word_top--;
2518 }
2519! #line 2790 "y.tab.c"
2520 break;
2521
2522! case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}' */
2523! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
2524 {
2525 (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2526 if (word_top > 0) word_top--;
2527 }
2528! #line 2799 "y.tab.c"
2529 break;
2530
2531! case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */
2532! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
2533 {
2534 (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2535 if (word_top > 0) word_top--;
2536 }
2537! #line 2808 "y.tab.c"
2538 break;
2539
2540! case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */
2541! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
2542 {
2543 (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
2544 if (word_top > 0) word_top--;
2545 }
2546! #line 2817 "y.tab.c"
2547 break;
2548
2549! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
2550! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
2551 {
2552 (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2553 if (word_top > 0) word_top--;
2554 }
2555! #line 2826 "y.tab.c"
2556 break;
2557
2558! case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
2559! #line 931 "/usr/local/src/chet/src/bash/src/parse.y"
2560 {
2561 (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
2562 if (word_top > 0) word_top--;
2563 }
2564! #line 2835 "y.tab.c"
2565 break;
2566
2567! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */
2568! #line 936 "/usr/local/src/chet/src/bash/src/parse.y"
2569 {
2570 (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2571 if (word_top > 0) word_top--;
2572 }
2573! #line 2844 "y.tab.c"
2574 break;
2575
2576! case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
2577! #line 941 "/usr/local/src/chet/src/bash/src/parse.y"
2578 {
2579 (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
2580 if (word_top > 0) word_top--;
2581 }
2582! #line 2853 "y.tab.c"
2583 break;
2584
2585! case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC */
2586! #line 948 "/usr/local/src/chet/src/bash/src/parse.y"
2587 {
2588 (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
2589 if (word_top > 0) word_top--;
2590 }
2591! #line 2862 "y.tab.c"
2592 break;
2593
2594! case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */
2595! #line 953 "/usr/local/src/chet/src/bash/src/parse.y"
2596 {
2597 (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
2598 if (word_top > 0) word_top--;
2599 }
2600! #line 2871 "y.tab.c"
2601 break;
2602
2603! case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC */
2604! #line 958 "/usr/local/src/chet/src/bash/src/parse.y"
2605 {
2606 (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
2607 if (word_top > 0) word_top--;
2608 }
2609! #line 2880 "y.tab.c"
2610 break;
2611
2612! case 101: /* function_def: WORD '(' ')' newline_list function_body */
2613! #line 965 "/usr/local/src/chet/src/bash/src/parse.y"
2614 { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
2615! #line 2886 "y.tab.c"
2616 break;
2617
2618! case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */
2619! #line 967 "/usr/local/src/chet/src/bash/src/parse.y"
2620 { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
2621! #line 2892 "y.tab.c"
2622 break;
2623
2624! case 103: /* function_def: FUNCTION WORD function_body */
2625! #line 969 "/usr/local/src/chet/src/bash/src/parse.y"
2626 { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
2627! #line 2898 "y.tab.c"
2628 break;
2629
2630! case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body */
2631! #line 971 "/usr/local/src/chet/src/bash/src/parse.y"
2632 { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
2633! #line 2904 "y.tab.c"
2634 break;
2635
2636! case 105: /* function_body: shell_command */
2637! #line 975 "/usr/local/src/chet/src/bash/src/parse.y"
2638 { (yyval.command) = (yyvsp[0].command); }
2639! #line 2910 "y.tab.c"
2640 break;
2641
2642! case 106: /* function_body: shell_command redirection_list */
2643! #line 977 "/usr/local/src/chet/src/bash/src/parse.y"
2644 {
2645 COMMAND *tc;
2646***************
2647*** 2921,2963 ****
2648 (yyval.command) = (yyvsp[-1].command);
2649 }
2650! #line 2924 "y.tab.c"
2651 break;
2652
2653! case 106: /* subshell: '(' compound_list ')' */
2654! #line 993 "/usr/local/src/chet/src/bash/src/parse.y"
2655 {
2656 (yyval.command) = make_subshell_command ((yyvsp[-1].command));
2657 (yyval.command)->flags |= CMD_WANT_SUBSHELL;
2658 }
2659! #line 2933 "y.tab.c"
2660 break;
2661
2662! case 107: /* comsub: DOLPAREN compound_list ')' */
2663! #line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
2664 {
2665 (yyval.command) = (yyvsp[-1].command);
2666 }
2667! #line 2941 "y.tab.c"
2668 break;
2669
2670! case 108: /* comsub: DOLPAREN newline_list ')' */
2671! #line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
2672 {
2673 (yyval.command) = (COMMAND *)NULL;
2674 }
2675! #line 2949 "y.tab.c"
2676 break;
2677
2678! case 109: /* coproc: COPROC shell_command */
2679! #line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
2680 {
2681 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
2682 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2683 }
2684! #line 2958 "y.tab.c"
2685 break;
2686
2687! case 110: /* coproc: COPROC shell_command redirection_list */
2688! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
2689 {
2690 COMMAND *tc;
2691--- 2940,2982 ----
2692 (yyval.command) = (yyvsp[-1].command);
2693 }
2694! #line 2943 "y.tab.c"
2695 break;
2696
2697! case 107: /* subshell: '(' compound_list ')' */
2698! #line 1008 "/usr/local/src/chet/src/bash/src/parse.y"
2699 {
2700 (yyval.command) = make_subshell_command ((yyvsp[-1].command));
2701 (yyval.command)->flags |= CMD_WANT_SUBSHELL;
2702 }
2703! #line 2952 "y.tab.c"
2704 break;
2705
2706! case 108: /* comsub: DOLPAREN compound_list ')' */
2707! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
2708 {
2709 (yyval.command) = (yyvsp[-1].command);
2710 }
2711! #line 2960 "y.tab.c"
2712 break;
2713
2714! case 109: /* comsub: DOLPAREN newline_list ')' */
2715! #line 1019 "/usr/local/src/chet/src/bash/src/parse.y"
2716 {
2717 (yyval.command) = (COMMAND *)NULL;
2718 }
2719! #line 2968 "y.tab.c"
2720 break;
2721
2722! case 110: /* coproc: COPROC shell_command */
2723! #line 1025 "/usr/local/src/chet/src/bash/src/parse.y"
2724 {
2725 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
2726 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2727 }
2728! #line 2977 "y.tab.c"
2729 break;
2730
2731! case 111: /* coproc: COPROC shell_command redirection_list */
2732! #line 1030 "/usr/local/src/chet/src/bash/src/parse.y"
2733 {
2734 COMMAND *tc;
2735***************
2736*** 2976,2993 ****
2737 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2738 }
2739! #line 2979 "y.tab.c"
2740 break;
2741
2742! case 111: /* coproc: COPROC WORD shell_command */
2743! #line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
2744 {
2745 (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
2746 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2747 }
2748! #line 2988 "y.tab.c"
2749 break;
2750
2751! case 112: /* coproc: COPROC WORD shell_command redirection_list */
2752! #line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
2753 {
2754 COMMAND *tc;
2755--- 2995,3012 ----
2756 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2757 }
2758! #line 2998 "y.tab.c"
2759 break;
2760
2761! case 112: /* coproc: COPROC WORD shell_command */
2762! #line 1047 "/usr/local/src/chet/src/bash/src/parse.y"
2763 {
2764 (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
2765 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2766 }
2767! #line 3007 "y.tab.c"
2768 break;
2769
2770! case 113: /* coproc: COPROC WORD shell_command redirection_list */
2771! #line 1052 "/usr/local/src/chet/src/bash/src/parse.y"
2772 {
2773 COMMAND *tc;
2774***************
2775*** 3006,3155 ****
2776 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2777 }
2778! #line 3009 "y.tab.c"
2779 break;
2780
2781! case 113: /* coproc: COPROC simple_command */
2782! #line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
2783 {
2784 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
2785 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2786 }
2787! #line 3018 "y.tab.c"
2788 break;
2789
2790! case 114: /* if_command: IF compound_list THEN compound_list FI */
2791! #line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
2792 { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
2793! #line 3024 "y.tab.c"
2794 break;
2795
2796! case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */
2797! #line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
2798 { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
2799! #line 3030 "y.tab.c"
2800 break;
2801
2802! case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */
2803! #line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
2804 { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
2805! #line 3036 "y.tab.c"
2806 break;
2807
2808! case 117: /* group_command: '{' compound_list '}' */
2809! #line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
2810 { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
2811! #line 3042 "y.tab.c"
2812 break;
2813
2814! case 118: /* arith_command: ARITH_CMD */
2815! #line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
2816 { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
2817! #line 3048 "y.tab.c"
2818 break;
2819
2820! case 119: /* cond_command: COND_START COND_CMD COND_END */
2821! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
2822 { (yyval.command) = (yyvsp[-1].command); }
2823! #line 3054 "y.tab.c"
2824 break;
2825
2826! case 120: /* elif_clause: ELIF compound_list THEN compound_list */
2827! #line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
2828 { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
2829! #line 3060 "y.tab.c"
2830 break;
2831
2832! case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */
2833! #line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
2834 { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
2835! #line 3066 "y.tab.c"
2836 break;
2837
2838! case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */
2839! #line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
2840 { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
2841! #line 3072 "y.tab.c"
2842 break;
2843
2844! case 124: /* case_clause: case_clause_sequence pattern_list */
2845! #line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
2846 { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
2847! #line 3078 "y.tab.c"
2848 break;
2849
2850! case 125: /* pattern_list: newline_list pattern ')' compound_list */
2851! #line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
2852 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
2853! #line 3084 "y.tab.c"
2854 break;
2855
2856! case 126: /* pattern_list: newline_list pattern ')' newline_list */
2857! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
2858 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
2859! #line 3090 "y.tab.c"
2860 break;
2861
2862! case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */
2863! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
2864 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
2865! #line 3096 "y.tab.c"
2866 break;
2867
2868! case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */
2869! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
2870 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
2871! #line 3102 "y.tab.c"
2872 break;
2873
2874! case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */
2875! #line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
2876 { (yyval.pattern) = (yyvsp[-1].pattern); }
2877! #line 3108 "y.tab.c"
2878 break;
2879
2880! case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */
2881! #line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
2882 { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
2883! #line 3114 "y.tab.c"
2884 break;
2885
2886! case 131: /* case_clause_sequence: pattern_list SEMI_AND */
2887! #line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
2888 { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
2889! #line 3120 "y.tab.c"
2890 break;
2891
2892! case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */
2893! #line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
2894 { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
2895! #line 3126 "y.tab.c"
2896 break;
2897
2898! case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */
2899! #line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
2900 { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
2901! #line 3132 "y.tab.c"
2902 break;
2903
2904! case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */
2905! #line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
2906 { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
2907! #line 3138 "y.tab.c"
2908 break;
2909
2910! case 135: /* pattern: WORD */
2911! #line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
2912 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
2913! #line 3144 "y.tab.c"
2914 break;
2915
2916! case 136: /* pattern: pattern '|' WORD */
2917! #line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
2918 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
2919! #line 3150 "y.tab.c"
2920 break;
2921
2922! case 137: /* compound_list: newline_list list0 */
2923! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
2924 {
2925 (yyval.command) = (yyvsp[0].command);
2926--- 3025,3174 ----
2927 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2928 }
2929! #line 3028 "y.tab.c"
2930 break;
2931
2932! case 114: /* coproc: COPROC simple_command */
2933! #line 1069 "/usr/local/src/chet/src/bash/src/parse.y"
2934 {
2935 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
2936 (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
2937 }
2938! #line 3037 "y.tab.c"
2939 break;
2940
2941! case 115: /* if_command: IF compound_list THEN compound_list FI */
2942! #line 1076 "/usr/local/src/chet/src/bash/src/parse.y"
2943 { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
2944! #line 3043 "y.tab.c"
2945 break;
2946
2947! case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */
2948! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
2949 { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
2950! #line 3049 "y.tab.c"
2951 break;
2952
2953! case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI */
2954! #line 1080 "/usr/local/src/chet/src/bash/src/parse.y"
2955 { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
2956! #line 3055 "y.tab.c"
2957 break;
2958
2959! case 118: /* group_command: '{' compound_list '}' */
2960! #line 1085 "/usr/local/src/chet/src/bash/src/parse.y"
2961 { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
2962! #line 3061 "y.tab.c"
2963 break;
2964
2965! case 119: /* arith_command: ARITH_CMD */
2966! #line 1089 "/usr/local/src/chet/src/bash/src/parse.y"
2967 { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
2968! #line 3067 "y.tab.c"
2969 break;
2970
2971! case 120: /* cond_command: COND_START COND_CMD COND_END */
2972! #line 1093 "/usr/local/src/chet/src/bash/src/parse.y"
2973 { (yyval.command) = (yyvsp[-1].command); }
2974! #line 3073 "y.tab.c"
2975 break;
2976
2977! case 121: /* elif_clause: ELIF compound_list THEN compound_list */
2978! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
2979 { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
2980! #line 3079 "y.tab.c"
2981 break;
2982
2983! case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */
2984! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
2985 { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
2986! #line 3085 "y.tab.c"
2987 break;
2988
2989! case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */
2990! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
2991 { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
2992! #line 3091 "y.tab.c"
2993 break;
2994
2995! case 125: /* case_clause: case_clause_sequence pattern_list */
2996! #line 1106 "/usr/local/src/chet/src/bash/src/parse.y"
2997 { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
2998! #line 3097 "y.tab.c"
2999 break;
3000
3001! case 126: /* pattern_list: newline_list pattern ')' compound_list */
3002! #line 1110 "/usr/local/src/chet/src/bash/src/parse.y"
3003 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
3004! #line 3103 "y.tab.c"
3005 break;
3006
3007! case 127: /* pattern_list: newline_list pattern ')' newline_list */
3008! #line 1112 "/usr/local/src/chet/src/bash/src/parse.y"
3009 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
3010! #line 3109 "y.tab.c"
3011 break;
3012
3013! case 128: /* pattern_list: newline_list '(' pattern ')' compound_list */
3014! #line 1114 "/usr/local/src/chet/src/bash/src/parse.y"
3015 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
3016! #line 3115 "y.tab.c"
3017 break;
3018
3019! case 129: /* pattern_list: newline_list '(' pattern ')' newline_list */
3020! #line 1116 "/usr/local/src/chet/src/bash/src/parse.y"
3021 { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
3022! #line 3121 "y.tab.c"
3023 break;
3024
3025! case 130: /* case_clause_sequence: pattern_list SEMI_SEMI */
3026! #line 1120 "/usr/local/src/chet/src/bash/src/parse.y"
3027 { (yyval.pattern) = (yyvsp[-1].pattern); }
3028! #line 3127 "y.tab.c"
3029 break;
3030
3031! case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */
3032! #line 1122 "/usr/local/src/chet/src/bash/src/parse.y"
3033 { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
3034! #line 3133 "y.tab.c"
3035 break;
3036
3037! case 132: /* case_clause_sequence: pattern_list SEMI_AND */
3038! #line 1124 "/usr/local/src/chet/src/bash/src/parse.y"
3039 { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
3040! #line 3139 "y.tab.c"
3041 break;
3042
3043! case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */
3044! #line 1126 "/usr/local/src/chet/src/bash/src/parse.y"
3045 { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
3046! #line 3145 "y.tab.c"
3047 break;
3048
3049! case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */
3050! #line 1128 "/usr/local/src/chet/src/bash/src/parse.y"
3051 { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
3052! #line 3151 "y.tab.c"
3053 break;
3054
3055! case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */
3056! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
3057 { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
3058! #line 3157 "y.tab.c"
3059 break;
3060
3061! case 136: /* pattern: WORD */
3062! #line 1134 "/usr/local/src/chet/src/bash/src/parse.y"
3063 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
3064! #line 3163 "y.tab.c"
3065 break;
3066
3067! case 137: /* pattern: pattern '|' WORD */
3068! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
3069 { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
3070! #line 3169 "y.tab.c"
3071 break;
3072
3073! case 138: /* compound_list: newline_list list0 */
3074! #line 1145 "/usr/local/src/chet/src/bash/src/parse.y"
3075 {
3076 (yyval.command) = (yyvsp[0].command);
3077***************
3078*** 3157,3173 ****
3079 gather_here_documents ();
3080 }
3081! #line 3160 "y.tab.c"
3082 break;
3083
3084! case 138: /* compound_list: newline_list list1 */
3085! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
3086 {
3087 (yyval.command) = (yyvsp[0].command);
3088 }
3089! #line 3168 "y.tab.c"
3090 break;
3091
3092! case 140: /* list0: list1 '&' newline_list */
3093! #line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
3094 {
3095 if ((yyvsp[-2].command)->type == cm_connection)
3096--- 3176,3192 ----
3097 gather_here_documents ();
3098 }
3099! #line 3179 "y.tab.c"
3100 break;
3101
3102! case 139: /* compound_list: newline_list list1 */
3103! #line 1151 "/usr/local/src/chet/src/bash/src/parse.y"
3104 {
3105 (yyval.command) = (yyvsp[0].command);
3106 }
3107! #line 3187 "y.tab.c"
3108 break;
3109
3110! case 141: /* list0: list1 '&' newline_list */
3111! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
3112 {
3113 if ((yyvsp[-2].command)->type == cm_connection)
3114***************
3115*** 3176,3196 ****
3116 (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
3117 }
3118! #line 3179 "y.tab.c"
3119 break;
3120
3121! case 142: /* list1: list1 AND_AND newline_list list1 */
3122! #line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
3123 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
3124! #line 3185 "y.tab.c"
3125 break;
3126
3127! case 143: /* list1: list1 OR_OR newline_list list1 */
3128! #line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
3129 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
3130! #line 3191 "y.tab.c"
3131 break;
3132
3133! case 144: /* list1: list1 '&' newline_list list1 */
3134! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
3135 {
3136 if ((yyvsp[-3].command)->type == cm_connection)
3137--- 3195,3215 ----
3138 (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
3139 }
3140! #line 3198 "y.tab.c"
3141 break;
3142
3143! case 143: /* list1: list1 AND_AND newline_list list1 */
3144! #line 1169 "/usr/local/src/chet/src/bash/src/parse.y"
3145 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
3146! #line 3204 "y.tab.c"
3147 break;
3148
3149! case 144: /* list1: list1 OR_OR newline_list list1 */
3150! #line 1171 "/usr/local/src/chet/src/bash/src/parse.y"
3151 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
3152! #line 3210 "y.tab.c"
3153 break;
3154
3155! case 145: /* list1: list1 '&' newline_list list1 */
3156! #line 1173 "/usr/local/src/chet/src/bash/src/parse.y"
3157 {
3158 if ((yyvsp[-3].command)->type == cm_connection)
3159***************
3160*** 3199,3213 ****
3161 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
3162 }
3163! #line 3202 "y.tab.c"
3164 break;
3165
3166! case 145: /* list1: list1 ';' newline_list list1 */
3167! #line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
3168 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
3169! #line 3208 "y.tab.c"
3170 break;
3171
3172! case 146: /* list1: list1 '\n' newline_list list1 */
3173! #line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
3174 {
3175 if (parser_state & PST_CMDSUBST)
3176--- 3218,3232 ----
3177 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
3178 }
3179! #line 3221 "y.tab.c"
3180 break;
3181
3182! case 146: /* list1: list1 ';' newline_list list1 */
3183! #line 1180 "/usr/local/src/chet/src/bash/src/parse.y"
3184 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
3185! #line 3227 "y.tab.c"
3186 break;
3187
3188! case 147: /* list1: list1 '\n' newline_list list1 */
3189! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
3190 {
3191 if (parser_state & PST_CMDSUBST)
3192***************
3193*** 3216,3248 ****
3194 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
3195 }
3196! #line 3219 "y.tab.c"
3197 break;
3198
3199! case 147: /* list1: pipeline_command */
3200! #line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
3201 { (yyval.command) = (yyvsp[0].command); }
3202! #line 3225 "y.tab.c"
3203 break;
3204
3205! case 150: /* list_terminator: '\n' */
3206! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
3207 { (yyval.number) = '\n'; }
3208! #line 3231 "y.tab.c"
3209 break;
3210
3211! case 151: /* list_terminator: ';' */
3212! #line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
3213 { (yyval.number) = ';'; }
3214! #line 3237 "y.tab.c"
3215 break;
3216
3217! case 152: /* list_terminator: yacc_EOF */
3218! #line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
3219 { (yyval.number) = yacc_EOF; }
3220! #line 3243 "y.tab.c"
3221 break;
3222
3223! case 155: /* simple_list: simple_list1 */
3224! #line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
3225 {
3226 (yyval.command) = (yyvsp[0].command);
3227--- 3235,3267 ----
3228 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
3229 }
3230! #line 3238 "y.tab.c"
3231 break;
3232
3233! case 148: /* list1: pipeline_command */
3234! #line 1189 "/usr/local/src/chet/src/bash/src/parse.y"
3235 { (yyval.command) = (yyvsp[0].command); }
3236! #line 3244 "y.tab.c"
3237 break;
3238
3239! case 151: /* list_terminator: '\n' */
3240! #line 1197 "/usr/local/src/chet/src/bash/src/parse.y"
3241 { (yyval.number) = '\n'; }
3242! #line 3250 "y.tab.c"
3243 break;
3244
3245! case 152: /* list_terminator: ';' */
3246! #line 1199 "/usr/local/src/chet/src/bash/src/parse.y"
3247 { (yyval.number) = ';'; }
3248! #line 3256 "y.tab.c"
3249 break;
3250
3251! case 153: /* list_terminator: yacc_EOF */
3252! #line 1201 "/usr/local/src/chet/src/bash/src/parse.y"
3253 { (yyval.number) = yacc_EOF; }
3254! #line 3262 "y.tab.c"
3255 break;
3256
3257! case 156: /* simple_list: simple_list1 */
3258! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
3259 {
3260 (yyval.command) = (yyvsp[0].command);
3261***************
3262*** 3259,3267 ****
3263 }
3264 }
3265! #line 3262 "y.tab.c"
3266 break;
3267
3268! case 156: /* simple_list: simple_list1 '&' */
3269! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
3270 {
3271 if ((yyvsp[-1].command)->type == cm_connection)
3272--- 3278,3286 ----
3273 }
3274 }
3275! #line 3281 "y.tab.c"
3276 break;
3277
3278! case 157: /* simple_list: simple_list1 '&' */
3279! #line 1230 "/usr/local/src/chet/src/bash/src/parse.y"
3280 {
3281 if ((yyvsp[-1].command)->type == cm_connection)
3282***************
3283*** 3281,3289 ****
3284 }
3285 }
3286! #line 3284 "y.tab.c"
3287 break;
3288
3289! case 157: /* simple_list: simple_list1 ';' */
3290! #line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
3291 {
3292 (yyval.command) = (yyvsp[-1].command);
3293--- 3300,3308 ----
3294 }
3295 }
3296! #line 3303 "y.tab.c"
3297 break;
3298
3299! case 158: /* simple_list: simple_list1 ';' */
3300! #line 1248 "/usr/local/src/chet/src/bash/src/parse.y"
3301 {
3302 (yyval.command) = (yyvsp[-1].command);
3303***************
3304*** 3300,3320 ****
3305 }
3306 }
3307! #line 3303 "y.tab.c"
3308 break;
3309
3310! case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */
3311! #line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
3312 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
3313! #line 3309 "y.tab.c"
3314 break;
3315
3316! case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */
3317! #line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
3318 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
3319! #line 3315 "y.tab.c"
3320 break;
3321
3322! case 160: /* simple_list1: simple_list1 '&' simple_list1 */
3323! #line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
3324 {
3325 if ((yyvsp[-2].command)->type == cm_connection)
3326--- 3319,3339 ----
3327 }
3328 }
3329! #line 3322 "y.tab.c"
3330 break;
3331
3332! case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */
3333! #line 1265 "/usr/local/src/chet/src/bash/src/parse.y"
3334 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
3335! #line 3328 "y.tab.c"
3336 break;
3337
3338! case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */
3339! #line 1267 "/usr/local/src/chet/src/bash/src/parse.y"
3340 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
3341! #line 3334 "y.tab.c"
3342 break;
3343
3344! case 161: /* simple_list1: simple_list1 '&' simple_list1 */
3345! #line 1269 "/usr/local/src/chet/src/bash/src/parse.y"
3346 {
3347 if ((yyvsp[-2].command)->type == cm_connection)
3348***************
3349*** 3323,3349 ****
3350 (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
3351 }
3352! #line 3326 "y.tab.c"
3353 break;
3354
3355! case 161: /* simple_list1: simple_list1 ';' simple_list1 */
3356! #line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
3357 { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
3358! #line 3332 "y.tab.c"
3359 break;
3360
3361! case 162: /* simple_list1: pipeline_command */
3362! #line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
3363 { (yyval.command) = (yyvsp[0].command); }
3364! #line 3338 "y.tab.c"
3365 break;
3366
3367! case 163: /* pipeline_command: pipeline */
3368! #line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
3369 { (yyval.command) = (yyvsp[0].command); }
3370! #line 3344 "y.tab.c"
3371 break;
3372
3373! case 164: /* pipeline_command: BANG pipeline_command */
3374! #line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
3375 {
3376 if ((yyvsp[0].command))
3377--- 3342,3368 ----
3378 (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
3379 }
3380! #line 3345 "y.tab.c"
3381 break;
3382
3383! case 162: /* simple_list1: simple_list1 ';' simple_list1 */
3384! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
3385 { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
3386! #line 3351 "y.tab.c"
3387 break;
3388
3389! case 163: /* simple_list1: pipeline_command */
3390! #line 1279 "/usr/local/src/chet/src/bash/src/parse.y"
3391 { (yyval.command) = (yyvsp[0].command); }
3392! #line 3357 "y.tab.c"
3393 break;
3394
3395! case 164: /* pipeline_command: pipeline */
3396! #line 1283 "/usr/local/src/chet/src/bash/src/parse.y"
3397 { (yyval.command) = (yyvsp[0].command); }
3398! #line 3363 "y.tab.c"
3399 break;
3400
3401! case 165: /* pipeline_command: BANG pipeline_command */
3402! #line 1285 "/usr/local/src/chet/src/bash/src/parse.y"
3403 {
3404 if ((yyvsp[0].command))
3405***************
3406*** 3351,3359 ****
3407 (yyval.command) = (yyvsp[0].command);
3408 }
3409! #line 3354 "y.tab.c"
3410 break;
3411
3412! case 165: /* pipeline_command: timespec pipeline_command */
3413! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
3414 {
3415 if ((yyvsp[0].command))
3416--- 3370,3378 ----
3417 (yyval.command) = (yyvsp[0].command);
3418 }
3419! #line 3373 "y.tab.c"
3420 break;
3421
3422! case 166: /* pipeline_command: timespec pipeline_command */
3423! #line 1291 "/usr/local/src/chet/src/bash/src/parse.y"
3424 {
3425 if ((yyvsp[0].command))
3426***************
3427*** 3361,3369 ****
3428 (yyval.command) = (yyvsp[0].command);
3429 }
3430! #line 3364 "y.tab.c"
3431 break;
3432
3433! case 166: /* pipeline_command: timespec list_terminator */
3434! #line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
3435 {
3436 ELEMENT x;
3437--- 3380,3388 ----
3438 (yyval.command) = (yyvsp[0].command);
3439 }
3440! #line 3383 "y.tab.c"
3441 break;
3442
3443! case 167: /* pipeline_command: timespec list_terminator */
3444! #line 1297 "/usr/local/src/chet/src/bash/src/parse.y"
3445 {
3446 ELEMENT x;
3447***************
3448*** 3385,3393 ****
3449 parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
3450 }
3451! #line 3388 "y.tab.c"
3452 break;
3453
3454! case 167: /* pipeline_command: BANG list_terminator */
3455! #line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
3456 {
3457 ELEMENT x;
3458--- 3404,3412 ----
3459 parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
3460 }
3461! #line 3407 "y.tab.c"
3462 break;
3463
3464! case 168: /* pipeline_command: BANG list_terminator */
3465! #line 1317 "/usr/local/src/chet/src/bash/src/parse.y"
3466 {
3467 ELEMENT x;
3468***************
3469*** 3410,3424 ****
3470 parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
3471 }
3472! #line 3413 "y.tab.c"
3473 break;
3474
3475! case 168: /* pipeline: pipeline '|' newline_list pipeline */
3476! #line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
3477 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
3478! #line 3419 "y.tab.c"
3479 break;
3480
3481! case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */
3482! #line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
3483 {
3484 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
3485--- 3429,3443 ----
3486 parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
3487 }
3488! #line 3432 "y.tab.c"
3489 break;
3490
3491! case 169: /* pipeline: pipeline '|' newline_list pipeline */
3492! #line 1340 "/usr/local/src/chet/src/bash/src/parse.y"
3493 { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
3494! #line 3438 "y.tab.c"
3495 break;
3496
3497! case 170: /* pipeline: pipeline BAR_AND newline_list pipeline */
3498! #line 1342 "/usr/local/src/chet/src/bash/src/parse.y"
3499 {
3500 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
3501***************
3502*** 3443,3481 ****
3503 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
3504 }
3505! #line 3446 "y.tab.c"
3506 break;
3507
3508! case 170: /* pipeline: command */
3509! #line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
3510 { (yyval.command) = (yyvsp[0].command); }
3511! #line 3452 "y.tab.c"
3512 break;
3513
3514! case 171: /* timespec: TIME */
3515! #line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
3516 { (yyval.number) = CMD_TIME_PIPELINE; }
3517! #line 3458 "y.tab.c"
3518 break;
3519
3520! case 172: /* timespec: TIME TIMEOPT */
3521! #line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
3522 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3523! #line 3464 "y.tab.c"
3524 break;
3525
3526! case 173: /* timespec: TIME TIMEIGN */
3527! #line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
3528 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3529! #line 3470 "y.tab.c"
3530 break;
3531
3532! case 174: /* timespec: TIME TIMEOPT TIMEIGN */
3533! #line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
3534 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3535! #line 3476 "y.tab.c"
3536 break;
3537
3538
3539! #line 3480 "y.tab.c"
3540
3541 default: break;
3542--- 3462,3500 ----
3543 (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
3544 }
3545! #line 3465 "y.tab.c"
3546 break;
3547
3548! case 171: /* pipeline: command */
3549! #line 1365 "/usr/local/src/chet/src/bash/src/parse.y"
3550 { (yyval.command) = (yyvsp[0].command); }
3551! #line 3471 "y.tab.c"
3552 break;
3553
3554! case 172: /* timespec: TIME */
3555! #line 1369 "/usr/local/src/chet/src/bash/src/parse.y"
3556 { (yyval.number) = CMD_TIME_PIPELINE; }
3557! #line 3477 "y.tab.c"
3558 break;
3559
3560! case 173: /* timespec: TIME TIMEOPT */
3561! #line 1371 "/usr/local/src/chet/src/bash/src/parse.y"
3562 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3563! #line 3483 "y.tab.c"
3564 break;
3565
3566! case 174: /* timespec: TIME TIMEIGN */
3567! #line 1373 "/usr/local/src/chet/src/bash/src/parse.y"
3568 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3569! #line 3489 "y.tab.c"
3570 break;
3571
3572! case 175: /* timespec: TIME TIMEOPT TIMEIGN */
3573! #line 1375 "/usr/local/src/chet/src/bash/src/parse.y"
3574 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
3575! #line 3495 "y.tab.c"
3576 break;
3577
3578
3579! #line 3499 "y.tab.c"
3580
3581 default: break;
3582***************
3583*** 3670,3674 ****
3584 }
3585
3586! #line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
3587
3588
3589--- 3689,3693 ----
3590 }
3591
3592! #line 1377 "/usr/local/src/chet/src/bash/src/parse.y"
3593
3594
3595***************
3596*** 5209,5215 ****
3597 if (current_token < 0)
3598 #if defined (YYERRCODE) && !defined (YYUNDEF)
3599! current_token = YYERRCODE;
3600 #else
3601! current_token = YYerror;
3602 #endif
3603
3604--- 5228,5234 ----
3605 if (current_token < 0)
3606 #if defined (YYERRCODE) && !defined (YYUNDEF)
3607! current_token = EOF_Reached ? YYEOF : YYERRCODE;
3608 #else
3609! current_token = EOF_Reached ? YYEOF : YYUNDEF;
3610 #endif
3611
3612***************
3613*** 6006,6009 ****
3614--- 6026,6030 ----
3615 parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
3616 EOF_Reached = 1; /* XXX */
3617+ parser_state |= PST_NOERROR; /* avoid redundant error message */
3618 return (&matched_pair_error);
3619 }
3620***************
3621*** 6468,6471 ****
3622--- 6487,6491 ----
3623
3624 /* yyparse() has already called yyerror() and reset_parser() */
3625+ parser_state |= PST_NOERROR;
3626 return (&matched_pair_error);
3627 }
3628
3629*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
3630--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
3631***************
3632*** 26,30 ****
3633 looks for to find the patch level (for the sccs version string). */
3634
3635! #define PATCHLEVEL 17
3636
3637 #endif /* _PATCHLEVEL_H_ */
3638--- 26,30 ----
3639 looks for to find the patch level (for the sccs version string). */
3640
3641! #define PATCHLEVEL 18
3642
3643 #endif /* _PATCHLEVEL_H_ */