perl 5.0 alpha 6
[p5sagit/p5-mst-13.2.git] / x2p / a2p.c
CommitLineData
79072805 1extern char *malloc(), *realloc();
2
3# line 2 "a2p.y"
4/* $RCSfile: a2p.y,v $$Revision: 4.0.1.2 $$Date: 92/06/08 16:13:03 $
5 *
6 * Copyright (c) 1991, Larry Wall
7 *
8 * You may distribute under the terms of either the GNU General Public
9 * License or the Artistic License, as specified in the README file.
10 *
11 * $Log: a2p.y,v $
12 * Revision 4.0.1.2 92/06/08 16:13:03 lwall
13 * patch20: in a2p, getline should allow variable to be array element
14 *
15 * Revision 4.0.1.1 91/06/07 12:12:41 lwall
16 * patch4: new copyright notice
17 *
18 * Revision 4.0 91/03/20 01:57:21 lwall
19 * 4.0 baseline.
20 *
21 */
22
23#include "INTERN.h"
24#include "a2p.h"
25
26int root;
27int begins = Nullop;
28int ends = Nullop;
29
30# define BEGIN 257
31# define END 258
32# define REGEX 259
33# define SEMINEW 260
34# define NEWLINE 261
35# define COMMENT 262
36# define FUN1 263
37# define FUNN 264
38# define GRGR 265
39# define PRINT 266
40# define PRINTF 267
41# define SPRINTF 268
42# define SPLIT 269
43# define IF 270
44# define ELSE 271
45# define WHILE 272
46# define FOR 273
47# define IN 274
48# define EXIT 275
49# define NEXT 276
50# define BREAK 277
51# define CONTINUE 278
52# define RET 279
53# define GETLINE 280
54# define DO 281
55# define SUB 282
56# define GSUB 283
57# define MATCH 284
58# define FUNCTION 285
59# define USERFUN 286
60# define DELETE 287
61# define ASGNOP 288
62# define OROR 289
63# define ANDAND 290
64# define NUMBER 291
65# define VAR 292
66# define SUBSTR 293
67# define INDEX 294
68# define MATCHOP 295
69# define RELOP 296
70# define OR 297
71# define STRING 298
72# define UMINUS 299
73# define NOT 300
74# define INCR 301
75# define DECR 302
76# define FIELD 303
77# define VFIELD 304
78#define yyclearin yychar = -1
79#define yyerrok yyerrflag = 0
80extern int yychar;
81extern int yyerrflag;
82#ifndef YYMAXDEPTH
83#define YYMAXDEPTH 150
84#endif
85#ifndef YYSTYPE
86#define YYSTYPE int
87#endif
88YYSTYPE yylval, yyval;
89# define YYERRCODE 256
90
91# line 402 "a2p.y"
92
93#include "a2py.c"
94int yyexca[] ={
95-1, 1,
96 0, -1,
97 -2, 0,
98 };
99# define YYNPROD 137
100# define YYLAST 3142
101int yyact[]={
102
103 63, 44, 156, 32, 50, 31, 222, 73, 74, 75,
104 210, 53, 45, 46, 124, 49, 86, 307, 104, 158,
105 74, 75, 52, 54, 53, 302, 126, 271, 306, 265,
106 106, 107, 270, 245, 51, 157, 269, 21, 56, 92,
107 2, 131, 55, 20, 48, 72, 19, 90, 69, 132,
108 47, 196, 241, 102, 100, 272, 195, 193, 109, 110,
109 111, 112, 253, 76, 79, 252, 72, 139, 15, 77,
110 237, 68, 78, 311, 236, 160, 66, 64, 309, 65,
111 293, 67, 187, 174, 255, 139, 198, 184, 183, 130,
112 68, 80, 179, 129, 5, 66, 64, 71, 65, 128,
113 67, 68, 286, 214, 199, 212, 66, 211, 105, 103,
114 99, 67, 98, 97, 96, 95, 71, 108, 94, 89,
115 88, 152, 87, 4, 153, 10, 9, 200, 69, 14,
116 177, 178, 239, 140, 13, 3, 136, 137, 127, 1,
117 0, 0, 0, 185, 186, 0, 72, 69, 151, 0,
118 0, 154, 0, 0, 0, 0, 0, 0, 69, 0,
119 0, 0, 0, 204, 205, 72, 0, 106, 107, 0,
120 0, 0, 0, 0, 175, 176, 72, 213, 0, 215,
121 76, 0, 140, 0, 0, 0, 77, 0, 0, 78,
122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123 0, 0, 0, 230, 231, 232, 233, 234, 235, 0,
124 206, 207, 0, 0, 0, 0, 244, 0, 0, 0,
125 159, 106, 107, 34, 35, 0, 162, 163, 37, 39,
126 170, 0, 171, 173, 248, 166, 165, 164, 167, 168,
127 33, 172, 42, 43, 41, 161, 36, 169, 44, 18,
128 247, 27, 44, 38, 40, 54, 53, 249, 28, 45,
129 46, 29, 30, 45, 46, 54, 53, 54, 53, 0,
130 282, 18, 18, 238, 284, 285, 242, 243, 289, 290,
131 54, 53, 240, 91, 54, 53, 0, 299, 300, 54,
132 53, 0, 304, 0, 0, 6, 7, 8, 18, 0,
133 0, 298, 0, 113, 114, 115, 116, 63, 70, 18,
134 32, 310, 31, 313, 312, 315, 314, 316, 0, 18,
135 0, 0, 303, 0, 247, 0, 158, 70, 201, 202,
136 203, 0, 133, 135, 91, 91, 308, 287, 247, 141,
137 143, 144, 145, 146, 147, 149, 91, 0, 0, 91,
138 0, 301, 0, 0, 0, 18, 18, 0, 0, 0,
139 63, 0, 0, 32, 0, 31, 0, 0, 0, 0,
140 0, 0, 0, 0, 0, 0, 0, 0, 181, 158,
141 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
142 174, 0, 305, 0, 0, 0, 0, 0, 0, 0,
143 0, 0, 0, 0, 0, 0, 0, 0, 91, 91,
144 63, 0, 208, 32, 209, 31, 0, 0, 0, 0,
145 0, 0, 0, 0, 0, 0, 0, 0, 0, 158,
146 0, 219, 220, 0, 221, 0, 223, 225, 226, 227,
147 228, 229, 0, 174, 0, 274, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 18, 18, 0,
149 246, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 63, 0, 0, 32, 0, 31, 0, 0,
151 0, 0, 266, 0, 0, 0, 267, 268, 0, 0,
152 0, 158, 0, 174, 0, 217, 275, 0, 276, 0,
153 0, 0, 0, 0, 278, 0, 279, 0, 280, 0,
154 281, 0, 0, 0, 0, 0, 0, 0, 18, 0,
155 0, 0, 0, 0, 0, 0, 0, 159, 0, 0,
156 34, 35, 18, 162, 163, 37, 39, 170, 0, 171,
157 173, 0, 166, 165, 164, 167, 168, 33, 172, 42,
158 43, 41, 0, 36, 169, 174, 0, 216, 27, 44,
159 38, 40, 0, 0, 0, 28, 0, 0, 29, 30,
160 45, 46, 63, 0, 0, 32, 0, 31, 0, 0,
161 159, 0, 0, 34, 35, 0, 162, 163, 37, 39,
162 170, 0, 171, 173, 0, 166, 165, 164, 167, 168,
163 33, 172, 42, 43, 41, 0, 36, 169, 0, 0,
164 0, 27, 44, 38, 40, 0, 0, 0, 28, 0,
165 0, 29, 30, 45, 46, 0, 25, 0, 0, 32,
166 159, 31, 0, 34, 35, 0, 162, 163, 37, 39,
167 170, 0, 171, 173, 0, 166, 165, 164, 167, 168,
168 33, 172, 42, 43, 41, 0, 36, 169, 0, 0,
169 0, 27, 44, 38, 40, 0, 0, 0, 28, 0,
170 0, 29, 30, 45, 46, 63, 0, 0, 32, 0,
171 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 159, 0, 158, 34, 35, 0, 162, 163,
173 37, 39, 170, 0, 171, 173, 0, 166, 165, 164,
174 167, 168, 33, 172, 42, 43, 41, 0, 36, 169,
175 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
176 28, 0, 0, 29, 30, 45, 46, 63, 0, 0,
177 32, 0, 31, 0, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 158, 0, 174, 0,
179 197, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 63, 0, 0, 32, 138, 31, 0, 0,
182 0, 0, 0, 0, 0, 34, 35, 0, 162, 163,
183 37, 39, 59, 0, 58, 0, 0, 166, 165, 164,
184 167, 168, 33, 0, 42, 43, 41, 0, 36, 169,
185 174, 0, 155, 27, 44, 38, 40, 0, 0, 0,
186 28, 0, 0, 29, 30, 45, 46, 0, 0, 0,
187 0, 0, 0, 0, 0, 24, 0, 106, 107, 34,
188 35, 0, 0, 0, 37, 39, 0, 0, 0, 0,
189 0, 0, 0, 0, 0, 0, 33, 0, 42, 43,
190 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
191 40, 0, 0, 0, 28, 0, 26, 29, 30, 45,
192 46, 0, 0, 0, 0, 159, 0, 0, 34, 35,
193 0, 162, 163, 37, 39, 170, 0, 171, 173, 0,
194 166, 165, 164, 167, 168, 33, 172, 42, 43, 41,
195 63, 36, 169, 32, 0, 31, 27, 44, 38, 40,
196 0, 0, 0, 28, 0, 0, 29, 30, 45, 46,
197 59, 0, 58, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 159, 0, 0,
199 34, 35, 0, 162, 163, 37, 39, 170, 0, 171,
200 173, 0, 166, 165, 164, 167, 168, 33, 172, 42,
201 43, 41, 0, 36, 169, 23, 0, 0, 27, 44,
202 38, 40, 0, 0, 0, 28, 0, 0, 29, 30,
203 45, 46, 0, 0, 62, 34, 35, 0, 0, 0,
204 37, 39, 0, 0, 0, 81, 82, 62, 62, 85,
205 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
206 0, 0, 62, 27, 44, 38, 40, 60, 57, 0,
207 28, 0, 0, 29, 30, 45, 46, 0, 0, 0,
208 62, 62, 62, 62, 62, 62, 25, 62, 0, 32,
209 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
213 62, 62, 62, 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 180, 0, 0, 0, 0, 0, 0, 62,
215 63, 62, 0, 32, 0, 31, 0, 62, 0, 62,
216 62, 62, 62, 62, 0, 62, 0, 0, 0, 12,
217 0, 0, 0, 34, 35, 0, 0, 62, 37, 39,
218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
219 33, 0, 42, 43, 41, 62, 36, 62, 0, 0,
220 0, 27, 44, 38, 40, 60, 57, 0, 28, 0,
221 0, 29, 30, 45, 46, 0, 0, 0, 0, 0,
222 0, 0, 0, 0, 62, 62, 0, 0, 0, 0,
223 0, 0, 0, 0, 0, 62, 62, 62, 0, 62,
224 0, 62, 62, 62, 62, 62, 0, 0, 0, 0,
225 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
226 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
227 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,
228 0, 0, 62, 62, 62, 83, 84, 0, 0, 0,
229 0, 62, 62, 0, 62, 62, 62, 62, 0, 0,
230 101, 0, 0, 16, 17, 24, 0, 0, 0, 34,
231 35, 0, 0, 0, 37, 39, 0, 0, 118, 119,
232 120, 121, 122, 123, 0, 125, 33, 0, 42, 43,
233 41, 11, 36, 0, 0, 0, 0, 27, 44, 38,
234 40, 0, 0, 0, 28, 61, 26, 29, 30, 45,
235 46, 0, 25, 0, 0, 32, 0, 31, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 61, 61, 61,
237 61, 288, 0, 34, 35, 0, 0, 0, 37, 39,
238 0, 0, 0, 0, 0, 0, 0, 61, 0, 61,
239 33, 0, 42, 43, 41, 61, 36, 61, 61, 61,
240 61, 61, 25, 61, 0, 32, 0, 31, 28, 0,
241 0, 29, 30, 45, 46, 61, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 218, 0, 61, 0, 0, 0, 0,
244 0, 0, 0, 0, 63, 263, 0, 32, 264, 31,
245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
246 0, 0, 61, 61, 0, 0, 0, 0, 0, 0,
247 0, 0, 0, 61, 61, 61, 0, 61, 0, 61,
248 61, 61, 61, 61, 0, 0, 63, 261, 0, 32,
249 262, 31, 0, 0, 0, 0, 0, 0, 0, 0,
250 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
252 61, 61, 61, 0, 0, 0, 0, 0, 0, 61,
253 61, 0, 61, 61, 61, 61, 63, 259, 0, 32,
254 260, 31, 0, 0, 0, 0, 0, 0, 0, 0,
255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
257 0, 24, 0, 0, 0, 34, 35, 0, 0, 0,
258 37, 39, 63, 257, 0, 32, 258, 31, 0, 0,
259 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
260 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
261 28, 0, 26, 29, 30, 45, 46, 0, 0, 0,
262 0, 24, 0, 0, 0, 34, 35, 0, 0, 0,
263 37, 39, 63, 251, 0, 32, 250, 31, 0, 0,
264 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
265 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
266 28, 0, 26, 29, 30, 45, 46, 34, 35, 0,
267 0, 0, 37, 39, 0, 0, 63, 0, 0, 32,
268 0, 31, 0, 0, 33, 0, 42, 43, 41, 0,
269 36, 0, 0, 0, 0, 27, 44, 38, 40, 0,
270 0, 0, 28, 0, 0, 29, 30, 45, 46, 34,
271 35, 0, 0, 0, 37, 39, 0, 0, 0, 0,
272 0, 0, 142, 0, 0, 32, 33, 31, 42, 43,
273 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
274 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
275 46, 0, 0, 0, 0, 0, 0, 0, 0, 34,
276 35, 0, 0, 0, 37, 39, 63, 297, 0, 32,
277 0, 31, 0, 0, 0, 0, 33, 0, 42, 43,
278 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
279 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
280 46, 0, 0, 0, 0, 34, 35, 0, 0, 0,
281 37, 39, 63, 296, 0, 32, 0, 31, 0, 0,
282 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
283 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
284 28, 0, 0, 29, 30, 45, 46, 0, 0, 0,
285 0, 0, 0, 0, 0, 34, 35, 0, 0, 0,
286 37, 39, 63, 295, 0, 32, 0, 31, 0, 0,
287 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
288 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
289 28, 0, 0, 29, 30, 45, 46, 106, 107, 34,
290 35, 0, 0, 0, 37, 39, 63, 294, 0, 32,
291 0, 31, 0, 0, 0, 0, 33, 0, 42, 43,
292 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
293 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
294 46, 24, 0, 0, 0, 34, 35, 0, 0, 0,
295 37, 39, 63, 292, 0, 32, 0, 31, 0, 0,
296 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
297 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
298 28, 0, 26, 29, 30, 45, 46, 0, 0, 34,
299 35, 0, 0, 0, 37, 39, 63, 291, 0, 32,
300 0, 31, 0, 0, 0, 0, 33, 0, 42, 43,
301 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
302 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
303 46, 0, 0, 0, 0, 34, 35, 0, 0, 63,
304 37, 39, 32, 0, 31, 0, 0, 0, 0, 0,
305 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
306 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
307 28, 0, 0, 29, 30, 45, 46, 0, 0, 0,
308 0, 0, 0, 0, 0, 34, 35, 0, 0, 0,
309 37, 39, 283, 63, 0, 0, 32, 0, 31, 0,
310 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
311 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
312 28, 0, 0, 29, 30, 45, 46, 0, 0, 34,
313 35, 0, 0, 0, 37, 39, 63, 273, 0, 32,
314 0, 31, 0, 0, 0, 0, 33, 0, 42, 43,
315 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
316 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
317 46, 0, 0, 0, 0, 34, 35, 0, 0, 0,
318 37, 39, 63, 256, 0, 32, 0, 31, 0, 0,
319 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
320 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
321 28, 0, 0, 29, 30, 45, 46, 0, 0, 34,
322 35, 0, 0, 0, 37, 39, 63, 254, 0, 32,
323 0, 31, 0, 0, 0, 0, 33, 0, 42, 43,
324 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
325 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
326 46, 0, 34, 35, 0, 0, 0, 37, 39, 0,
327 0, 0, 63, 0, 0, 32, 0, 31, 0, 33,
328 0, 42, 43, 41, 0, 36, 0, 0, 0, 0,
329 27, 44, 38, 40, 0, 0, 0, 28, 0, 0,
330 29, 30, 45, 46, 0, 0, 0, 0, 0, 0,
331 0, 0, 277, 0, 0, 63, 34, 35, 32, 194,
332 31, 37, 39, 0, 0, 0, 0, 0, 0, 0,
333 0, 0, 0, 33, 0, 42, 43, 41, 0, 36,
334 0, 0, 0, 0, 27, 44, 38, 40, 0, 0,
335 0, 28, 0, 0, 29, 30, 45, 46, 63, 34,
336 35, 32, 192, 31, 37, 39, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 33, 0, 42, 43,
338 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
339 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
340 46, 0, 0, 0, 63, 34, 35, 32, 191, 31,
341 37, 39, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
343 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
344 28, 0, 0, 29, 30, 45, 46, 0, 63, 34,
345 35, 32, 190, 31, 37, 39, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 33, 0, 42, 43,
347 41, 0, 36, 0, 0, 0, 0, 27, 44, 38,
348 40, 0, 0, 0, 28, 0, 0, 29, 30, 45,
349 46, 224, 0, 0, 63, 34, 35, 32, 189, 31,
350 37, 39, 0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0, 33, 0, 42, 43, 41, 0, 36, 0,
352 0, 0, 0, 27, 44, 38, 40, 0, 0, 0,
353 28, 0, 0, 29, 30, 45, 46, 63, 34, 35,
354 32, 188, 31, 37, 39, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 33, 0, 42, 43, 41,
356 0, 36, 0, 0, 0, 0, 27, 44, 38, 40,
357 0, 0, 0, 28, 0, 0, 29, 30, 45, 46,
358 0, 34, 35, 0, 0, 0, 37, 39, 63, 182,
359 0, 32, 0, 31, 0, 0, 0, 0, 33, 0,
360 42, 43, 41, 0, 36, 0, 0, 0, 0, 27,
361 44, 38, 40, 0, 0, 0, 28, 0, 0, 29,
362 30, 45, 46, 0, 0, 0, 0, 34, 35, 0,
363 0, 0, 37, 39, 63, 0, 0, 32, 0, 31,
364 0, 0, 0, 0, 33, 0, 42, 43, 41, 0,
365 36, 0, 0, 0, 0, 27, 44, 38, 40, 0,
366 0, 0, 28, 0, 0, 29, 30, 45, 46, 0,
367 0, 34, 35, 0, 0, 0, 37, 39, 0, 0,
368 63, 0, 0, 32, 0, 31, 0, 0, 33, 0,
369 42, 43, 41, 0, 36, 0, 0, 0, 0, 27,
370 44, 38, 40, 0, 0, 0, 28, 0, 0, 29,
371 30, 45, 46, 0, 0, 0, 0, 34, 35, 0,
372 0, 0, 37, 39, 63, 0, 0, 32, 138, 31,
373 0, 0, 0, 0, 33, 0, 42, 43, 41, 0,
374 36, 0, 0, 0, 0, 27, 44, 38, 40, 0,
375 0, 0, 28, 0, 0, 29, 30, 45, 46, 0,
376 34, 35, 0, 0, 0, 37, 39, 63, 134, 0,
377 32, 0, 31, 0, 0, 0, 0, 33, 0, 42,
378 43, 41, 0, 36, 0, 0, 0, 0, 27, 44,
379 38, 40, 0, 0, 0, 28, 0, 0, 29, 30,
380 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 34, 35, 0, 0, 63, 37, 39, 32, 0,
382 31, 0, 0, 0, 0, 0, 0, 0, 33, 0,
383 42, 43, 41, 0, 36, 0, 0, 0, 0, 27,
384 44, 38, 40, 0, 0, 0, 28, 0, 0, 29,
385 30, 45, 46, 150, 0, 0, 0, 34, 35, 0,
386 0, 63, 37, 39, 32, 0, 31, 0, 0, 0,
387 0, 0, 0, 0, 33, 0, 42, 43, 41, 0,
388 36, 0, 0, 0, 0, 27, 44, 38, 40, 0,
389 0, 0, 28, 0, 0, 29, 30, 45, 46, 148,
390 0, 0, 0, 34, 35, 0, 0, 93, 37, 39,
391 32, 0, 31, 0, 0, 0, 0, 0, 0, 0,
392 33, 0, 42, 43, 41, 0, 36, 0, 0, 0,
393 0, 27, 44, 38, 40, 0, 0, 0, 28, 0,
394 0, 29, 30, 45, 46, 0, 0, 34, 35, 0,
395 0, 0, 37, 39, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0, 33, 0, 42, 43, 41, 0,
397 36, 0, 0, 0, 0, 27, 44, 38, 40, 0,
398 0, 0, 28, 0, 0, 29, 30, 45, 46, 0,
399 34, 35, 0, 0, 0, 37, 39, 0, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 33, 0, 42,
401 43, 41, 0, 36, 0, 0, 0, 0, 27, 44,
402 38, 40, 0, 0, 0, 28, 0, 0, 29, 30,
403 45, 46, 0, 0, 117, 0, 0, 0, 34, 35,
404 0, 0, 0, 37, 39, 0, 0, 0, 0, 0,
405 0, 0, 0, 0, 0, 33, 0, 42, 43, 41,
406 0, 36, 0, 0, 0, 0, 27, 44, 38, 40,
407 0, 0, 0, 28, 0, 0, 29, 30, 45, 46,
408 0, 0, 0, 0, 34, 35, 0, 0, 0, 37,
409 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
410 0, 33, 0, 42, 43, 41, 0, 36, 0, 0,
411 0, 0, 27, 44, 38, 40, 0, 0, 0, 28,
412 0, 0, 29, 30, 45, 46, 0, 0, 0, 0,
413 34, 35, 0, 0, 0, 37, 39, 0, 0, 0,
414 0, 0, 0, 0, 0, 0, 0, 33, 0, 42,
415 43, 41, 0, 36, 0, 0, 0, 0, 27, 44,
416 38, 40, 0, 0, 0, 28, 0, 0, 29, 30,
417 45, 46 };
418int yypact[]={
419
420 -1000, -1000, 35, 1016, -1000, -1000, -1000, -1000, -1000, -1000,
421 -79, -271, -1000, -1000, -227, -22, -81, -85, 880, -1000,
422 -1000, -1000, 53, -281, -1000, 1332, 1332, -1000, -1000, -291,
423 -291, 2791, 2791, -44, 82, 80, 79, 2837, 78, 75,
424 74, 73, 72, 70, -37, -1000, 2791, 35, -1000, 69,
425 -231, -1000, 1332, -1000, -1000, -1000, -1000, 2791, 2791, 2791,
426 2745, 53, -293, 1332, 2791, 2791, 2791, 2791, 2791, 2791,
427 -278, 2791, -254, 1332, -1000, -1000, 58, 52, 48, 0,
428 -1000, -1000, -1000, -46, -46, -11, 2791, 2697, 2837, 2837,
429 -1000, 2654, 23, 1652, 2791, 2791, 2791, 2791, 2610, 2564,
430 2837, -67, -231, 2837, 697, -1000, -1000, -1000, -266, 586,
431 586, -231, -231, 1080, 1080, 1080, 1080, -1000, 64, 64,
432 -46, -46, -46, -46, -1000, 34, -291, -266, -1000, -1000,
433 -1000, -1000, 2791, 1080, -1000, 2518, 47, 46, -1000, -1000,
434 41, 742, 1652, 2467, 2424, 2378, 2334, 2288, 13, 2245,
435 12, -42, 635, 45, -1000, -1000, -1000, 68, -1000, -1000,
436 -1000, 2791, 2837, 2837, -1000, -1000, 2791, -1000, 2791, -282,
437 67, 65, -1000, 63, -1000, -1000, -279, 432, 370, 2791,
438 -1000, 1080, -1000, -1000, -1000, 1606, 1606, -1000, 2791, -286,
439 2791, 2202, 2791, 2791, 2791, 2791, -1000, -1000, -1000, -1000,
440 -1000, -1000, -1000, -1000, -231, -231, 8, 8, 2791, 2791,
441 -39, 1332, 1332, -40, 532, -231, -1000, -1000, 53, 2791,
442 2791, 1562, 21, 2156, 43, 2112, 1512, 1466, 1416, 1374,
443 -94, -231, -231, -231, -231, -231, 2791, -1000, -1000, -1000,
444 2791, 2791, -5, -9, -245, -4, 2066, -1000, 320, 35,
445 2791, -1000, 2023, -1000, -1000, -1000, -1000, -1000, 2791, -1000,
446 2791, -1000, 2791, -1000, 2791, -1000, 2791, 2791, 1969, -1000,
447 -1000, 62, 1282, -1000, -1000, 1926, 1882, 39, 1836, 1792,
448 1742, 1696, -231, -1000, -40, -40, 1332, -34, 532, -40,
449 -231, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 267, -243,
450 -1000, -24, 532, 37, -1000, -1000, -1000, -1000, 32, -1000,
451 -40, -1000, -40, -1000, -40, -1000, -1000 };
452int yypgo[]={
453
454 0, 139, 40, 135, 134, 4, 18, 129, 126, 125,
455 124, 47, 64, 245, 46, 43, 37, 1223, 985, 39,
456 123, 108, 104, 2, 35, 75, 33, 74 };
457int yyr1[]={
458
459 0, 1, 4, 7, 7, 3, 3, 8, 8, 8,
460 8, 8, 8, 10, 9, 9, 12, 12, 12, 12,
461 16, 16, 16, 16, 15, 15, 15, 15, 14, 14,
462 14, 14, 13, 13, 13, 17, 17, 17, 17, 17,
463 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
464 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
465 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
466 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
467 17, 18, 18, 18, 18, 11, 11, 11, 19, 19,
468 19, 2, 2, 20, 20, 20, 20, 5, 5, 21,
469 21, 22, 22, 22, 22, 6, 6, 23, 23, 23,
470 23, 26, 26, 24, 24, 24, 24, 24, 24, 24,
471 24, 24, 24, 24, 24, 24, 27, 27, 27, 25,
472 25, 25, 25, 25, 25, 25, 25 };
473int yyr2[]={
474
475 0, 5, 13, 11, 5, 7, 1, 3, 11, 21,
476 9, 2, 2, 3, 3, 7, 2, 2, 2, 2,
477 7, 9, 9, 5, 7, 7, 7, 7, 7, 7,
478 3, 7, 3, 5, 7, 3, 3, 3, 7, 7,
479 7, 7, 7, 7, 7, 11, 5, 5, 5, 5,
480 5, 5, 7, 3, 5, 7, 9, 7, 9, 3,
481 7, 9, 9, 9, 5, 17, 13, 17, 17, 13,
482 13, 13, 13, 13, 13, 13, 13, 17, 17, 17,
483 17, 3, 9, 3, 5, 2, 2, 1, 9, 9,
484 7, 5, 1, 3, 3, 3, 3, 5, 1, 3,
485 3, 5, 5, 5, 5, 5, 1, 7, 5, 5,
486 2, 2, 1, 2, 9, 5, 9, 5, 3, 3,
487 3, 5, 3, 3, 5, 11, 3, 3, 3, 13,
488 19, 13, 15, 21, 19, 13, 11 };
489int yychk[]={
490
491 -1000, -1, -2, -3, -20, 59, 260, 261, 262, -8,
492 -9, 285, 123, -4, -7, -12, 257, 258, -13, -14,
493 -15, -16, -17, -18, 259, 40, 300, 291, 298, 301,
494 302, 45, 43, 280, 263, 264, 286, 268, 293, 269,
495 294, 284, 282, 283, 292, 303, 304, -2, 123, 286,
496 -5, 261, 44, 290, 289, 123, 123, 296, 62, 60,
497 295, -17, -18, 40, 43, 45, 42, 47, 37, 94,
498 274, 63, 112, 288, 301, 302, -16, -15, -14, -12,
499 -12, -18, -18, -17, -17, -18, 60, 40, 40, 40,
500 -11, -13, -19, 40, 40, 40, 40, 40, 40, 40,
501 91, -17, -5, 40, -6, -21, 261, 262, -12, -5,
502 -5, -5, -5, -13, -13, -13, -13, 259, -17, -17,
503 -17, -17, -17, -17, 292, -17, 280, -12, 41, 41,
504 41, 41, 60, -13, 41, -13, -11, -11, 44, 44,
505 -19, -13, 40, -13, -13, -13, -13, -13, 259, -13,
506 259, -11, -6, -10, -11, 125, -23, -24, 59, 260,
507 -25, -13, 266, 267, 277, 276, 275, 278, 279, 287,
508 270, 272, 281, 273, 123, -12, -12, -6, -6, 58,
509 -18, -13, 41, 41, 41, -5, -5, 41, 44, 44,
510 44, 44, 44, 44, 44, 44, 93, 125, 41, -22,
511 59, 260, 261, 262, -5, -5, -11, -11, -13, -13,
512 292, 40, 40, -5, 40, -5, 125, 125, -17, -13,
513 -13, -13, 292, -13, 259, -13, -13, -13, -13, -13,
514 -5, -5, -5, -5, -5, -5, -27, 62, 265, 124,
515 -27, 91, -12, -12, -23, -26, -13, -24, -6, -2,
516 44, 41, 44, 41, 41, 41, 41, 41, 44, 41,
517 44, 41, 44, 41, 44, 123, -13, -13, -13, 41,
518 41, 272, 59, 41, 125, -13, -13, 259, -13, -13,
519 -13, -13, -5, 93, -5, -5, 40, -12, 59, -5,
520 -5, 41, 41, 41, 41, 41, 41, 41, -6, -23,
521 -23, -12, 59, -26, -23, 125, 271, 41, -26, 41,
522 -5, 41, -5, -23, -5, -23, -23 };
523int yydef[]={
524
525 92, -2, 6, 1, 91, 93, 94, 95, 96, 92,
526 7, 0, 98, 11, 12, 14, 0, 0, 16, 17,
527 18, 19, 32, 35, 30, 0, 0, 36, 37, 0,
528 0, 0, 0, 53, 59, 0, 0, 87, 0, 0,
529 0, 0, 0, 0, 81, 83, 0, 5, 98, 0,
530 106, 4, 0, 98, 98, 98, 98, 0, 0, 0,
531 0, 33, 35, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 46, 47, 19, 18, 17, 0,
533 23, 48, 49, 50, 51, 54, 0, 0, 87, 87,
534 64, 85, 86, 0, 0, 0, 0, 0, 0, 0,
535 87, 84, 106, 87, 0, 97, 99, 100, 15, 0,
536 0, 106, 106, 24, 25, 26, 28, 29, 38, 39,
537 40, 41, 42, 43, 44, 0, 57, 34, 20, 27,
538 31, 52, 0, 55, 60, 0, 0, 0, 98, 98,
539 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
540 0, 0, 0, 0, 13, 10, 105, 0, 98, 98,
541 110, 113, 87, 87, 118, 119, 120, 122, 123, 0,
542 0, 0, 98, 0, 98, 21, 22, 0, 0, 0,
543 58, 56, 61, 62, 63, 0, 0, 90, 0, 0,
544 0, 0, 0, 0, 0, 0, 82, 8, 98, 98,
545 98, 98, 98, 98, 108, 109, 115, 117, 121, 124,
546 0, 0, 0, 0, 112, 106, 92, 3, 45, 88,
547 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 107, 101, 102, 103, 104, 0, 126, 127, 128,
549 0, 0, 0, 0, 0, 0, 113, 111, 0, 2,
550 0, 66, 0, 69, 70, 71, 72, 73, 0, 74,
551 0, 75, 0, 76, 0, 98, 114, 116, 0, 98,
552 98, 0, 0, 98, 98, 0, 0, 0, 0, 0,
553 0, 0, 106, 125, 0, 0, 0, 0, 112, 0,
554 136, 65, 67, 68, 77, 78, 79, 80, 0, 129,
555 131, 0, 112, 0, 135, 9, 98, 132, 0, 98,
556 0, 98, 0, 130, 0, 134, 133 };
557typedef struct { char *t_name; int t_val; } yytoktype;
558#ifndef YYDEBUG
559# define YYDEBUG 0 /* don't allow debugging */
560#endif
561
562#if YYDEBUG
563
564yytoktype yytoks[] =
565{
566 "BEGIN", 257,
567 "END", 258,
568 "REGEX", 259,
569 "SEMINEW", 260,
570 "NEWLINE", 261,
571 "COMMENT", 262,
572 "FUN1", 263,
573 "FUNN", 264,
574 "GRGR", 265,
575 "PRINT", 266,
576 "PRINTF", 267,
577 "SPRINTF", 268,
578 "SPLIT", 269,
579 "IF", 270,
580 "ELSE", 271,
581 "WHILE", 272,
582 "FOR", 273,
583 "IN", 274,
584 "EXIT", 275,
585 "NEXT", 276,
586 "BREAK", 277,
587 "CONTINUE", 278,
588 "RET", 279,
589 "GETLINE", 280,
590 "DO", 281,
591 "SUB", 282,
592 "GSUB", 283,
593 "MATCH", 284,
594 "FUNCTION", 285,
595 "USERFUN", 286,
596 "DELETE", 287,
597 "ASGNOP", 288,
598 "?", 63,
599 ":", 58,
600 "OROR", 289,
601 "ANDAND", 290,
602 "NUMBER", 291,
603 "VAR", 292,
604 "SUBSTR", 293,
605 "INDEX", 294,
606 "MATCHOP", 295,
607 "RELOP", 296,
608 "<", 60,
609 ">", 62,
610 "OR", 297,
611 "STRING", 298,
612 "+", 43,
613 "-", 45,
614 "*", 42,
615 "/", 47,
616 "%", 37,
617 "UMINUS", 299,
618 "NOT", 300,
619 "^", 94,
620 "INCR", 301,
621 "DECR", 302,
622 "FIELD", 303,
623 "VFIELD", 304,
624 "-unknown-", -1 /* ends search */
625};
626
627char * yyreds[] =
628{
629 "-no such reduction-",
630 "program : junk hunks",
631 "begin : BEGIN '{' maybe states '}' junk",
632 "end : END '{' maybe states '}'",
633 "end : end NEWLINE",
634 "hunks : hunks hunk junk",
635 "hunks : /* empty */",
636 "hunk : patpat",
637 "hunk : patpat '{' maybe states '}'",
638 "hunk : FUNCTION USERFUN '(' arg_list ')' maybe '{' maybe states '}'",
639 "hunk : '{' maybe states '}'",
640 "hunk : begin",
641 "hunk : end",
642 "arg_list : expr_list",
643 "patpat : cond",
644 "patpat : cond ',' cond",
645 "cond : expr",
646 "cond : match",
647 "cond : rel",
648 "cond : compound_cond",
649 "compound_cond : '(' compound_cond ')'",
650 "compound_cond : cond ANDAND maybe cond",
651 "compound_cond : cond OROR maybe cond",
652 "compound_cond : NOT cond",
653 "rel : expr RELOP expr",
654 "rel : expr '>' expr",
655 "rel : expr '<' expr",
656 "rel : '(' rel ')'",
657 "match : expr MATCHOP expr",
658 "match : expr MATCHOP REGEX",
659 "match : REGEX",
660 "match : '(' match ')'",
661 "expr : term",
662 "expr : expr term",
663 "expr : variable ASGNOP cond",
664 "term : variable",
665 "term : NUMBER",
666 "term : STRING",
667 "term : term '+' term",
668 "term : term '-' term",
669 "term : term '*' term",
670 "term : term '/' term",
671 "term : term '%' term",
672 "term : term '^' term",
673 "term : term IN VAR",
674 "term : term '?' term ':' term",
675 "term : variable INCR",
676 "term : variable DECR",
677 "term : INCR variable",
678 "term : DECR variable",
679 "term : '-' term",
680 "term : '+' term",
681 "term : '(' cond ')'",
682 "term : GETLINE",
683 "term : GETLINE variable",
684 "term : GETLINE '<' expr",
685 "term : GETLINE variable '<' expr",
686 "term : term 'p' GETLINE",
687 "term : term 'p' GETLINE variable",
688 "term : FUN1",
689 "term : FUN1 '(' ')'",
690 "term : FUN1 '(' expr ')'",
691 "term : FUNN '(' expr_list ')'",
692 "term : USERFUN '(' expr_list ')'",
693 "term : SPRINTF expr_list",
694 "term : SUBSTR '(' expr ',' expr ',' expr ')'",
695 "term : SUBSTR '(' expr ',' expr ')'",
696 "term : SPLIT '(' expr ',' VAR ',' expr ')'",
697 "term : SPLIT '(' expr ',' VAR ',' REGEX ')'",
698 "term : SPLIT '(' expr ',' VAR ')'",
699 "term : INDEX '(' expr ',' expr ')'",
700 "term : MATCH '(' expr ',' REGEX ')'",
701 "term : MATCH '(' expr ',' expr ')'",
702 "term : SUB '(' expr ',' expr ')'",
703 "term : SUB '(' REGEX ',' expr ')'",
704 "term : GSUB '(' expr ',' expr ')'",
705 "term : GSUB '(' REGEX ',' expr ')'",
706 "term : SUB '(' expr ',' expr ',' expr ')'",
707 "term : SUB '(' REGEX ',' expr ',' expr ')'",
708 "term : GSUB '(' expr ',' expr ',' expr ')'",
709 "term : GSUB '(' REGEX ',' expr ',' expr ')'",
710 "variable : VAR",
711 "variable : VAR '[' expr_list ']'",
712 "variable : FIELD",
713 "variable : VFIELD term",
714 "expr_list : expr",
715 "expr_list : clist",
716 "expr_list : /* empty */",
717 "clist : expr ',' maybe expr",
718 "clist : clist ',' maybe expr",
719 "clist : '(' clist ')'",
720 "junk : junk hunksep",
721 "junk : /* empty */",
722 "hunksep : ';'",
723 "hunksep : SEMINEW",
724 "hunksep : NEWLINE",
725 "hunksep : COMMENT",
726 "maybe : maybe nlstuff",
727 "maybe : /* empty */",
728 "nlstuff : NEWLINE",
729 "nlstuff : COMMENT",
730 "separator : ';' maybe",
731 "separator : SEMINEW maybe",
732 "separator : NEWLINE maybe",
733 "separator : COMMENT maybe",
734 "states : states statement",
735 "states : /* empty */",
736 "statement : simple separator maybe",
737 "statement : ';' maybe",
738 "statement : SEMINEW maybe",
739 "statement : compound",
740 "simpnull : simple",
741 "simpnull : /* empty */",
742 "simple : expr",
743 "simple : PRINT expr_list redir expr",
744 "simple : PRINT expr_list",
745 "simple : PRINTF expr_list redir expr",
746 "simple : PRINTF expr_list",
747 "simple : BREAK",
748 "simple : NEXT",
749 "simple : EXIT",
750 "simple : EXIT expr",
751 "simple : CONTINUE",
752 "simple : RET",
753 "simple : RET expr",
754 "simple : DELETE VAR '[' expr ']'",
755 "redir : '>'",
756 "redir : GRGR",
757 "redir : '|'",
758 "compound : IF '(' cond ')' maybe statement",
759 "compound : IF '(' cond ')' maybe statement ELSE maybe statement",
760 "compound : WHILE '(' cond ')' maybe statement",
761 "compound : DO maybe statement WHILE '(' cond ')'",
762 "compound : FOR '(' simpnull ';' cond ';' simpnull ')' maybe statement",
763 "compound : FOR '(' simpnull ';' ';' simpnull ')' maybe statement",
764 "compound : FOR '(' expr ')' maybe statement",
765 "compound : '{' maybe states '}' maybe",
766};
767#endif /* YYDEBUG */
768#line 1 "/usr/lib/yaccpar"
769/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */
770
771/*
772** Skeleton parser driver for yacc output
773*/
774
775/*
776** yacc user known macros and defines
777*/
778#define YYERROR goto yyerrlab
779#define YYACCEPT { free(yys); free(yyv); return(0); }
780#define YYABORT { free(yys); free(yyv); return(1); }
781#define YYBACKUP( newtoken, newvalue )\
782{\
783 if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
784 {\
785 yyerror( "syntax error - cannot backup" );\
786 goto yyerrlab;\
787 }\
788 yychar = newtoken;\
789 yystate = *yyps;\
790 yylval = newvalue;\
791 goto yynewstate;\
792}
793#define YYRECOVERING() (!!yyerrflag)
794#ifndef YYDEBUG
795# define YYDEBUG 1 /* make debugging available */
796#endif
797
798/*
799** user known globals
800*/
801int yydebug; /* set to 1 to get debugging */
802
803/*
804** driver internal defines
805*/
806#define YYFLAG (-1000)
807
808/*
809** static variables used by the parser
810*/
811static YYSTYPE *yyv; /* value stack */
812static int *yys; /* state stack */
813
814static YYSTYPE *yypv; /* top of value stack */
815static int *yyps; /* top of state stack */
816
817static int yystate; /* current state */
818static int yytmp; /* extra var (lasts between blocks) */
819
820int yynerrs; /* number of errors */
821
822int yyerrflag; /* error recovery flag */
823int yychar; /* current input token number */
824
825
826/*
827** yyparse - return 0 if worked, 1 if syntax error not recovered from
828*/
829int
830yyparse()
831{
832 register YYSTYPE *yypvt; /* top of value stack for $vars */
833 unsigned yymaxdepth = YYMAXDEPTH;
834
835 /*
836 ** Initialize externals - yyparse may be called more than once
837 */
838 yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
839 yys = (int*)malloc(yymaxdepth*sizeof(int));
840 if (!yyv || !yys)
841 {
842 yyerror( "out of memory" );
843 return(1);
844 }
845 yypv = &yyv[-1];
846 yyps = &yys[-1];
847 yystate = 0;
848 yytmp = 0;
849 yynerrs = 0;
850 yyerrflag = 0;
851 yychar = -1;
852
853 goto yystack;
854 {
855 register YYSTYPE *yy_pv; /* top of value stack */
856 register int *yy_ps; /* top of state stack */
857 register int yy_state; /* current state */
858 register int yy_n; /* internal state number info */
859
860 /*
861 ** get globals into registers.
862 ** branch to here only if YYBACKUP was called.
863 */
864 yynewstate:
865 yy_pv = yypv;
866 yy_ps = yyps;
867 yy_state = yystate;
868 goto yy_newstate;
869
870 /*
871 ** get globals into registers.
872 ** either we just started, or we just finished a reduction
873 */
874 yystack:
875 yy_pv = yypv;
876 yy_ps = yyps;
877 yy_state = yystate;
878
879 /*
880 ** top of for (;;) loop while no reductions done
881 */
882 yy_stack:
883 /*
884 ** put a state and value onto the stacks
885 */
886#if YYDEBUG
887 /*
888 ** if debugging, look up token value in list of value vs.
889 ** name pairs. 0 and negative (-1) are special values.
890 ** Note: linear search is used since time is not a real
891 ** consideration while debugging.
892 */
893 if ( yydebug )
894 {
895 register int yy_i;
896
897 (void)printf( "State %d, token ", yy_state );
898 if ( yychar == 0 )
899 (void)printf( "end-of-file\n" );
900 else if ( yychar < 0 )
901 (void)printf( "-none-\n" );
902 else
903 {
904 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
905 yy_i++ )
906 {
907 if ( yytoks[yy_i].t_val == yychar )
908 break;
909 }
910 (void)printf( "%s\n", yytoks[yy_i].t_name );
911 }
912 }
913#endif /* YYDEBUG */
914 if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
915 {
916 /*
917 ** reallocate and recover. Note that pointers
918 ** have to be reset, or bad things will happen
919 */
920 int yyps_index = (yy_ps - yys);
921 int yypv_index = (yy_pv - yyv);
922 int yypvt_index = (yypvt - yyv);
923 yymaxdepth += YYMAXDEPTH;
924 yyv = (YYSTYPE*)realloc((char*)yyv,
925 yymaxdepth * sizeof(YYSTYPE));
926 yys = (int*)realloc((char*)yys,
927 yymaxdepth * sizeof(int));
928 if (!yyv || !yys)
929 {
930 yyerror( "yacc stack overflow" );
931 return(1);
932 }
933 yy_ps = yys + yyps_index;
934 yy_pv = yyv + yypv_index;
935 yypvt = yyv + yypvt_index;
936 }
937 *yy_ps = yy_state;
938 *++yy_pv = yyval;
939
940 /*
941 ** we have a new state - find out what to do
942 */
943 yy_newstate:
944 if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
945 goto yydefault; /* simple state */
946#if YYDEBUG
947 /*
948 ** if debugging, need to mark whether new token grabbed
949 */
950 yytmp = yychar < 0;
951#endif
952 if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
953 yychar = 0; /* reached EOF */
954#if YYDEBUG
955 if ( yydebug && yytmp )
956 {
957 register int yy_i;
958
959 (void)printf( "Received token " );
960 if ( yychar == 0 )
961 (void)printf( "end-of-file\n" );
962 else if ( yychar < 0 )
963 (void)printf( "-none-\n" );
964 else
965 {
966 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
967 yy_i++ )
968 {
969 if ( yytoks[yy_i].t_val == yychar )
970 break;
971 }
972 (void)printf( "%s\n", yytoks[yy_i].t_name );
973 }
974 }
975#endif /* YYDEBUG */
976 if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
977 goto yydefault;
978 if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
979 {
980 yychar = -1;
981 yyval = yylval;
982 yy_state = yy_n;
983 if ( yyerrflag > 0 )
984 yyerrflag--;
985 goto yy_stack;
986 }
987
988 yydefault:
989 if ( ( yy_n = yydef[ yy_state ] ) == -2 )
990 {
991#if YYDEBUG
992 yytmp = yychar < 0;
993#endif
994 if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
995 yychar = 0; /* reached EOF */
996#if YYDEBUG
997 if ( yydebug && yytmp )
998 {
999 register int yy_i;
1000
1001 (void)printf( "Received token " );
1002 if ( yychar == 0 )
1003 (void)printf( "end-of-file\n" );
1004 else if ( yychar < 0 )
1005 (void)printf( "-none-\n" );
1006 else
1007 {
1008 for ( yy_i = 0;
1009 yytoks[yy_i].t_val >= 0;
1010 yy_i++ )
1011 {
1012 if ( yytoks[yy_i].t_val
1013 == yychar )
1014 {
1015 break;
1016 }
1017 }
1018 (void)printf( "%s\n", yytoks[yy_i].t_name );
1019 }
1020 }
1021#endif /* YYDEBUG */
1022 /*
1023 ** look through exception table
1024 */
1025 {
1026 register int *yyxi = yyexca;
1027
1028 while ( ( *yyxi != -1 ) ||
1029 ( yyxi[1] != yy_state ) )
1030 {
1031 yyxi += 2;
1032 }
1033 while ( ( *(yyxi += 2) >= 0 ) &&
1034 ( *yyxi != yychar ) )
1035 ;
1036 if ( ( yy_n = yyxi[1] ) < 0 )
1037 YYACCEPT;
1038 }
1039 }
1040
1041 /*
1042 ** check for syntax error
1043 */
1044 if ( yy_n == 0 ) /* have an error */
1045 {
1046 /* no worry about speed here! */
1047 switch ( yyerrflag )
1048 {
1049 case 0: /* new error */
1050 yyerror( "syntax error" );
1051 goto skip_init;
1052 yyerrlab:
1053 /*
1054 ** get globals into registers.
1055 ** we have a user generated syntax type error
1056 */
1057 yy_pv = yypv;
1058 yy_ps = yyps;
1059 yy_state = yystate;
1060 yynerrs++;
1061 skip_init:
1062 case 1:
1063 case 2: /* incompletely recovered error */
1064 /* try again... */
1065 yyerrflag = 3;
1066 /*
1067 ** find state where "error" is a legal
1068 ** shift action
1069 */
1070 while ( yy_ps >= yys )
1071 {
1072 yy_n = yypact[ *yy_ps ] + YYERRCODE;
1073 if ( yy_n >= 0 && yy_n < YYLAST &&
1074 yychk[yyact[yy_n]] == YYERRCODE) {
1075 /*
1076 ** simulate shift of "error"
1077 */
1078 yy_state = yyact[ yy_n ];
1079 goto yy_stack;
1080 }
1081 /*
1082 ** current state has no shift on
1083 ** "error", pop stack
1084 */
1085#if YYDEBUG
1086# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
1087 if ( yydebug )
1088 (void)printf( _POP_, *yy_ps,
1089 yy_ps[-1] );
1090# undef _POP_
1091#endif
1092 yy_ps--;
1093 yy_pv--;
1094 }
1095 /*
1096 ** there is no state on stack with "error" as
1097 ** a valid shift. give up.
1098 */
1099 YYABORT;
1100 case 3: /* no shift yet; eat a token */
1101#if YYDEBUG
1102 /*
1103 ** if debugging, look up token in list of
1104 ** pairs. 0 and negative shouldn't occur,
1105 ** but since timing doesn't matter when
1106 ** debugging, it doesn't hurt to leave the
1107 ** tests here.
1108 */
1109 if ( yydebug )
1110 {
1111 register int yy_i;
1112
1113 (void)printf( "Error recovery discards " );
1114 if ( yychar == 0 )
1115 (void)printf( "token end-of-file\n" );
1116 else if ( yychar < 0 )
1117 (void)printf( "token -none-\n" );
1118 else
1119 {
1120 for ( yy_i = 0;
1121 yytoks[yy_i].t_val >= 0;
1122 yy_i++ )
1123 {
1124 if ( yytoks[yy_i].t_val
1125 == yychar )
1126 {
1127 break;
1128 }
1129 }
1130 (void)printf( "token %s\n",
1131 yytoks[yy_i].t_name );
1132 }
1133 }
1134#endif /* YYDEBUG */
1135 if ( yychar == 0 ) /* reached EOF. quit */
1136 YYABORT;
1137 yychar = -1;
1138 goto yy_newstate;
1139 }
1140 }/* end if ( yy_n == 0 ) */
1141 /*
1142 ** reduction by production yy_n
1143 ** put stack tops, etc. so things right after switch
1144 */
1145#if YYDEBUG
1146 /*
1147 ** if debugging, print the string that is the user's
1148 ** specification of the reduction which is just about
1149 ** to be done.
1150 */
1151 if ( yydebug )
1152 (void)printf( "Reduce by (%d) \"%s\"\n",
1153 yy_n, yyreds[ yy_n ] );
1154#endif
1155 yytmp = yy_n; /* value to switch over */
1156 yypvt = yy_pv; /* $vars top of value stack */
1157 /*
1158 ** Look in goto table for next state
1159 ** Sorry about using yy_state here as temporary
1160 ** register variable, but why not, if it works...
1161 ** If yyr2[ yy_n ] doesn't have the low order bit
1162 ** set, then there is no action to be done for
1163 ** this reduction. So, no saving & unsaving of
1164 ** registers done. The only difference between the
1165 ** code just after the if and the body of the if is
1166 ** the goto yy_stack in the body. This way the test
1167 ** can be made before the choice of what to do is needed.
1168 */
1169 {
1170 /* length of production doubled with extra bit */
1171 register int yy_len = yyr2[ yy_n ];
1172
1173 if ( !( yy_len & 01 ) )
1174 {
1175 yy_len >>= 1;
1176 yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
1177 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1178 *( yy_ps -= yy_len ) + 1;
1179 if ( yy_state >= YYLAST ||
1180 yychk[ yy_state =
1181 yyact[ yy_state ] ] != -yy_n )
1182 {
1183 yy_state = yyact[ yypgo[ yy_n ] ];
1184 }
1185 goto yy_stack;
1186 }
1187 yy_len >>= 1;
1188 yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
1189 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1190 *( yy_ps -= yy_len ) + 1;
1191 if ( yy_state >= YYLAST ||
1192 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
1193 {
1194 yy_state = yyact[ yypgo[ yy_n ] ];
1195 }
1196 }
1197 /* save until reenter driver code */
1198 yystate = yy_state;
1199 yyps = yy_ps;
1200 yypv = yy_pv;
1201 }
1202 /*
1203 ** code supplied by user is placed in this switch
1204 */
1205 switch( yytmp )
1206 {
1207
1208case 1:
1209# line 60 "a2p.y"
1210{ root = oper4(OPROG,yypvt[-1],begins,yypvt[-0],ends); } break;
1211case 2:
1212# line 64 "a2p.y"
1213{ begins = oper4(OJUNK,begins,yypvt[-3],yypvt[-2],yypvt[-0]); in_begin = FALSE;
1214 yyval = Nullop; } break;
1215case 3:
1216# line 69 "a2p.y"
1217{ ends = oper3(OJUNK,ends,yypvt[-2],yypvt[-1]); yyval = Nullop; } break;
1218case 4:
1219# line 71 "a2p.y"
1220{ yyval = yypvt[-1]; } break;
1221case 5:
1222# line 75 "a2p.y"
1223{ yyval = oper3(OHUNKS,yypvt[-2],yypvt[-1],yypvt[-0]); } break;
1224case 6:
1225# line 77 "a2p.y"
1226{ yyval = Nullop; } break;
1227case 7:
1228# line 81 "a2p.y"
1229{ yyval = oper1(OHUNK,yypvt[-0]); need_entire = TRUE; } break;
1230case 8:
1231# line 83 "a2p.y"
1232{ yyval = oper2(OHUNK,yypvt[-4],oper2(OJUNK,yypvt[-2],yypvt[-1])); } break;
1233case 9:
1234# line 85 "a2p.y"
1235{ fixfargs(yypvt[-8],yypvt[-6],0); yyval = oper5(OUSERDEF,yypvt[-8],yypvt[-6],yypvt[-4],yypvt[-2],yypvt[-1]); } break;
1236case 10:
1237# line 87 "a2p.y"
1238{ yyval = oper2(OHUNK,Nullop,oper2(OJUNK,yypvt[-2],yypvt[-1])); } break;
1239case 13:
1240# line 93 "a2p.y"
1241{ yyval = rememberargs(yyval); } break;
1242case 14:
1243# line 97 "a2p.y"
1244{ yyval = oper1(OPAT,yypvt[-0]); } break;
1245case 15:
1246# line 99 "a2p.y"
1247{ yyval = oper2(ORANGE,yypvt[-2],yypvt[-0]); } break;
1248case 20:
1249# line 110 "a2p.y"
1250{ yyval = oper1(OCPAREN,yypvt[-1]); } break;
1251case 21:
1252# line 112 "a2p.y"
1253{ yyval = oper3(OCANDAND,yypvt[-3],yypvt[-1],yypvt[-0]); } break;
1254case 22:
1255# line 114 "a2p.y"
1256{ yyval = oper3(OCOROR,yypvt[-3],yypvt[-1],yypvt[-0]); } break;
1257case 23:
1258# line 116 "a2p.y"
1259{ yyval = oper1(OCNOT,yypvt[-0]); } break;
1260case 24:
1261# line 120 "a2p.y"
1262{ yyval = oper3(ORELOP,yypvt[-1],yypvt[-2],yypvt[-0]); } break;
1263case 25:
1264# line 122 "a2p.y"
1265{ yyval = oper3(ORELOP,string(">",1),yypvt[-2],yypvt[-0]); } break;
1266case 26:
1267# line 124 "a2p.y"
1268{ yyval = oper3(ORELOP,string("<",1),yypvt[-2],yypvt[-0]); } break;
1269case 27:
1270# line 126 "a2p.y"
1271{ yyval = oper1(ORPAREN,yypvt[-1]); } break;
1272case 28:
1273# line 130 "a2p.y"
1274{ yyval = oper3(OMATCHOP,yypvt[-1],yypvt[-2],yypvt[-0]); } break;
1275case 29:
1276# line 132 "a2p.y"
1277{ yyval = oper3(OMATCHOP,yypvt[-1],yypvt[-2],oper1(OREGEX,yypvt[-0])); } break;
1278case 30:
1279# line 134 "a2p.y"
1280{ yyval = oper1(OREGEX,yypvt[-0]); } break;
1281case 31:
1282# line 136 "a2p.y"
1283{ yyval = oper1(OMPAREN,yypvt[-1]); } break;
1284case 32:
1285# line 140 "a2p.y"
1286{ yyval = yypvt[-0]; } break;
1287case 33:
1288# line 142 "a2p.y"
1289{ yyval = oper2(OCONCAT,yypvt[-1],yypvt[-0]); } break;
1290case 34:
1291# line 144 "a2p.y"
1292{ yyval = oper3(OASSIGN,yypvt[-1],yypvt[-2],yypvt[-0]);
1293 if ((ops[yypvt[-2]].ival & 255) == OFLD)
1294 lval_field = TRUE;
1295 if ((ops[yypvt[-2]].ival & 255) == OVFLD)
1296 lval_field = TRUE;
1297 } break;
1298case 35:
1299# line 153 "a2p.y"
1300{ yyval = yypvt[-0]; } break;
1301case 36:
1302# line 155 "a2p.y"
1303{ yyval = oper1(ONUM,yypvt[-0]); } break;
1304case 37:
1305# line 157 "a2p.y"
1306{ yyval = oper1(OSTR,yypvt[-0]); } break;
1307case 38:
1308# line 159 "a2p.y"
1309{ yyval = oper2(OADD,yypvt[-2],yypvt[-0]); } break;
1310case 39:
1311# line 161 "a2p.y"
1312{ yyval = oper2(OSUBTRACT,yypvt[-2],yypvt[-0]); } break;
1313case 40:
1314# line 163 "a2p.y"
1315{ yyval = oper2(OMULT,yypvt[-2],yypvt[-0]); } break;
1316case 41:
1317# line 165 "a2p.y"
1318{ yyval = oper2(ODIV,yypvt[-2],yypvt[-0]); } break;
1319case 42:
1320# line 167 "a2p.y"
1321{ yyval = oper2(OMOD,yypvt[-2],yypvt[-0]); } break;
1322case 43:
1323# line 169 "a2p.y"
1324{ yyval = oper2(OPOW,yypvt[-2],yypvt[-0]); } break;
1325case 44:
1326# line 171 "a2p.y"
1327{ yyval = oper2(ODEFINED,aryrefarg(yypvt[-0]),yypvt[-2]); } break;
1328case 45:
1329# line 173 "a2p.y"
1330{ yyval = oper3(OCOND,yypvt[-4],yypvt[-2],yypvt[-0]); } break;
1331case 46:
1332# line 175 "a2p.y"
1333{ yyval = oper1(OPOSTINCR,yypvt[-1]); } break;
1334case 47:
1335# line 177 "a2p.y"
1336{ yyval = oper1(OPOSTDECR,yypvt[-1]); } break;
1337case 48:
1338# line 179 "a2p.y"
1339{ yyval = oper1(OPREINCR,yypvt[-0]); } break;
1340case 49:
1341# line 181 "a2p.y"
1342{ yyval = oper1(OPREDECR,yypvt[-0]); } break;
1343case 50:
1344# line 183 "a2p.y"
1345{ yyval = oper1(OUMINUS,yypvt[-0]); } break;
1346case 51:
1347# line 185 "a2p.y"
1348{ yyval = oper1(OUPLUS,yypvt[-0]); } break;
1349case 52:
1350# line 187 "a2p.y"
1351{ yyval = oper1(OPAREN,yypvt[-1]); } break;
1352case 53:
1353# line 189 "a2p.y"
1354{ yyval = oper0(OGETLINE); } break;
1355case 54:
1356# line 191 "a2p.y"
1357{ yyval = oper1(OGETLINE,yypvt[-0]); } break;
1358case 55:
1359# line 193 "a2p.y"
1360{ yyval = oper3(OGETLINE,Nullop,string("<",1),yypvt[-0]);
1361 if (ops[yypvt[-0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1362case 56:
1363# line 196 "a2p.y"
1364{ yyval = oper3(OGETLINE,yypvt[-2],string("<",1),yypvt[-0]);
1365 if (ops[yypvt[-0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1366case 57:
1367# line 199 "a2p.y"
1368{ yyval = oper3(OGETLINE,Nullop,string("|",1),yypvt[-2]);
1369 if (ops[yypvt[-2]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1370case 58:
1371# line 202 "a2p.y"
1372{ yyval = oper3(OGETLINE,yypvt[-0],string("|",1),yypvt[-3]);
1373 if (ops[yypvt[-3]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1374case 59:
1375# line 205 "a2p.y"
1376{ yyval = oper0(yypvt[-0]); need_entire = do_chop = TRUE; } break;
1377case 60:
1378# line 207 "a2p.y"
1379{ yyval = oper1(yypvt[-2],Nullop); need_entire = do_chop = TRUE; } break;
1380case 61:
1381# line 209 "a2p.y"
1382{ yyval = oper1(yypvt[-3],yypvt[-1]); } break;
1383case 62:
1384# line 211 "a2p.y"
1385{ yyval = oper1(yypvt[-3],yypvt[-1]); } break;
1386case 63:
1387# line 213 "a2p.y"
1388{ yyval = oper2(OUSERFUN,yypvt[-3],yypvt[-1]); } break;
1389case 64:
1390# line 215 "a2p.y"
1391{ yyval = oper1(OSPRINTF,yypvt[-0]); } break;
1392case 65:
1393# line 217 "a2p.y"
1394{ yyval = oper3(OSUBSTR,yypvt[-5],yypvt[-3],yypvt[-1]); } break;
1395case 66:
1396# line 219 "a2p.y"
1397{ yyval = oper2(OSUBSTR,yypvt[-3],yypvt[-1]); } break;
1398case 67:
1399# line 221 "a2p.y"
1400{ yyval = oper3(OSPLIT,yypvt[-5],aryrefarg(numary(yypvt[-3])),yypvt[-1]); } break;
1401case 68:
1402# line 223 "a2p.y"
1403{ yyval = oper3(OSPLIT,yypvt[-5],aryrefarg(numary(yypvt[-3])),oper1(OREGEX,yypvt[-1]));} break;
1404case 69:
1405# line 225 "a2p.y"
1406{ yyval = oper2(OSPLIT,yypvt[-3],aryrefarg(numary(yypvt[-1]))); } break;
1407case 70:
1408# line 227 "a2p.y"
1409{ yyval = oper2(OINDEX,yypvt[-3],yypvt[-1]); } break;
1410case 71:
1411# line 229 "a2p.y"
1412{ yyval = oper2(OMATCH,yypvt[-3],oper1(OREGEX,yypvt[-1])); } break;
1413case 72:
1414# line 231 "a2p.y"
1415{ yyval = oper2(OMATCH,yypvt[-3],yypvt[-1]); } break;
1416case 73:
1417# line 233 "a2p.y"
1418{ yyval = oper2(OSUB,yypvt[-3],yypvt[-1]); } break;
1419case 74:
1420# line 235 "a2p.y"
1421{ yyval = oper2(OSUB,oper1(OREGEX,yypvt[-3]),yypvt[-1]); } break;
1422case 75:
1423# line 237 "a2p.y"
1424{ yyval = oper2(OGSUB,yypvt[-3],yypvt[-1]); } break;
1425case 76:
1426# line 239 "a2p.y"
1427{ yyval = oper2(OGSUB,oper1(OREGEX,yypvt[-3]),yypvt[-1]); } break;
1428case 77:
1429# line 241 "a2p.y"
1430{ yyval = oper3(OSUB,yypvt[-5],yypvt[-3],yypvt[-1]); } break;
1431case 78:
1432# line 243 "a2p.y"
1433{ yyval = oper3(OSUB,oper1(OREGEX,yypvt[-5]),yypvt[-3],yypvt[-1]); } break;
1434case 79:
1435# line 245 "a2p.y"
1436{ yyval = oper3(OGSUB,yypvt[-5],yypvt[-3],yypvt[-1]); } break;
1437case 80:
1438# line 247 "a2p.y"
1439{ yyval = oper3(OGSUB,oper1(OREGEX,yypvt[-5]),yypvt[-3],yypvt[-1]); } break;
1440case 81:
1441# line 251 "a2p.y"
1442{ yyval = oper1(OVAR,yypvt[-0]); } break;
1443case 82:
1444# line 253 "a2p.y"
1445{ yyval = oper2(OVAR,aryrefarg(yypvt[-3]),yypvt[-1]); } break;
1446case 83:
1447# line 255 "a2p.y"
1448{ yyval = oper1(OFLD,yypvt[-0]); } break;
1449case 84:
1450# line 257 "a2p.y"
1451{ yyval = oper1(OVFLD,yypvt[-0]); } break;
1452case 87:
1453# line 264 "a2p.y"
1454{ yyval = Nullop; } break;
1455case 88:
1456# line 268 "a2p.y"
1457{ yyval = oper3(OCOMMA,yypvt[-3],yypvt[-1],yypvt[-0]); } break;
1458case 89:
1459# line 270 "a2p.y"
1460{ yyval = oper3(OCOMMA,yypvt[-3],yypvt[-1],yypvt[-0]); } break;
1461case 90:
1462# line 272 "a2p.y"
1463{ yyval = yypvt[-1]; } break;
1464case 91:
1465# line 276 "a2p.y"
1466{ yyval = oper2(OJUNK,yypvt[-1],yypvt[-0]); } break;
1467case 92:
1468# line 278 "a2p.y"
1469{ yyval = Nullop; } break;
1470case 93:
1471# line 282 "a2p.y"
1472{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break;
1473case 94:
1474# line 284 "a2p.y"
1475{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } break;
1476case 95:
1477# line 286 "a2p.y"
1478{ yyval = oper0(ONEWLINE); } break;
1479case 96:
1480# line 288 "a2p.y"
1481{ yyval = oper1(OCOMMENT,yypvt[-0]); } break;
1482case 97:
1483# line 292 "a2p.y"
1484{ yyval = oper2(OJUNK,yypvt[-1],yypvt[-0]); } break;
1485case 98:
1486# line 294 "a2p.y"
1487{ yyval = Nullop; } break;
1488case 99:
1489# line 298 "a2p.y"
1490{ yyval = oper0(ONEWLINE); } break;
1491case 100:
1492# line 300 "a2p.y"
1493{ yyval = oper1(OCOMMENT,yypvt[-0]); } break;
1494case 101:
1495# line 305 "a2p.y"
1496{ yyval = oper2(OJUNK,oper0(OSEMICOLON),yypvt[-0]); } break;
1497case 102:
1498# line 307 "a2p.y"
1499{ yyval = oper2(OJUNK,oper0(OSNEWLINE),yypvt[-0]); } break;
1500case 103:
1501# line 309 "a2p.y"
1502{ yyval = oper2(OJUNK,oper0(OSNEWLINE),yypvt[-0]); } break;
1503case 104:
1504# line 311 "a2p.y"
1505{ yyval = oper2(OJUNK,oper1(OSCOMMENT,yypvt[-1]),yypvt[-0]); } break;
1506case 105:
1507# line 315 "a2p.y"
1508{ yyval = oper2(OSTATES,yypvt[-1],yypvt[-0]); } break;
1509case 106:
1510# line 317 "a2p.y"
1511{ yyval = Nullop; } break;
1512case 107:
1513# line 322 "a2p.y"
1514{ yyval = oper2(OJUNK,oper2(OSTATE,yypvt[-2],yypvt[-1]),yypvt[-0]); } break;
1515case 108:
1516# line 324 "a2p.y"
1517{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSEMICOLON),yypvt[-0])); } break;
1518case 109:
1519# line 326 "a2p.y"
1520{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSNEWLINE),yypvt[-0])); } break;
1521case 112:
1522# line 332 "a2p.y"
1523{ yyval = Nullop; } break;
1524case 114:
1525# line 338 "a2p.y"
1526{ yyval = oper3(OPRINT,yypvt[-2],yypvt[-1],yypvt[-0]);
1527 do_opens = TRUE;
1528 saw_ORS = saw_OFS = TRUE;
1529 if (!yypvt[-2]) need_entire = TRUE;
1530 if (ops[yypvt[-0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1531case 115:
1532# line 344 "a2p.y"
1533{ yyval = oper1(OPRINT,yypvt[-0]);
1534 if (!yypvt[-0]) need_entire = TRUE;
1535 saw_ORS = saw_OFS = TRUE;
1536 } break;
1537case 116:
1538# line 349 "a2p.y"
1539{ yyval = oper3(OPRINTF,yypvt[-2],yypvt[-1],yypvt[-0]);
1540 do_opens = TRUE;
1541 if (!yypvt[-2]) need_entire = TRUE;
1542 if (ops[yypvt[-0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } break;
1543case 117:
1544# line 354 "a2p.y"
1545{ yyval = oper1(OPRINTF,yypvt[-0]);
1546 if (!yypvt[-0]) need_entire = TRUE;
1547 } break;
1548case 118:
1549# line 358 "a2p.y"
1550{ yyval = oper0(OBREAK); } break;
1551case 119:
1552# line 360 "a2p.y"
1553{ yyval = oper0(ONEXT); } break;
1554case 120:
1555# line 362 "a2p.y"
1556{ yyval = oper0(OEXIT); } break;
1557case 121:
1558# line 364 "a2p.y"
1559{ yyval = oper1(OEXIT,yypvt[-0]); } break;
1560case 122:
1561# line 366 "a2p.y"
1562{ yyval = oper0(OCONTINUE); } break;
1563case 123:
1564# line 368 "a2p.y"
1565{ yyval = oper0(ORETURN); } break;
1566case 124:
1567# line 370 "a2p.y"
1568{ yyval = oper1(ORETURN,yypvt[-0]); } break;
1569case 125:
1570# line 372 "a2p.y"
1571{ yyval = oper2(ODELETE,aryrefarg(yypvt[-3]),yypvt[-1]); } break;
1572case 126:
1573# line 376 "a2p.y"
1574{ yyval = oper1(OREDIR,string(">",1)); } break;
1575case 127:
1576# line 378 "a2p.y"
1577{ yyval = oper1(OREDIR,string(">>",2)); } break;
1578case 128:
1579# line 380 "a2p.y"
1580{ yyval = oper1(OREDIR,string("|",1)); } break;
1581case 129:
1582# line 385 "a2p.y"
1583{ yyval = oper2(OIF,yypvt[-3],bl(yypvt[-0],yypvt[-1])); } break;
1584case 130:
1585# line 387 "a2p.y"
1586{ yyval = oper3(OIF,yypvt[-6],bl(yypvt[-3],yypvt[-4]),bl(yypvt[-0],yypvt[-1])); } break;
1587case 131:
1588# line 389 "a2p.y"
1589{ yyval = oper2(OWHILE,yypvt[-3],bl(yypvt[-0],yypvt[-1])); } break;
1590case 132:
1591# line 391 "a2p.y"
1592{ yyval = oper2(ODO,bl(yypvt[-4],yypvt[-5]),yypvt[-1]); } break;
1593case 133:
1594# line 393 "a2p.y"
1595{ yyval = oper4(OFOR,yypvt[-7],yypvt[-5],yypvt[-3],bl(yypvt[-0],yypvt[-1])); } break;
1596case 134:
1597# line 395 "a2p.y"
1598{ yyval = oper4(OFOR,yypvt[-6],string("",0),yypvt[-3],bl(yypvt[-0],yypvt[-1])); } break;
1599case 135:
1600# line 397 "a2p.y"
1601{ yyval = oper2(OFORIN,yypvt[-3],bl(yypvt[-0],yypvt[-1])); } break;
1602case 136:
1603# line 399 "a2p.y"
1604{ yyval = oper3(OBLOCK,oper2(OJUNK,yypvt[-3],yypvt[-2]),Nullop,yypvt[-0]); } break;
1605 }
1606 goto yystack; /* reset registers in driver code */
1607}