1
by James Troup
Import upstream version 1.3.3 |
1 |
#ifndef lint
|
2 |
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) modified 12/17/94"; |
|
3 |
#endif
|
|
4 |
#define YYBYACC_M 1
|
|
5 |
#define YYMAJOR 1
|
|
6 |
#define YYMINOR 9
|
|
7 |
#define yyclearin (yychar=(-1))
|
|
8 |
#define yyerrok (yyerrflag=0)
|
|
9 |
#define YYRECOVERING (yyerrflag!=0)
|
|
10 |
#define YYPREFIX "yy"
|
|
11 |
#line 80 "parse.y"
|
|
12 |
#include <stdio.h> |
|
13 |
#include "mawk.h" |
|
14 |
#include "symtype.h" |
|
15 |
#include "code.h" |
|
16 |
#include "memory.h" |
|
17 |
#include "bi_funct.h" |
|
18 |
#include "bi_vars.h" |
|
19 |
#include "jmp.h" |
|
20 |
#include "field.h" |
|
21 |
#include "files.h" |
|
22 |
||
23 |
||
24 |
#define YYMAXDEPTH 200
|
|
25 |
||
26 |
||
27 |
extern void PROTO( eat_nl, (void) ) ; |
|
28 |
static void PROTO( resize_fblock, (FBLOCK *) ) ; |
|
29 |
static void PROTO( switch_code_to_main, (void)) ; |
|
30 |
static void PROTO( code_array, (SYMTAB *) ) ; |
|
31 |
static void PROTO( code_call_id, (CA_REC *, SYMTAB *) ) ; |
|
32 |
static void PROTO( field_A2I, (void)) ; |
|
33 |
static void PROTO( check_var, (SYMTAB *) ) ; |
|
34 |
static void PROTO( check_array, (SYMTAB *) ) ; |
|
35 |
static void PROTO( RE_as_arg, (void)) ; |
|
36 |
||
37 |
static int scope ; |
|
38 |
static FBLOCK *active_funct ; |
|
39 |
/* when scope is SCOPE_FUNCT */
|
|
40 |
||
41 |
#define code_address(x) if( is_local(x) ) \
|
|
42 |
code2op(L_PUSHA, (x)->offset) ;\
|
|
43 |
else code2(_PUSHA, (x)->stval.cp)
|
|
44 |
||
45 |
#define CDP(x) (code_base+(x))
|
|
46 |
/* WARNING: These CDP() calculations become invalid after calls
|
|
47 |
that might change code_base. Which are: code2(), code2op(),
|
|
48 |
code_jmp() and code_pop().
|
|
49 |
*/
|
|
50 |
||
51 |
/* this nonsense caters to MSDOS large model */
|
|
52 |
#define CODE_FE_PUSHA() code_ptr->ptr = (PTR) 0 ; code1(FE_PUSHA)
|
|
53 |
||
54 |
#line 124 "parse.y"
|
|
55 |
typedef union{ |
|
56 |
CELL *cp ; |
|
57 |
SYMTAB *stp ; |
|
58 |
int start ; /* code starting address as offset from code_base */ |
|
59 |
PF_CP fp ; /* ptr to a (print/printf) or (sub/gsub) function */ |
|
60 |
BI_REC *bip ; /* ptr to info about a builtin */ |
|
61 |
FBLOCK *fbp ; /* ptr to a function block */ |
|
62 |
ARG2_REC *arg2p ; |
|
63 |
CA_REC *ca_p ; |
|
64 |
int ival ; |
|
65 |
PTR ptr ; |
|
66 |
} YYSTYPE; |
|
67 |
#line 68 "y.tab.c"
|
|
68 |
#define UNEXPECTED 257
|
|
69 |
#define BAD_DECIMAL 258
|
|
70 |
#define NL 259
|
|
71 |
#define SEMI_COLON 260
|
|
72 |
#define LBRACE 261
|
|
73 |
#define RBRACE 262
|
|
74 |
#define LBOX 263
|
|
75 |
#define RBOX 264
|
|
76 |
#define COMMA 265
|
|
77 |
#define IO_OUT 266
|
|
78 |
#define ASSIGN 267
|
|
79 |
#define ADD_ASG 268
|
|
80 |
#define SUB_ASG 269
|
|
81 |
#define MUL_ASG 270
|
|
82 |
#define DIV_ASG 271
|
|
83 |
#define MOD_ASG 272
|
|
84 |
#define POW_ASG 273
|
|
85 |
#define QMARK 274
|
|
86 |
#define COLON 275
|
|
87 |
#define OR 276
|
|
88 |
#define AND 277
|
|
89 |
#define IN 278
|
|
90 |
#define MATCH 279
|
|
91 |
#define EQ 280
|
|
92 |
#define NEQ 281
|
|
93 |
#define LT 282
|
|
94 |
#define LTE 283
|
|
95 |
#define GT 284
|
|
96 |
#define GTE 285
|
|
97 |
#define CAT 286
|
|
98 |
#define GETLINE 287
|
|
99 |
#define PLUS 288
|
|
100 |
#define MINUS 289
|
|
101 |
#define MUL 290
|
|
102 |
#define DIV 291
|
|
103 |
#define MOD 292
|
|
104 |
#define NOT 293
|
|
105 |
#define UMINUS 294
|
|
106 |
#define IO_IN 295
|
|
107 |
#define PIPE 296
|
|
108 |
#define POW 297
|
|
109 |
#define INC_or_DEC 298
|
|
110 |
#define DOLLAR 299
|
|
111 |
#define FIELD 300
|
|
112 |
#define LPAREN 301
|
|
113 |
#define RPAREN 302
|
|
114 |
#define DOUBLE 303
|
|
115 |
#define STRING_ 304
|
|
116 |
#define RE 305
|
|
117 |
#define ID 306
|
|
118 |
#define D_ID 307
|
|
119 |
#define FUNCT_ID 308
|
|
120 |
#define BUILTIN 309
|
|
121 |
#define LENGTH 310
|
|
122 |
#define PRINT 311
|
|
123 |
#define PRINTF 312
|
|
124 |
#define SPLIT 313
|
|
125 |
#define MATCH_FUNC 314
|
|
126 |
#define SUB 315
|
|
127 |
#define GSUB 316
|
|
128 |
#define DO 317
|
|
129 |
#define WHILE 318
|
|
130 |
#define FOR 319
|
|
131 |
#define BREAK 320
|
|
132 |
#define CONTINUE 321
|
|
133 |
#define IF 322
|
|
134 |
#define ELSE 323
|
|
135 |
#define DELETE 324
|
|
136 |
#define BEGIN 325
|
|
137 |
#define END 326
|
|
138 |
#define EXIT 327
|
|
139 |
#define NEXT 328
|
|
140 |
#define RETURN 329
|
|
141 |
#define FUNCTION 330
|
|
142 |
#define YYERRCODE 256
|
|
143 |
short yylhs[] = { -1, |
|
144 |
0, 0, 36, 36, 36, 37, 40, 37, 41, 37, |
|
145 |
42, 37, 43, 44, 37, 1, 1, 2, 2, 3, |
|
146 |
3, 4, 4, 4, 4, 4, 4, 4, 4, 45, |
|
147 |
45, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
148 |
13, 13, 13, 13, 13, 13, 46, 13, 47, 13, |
|
149 |
48, 49, 13, 14, 14, 15, 15, 15, 15, 15, |
|
150 |
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
151 |
15, 15, 15, 15, 10, 25, 25, 26, 26, 8, |
|
152 |
8, 5, 4, 27, 27, 6, 6, 6, 7, 7, |
|
153 |
50, 50, 17, 4, 51, 4, 52, 4, 16, 4, |
|
154 |
4, 18, 18, 19, 19, 53, 53, 13, 13, 10, |
|
155 |
15, 15, 4, 4, 20, 4, 11, 11, 11, 11, |
|
156 |
11, 15, 13, 13, 13, 13, 13, 13, 13, 15, |
|
157 |
22, 54, 54, 15, 23, 4, 4, 21, 21, 15, |
|
158 |
15, 15, 15, 15, 55, 12, 12, 9, 9, 15, |
|
159 |
28, 28, 24, 24, 38, 29, 30, 30, 34, 34, |
|
160 |
35, 35, 39, 15, 31, 31, 32, 32, 32, 33, |
|
161 |
33, |
|
162 |
};
|
|
163 |
short yylen[] = { 2, |
|
164 |
1, 2, 1, 1, 2, 1, 0, 3, 0, 3, |
|
165 |
0, 3, 0, 0, 6, 3, 3, 1, 1, 1, |
|
166 |
2, 1, 2, 1, 2, 2, 2, 1, 2, 1, |
|
167 |
1, 1, 3, 3, 3, 3, 3, 3, 3, 3, |
|
168 |
3, 3, 3, 3, 3, 3, 0, 4, 0, 4, |
|
169 |
0, 0, 7, 1, 2, 1, 1, 1, 3, 1, |
|
170 |
3, 3, 3, 3, 3, 3, 2, 2, 2, 1, |
|
171 |
2, 2, 2, 2, 1, 0, 1, 1, 3, 5, |
|
172 |
1, 0, 5, 1, 1, 1, 3, 2, 3, 3, |
|
173 |
0, 2, 4, 2, 1, 4, 1, 7, 4, 2, |
|
174 |
4, 3, 4, 1, 2, 1, 2, 3, 5, 5, |
|
175 |
5, 6, 7, 3, 6, 2, 1, 2, 6, 2, |
|
176 |
3, 1, 3, 3, 3, 3, 3, 3, 3, 2, |
|
177 |
5, 1, 3, 6, 1, 2, 3, 2, 3, 1, |
|
178 |
2, 2, 3, 4, 1, 1, 1, 2, 3, 6, |
|
179 |
1, 1, 1, 3, 2, 4, 2, 2, 0, 1, |
|
180 |
1, 3, 1, 3, 2, 2, 1, 3, 3, 2, |
|
181 |
2, |
|
182 |
};
|
|
183 |
short yydefred[] = { 0, |
|
184 |
163, 0, 145, 0, 0, 0, 0, 0, 117, 0, |
|
185 |
56, 57, 60, 0, 82, 82, 81, 0, 0, 151, |
|
186 |
152, 7, 9, 0, 0, 6, 70, 0, 0, 0, |
|
187 |
0, 0, 0, 0, 0, 0, 0, 1, 3, 4, |
|
188 |
0, 0, 0, 30, 31, 84, 85, 97, 0, 0, |
|
189 |
0, 0, 0, 0, 0, 0, 0, 22, 0, 20, |
|
190 |
0, 0, 0, 0, 0, 28, 82, 24, 0, 0, |
|
191 |
0, 0, 0, 0, 0, 0, 0, 72, 74, 0, |
|
192 |
120, 0, 0, 0, 71, 0, 0, 0, 0, 0, |
|
193 |
0, 0, 157, 158, 2, 0, 0, 0, 0, 0, |
|
194 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
195 |
73, 13, 51, 47, 49, 0, 0, 0, 0, 0, |
|
196 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
197 |
0, 0, 0, 132, 130, 0, 155, 0, 5, 148, |
|
198 |
146, 147, 0, 17, 25, 0, 0, 26, 27, 0, |
|
199 |
0, 0, 136, 29, 0, 138, 0, 16, 21, 23, |
|
200 |
100, 0, 104, 0, 0, 116, 0, 0, 0, 0, |
|
201 |
0, 0, 0, 0, 0, 121, 0, 59, 0, 0, |
|
202 |
164, 0, 0, 0, 0, 8, 10, 0, 0, 0, |
|
203 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
204 |
0, 0, 0, 0, 0, 108, 0, 40, 41, 42, |
|
205 |
43, 44, 45, 18, 12, 19, 0, 0, 0, 0, |
|
206 |
0, 0, 0, 0, 0, 0, 161, 0, 0, 149, |
|
207 |
0, 102, 0, 0, 0, 0, 114, 137, 139, 95, |
|
208 |
0, 105, 106, 0, 0, 0, 0, 0, 86, 0, |
|
209 |
0, 0, 0, 0, 0, 0, 0, 0, 165, 0, |
|
210 |
0, 166, 0, 0, 0, 0, 0, 0, 0, 144, |
|
211 |
133, 0, 156, 0, 99, 0, 103, 93, 0, 96, |
|
212 |
107, 101, 88, 0, 0, 0, 0, 0, 0, 0, |
|
213 |
0, 109, 0, 169, 171, 168, 170, 80, 131, 0, |
|
214 |
0, 52, 0, 162, 0, 0, 0, 0, 83, 0, |
|
215 |
0, 0, 110, 119, 112, 134, 15, 0, 0, 153, |
|
216 |
150, 115, 0, 0, 0, 0, 113, 98, 154, |
|
217 |
};
|
|
218 |
short yydgoto[] = { 25, |
|
219 |
58, 215, 59, 60, 86, 247, 82, 27, 28, 29, |
|
220 |
30, 143, 61, 32, 33, 62, 63, 64, 165, 65, |
|
221 |
66, 34, 226, 321, 249, 250, 67, 35, 36, 37, |
|
222 |
181, 182, 262, 228, 229, 38, 39, 40, 41, 91, |
|
223 |
92, 124, 202, 301, 68, 204, 205, 203, 318, 286, |
|
224 |
241, 69, 245, 135, 42, |
|
225 |
};
|
|
226 |
short yysindex[] = { 36, |
|
227 |
0, 282, 0, 2247, 2247, 2247, -50, 2157, 0, 2277, |
|
228 |
0, 0, 0, -296, 0, 0, 0, -286, -250, 0, |
|
229 |
0, 0, 0, -245, 36, 0, 0, 2247, 2123, 2170, |
|
230 |
2551, 2247, 267, -257, -237, -188, -219, 0, 0, 0, |
|
231 |
-188, -31, -124, 0, 0, 0, 0, 0, -212, -204, |
|
232 |
-226, -226, -162, -165, 71, -226, 71, 0, 134, 0, |
|
233 |
2503, 356, 356, 1794, 356, 0, 0, 0, 356, 2277, |
|
234 |
-296, -152, -229, -229, -229, -114, 0, 0, 0, 0, |
|
235 |
0, -221, 2150, 2097, 0, -94, -122, -111, 2277, 2277, |
|
236 |
-188, -188, 0, 0, 0, -106, 2277, 2277, 2277, 2277, |
|
237 |
2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, |
|
238 |
0, 0, 0, 0, 0, -96, 2277, 2277, 2277, 2277, |
|
239 |
2277, 2277, 2277, -62, 267, 2247, 2247, 2247, 2247, 2247, |
|
240 |
-76, 2247, 2277, 0, 0, 2277, 0, -90, 0, 0, |
|
241 |
0, 0, -75, 0, 0, 2277, 1824, 0, 0, 2277, |
|
242 |
-226, 2503, 0, 0, 2503, 0, -226, 0, 0, 0, |
|
243 |
0, -79, 0, 2515, 2187, 0, 2307, -89, 2410, -51, |
|
244 |
-74, -17, -15, 2277, -26, 0, 2277, 0, 2277, -43, |
|
245 |
0, 2337, 2277, 2572, 2593, 0, 0, 2617, 2617, 2617, |
|
246 |
2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, |
|
247 |
2617, 2277, 2277, 2277, 2277, 0, 200, 0, 0, 0, |
|
248 |
0, 0, 0, 0, 0, 0, -83, -83, -229, -229, |
|
249 |
-229, -50, -106, 2422, 2617, -3, 0, -37, 2, 0, |
|
250 |
2437, 0, -266, 2530, 2449, 8, 0, 0, 0, 0, |
|
251 |
356, 0, 0, 2464, 356, 2217, 6, 2617, 0, 9, |
|
252 |
-25, 2277, 2277, 2277, 2617, -21, 2617, -187, 0, -243, |
|
253 |
2124, 0, -12, -19, 2277, 2617, 2605, 2626, 350, 0, |
|
254 |
0, 2277, 0, -11, 0, -10, 0, 0, 2277, 0, |
|
255 |
0, 0, 0, -218, 2277, -226, 2277, 2277, -179, -112, |
|
256 |
-109, 0, -4, 0, 0, 0, 0, 0, 0, 7, |
|
257 |
-62, 0, 2151, 0, 11, -105, -26, 2617, 0, 2617, |
|
258 |
2476, -4, 0, 0, 0, 0, 0, 2277, -50, 0, |
|
259 |
0, 0, -226, -226, 2617, 12, 0, 0, 0, |
|
260 |
};
|
|
261 |
short yyrindex[] = { 0, |
|
262 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
263 |
0, 0, 0, 601, 0, 0, 0, 0, 0, 0, |
|
264 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 1587, |
|
265 |
-59, -42, 1645, 0, 0, 0, 0, 0, 0, 0, |
|
266 |
0, 1413, 0, 0, 0, 0, 0, 0, 0, 0, |
|
267 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
268 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
269 |
543, 659, 891, 949, 1007, 0, 427, 0, 0, 485, |
|
270 |
0, 0, 1924, 0, 0, 0, 0, 0, 0, 0, |
|
271 |
0, 0, 0, 0, 0, 1065, 0, 0, 0, 0, |
|
272 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
273 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
274 |
0, 0, 0, 0, 1703, 0, 0, 0, 0, 0, |
|
275 |
0, 0, 0, 0, 0, 0, 0, 13, 0, 0, |
|
276 |
0, 0, 717, 0, 0, 0, 0, 0, 0, 0, |
|
277 |
28, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
278 |
0, 208, 0, 0, 0, 0, -206, 0, 0, 0, |
|
279 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 2367, |
|
280 |
0, 0, 15, 0, 0, 0, 0, 18, 41, 287, |
|
281 |
361, 1982, 1990, 2002, 2010, 2022, 2030, 2042, 2050, 2062, |
|
282 |
2070, 0, 0, 0, 0, 0, 139, 0, 0, 0, |
|
283 |
0, 0, 0, 0, 0, 0, 1471, 1529, 1123, 1181, |
|
284 |
1239, 1355, 775, 0, -170, 0, 0, 0, 19, 0, |
|
285 |
0, 0, 1760, 0, 0, 0, 0, 0, 0, 0, |
|
286 |
0, 0, 0, 0, 0, 0, -95, -172, 0, -223, |
|
287 |
0, 0, 0, 0, -169, 0, -125, 0, 0, 1878, |
|
288 |
0, 0, 0, 0, 0, -34, 0, -236, 213, 0, |
|
289 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
290 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
291 |
0, 0, 1297, 0, 0, 0, 0, 0, 0, 0, |
|
292 |
0, 0, 0, 0, 0, 0, -116, -78, 0, -71, |
|
293 |
0, 833, 0, 0, 0, 0, 0, 0, 0, 0, |
|
294 |
0, 0, 0, 0, 2082, 0, 0, 0, 0, |
|
295 |
};
|
|
296 |
short yygindex[] = { 0, |
|
297 |
21, -20, 0, -49, 3, 0, 52, 0, 0, -7, |
|
298 |
-1, -205, 1, 0, 44, 0, 0, 0, 0, 0, |
|
299 |
0, 0, 34, 0, 120, -137, 0, 0, 0, 0, |
|
300 |
0, 0, 0, 0, 0, 279, 0, 0, 0, 0, |
|
301 |
0, 0, 0, 0, 106, 0, 0, 0, 0, 0, |
|
302 |
0, 0, 0, 0, 0, |
|
303 |
};
|
|
304 |
#define YYTABLESIZE 2911
|
|
305 |
short yytable[] = { 78, |
|
306 |
31, 85, 72, 72, 72, 79, 72, 133, 83, 159, |
|
307 |
84, 276, 161, 162, 89, 166, 270, 87, 88, 168, |
|
308 |
26, 294, 48, 48, 48, 31, 72, 48, 48, 48, |
|
309 |
72, 85, 44, 45, 141, 77, 77, 48, 48, 48, |
|
310 |
142, 258, 77, 174, 134, 26, 174, 73, 74, 75, |
|
311 |
90, 81, 76, 76, 85, 152, 137, 155, 295, 76, |
|
312 |
93, 139, 94, 136, 164, 48, 131, 132, 83, 167, |
|
313 |
169, 96, 2, 170, 171, 125, 293, 287, 77, 172, |
|
314 |
175, 138, 173, 307, 312, 287, 78, 78, 146, 184, |
|
315 |
185, 78, 78, 78, 135, 90, 147, 188, 189, 190, |
|
316 |
191, 192, 193, 194, 195, 196, 197, 198, 199, 200, |
|
317 |
201, 186, 187, 326, 289, 290, 291, 207, 208, 209, |
|
318 |
210, 211, 212, 213, 72, 72, 72, 72, 72, 78, |
|
319 |
72, 135, 90, 224, 44, 45, 225, 144, 150, 89, |
|
320 |
151, 306, 87, 87, 214, 111, 231, 234, 145, 87, |
|
321 |
235, 313, 287, 236, 314, 287, 148, 149, 323, 287, |
|
322 |
153, 154, 156, 91, 91, 244, 160, 248, 179, 217, |
|
323 |
218, 219, 220, 221, 255, 223, 89, 257, 180, 248, |
|
324 |
92, 92, 261, 248, 8, 9, 76, 79, 79, 183, |
|
325 |
132, 280, 79, 79, 79, 282, 44, 45, 2, 11, |
|
326 |
11, 11, 266, 267, 268, 269, 128, 129, 130, 206, |
|
327 |
222, 252, 131, 132, 141, 227, 32, 32, 32, 230, |
|
328 |
142, 32, 32, 32, 14, 14, 14, 176, 251, 216, |
|
329 |
79, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
|
330 |
32, 32, 32, 240, 83, 253, 84, 254, 8, 9, |
|
331 |
76, 256, 248, 248, 248, 77, 237, 238, 259, 32, |
|
332 |
239, 272, 145, 140, 273, 225, 274, 8, 9, 76, |
|
333 |
279, 285, 303, 287, 77, 288, 33, 33, 33, 248, |
|
334 |
317, 33, 33, 33, 292, 308, 299, 310, 311, 298, |
|
335 |
82, 1, 33, 315, 304, 305, 2, 284, 300, 34, |
|
336 |
34, 34, 263, 95, 34, 34, 34, 0, 316, 0, |
|
337 |
0, 141, 322, 329, 159, 34, 76, 142, 325, 33, |
|
338 |
160, 214, 3, 4, 5, 0, 0, 0, 6, 44, |
|
339 |
45, 0, 0, 7, 8, 9, 10, 0, 11, 12, |
|
340 |
13, 14, 34, 15, 16, 17, 0, 0, 18, 19, |
|
341 |
20, 21, 0, 0, 0, 0, 0, 3, 4, 5, |
|
342 |
22, 23, 0, 6, 0, 24, 0, 0, 7, 8, |
|
343 |
9, 10, 0, 11, 12, 13, 14, 0, 15, 16, |
|
344 |
17, 0, 0, 18, 19, 20, 21, 0, 0, 157, |
|
345 |
0, 309, 44, 45, 2, 158, 0, 46, 46, 46, |
|
346 |
0, 0, 46, 46, 46, 0, 216, 0, 0, 0, |
|
347 |
0, 0, 46, 46, 46, 46, 46, 46, 0, 0, |
|
348 |
3, 4, 5, 0, 0, 0, 6, 0, 327, 328, |
|
349 |
0, 7, 8, 9, 10, 0, 11, 12, 13, 14, |
|
350 |
46, 15, 16, 17, 46, 47, 18, 19, 20, 21, |
|
351 |
48, 49, 50, 51, 52, 53, 0, 54, 0, 0, |
|
352 |
55, 56, 57, 94, 0, 0, 94, 94, 94, 94, |
|
353 |
0, 50, 50, 50, 0, 0, 50, 50, 50, 118, |
|
354 |
119, 120, 121, 122, 123, 0, 50, 50, 50, 50, |
|
355 |
0, 0, 0, 0, 94, 94, 94, 0, 0, 0, |
|
356 |
94, 0, 0, 0, 0, 94, 94, 94, 94, 0, |
|
357 |
94, 94, 94, 94, 50, 94, 94, 94, 94, 94, |
|
358 |
94, 94, 94, 94, 94, 94, 94, 94, 94, 94, |
|
359 |
0, 94, 0, 0, 94, 94, 94, 43, 0, 0, |
|
360 |
44, 45, 2, 0, 0, 35, 35, 35, 0, 0, |
|
361 |
35, 35, 35, 0, 126, 127, 128, 129, 130, 0, |
|
362 |
0, 35, 131, 132, 0, 0, 0, 0, 3, 4, |
|
363 |
5, 0, 0, 0, 6, 0, 0, 0, 0, 7, |
|
364 |
8, 9, 10, 0, 11, 12, 13, 14, 35, 15, |
|
365 |
16, 17, 46, 47, 18, 19, 20, 21, 48, 49, |
|
366 |
50, 51, 52, 53, 0, 54, 0, 0, 55, 56, |
|
367 |
57, 157, 0, 0, 44, 45, 2, 0, 0, 36, |
|
368 |
36, 36, 0, 0, 36, 36, 36, 116, 117, 118, |
|
369 |
119, 120, 121, 122, 123, 36, 0, 0, 0, 0, |
|
370 |
0, 0, 3, 4, 5, 0, 0, 0, 6, 0, |
|
371 |
0, 0, 0, 7, 8, 9, 10, 0, 11, 12, |
|
372 |
13, 14, 36, 15, 16, 17, 46, 47, 18, 19, |
|
373 |
20, 21, 48, 49, 50, 51, 52, 53, 0, 54, |
|
374 |
0, 0, 55, 56, 57, 75, 75, 75, 0, 82, |
|
375 |
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, |
|
376 |
75, 75, 75, 75, 75, 75, 75, 75, 75, 75, |
|
377 |
75, 75, 0, 75, 75, 75, 75, 75, 75, 75, |
|
378 |
0, 75, 75, 75, 75, 75, 75, 75, 75, 75, |
|
379 |
75, 75, 75, 0, 75, 75, 75, 0, 0, 75, |
|
380 |
75, 75, 75, 118, 118, 118, 0, 82, 118, 118, |
|
381 |
118, 118, 118, 118, 118, 118, 118, 118, 118, 118, |
|
382 |
118, 118, 118, 118, 118, 118, 118, 118, 118, 118, |
|
383 |
0, 118, 118, 118, 118, 118, 118, 118, 0, 118, |
|
384 |
118, 118, 118, 118, 118, 118, 118, 118, 118, 118, |
|
385 |
118, 0, 118, 118, 118, 0, 0, 118, 118, 118, |
|
386 |
118, 58, 58, 58, 0, 82, 58, 58, 58, 58, |
|
387 |
58, 58, 58, 58, 58, 58, 58, 58, 58, 58, |
|
388 |
58, 58, 58, 58, 58, 58, 58, 58, 0, 58, |
|
389 |
58, 58, 58, 58, 58, 58, 0, 58, 58, 58, |
|
390 |
0, 58, 58, 58, 58, 58, 58, 58, 58, 0, |
|
391 |
58, 58, 58, 0, 0, 58, 58, 58, 58, 58, |
|
392 |
58, 58, 0, 82, 58, 58, 58, 75, 75, 75, |
|
393 |
75, 75, 75, 75, 58, 58, 58, 58, 58, 58, |
|
394 |
58, 58, 58, 58, 58, 58, 0, 58, 58, 58, |
|
395 |
58, 58, 58, 58, 0, 0, 58, 58, 0, 58, |
|
396 |
58, 58, 58, 58, 58, 58, 58, 0, 58, 58, |
|
397 |
58, 0, 0, 58, 58, 58, 58, 122, 122, 122, |
|
398 |
0, 0, 122, 122, 122, 122, 122, 122, 122, 122, |
|
399 |
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, |
|
400 |
122, 122, 122, 122, 0, 122, 122, 122, 122, 122, |
|
401 |
122, 122, 0, 122, 122, 122, 0, 122, 122, 122, |
|
402 |
122, 122, 122, 122, 122, 0, 122, 122, 122, 0, |
|
403 |
0, 122, 122, 122, 122, 141, 141, 141, 0, 0, |
|
404 |
141, 141, 141, 141, 141, 141, 141, 141, 141, 141, |
|
405 |
141, 141, 141, 141, 141, 141, 141, 141, 141, 141, |
|
406 |
141, 141, 0, 141, 141, 141, 141, 141, 141, 141, |
|
407 |
0, 0, 141, 141, 141, 141, 141, 141, 141, 141, |
|
408 |
141, 141, 141, 0, 141, 141, 141, 0, 0, 141, |
|
409 |
141, 141, 141, 66, 66, 66, 0, 0, 66, 66, |
|
410 |
66, 66, 66, 66, 66, 66, 66, 66, 66, 66, |
|
411 |
66, 66, 66, 66, 66, 66, 66, 66, 66, 66, |
|
412 |
0, 66, 66, 66, 66, 66, 66, 66, 0, 66, |
|
413 |
66, 0, 66, 66, 66, 66, 66, 66, 66, 66, |
|
414 |
66, 0, 66, 66, 66, 0, 0, 66, 66, 66, |
|
415 |
66, 111, 111, 111, 0, 0, 111, 111, 111, 111, |
|
416 |
111, 111, 111, 111, 111, 111, 111, 111, 111, 111, |
|
417 |
111, 111, 111, 111, 111, 111, 111, 111, 0, 111, |
|
418 |
111, 111, 111, 111, 111, 111, 0, 111, 111, 111, |
|
419 |
0, 111, 111, 111, 111, 111, 111, 111, 111, 0, |
|
420 |
111, 111, 111, 0, 0, 111, 111, 111, 111, 68, |
|
421 |
68, 68, 0, 0, 68, 68, 68, 68, 68, 68, |
|
422 |
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, |
|
423 |
68, 68, 68, 68, 68, 68, 0, 68, 68, 68, |
|
424 |
68, 68, 68, 68, 0, 68, 0, 0, 68, 68, |
|
425 |
68, 68, 68, 68, 68, 68, 68, 0, 68, 68, |
|
426 |
68, 0, 0, 68, 68, 68, 68, 69, 69, 69, |
|
427 |
0, 0, 69, 69, 69, 69, 69, 69, 69, 69, |
|
428 |
69, 69, 69, 69, 69, 69, 69, 69, 69, 69, |
|
429 |
69, 69, 69, 69, 0, 69, 69, 69, 69, 69, |
|
430 |
69, 69, 0, 69, 0, 0, 69, 69, 69, 69, |
|
431 |
69, 69, 69, 69, 69, 0, 69, 69, 69, 0, |
|
432 |
0, 69, 69, 69, 69, 67, 67, 67, 0, 0, |
|
433 |
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, |
|
434 |
67, 67, 67, 67, 67, 67, 67, 67, 67, 67, |
|
435 |
67, 67, 0, 67, 67, 67, 67, 67, 67, 67, |
|
436 |
0, 67, 0, 0, 67, 67, 67, 67, 67, 67, |
|
437 |
67, 67, 67, 0, 67, 67, 67, 0, 0, 67, |
|
438 |
67, 67, 67, 142, 142, 142, 0, 0, 142, 142, |
|
439 |
142, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
|
440 |
142, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
|
441 |
0, 142, 142, 142, 142, 142, 142, 142, 0, 142, |
|
442 |
0, 0, 142, 142, 142, 142, 142, 142, 142, 142, |
|
443 |
142, 0, 142, 142, 142, 0, 0, 142, 142, 142, |
|
444 |
142, 63, 63, 63, 0, 0, 63, 63, 63, 63, |
|
445 |
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, |
|
446 |
63, 63, 63, 63, 63, 63, 63, 63, 0, 63, |
|
447 |
63, 63, 63, 63, 63, 63, 0, 63, 0, 0, |
|
448 |
63, 63, 63, 63, 63, 63, 63, 63, 63, 0, |
|
449 |
63, 63, 63, 0, 0, 63, 63, 63, 63, 64, |
|
450 |
64, 64, 0, 0, 64, 64, 64, 64, 64, 64, |
|
451 |
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, |
|
452 |
64, 64, 64, 64, 64, 64, 0, 64, 64, 64, |
|
453 |
64, 64, 64, 64, 0, 64, 0, 0, 64, 64, |
|
454 |
64, 64, 64, 64, 64, 64, 64, 0, 64, 64, |
|
455 |
64, 0, 0, 64, 64, 64, 64, 65, 65, 65, |
|
456 |
0, 0, 65, 65, 65, 65, 65, 65, 65, 65, |
|
457 |
65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
|
458 |
65, 65, 65, 65, 0, 65, 65, 65, 65, 65, |
|
459 |
65, 65, 0, 65, 0, 0, 65, 65, 65, 65, |
|
460 |
65, 65, 65, 65, 65, 0, 65, 65, 65, 0, |
|
461 |
0, 65, 65, 65, 65, 111, 111, 111, 0, 0, |
|
462 |
111, 111, 111, 110, 110, 110, 110, 110, 110, 110, |
|
463 |
111, 111, 111, 111, 111, 111, 111, 111, 111, 111, |
|
464 |
111, 111, 0, 111, 111, 111, 111, 111, 111, 111, |
|
465 |
0, 0, 111, 111, 0, 111, 111, 111, 111, 111, |
|
466 |
111, 111, 111, 0, 111, 111, 111, 0, 0, 111, |
|
467 |
111, 111, 111, 143, 143, 143, 0, 0, 143, 143, |
|
468 |
143, 143, 143, 143, 143, 143, 143, 143, 143, 143, |
|
469 |
143, 143, 143, 143, 143, 143, 143, 143, 143, 143, |
|
470 |
0, 143, 143, 143, 143, 143, 143, 143, 0, 143, |
|
471 |
143, 143, 143, 0, 0, 0, 143, 143, 143, 143, |
|
472 |
0, 0, 143, 143, 143, 0, 0, 143, 143, 143, |
|
473 |
143, 140, 140, 140, 0, 0, 140, 140, 140, 140, |
|
474 |
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, |
|
475 |
140, 140, 140, 140, 140, 140, 140, 140, 0, 140, |
|
476 |
140, 140, 140, 140, 140, 140, 0, 0, 140, 140, |
|
477 |
140, 0, 0, 0, 140, 140, 140, 140, 0, 0, |
|
478 |
140, 140, 140, 0, 0, 140, 140, 140, 140, 61, |
|
479 |
61, 61, 0, 0, 61, 61, 61, 61, 61, 61, |
|
480 |
61, 61, 61, 61, 61, 61, 61, 61, 61, 61, |
|
481 |
61, 61, 61, 61, 61, 61, 0, 61, 61, 61, |
|
482 |
0, 0, 0, 61, 0, 61, 0, 0, 61, 61, |
|
483 |
61, 61, 61, 61, 61, 61, 61, 0, 61, 61, |
|
484 |
61, 0, 0, 61, 61, 61, 61, 62, 62, 62, |
|
485 |
0, 0, 62, 62, 62, 62, 62, 62, 62, 62, |
|
486 |
62, 62, 62, 62, 62, 62, 62, 62, 62, 62, |
|
487 |
62, 62, 62, 62, 0, 62, 62, 62, 0, 0, |
|
488 |
0, 62, 0, 62, 0, 0, 62, 62, 62, 62, |
|
489 |
62, 62, 62, 62, 62, 0, 62, 62, 62, 0, |
|
490 |
0, 62, 62, 62, 62, 122, 122, 122, 0, 0, |
|
491 |
122, 122, 122, 0, 0, 0, 0, 0, 0, 0, |
|
492 |
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, |
|
493 |
122, 122, 0, 122, 122, 122, 122, 122, 122, 122, |
|
494 |
0, 0, 122, 122, 0, 122, 122, 122, 122, 122, |
|
495 |
122, 122, 122, 0, 122, 122, 122, 0, 0, 122, |
|
496 |
122, 122, 122, 54, 54, 54, 0, 0, 54, 54, |
|
497 |
54, 0, 0, 0, 0, 0, 0, 0, 54, 54, |
|
498 |
54, 54, 54, 54, 54, 54, 54, 54, 54, 54, |
|
499 |
0, 54, 0, 0, 0, 0, 0, 54, 0, 0, |
|
500 |
0, 0, 54, 54, 54, 54, 54, 54, 54, 54, |
|
501 |
54, 0, 54, 54, 54, 0, 0, 54, 54, 54, |
|
502 |
54, 55, 55, 55, 0, 0, 55, 55, 55, 0, |
|
503 |
0, 0, 0, 0, 0, 0, 55, 55, 55, 55, |
|
504 |
55, 55, 55, 55, 55, 55, 55, 55, 0, 55, |
|
505 |
0, 0, 0, 0, 0, 55, 0, 0, 0, 0, |
|
506 |
55, 55, 55, 55, 55, 55, 55, 55, 55, 0, |
|
507 |
55, 55, 55, 0, 0, 55, 55, 55, 55, 58, |
|
508 |
0, 0, 82, 0, 0, 0, 75, 75, 75, 75, |
|
509 |
75, 75, 75, 58, 0, 58, 58, 0, 58, 58, |
|
510 |
58, 58, 58, 58, 58, 0, 58, 58, 58, 58, |
|
511 |
58, 58, 58, 163, 0, 58, 58, 0, 58, 58, |
|
512 |
58, 0, 58, 58, 58, 58, 0, 58, 58, 58, |
|
513 |
0, 0, 58, 58, 58, 58, 0, 0, 0, 0, |
|
514 |
3, 4, 5, 232, 0, 0, 6, 0, 0, 0, |
|
515 |
0, 7, 8, 9, 10, 0, 11, 12, 13, 14, |
|
516 |
0, 15, 16, 17, 0, 0, 18, 19, 20, 21, |
|
517 |
3, 4, 5, 0, 0, 0, 6, 0, 0, 0, |
|
518 |
0, 7, 8, 9, 10, 0, 11, 12, 13, 233, |
|
519 |
0, 15, 16, 17, 0, 0, 18, 19, 20, 21, |
|
520 |
82, 0, 0, 0, 75, 75, 75, 75, 75, 75, |
|
521 |
75, 58, 0, 58, 58, 58, 58, 58, 58, 58, |
|
522 |
58, 58, 58, 0, 58, 58, 58, 58, 58, 58, |
|
523 |
58, 0, 0, 58, 58, 0, 58, 58, 58, 0, |
|
524 |
58, 58, 58, 58, 0, 58, 58, 58, 122, 0, |
|
525 |
58, 58, 58, 58, 0, 0, 0, 122, 0, 122, |
|
526 |
122, 122, 122, 122, 122, 122, 122, 122, 122, 0, |
|
527 |
122, 122, 122, 122, 122, 122, 122, 0, 0, 122, |
|
528 |
122, 0, 122, 122, 122, 0, 122, 122, 122, 122, |
|
529 |
0, 122, 122, 122, 0, 0, 122, 122, 122, 122, |
|
530 |
37, 37, 37, 0, 0, 37, 37, 37, 38, 38, |
|
531 |
38, 0, 0, 38, 38, 38, 37, 0, 0, 0, |
|
532 |
39, 39, 39, 0, 38, 39, 39, 39, 123, 123, |
|
533 |
123, 0, 0, 123, 123, 123, 39, 0, 0, 0, |
|
534 |
124, 124, 124, 37, 123, 124, 124, 124, 125, 125, |
|
535 |
125, 38, 0, 125, 125, 125, 124, 0, 0, 0, |
|
536 |
126, 126, 126, 39, 125, 126, 126, 126, 127, 127, |
|
537 |
127, 123, 0, 127, 127, 127, 126, 0, 0, 0, |
|
538 |
128, 128, 128, 124, 127, 128, 128, 128, 129, 129, |
|
539 |
129, 125, 0, 129, 129, 129, 128, 0, 0, 0, |
|
540 |
53, 53, 53, 126, 129, 53, 53, 53, 0, 0, |
|
541 |
0, 127, 0, 0, 0, 0, 53, 0, 0, 0, |
|
542 |
0, 177, 0, 128, 0, 0, 0, 0, 0, 0, |
|
543 |
113, 129, 114, 115, 116, 117, 118, 119, 120, 121, |
|
544 |
122, 123, 0, 53, 0, 0, 0, 0, 296, 97, |
|
545 |
98, 99, 100, 101, 102, 103, 0, 113, 178, 114, |
|
546 |
115, 116, 117, 118, 119, 120, 121, 122, 123, 0, |
|
547 |
0, 0, 0, 0, 0, 319, 104, 105, 106, 107, |
|
548 |
108, 109, 110, 0, 113, 297, 114, 115, 116, 117, |
|
549 |
118, 119, 120, 121, 122, 123, 104, 105, 106, 107, |
|
550 |
108, 109, 110, 3, 4, 5, 0, 111, 0, 6, |
|
551 |
0, 176, 320, 0, 7, 8, 9, 70, 0, 11, |
|
552 |
12, 13, 71, 80, 15, 16, 17, 111, 0, 18, |
|
553 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
554 |
0, 0, 0, 0, 7, 8, 9, 10, 243, 11, |
|
555 |
12, 13, 14, 0, 15, 16, 17, 0, 0, 18, |
|
556 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
557 |
0, 0, 0, 0, 7, 8, 9, 10, 283, 11, |
|
558 |
12, 13, 14, 0, 15, 16, 17, 0, 0, 18, |
|
559 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
560 |
0, 0, 0, 0, 7, 8, 9, 70, 0, 11, |
|
561 |
12, 13, 71, 0, 15, 16, 17, 0, 0, 18, |
|
562 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
563 |
0, 0, 0, 0, 7, 8, 9, 10, 0, 11, |
|
564 |
12, 13, 14, 0, 15, 16, 17, 0, 0, 18, |
|
565 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
566 |
0, 0, 0, 0, 7, 8, 9, 246, 0, 11, |
|
567 |
12, 13, 14, 0, 15, 16, 17, 0, 0, 18, |
|
568 |
19, 20, 21, 3, 4, 5, 0, 0, 0, 6, |
|
569 |
0, 0, 0, 0, 7, 8, 9, 10, 0, 11, |
|
570 |
12, 13, 260, 0, 15, 16, 17, 0, 0, 18, |
|
571 |
19, 20, 21, 167, 167, 167, 0, 0, 0, 167, |
|
572 |
0, 0, 0, 0, 167, 167, 167, 167, 0, 167, |
|
573 |
167, 167, 167, 0, 167, 167, 167, 0, 0, 167, |
|
574 |
167, 167, 167, 113, 0, 114, 115, 116, 117, 118, |
|
575 |
119, 120, 121, 122, 123, 113, 0, 114, 115, 116, |
|
576 |
117, 118, 119, 120, 121, 122, 123, 0, 0, 0, |
|
577 |
113, 178, 114, 115, 116, 117, 118, 119, 120, 121, |
|
578 |
122, 123, 113, 271, 114, 115, 116, 117, 118, 119, |
|
579 |
120, 121, 122, 123, 0, 0, 0, 113, 275, 114, |
|
580 |
115, 116, 117, 118, 119, 120, 121, 122, 123, 113, |
|
581 |
278, 114, 115, 116, 117, 118, 119, 120, 121, 122, |
|
582 |
123, 44, 45, 0, 0, 281, 0, 0, 0, 0, |
|
583 |
0, 0, 0, 0, 242, 0, 113, 324, 114, 115, |
|
584 |
116, 117, 118, 119, 120, 121, 122, 123, 113, 277, |
|
585 |
114, 115, 116, 117, 118, 119, 120, 121, 122, 123, |
|
586 |
0, 0, 0, 113, 0, 114, 115, 116, 117, 118, |
|
587 |
119, 120, 121, 122, 123, 112, 0, 0, 0, 0, |
|
588 |
0, 0, 0, 0, 113, 0, 114, 115, 116, 117, |
|
589 |
118, 119, 120, 121, 122, 123, 264, 0, 0, 0, |
|
590 |
0, 0, 0, 0, 0, 113, 0, 114, 115, 116, |
|
591 |
117, 118, 119, 120, 121, 122, 123, 265, 0, 0, |
|
592 |
0, 0, 0, 0, 0, 0, 113, 0, 114, 115, |
|
593 |
116, 117, 118, 119, 120, 121, 122, 123, 113, 302, |
|
594 |
114, 115, 116, 117, 118, 119, 120, 121, 122, 123, |
|
595 |
113, 0, 114, 115, 116, 117, 118, 119, 120, 121, |
|
596 |
122, 123, 115, 116, 117, 118, 119, 120, 121, 122, |
|
597 |
123, |
|
598 |
};
|
|
599 |
short yycheck[] = { 7, |
|
600 |
0, 298, 4, 5, 6, 7, 8, 265, 10, 59, |
|
601 |
10, 278, 62, 63, 301, 65, 222, 15, 16, 69, |
|
602 |
0, 265, 259, 260, 261, 25, 28, 264, 265, 266, |
|
603 |
32, 298, 259, 260, 42, 259, 260, 274, 275, 276, |
|
604 |
42, 179, 266, 265, 302, 25, 265, 4, 5, 6, |
|
605 |
301, 8, 259, 260, 298, 55, 36, 57, 302, 266, |
|
606 |
306, 41, 308, 301, 64, 302, 296, 297, 70, 67, |
|
607 |
70, 28, 261, 71, 76, 32, 264, 265, 302, 77, |
|
608 |
302, 301, 80, 302, 264, 265, 259, 260, 301, 89, |
|
609 |
90, 264, 265, 266, 265, 265, 301, 97, 98, 99, |
|
610 |
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, |
|
611 |
110, 91, 92, 319, 252, 253, 254, 117, 118, 119, |
|
612 |
120, 121, 122, 123, 126, 127, 128, 129, 130, 302, |
|
613 |
132, 302, 302, 133, 259, 260, 136, 262, 301, 265, |
|
614 |
306, 279, 259, 260, 124, 298, 146, 147, 43, 266, |
|
615 |
150, 264, 265, 151, 264, 265, 51, 52, 264, 265, |
|
616 |
55, 56, 57, 259, 260, 165, 61, 167, 263, 126, |
|
617 |
127, 128, 129, 130, 174, 132, 302, 177, 301, 179, |
|
618 |
259, 260, 182, 183, 299, 300, 301, 259, 260, 301, |
|
619 |
297, 241, 264, 265, 266, 245, 259, 260, 261, 259, |
|
620 |
260, 261, 202, 203, 204, 205, 290, 291, 292, 306, |
|
621 |
287, 263, 296, 297, 222, 306, 259, 260, 261, 295, |
|
622 |
222, 264, 265, 266, 259, 260, 261, 302, 318, 124, |
|
623 |
302, 274, 275, 276, 277, 278, 279, 280, 281, 282, |
|
624 |
283, 284, 285, 323, 246, 263, 246, 263, 299, 300, |
|
625 |
301, 278, 252, 253, 254, 306, 151, 152, 302, 302, |
|
626 |
155, 265, 157, 295, 302, 265, 265, 299, 300, 301, |
|
627 |
263, 266, 272, 265, 306, 301, 259, 260, 261, 279, |
|
628 |
301, 264, 265, 266, 306, 285, 306, 287, 288, 302, |
|
629 |
263, 256, 275, 298, 306, 306, 261, 246, 265, 259, |
|
630 |
260, 261, 183, 25, 264, 265, 266, -1, 302, -1, |
|
631 |
-1, 319, 302, 302, 302, 275, 302, 319, 318, 302, |
|
632 |
302, 301, 287, 288, 289, -1, -1, -1, 293, 259, |
|
633 |
260, -1, -1, 298, 299, 300, 301, -1, 303, 304, |
|
634 |
305, 306, 302, 308, 309, 310, -1, -1, 313, 314, |
|
635 |
315, 316, -1, -1, -1, -1, -1, 287, 288, 289, |
|
636 |
325, 326, -1, 293, -1, 330, -1, -1, 298, 299, |
|
637 |
300, 301, -1, 303, 304, 305, 306, -1, 308, 309, |
|
638 |
310, -1, -1, 313, 314, 315, 316, -1, -1, 256, |
|
639 |
-1, 286, 259, 260, 261, 262, -1, 259, 260, 261, |
|
640 |
-1, -1, 264, 265, 266, -1, 301, -1, -1, -1, |
|
641 |
-1, -1, 274, 275, 276, 277, 278, 279, -1, -1, |
|
642 |
287, 288, 289, -1, -1, -1, 293, -1, 323, 324, |
|
643 |
-1, 298, 299, 300, 301, -1, 303, 304, 305, 306, |
|
644 |
302, 308, 309, 310, 311, 312, 313, 314, 315, 316, |
|
645 |
317, 318, 319, 320, 321, 322, -1, 324, -1, -1, |
|
646 |
327, 328, 329, 256, -1, -1, 259, 260, 261, 262, |
|
647 |
-1, 259, 260, 261, -1, -1, 264, 265, 266, 280, |
|
648 |
281, 282, 283, 284, 285, -1, 274, 275, 276, 277, |
|
649 |
-1, -1, -1, -1, 287, 288, 289, -1, -1, -1, |
|
650 |
293, -1, -1, -1, -1, 298, 299, 300, 301, -1, |
|
651 |
303, 304, 305, 306, 302, 308, 309, 310, 311, 312, |
|
652 |
313, 314, 315, 316, 317, 318, 319, 320, 321, 322, |
|
653 |
-1, 324, -1, -1, 327, 328, 329, 256, -1, -1, |
|
654 |
259, 260, 261, -1, -1, 259, 260, 261, -1, -1, |
|
655 |
264, 265, 266, -1, 288, 289, 290, 291, 292, -1, |
|
656 |
-1, 275, 296, 297, -1, -1, -1, -1, 287, 288, |
|
657 |
289, -1, -1, -1, 293, -1, -1, -1, -1, 298, |
|
658 |
299, 300, 301, -1, 303, 304, 305, 306, 302, 308, |
|
659 |
309, 310, 311, 312, 313, 314, 315, 316, 317, 318, |
|
660 |
319, 320, 321, 322, -1, 324, -1, -1, 327, 328, |
|
661 |
329, 256, -1, -1, 259, 260, 261, -1, -1, 259, |
|
662 |
260, 261, -1, -1, 264, 265, 266, 278, 279, 280, |
|
663 |
281, 282, 283, 284, 285, 275, -1, -1, -1, -1, |
|
664 |
-1, -1, 287, 288, 289, -1, -1, -1, 293, -1, |
|
665 |
-1, -1, -1, 298, 299, 300, 301, -1, 303, 304, |
|
666 |
305, 306, 302, 308, 309, 310, 311, 312, 313, 314, |
|
667 |
315, 316, 317, 318, 319, 320, 321, 322, -1, 324, |
|
668 |
-1, -1, 327, 328, 329, 259, 260, 261, -1, 263, |
|
669 |
264, 265, 266, 267, 268, 269, 270, 271, 272, 273, |
|
670 |
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, |
|
671 |
284, 285, -1, 287, 288, 289, 290, 291, 292, 293, |
|
672 |
-1, 295, 296, 297, 298, 299, 300, 301, 302, 303, |
|
673 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
674 |
314, 315, 316, 259, 260, 261, -1, 263, 264, 265, |
|
675 |
266, 267, 268, 269, 270, 271, 272, 273, 274, 275, |
|
676 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
677 |
-1, 287, 288, 289, 290, 291, 292, 293, -1, 295, |
|
678 |
296, 297, 298, 299, 300, 301, 302, 303, 304, 305, |
|
679 |
306, -1, 308, 309, 310, -1, -1, 313, 314, 315, |
|
680 |
316, 259, 260, 261, -1, 263, 264, 265, 266, 267, |
|
681 |
268, 269, 270, 271, 272, 273, 274, 275, 276, 277, |
|
682 |
278, 279, 280, 281, 282, 283, 284, 285, -1, 287, |
|
683 |
288, 289, 290, 291, 292, 293, -1, 295, 296, 297, |
|
684 |
-1, 299, 300, 301, 302, 303, 304, 305, 306, -1, |
|
685 |
308, 309, 310, -1, -1, 313, 314, 315, 316, 259, |
|
686 |
260, 261, -1, 263, 264, 265, 266, 267, 268, 269, |
|
687 |
270, 271, 272, 273, 274, 275, 276, 277, 278, 279, |
|
688 |
280, 281, 282, 283, 284, 285, -1, 287, 288, 289, |
|
689 |
290, 291, 292, 293, -1, -1, 296, 297, -1, 299, |
|
690 |
300, 301, 302, 303, 304, 305, 306, -1, 308, 309, |
|
691 |
310, -1, -1, 313, 314, 315, 316, 259, 260, 261, |
|
692 |
-1, -1, 264, 265, 266, 267, 268, 269, 270, 271, |
|
693 |
272, 273, 274, 275, 276, 277, 278, 279, 280, 281, |
|
694 |
282, 283, 284, 285, -1, 287, 288, 289, 290, 291, |
|
695 |
292, 293, -1, 295, 296, 297, -1, 299, 300, 301, |
|
696 |
302, 303, 304, 305, 306, -1, 308, 309, 310, -1, |
|
697 |
-1, 313, 314, 315, 316, 259, 260, 261, -1, -1, |
|
698 |
264, 265, 266, 267, 268, 269, 270, 271, 272, 273, |
|
699 |
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, |
|
700 |
284, 285, -1, 287, 288, 289, 290, 291, 292, 293, |
|
701 |
-1, -1, 296, 297, 298, 299, 300, 301, 302, 303, |
|
702 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
703 |
314, 315, 316, 259, 260, 261, -1, -1, 264, 265, |
|
704 |
266, 267, 268, 269, 270, 271, 272, 273, 274, 275, |
|
705 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
706 |
-1, 287, 288, 289, 290, 291, 292, 293, -1, 295, |
|
707 |
296, -1, 298, 299, 300, 301, 302, 303, 304, 305, |
|
708 |
306, -1, 308, 309, 310, -1, -1, 313, 314, 315, |
|
709 |
316, 259, 260, 261, -1, -1, 264, 265, 266, 267, |
|
710 |
268, 269, 270, 271, 272, 273, 274, 275, 276, 277, |
|
711 |
278, 279, 280, 281, 282, 283, 284, 285, -1, 287, |
|
712 |
288, 289, 290, 291, 292, 293, -1, 295, 296, 297, |
|
713 |
-1, 299, 300, 301, 302, 303, 304, 305, 306, -1, |
|
714 |
308, 309, 310, -1, -1, 313, 314, 315, 316, 259, |
|
715 |
260, 261, -1, -1, 264, 265, 266, 267, 268, 269, |
|
716 |
270, 271, 272, 273, 274, 275, 276, 277, 278, 279, |
|
717 |
280, 281, 282, 283, 284, 285, -1, 287, 288, 289, |
|
718 |
290, 291, 292, 293, -1, 295, -1, -1, 298, 299, |
|
719 |
300, 301, 302, 303, 304, 305, 306, -1, 308, 309, |
|
720 |
310, -1, -1, 313, 314, 315, 316, 259, 260, 261, |
|
721 |
-1, -1, 264, 265, 266, 267, 268, 269, 270, 271, |
|
722 |
272, 273, 274, 275, 276, 277, 278, 279, 280, 281, |
|
723 |
282, 283, 284, 285, -1, 287, 288, 289, 290, 291, |
|
724 |
292, 293, -1, 295, -1, -1, 298, 299, 300, 301, |
|
725 |
302, 303, 304, 305, 306, -1, 308, 309, 310, -1, |
|
726 |
-1, 313, 314, 315, 316, 259, 260, 261, -1, -1, |
|
727 |
264, 265, 266, 267, 268, 269, 270, 271, 272, 273, |
|
728 |
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, |
|
729 |
284, 285, -1, 287, 288, 289, 290, 291, 292, 293, |
|
730 |
-1, 295, -1, -1, 298, 299, 300, 301, 302, 303, |
|
731 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
732 |
314, 315, 316, 259, 260, 261, -1, -1, 264, 265, |
|
733 |
266, 267, 268, 269, 270, 271, 272, 273, 274, 275, |
|
734 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
735 |
-1, 287, 288, 289, 290, 291, 292, 293, -1, 295, |
|
736 |
-1, -1, 298, 299, 300, 301, 302, 303, 304, 305, |
|
737 |
306, -1, 308, 309, 310, -1, -1, 313, 314, 315, |
|
738 |
316, 259, 260, 261, -1, -1, 264, 265, 266, 267, |
|
739 |
268, 269, 270, 271, 272, 273, 274, 275, 276, 277, |
|
740 |
278, 279, 280, 281, 282, 283, 284, 285, -1, 287, |
|
741 |
288, 289, 290, 291, 292, 293, -1, 295, -1, -1, |
|
742 |
298, 299, 300, 301, 302, 303, 304, 305, 306, -1, |
|
743 |
308, 309, 310, -1, -1, 313, 314, 315, 316, 259, |
|
744 |
260, 261, -1, -1, 264, 265, 266, 267, 268, 269, |
|
745 |
270, 271, 272, 273, 274, 275, 276, 277, 278, 279, |
|
746 |
280, 281, 282, 283, 284, 285, -1, 287, 288, 289, |
|
747 |
290, 291, 292, 293, -1, 295, -1, -1, 298, 299, |
|
748 |
300, 301, 302, 303, 304, 305, 306, -1, 308, 309, |
|
749 |
310, -1, -1, 313, 314, 315, 316, 259, 260, 261, |
|
750 |
-1, -1, 264, 265, 266, 267, 268, 269, 270, 271, |
|
751 |
272, 273, 274, 275, 276, 277, 278, 279, 280, 281, |
|
752 |
282, 283, 284, 285, -1, 287, 288, 289, 290, 291, |
|
753 |
292, 293, -1, 295, -1, -1, 298, 299, 300, 301, |
|
754 |
302, 303, 304, 305, 306, -1, 308, 309, 310, -1, |
|
755 |
-1, 313, 314, 315, 316, 259, 260, 261, -1, -1, |
|
756 |
264, 265, 266, 267, 268, 269, 270, 271, 272, 273, |
|
757 |
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, |
|
758 |
284, 285, -1, 287, 288, 289, 290, 291, 292, 293, |
|
759 |
-1, -1, 296, 297, -1, 299, 300, 301, 302, 303, |
|
760 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
761 |
314, 315, 316, 259, 260, 261, -1, -1, 264, 265, |
|
762 |
266, 267, 268, 269, 270, 271, 272, 273, 274, 275, |
|
763 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
764 |
-1, 287, 288, 289, 290, 291, 292, 293, -1, 295, |
|
765 |
296, 297, 298, -1, -1, -1, 302, 303, 304, 305, |
|
766 |
-1, -1, 308, 309, 310, -1, -1, 313, 314, 315, |
|
767 |
316, 259, 260, 261, -1, -1, 264, 265, 266, 267, |
|
768 |
268, 269, 270, 271, 272, 273, 274, 275, 276, 277, |
|
769 |
278, 279, 280, 281, 282, 283, 284, 285, -1, 287, |
|
770 |
288, 289, 290, 291, 292, 293, -1, -1, 296, 297, |
|
771 |
298, -1, -1, -1, 302, 303, 304, 305, -1, -1, |
|
772 |
308, 309, 310, -1, -1, 313, 314, 315, 316, 259, |
|
773 |
260, 261, -1, -1, 264, 265, 266, 267, 268, 269, |
|
774 |
270, 271, 272, 273, 274, 275, 276, 277, 278, 279, |
|
775 |
280, 281, 282, 283, 284, 285, -1, 287, 288, 289, |
|
776 |
-1, -1, -1, 293, -1, 295, -1, -1, 298, 299, |
|
777 |
300, 301, 302, 303, 304, 305, 306, -1, 308, 309, |
|
778 |
310, -1, -1, 313, 314, 315, 316, 259, 260, 261, |
|
779 |
-1, -1, 264, 265, 266, 267, 268, 269, 270, 271, |
|
780 |
272, 273, 274, 275, 276, 277, 278, 279, 280, 281, |
|
781 |
282, 283, 284, 285, -1, 287, 288, 289, -1, -1, |
|
782 |
-1, 293, -1, 295, -1, -1, 298, 299, 300, 301, |
|
783 |
302, 303, 304, 305, 306, -1, 308, 309, 310, -1, |
|
784 |
-1, 313, 314, 315, 316, 259, 260, 261, -1, -1, |
|
785 |
264, 265, 266, -1, -1, -1, -1, -1, -1, -1, |
|
786 |
274, 275, 276, 277, 278, 279, 280, 281, 282, 283, |
|
787 |
284, 285, -1, 287, 288, 289, 290, 291, 292, 293, |
|
788 |
-1, -1, 296, 297, -1, 299, 300, 301, 302, 303, |
|
789 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
790 |
314, 315, 316, 259, 260, 261, -1, -1, 264, 265, |
|
791 |
266, -1, -1, -1, -1, -1, -1, -1, 274, 275, |
|
792 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
793 |
-1, 287, -1, -1, -1, -1, -1, 293, -1, -1, |
|
794 |
-1, -1, 298, 299, 300, 301, 302, 303, 304, 305, |
|
795 |
306, -1, 308, 309, 310, -1, -1, 313, 314, 315, |
|
796 |
316, 259, 260, 261, -1, -1, 264, 265, 266, -1, |
|
797 |
-1, -1, -1, -1, -1, -1, 274, 275, 276, 277, |
|
798 |
278, 279, 280, 281, 282, 283, 284, 285, -1, 287, |
|
799 |
-1, -1, -1, -1, -1, 293, -1, -1, -1, -1, |
|
800 |
298, 299, 300, 301, 302, 303, 304, 305, 306, -1, |
|
801 |
308, 309, 310, -1, -1, 313, 314, 315, 316, 260, |
|
802 |
-1, -1, 263, -1, -1, -1, 267, 268, 269, 270, |
|
803 |
271, 272, 273, 274, -1, 276, 277, -1, 279, 280, |
|
804 |
281, 282, 283, 284, 285, -1, 287, 288, 289, 290, |
|
805 |
291, 292, 293, 260, -1, 296, 297, -1, 299, 300, |
|
806 |
301, -1, 303, 304, 305, 306, -1, 308, 309, 310, |
|
807 |
-1, -1, 313, 314, 315, 316, -1, -1, -1, -1, |
|
808 |
287, 288, 289, 260, -1, -1, 293, -1, -1, -1, |
|
809 |
-1, 298, 299, 300, 301, -1, 303, 304, 305, 306, |
|
810 |
-1, 308, 309, 310, -1, -1, 313, 314, 315, 316, |
|
811 |
287, 288, 289, -1, -1, -1, 293, -1, -1, -1, |
|
812 |
-1, 298, 299, 300, 301, -1, 303, 304, 305, 306, |
|
813 |
-1, 308, 309, 310, -1, -1, 313, 314, 315, 316, |
|
814 |
263, -1, -1, -1, 267, 268, 269, 270, 271, 272, |
|
815 |
273, 274, -1, 276, 277, 278, 279, 280, 281, 282, |
|
816 |
283, 284, 285, -1, 287, 288, 289, 290, 291, 292, |
|
817 |
293, -1, -1, 296, 297, -1, 299, 300, 301, -1, |
|
818 |
303, 304, 305, 306, -1, 308, 309, 310, 265, -1, |
|
819 |
313, 314, 315, 316, -1, -1, -1, 274, -1, 276, |
|
820 |
277, 278, 279, 280, 281, 282, 283, 284, 285, -1, |
|
821 |
287, 288, 289, 290, 291, 292, 293, -1, -1, 296, |
|
822 |
297, -1, 299, 300, 301, -1, 303, 304, 305, 306, |
|
823 |
-1, 308, 309, 310, -1, -1, 313, 314, 315, 316, |
|
824 |
259, 260, 261, -1, -1, 264, 265, 266, 259, 260, |
|
825 |
261, -1, -1, 264, 265, 266, 275, -1, -1, -1, |
|
826 |
259, 260, 261, -1, 275, 264, 265, 266, 259, 260, |
|
827 |
261, -1, -1, 264, 265, 266, 275, -1, -1, -1, |
|
828 |
259, 260, 261, 302, 275, 264, 265, 266, 259, 260, |
|
829 |
261, 302, -1, 264, 265, 266, 275, -1, -1, -1, |
|
830 |
259, 260, 261, 302, 275, 264, 265, 266, 259, 260, |
|
831 |
261, 302, -1, 264, 265, 266, 275, -1, -1, -1, |
|
832 |
259, 260, 261, 302, 275, 264, 265, 266, 259, 260, |
|
833 |
261, 302, -1, 264, 265, 266, 275, -1, -1, -1, |
|
834 |
259, 260, 261, 302, 275, 264, 265, 266, -1, -1, |
|
835 |
-1, 302, -1, -1, -1, -1, 275, -1, -1, -1, |
|
836 |
-1, 265, -1, 302, -1, -1, -1, -1, -1, -1, |
|
837 |
274, 302, 276, 277, 278, 279, 280, 281, 282, 283, |
|
838 |
284, 285, -1, 302, -1, -1, -1, -1, 265, 267, |
|
839 |
268, 269, 270, 271, 272, 273, -1, 274, 302, 276, |
|
840 |
277, 278, 279, 280, 281, 282, 283, 284, 285, -1, |
|
841 |
-1, -1, -1, -1, -1, 265, 267, 268, 269, 270, |
|
842 |
271, 272, 273, -1, 274, 302, 276, 277, 278, 279, |
|
843 |
280, 281, 282, 283, 284, 285, 267, 268, 269, 270, |
|
844 |
271, 272, 273, 287, 288, 289, -1, 298, -1, 293, |
|
845 |
-1, 302, 302, -1, 298, 299, 300, 301, -1, 303, |
|
846 |
304, 305, 306, 307, 308, 309, 310, 298, -1, 313, |
|
847 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
848 |
-1, -1, -1, -1, 298, 299, 300, 301, 302, 303, |
|
849 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
850 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
851 |
-1, -1, -1, -1, 298, 299, 300, 301, 302, 303, |
|
852 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
853 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
854 |
-1, -1, -1, -1, 298, 299, 300, 301, -1, 303, |
|
855 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
856 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
857 |
-1, -1, -1, -1, 298, 299, 300, 301, -1, 303, |
|
858 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
859 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
860 |
-1, -1, -1, -1, 298, 299, 300, 301, -1, 303, |
|
861 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
862 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
863 |
-1, -1, -1, -1, 298, 299, 300, 301, -1, 303, |
|
864 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
865 |
314, 315, 316, 287, 288, 289, -1, -1, -1, 293, |
|
866 |
-1, -1, -1, -1, 298, 299, 300, 301, -1, 303, |
|
867 |
304, 305, 306, -1, 308, 309, 310, -1, -1, 313, |
|
868 |
314, 315, 316, 274, -1, 276, 277, 278, 279, 280, |
|
869 |
281, 282, 283, 284, 285, 274, -1, 276, 277, 278, |
|
870 |
279, 280, 281, 282, 283, 284, 285, -1, -1, -1, |
|
871 |
274, 302, 276, 277, 278, 279, 280, 281, 282, 283, |
|
872 |
284, 285, 274, 302, 276, 277, 278, 279, 280, 281, |
|
873 |
282, 283, 284, 285, -1, -1, -1, 274, 302, 276, |
|
874 |
277, 278, 279, 280, 281, 282, 283, 284, 285, 274, |
|
875 |
302, 276, 277, 278, 279, 280, 281, 282, 283, 284, |
|
876 |
285, 259, 260, -1, -1, 302, -1, -1, -1, -1, |
|
877 |
-1, -1, -1, -1, 260, -1, 274, 302, 276, 277, |
|
878 |
278, 279, 280, 281, 282, 283, 284, 285, 274, 260, |
|
879 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
880 |
-1, -1, -1, 274, -1, 276, 277, 278, 279, 280, |
|
881 |
281, 282, 283, 284, 285, 265, -1, -1, -1, -1, |
|
882 |
-1, -1, -1, -1, 274, -1, 276, 277, 278, 279, |
|
883 |
280, 281, 282, 283, 284, 285, 265, -1, -1, -1, |
|
884 |
-1, -1, -1, -1, -1, 274, -1, 276, 277, 278, |
|
885 |
279, 280, 281, 282, 283, 284, 285, 265, -1, -1, |
|
886 |
-1, -1, -1, -1, -1, -1, 274, -1, 276, 277, |
|
887 |
278, 279, 280, 281, 282, 283, 284, 285, 274, 275, |
|
888 |
276, 277, 278, 279, 280, 281, 282, 283, 284, 285, |
|
889 |
274, -1, 276, 277, 278, 279, 280, 281, 282, 283, |
|
890 |
284, 285, 277, 278, 279, 280, 281, 282, 283, 284, |
|
891 |
285, |
|
892 |
};
|
|
893 |
#define YYFINAL 25
|
|
894 |
#ifndef YYDEBUG
|
|
895 |
#define YYDEBUG 0
|
|
896 |
#endif
|
|
897 |
#define YYMAXTOKEN 330
|
|
898 |
#if YYDEBUG
|
|
899 |
char *yyname[] = { |
|
900 |
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
901 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
902 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
903 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
904 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
905 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
|
906 |
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UNEXPECTED","BAD_DECIMAL","NL", |
|
907 |
"SEMI_COLON","LBRACE","RBRACE","LBOX","RBOX","COMMA","IO_OUT","ASSIGN", |
|
908 |
"ADD_ASG","SUB_ASG","MUL_ASG","DIV_ASG","MOD_ASG","POW_ASG","QMARK","COLON", |
|
909 |
"OR","AND","IN","MATCH","EQ","NEQ","LT","LTE","GT","GTE","CAT","GETLINE","PLUS", |
|
910 |
"MINUS","MUL","DIV","MOD","NOT","UMINUS","IO_IN","PIPE","POW","INC_or_DEC", |
|
911 |
"DOLLAR","FIELD","LPAREN","RPAREN","DOUBLE","STRING_","RE","ID","D_ID", |
|
912 |
"FUNCT_ID","BUILTIN","LENGTH","PRINT","PRINTF","SPLIT","MATCH_FUNC","SUB", |
|
913 |
"GSUB","DO","WHILE","FOR","BREAK","CONTINUE","IF","ELSE","DELETE","BEGIN","END", |
|
914 |
"EXIT","NEXT","RETURN","FUNCTION", |
|
915 |
};
|
|
916 |
char *yyrule[] = { |
|
917 |
"$accept : program", |
|
918 |
"program : program_block", |
|
919 |
"program : program program_block", |
|
920 |
"program_block : PA_block", |
|
921 |
"program_block : function_def", |
|
922 |
"program_block : outside_error block", |
|
923 |
"PA_block : block", |
|
924 |
"$$1 :", |
|
925 |
"PA_block : BEGIN $$1 block", |
|
926 |
"$$2 :", |
|
927 |
"PA_block : END $$2 block", |
|
928 |
"$$3 :", |
|
929 |
"PA_block : expr $$3 block_or_separator", |
|
930 |
"$$4 :", |
|
931 |
"$$5 :", |
|
932 |
"PA_block : expr COMMA $$4 expr $$5 block_or_separator", |
|
933 |
"block : LBRACE statement_list RBRACE", |
|
934 |
"block : LBRACE error RBRACE", |
|
935 |
"block_or_separator : block", |
|
936 |
"block_or_separator : separator", |
|
937 |
"statement_list : statement", |
|
938 |
"statement_list : statement_list statement", |
|
939 |
"statement : block", |
|
940 |
"statement : expr separator", |
|
941 |
"statement : separator", |
|
942 |
"statement : error separator", |
|
943 |
"statement : BREAK separator", |
|
944 |
"statement : CONTINUE separator", |
|
945 |
"statement : return_statement", |
|
946 |
"statement : NEXT separator", |
|
947 |
"separator : NL", |
|
948 |
"separator : SEMI_COLON", |
|
949 |
"expr : cat_expr", |
|
950 |
"expr : lvalue ASSIGN expr", |
|
951 |
"expr : lvalue ADD_ASG expr", |
|
952 |
"expr : lvalue SUB_ASG expr", |
|
953 |
"expr : lvalue MUL_ASG expr", |
|
954 |
"expr : lvalue DIV_ASG expr", |
|
955 |
"expr : lvalue MOD_ASG expr", |
|
956 |
"expr : lvalue POW_ASG expr", |
|
957 |
"expr : expr EQ expr", |
|
958 |
"expr : expr NEQ expr", |
|
959 |
"expr : expr LT expr", |
|
960 |
"expr : expr LTE expr", |
|
961 |
"expr : expr GT expr", |
|
962 |
"expr : expr GTE expr", |
|
963 |
"expr : expr MATCH expr", |
|
964 |
"$$6 :", |
|
965 |
"expr : expr OR $$6 expr", |
|
966 |
"$$7 :", |
|
967 |
"expr : expr AND $$7 expr", |
|
968 |
"$$8 :", |
|
969 |
"$$9 :", |
|
970 |
"expr : expr QMARK $$8 expr COLON $$9 expr", |
|
971 |
"cat_expr : p_expr", |
|
972 |
"cat_expr : cat_expr p_expr", |
|
973 |
"p_expr : DOUBLE", |
|
974 |
"p_expr : STRING_", |
|
975 |
"p_expr : ID", |
|
976 |
"p_expr : LPAREN expr RPAREN", |
|
977 |
"p_expr : RE", |
|
978 |
"p_expr : p_expr PLUS p_expr", |
|
979 |
"p_expr : p_expr MINUS p_expr", |
|
980 |
"p_expr : p_expr MUL p_expr", |
|
981 |
"p_expr : p_expr DIV p_expr", |
|
982 |
"p_expr : p_expr MOD p_expr", |
|
983 |
"p_expr : p_expr POW p_expr", |
|
984 |
"p_expr : NOT p_expr", |
|
985 |
"p_expr : PLUS p_expr", |
|
986 |
"p_expr : MINUS p_expr", |
|
987 |
"p_expr : builtin", |
|
988 |
"p_expr : ID INC_or_DEC", |
|
989 |
"p_expr : INC_or_DEC lvalue", |
|
990 |
"p_expr : field INC_or_DEC", |
|
991 |
"p_expr : INC_or_DEC field", |
|
992 |
"lvalue : ID", |
|
993 |
"arglist :", |
|
994 |
"arglist : args", |
|
995 |
"args : expr", |
|
996 |
"args : args COMMA expr", |
|
997 |
"builtin : BUILTIN mark LPAREN arglist RPAREN", |
|
998 |
"builtin : LENGTH", |
|
999 |
"mark :", |
|
1000 |
"statement : print mark pr_args pr_direction separator", |
|
1001 |
"print : PRINT", |
|
1002 |
"print : PRINTF", |
|
1003 |
"pr_args : arglist", |
|
1004 |
"pr_args : LPAREN arg2 RPAREN", |
|
1005 |
"pr_args : LPAREN RPAREN", |
|
1006 |
"arg2 : expr COMMA expr", |
|
1007 |
"arg2 : arg2 COMMA expr", |
|
1008 |
"pr_direction :", |
|
1009 |
"pr_direction : IO_OUT expr", |
|
1010 |
"if_front : IF LPAREN expr RPAREN", |
|
1011 |
"statement : if_front statement", |
|
1012 |
"else : ELSE", |
|
1013 |
"statement : if_front statement else statement", |
|
1014 |
"do : DO", |
|
1015 |
"statement : do statement WHILE LPAREN expr RPAREN separator", |
|
1016 |
"while_front : WHILE LPAREN expr RPAREN", |
|
1017 |
"statement : while_front statement", |
|
1018 |
"statement : for1 for2 for3 statement", |
|
1019 |
"for1 : FOR LPAREN SEMI_COLON", |
|
1020 |
"for1 : FOR LPAREN expr SEMI_COLON", |
|
1021 |
"for2 : SEMI_COLON", |
|
1022 |
"for2 : expr SEMI_COLON", |
|
1023 |
"for3 : RPAREN", |
|
1024 |
"for3 : expr RPAREN", |
|
1025 |
"expr : expr IN ID", |
|
1026 |
"expr : LPAREN arg2 RPAREN IN ID", |
|
1027 |
"lvalue : ID mark LBOX args RBOX", |
|
1028 |
"p_expr : ID mark LBOX args RBOX", |
|
1029 |
"p_expr : ID mark LBOX args RBOX INC_or_DEC", |
|
1030 |
"statement : DELETE ID mark LBOX args RBOX separator", |
|
1031 |
"statement : DELETE ID separator", |
|
1032 |
"array_loop_front : FOR LPAREN ID IN ID RPAREN", |
|
1033 |
"statement : array_loop_front statement", |
|
1034 |
"field : FIELD", |
|
1035 |
"field : DOLLAR D_ID", |
|
1036 |
"field : DOLLAR D_ID mark LBOX args RBOX", |
|
1037 |
"field : DOLLAR p_expr", |
|
1038 |
"field : LPAREN field RPAREN", |
|
1039 |
"p_expr : field", |
|
1040 |
"expr : field ASSIGN expr", |
|
1041 |
"expr : field ADD_ASG expr", |
|
1042 |
"expr : field SUB_ASG expr", |
|
1043 |
"expr : field MUL_ASG expr", |
|
1044 |
"expr : field DIV_ASG expr", |
|
1045 |
"expr : field MOD_ASG expr", |
|
1046 |
"expr : field POW_ASG expr", |
|
1047 |
"p_expr : split_front split_back", |
|
1048 |
"split_front : SPLIT LPAREN expr COMMA ID", |
|
1049 |
"split_back : RPAREN", |
|
1050 |
"split_back : COMMA expr RPAREN", |
|
1051 |
"p_expr : MATCH_FUNC LPAREN expr COMMA re_arg RPAREN", |
|
1052 |
"re_arg : expr", |
|
1053 |
"statement : EXIT separator", |
|
1054 |
"statement : EXIT expr separator", |
|
1055 |
"return_statement : RETURN separator", |
|
1056 |
"return_statement : RETURN expr separator", |
|
1057 |
"p_expr : getline", |
|
1058 |
"p_expr : getline fvalue", |
|
1059 |
"p_expr : getline_file p_expr", |
|
1060 |
"p_expr : p_expr PIPE GETLINE", |
|
1061 |
"p_expr : p_expr PIPE GETLINE fvalue", |
|
1062 |
"getline : GETLINE", |
|
1063 |
"fvalue : lvalue", |
|
1064 |
"fvalue : field", |
|
1065 |
"getline_file : getline IO_IN", |
|
1066 |
"getline_file : getline fvalue IO_IN", |
|
1067 |
"p_expr : sub_or_gsub LPAREN re_arg COMMA expr sub_back", |
|
1068 |
"sub_or_gsub : SUB", |
|
1069 |
"sub_or_gsub : GSUB", |
|
1070 |
"sub_back : RPAREN", |
|
1071 |
"sub_back : COMMA fvalue RPAREN", |
|
1072 |
"function_def : funct_start block", |
|
1073 |
"funct_start : funct_head LPAREN f_arglist RPAREN", |
|
1074 |
"funct_head : FUNCTION ID", |
|
1075 |
"funct_head : FUNCTION FUNCT_ID", |
|
1076 |
"f_arglist :", |
|
1077 |
"f_arglist : f_args", |
|
1078 |
"f_args : ID", |
|
1079 |
"f_args : f_args COMMA ID", |
|
1080 |
"outside_error : error", |
|
1081 |
"p_expr : FUNCT_ID mark call_args", |
|
1082 |
"call_args : LPAREN RPAREN", |
|
1083 |
"call_args : ca_front ca_back", |
|
1084 |
"ca_front : LPAREN", |
|
1085 |
"ca_front : ca_front expr COMMA", |
|
1086 |
"ca_front : ca_front ID COMMA", |
|
1087 |
"ca_back : expr RPAREN", |
|
1088 |
"ca_back : ID RPAREN", |
|
1089 |
};
|
|
1090 |
#endif
|
|
1091 |
#ifdef YYPURE
|
|
1092 |
#undef YYGLOBAL
|
|
1093 |
#define YYLEX() yylex(&yylval)
|
|
1094 |
#else
|
|
1095 |
#define YYLEX() yylex()
|
|
1096 |
#endif
|
|
1097 |
||
1098 |
#ifdef YYSTACKSIZE
|
|
1099 |
#undef YYMAXDEPTH
|
|
1100 |
#define YYMAXDEPTH YYSTACKSIZE
|
|
1101 |
#else
|
|
1102 |
#ifdef YYMAXDEPTH
|
|
1103 |
#define YYSTACKSIZE YYMAXDEPTH
|
|
1104 |
#else
|
|
1105 |
#define YYSTACKSIZE 500
|
|
1106 |
#define YYMAXDEPTH 500
|
|
1107 |
#endif
|
|
1108 |
#endif
|
|
1109 |
||
1110 |
#ifdef YYGLOBAL /* get the standard byacc */ |
|
1111 |
int yydebug; |
|
1112 |
int yynerrs; |
|
1113 |
int yyerrflag; |
|
1114 |
int yychar; |
|
1115 |
short *yyssp; |
|
1116 |
YYSTYPE *yyvsp; |
|
1117 |
YYSTYPE yyval; |
|
1118 |
YYSTYPE yylval; |
|
1119 |
short yyss[YYSTACKSIZE]; |
|
1120 |
YYSTYPE yyvs[YYSTACKSIZE]; |
|
1121 |
#else
|
|
1122 |
/* move everything but yydebug and yylval local to yyparse().
|
|
1123 |
YYPURE moves yylval too */
|
|
1124 |
int yydebug ; |
|
1125 |
#ifndef YYPURE
|
|
1126 |
YYSTYPE yylval ; |
|
1127 |
#endif
|
|
1128 |
#endif
|
|
1129 |
#define yystacksize YYSTACKSIZE
|
|
1130 |
#line 1144 "parse.y"
|
|
1131 |
||
1132 |
/* resize the code for a user function */
|
|
1133 |
||
1134 |
static void resize_fblock( fbp ) |
|
1135 |
FBLOCK *fbp ; |
|
1136 |
{
|
|
1137 |
CODEBLOCK *p = ZMALLOC(CODEBLOCK) ; |
|
1138 |
unsigned dummy ; |
|
1139 |
||
1140 |
code2op(_RET0, _HALT) ; |
|
1141 |
/* make sure there is always a return */
|
|
1142 |
||
1143 |
*p = active_code ; |
|
1144 |
fbp->code = code_shrink(p, &dummy) ; |
|
1145 |
/* code_shrink() zfrees p */
|
|
1146 |
||
1147 |
if ( dump_code_flag ) add_to_fdump_list(fbp) ; |
|
1148 |
}
|
|
1149 |
||
1150 |
||
1151 |
/* convert FE_PUSHA to FE_PUSHI
|
|
1152 |
or F_PUSH to F_PUSHI
|
|
1153 |
*/
|
|
1154 |
||
1155 |
static void field_A2I() |
|
1156 |
{ CELL *cp ; |
|
1157 |
||
1158 |
if ( code_ptr[-1].op == FE_PUSHA && |
|
1159 |
code_ptr[-1].ptr == (PTR) 0) |
|
1160 |
/* On most architectures, the two tests are the same; a good
|
|
1161 |
compiler might eliminate one. On LM_DOS, and possibly other
|
|
1162 |
segmented architectures, they are not */
|
|
1163 |
{ code_ptr[-1].op = FE_PUSHI ; } |
|
1164 |
else
|
|
1165 |
{
|
|
1166 |
cp = (CELL *) code_ptr[-1].ptr ; |
|
1167 |
||
1168 |
if ( cp == field || |
|
1169 |
||
1170 |
#ifdef MSDOS
|
|
1171 |
SAMESEG(cp,field) && |
|
1172 |
#endif
|
|
1173 |
cp > NF && cp <= LAST_PFIELD ) |
|
1174 |
{
|
|
1175 |
code_ptr[-2].op = _PUSHI ; |
|
1176 |
}
|
|
1177 |
else if ( cp == NF ) |
|
1178 |
{ code_ptr[-2].op = NF_PUSHI ; code_ptr-- ; } |
|
1179 |
||
1180 |
else
|
|
1181 |
{
|
|
1182 |
code_ptr[-2].op = F_PUSHI ; |
|
1183 |
code_ptr -> op = field_addr_to_index( code_ptr[-1].ptr ) ; |
|
1184 |
code_ptr++ ; |
|
1185 |
}
|
|
1186 |
}
|
|
1187 |
}
|
|
1188 |
||
1189 |
/* we've seen an ID in a context where it should be a VAR,
|
|
1190 |
check that's consistent with previous usage */
|
|
1191 |
||
1192 |
static void check_var( p ) |
|
1193 |
register SYMTAB *p ; |
|
1194 |
{
|
|
1195 |
switch(p->type) |
|
1196 |
{
|
|
1197 |
case ST_NONE : /* new id */ |
|
1198 |
p->type = ST_VAR ; |
|
1199 |
p->stval.cp = ZMALLOC(CELL) ; |
|
1200 |
p->stval.cp->type = C_NOINIT ; |
|
1201 |
break ; |
|
1202 |
||
1203 |
case ST_LOCAL_NONE : |
|
1204 |
p->type = ST_LOCAL_VAR ; |
|
1205 |
active_funct->typev[p->offset] = ST_LOCAL_VAR ; |
|
1206 |
break ; |
|
1207 |
||
1208 |
case ST_VAR : |
|
1209 |
case ST_LOCAL_VAR : break ; |
|
1210 |
||
1211 |
default : |
|
1212 |
type_error(p) ; |
|
1213 |
break ; |
|
1214 |
}
|
|
1215 |
}
|
|
1216 |
||
1217 |
/* we've seen an ID in a context where it should be an ARRAY,
|
|
1218 |
check that's consistent with previous usage */
|
|
1219 |
static void check_array(p) |
|
1220 |
register SYMTAB *p ; |
|
1221 |
{
|
|
1222 |
switch(p->type) |
|
1223 |
{
|
|
1224 |
case ST_NONE : /* a new array */ |
|
1225 |
p->type = ST_ARRAY ; |
|
1226 |
p->stval.array = new_ARRAY() ; |
|
1227 |
break ; |
|
1228 |
||
1229 |
case ST_ARRAY : |
|
1230 |
case ST_LOCAL_ARRAY : |
|
1231 |
break ; |
|
1232 |
||
1233 |
case ST_LOCAL_NONE : |
|
1234 |
p->type = ST_LOCAL_ARRAY ; |
|
1235 |
active_funct->typev[p->offset] = ST_LOCAL_ARRAY ; |
|
1236 |
break ; |
|
1237 |
||
1238 |
default : type_error(p) ; break ; |
|
1239 |
}
|
|
1240 |
}
|
|
1241 |
||
1242 |
static void code_array(p) |
|
1243 |
register SYMTAB *p ; |
|
1244 |
{
|
|
1245 |
if ( is_local(p) ) code2op(LA_PUSHA, p->offset) ; |
|
1246 |
else code2(A_PUSHA, p->stval.array) ; |
|
1247 |
}
|
|
1248 |
||
1249 |
||
1250 |
/* we've seen an ID as an argument to a user defined function */
|
|
1251 |
||
1252 |
static void code_call_id( p, ip ) |
|
1253 |
register CA_REC *p ; |
|
1254 |
register SYMTAB *ip ; |
|
1255 |
{ static CELL dummy ; |
|
1256 |
||
1257 |
p->call_offset = code_offset ; |
|
1258 |
/* This always get set now. So that fcall:relocate_arglist
|
|
1259 |
works. */
|
|
1260 |
||
1261 |
switch( ip->type ) |
|
1262 |
{
|
|
1263 |
case ST_VAR : |
|
1264 |
p->type = CA_EXPR ; |
|
1265 |
code2(_PUSHI, ip->stval.cp) ; |
|
1266 |
break ; |
|
1267 |
||
1268 |
case ST_LOCAL_VAR : |
|
1269 |
p->type = CA_EXPR ; |
|
1270 |
code2op(L_PUSHI, ip->offset) ; |
|
1271 |
break ; |
|
1272 |
||
1273 |
case ST_ARRAY : |
|
1274 |
p->type = CA_ARRAY ; |
|
1275 |
code2(A_PUSHA, ip->stval.array) ; |
|
1276 |
break ; |
|
1277 |
||
1278 |
case ST_LOCAL_ARRAY : |
|
1279 |
p->type = CA_ARRAY ; |
|
1280 |
code2op(LA_PUSHA, ip->offset) ; |
|
1281 |
break ; |
|
1282 |
||
1283 |
/* not enough info to code it now; it will have to
|
|
1284 |
be patched later */
|
|
1285 |
||
1286 |
case ST_NONE : |
|
1287 |
p->type = ST_NONE ; |
|
1288 |
p->sym_p = ip ; |
|
1289 |
code2(_PUSHI, &dummy) ; |
|
1290 |
break ; |
|
1291 |
||
1292 |
case ST_LOCAL_NONE : |
|
1293 |
p->type = ST_LOCAL_NONE ; |
|
1294 |
p->type_p = & active_funct->typev[ip->offset] ; |
|
1295 |
code2op(L_PUSHI, ip->offset) ; |
|
1296 |
break ; |
|
1297 |
||
1298 |
||
1299 |
#ifdef DEBUG
|
|
1300 |
default : |
|
1301 |
bozo("code_call_id") ; |
|
1302 |
#endif
|
|
1303 |
||
1304 |
}
|
|
1305 |
}
|
|
1306 |
||
1307 |
/* an RE by itself was coded as _MATCH0 , change to
|
|
1308 |
push as an expression */
|
|
1309 |
||
1310 |
static void RE_as_arg() |
|
1311 |
{ CELL *cp = ZMALLOC(CELL) ; |
|
1312 |
||
1313 |
code_ptr -= 2 ; |
|
1314 |
cp->type = C_RE ; |
|
1315 |
cp->ptr = code_ptr[1].ptr ; |
|
1316 |
code2(_PUSHC, cp) ; |
|
1317 |
}
|
|
1318 |
||
1319 |
/* reset the active_code back to the MAIN block */
|
|
1320 |
static void |
|
1321 |
switch_code_to_main() |
|
1322 |
{
|
|
1323 |
switch(scope) |
|
1324 |
{
|
|
1325 |
case SCOPE_BEGIN : |
|
1326 |
*begin_code_p = active_code ; |
|
1327 |
active_code = *main_code_p ; |
|
1328 |
break ; |
|
1329 |
||
1330 |
case SCOPE_END : |
|
1331 |
*end_code_p = active_code ; |
|
1332 |
active_code = *main_code_p ; |
|
1333 |
break ; |
|
1334 |
||
1335 |
case SCOPE_FUNCT : |
|
1336 |
active_code = *main_code_p ; |
|
1337 |
break ; |
|
1338 |
||
1339 |
case SCOPE_MAIN : |
|
1340 |
break ; |
|
1341 |
}
|
|
1342 |
active_funct = (FBLOCK*) 0 ; |
|
1343 |
scope = SCOPE_MAIN ; |
|
1344 |
}
|
|
1345 |
||
1346 |
||
1347 |
void
|
|
1348 |
parse() |
|
1349 |
{
|
|
1350 |
if ( yyparse() || compile_error_count != 0 ) mawk_exit(2) ; |
|
1351 |
||
1352 |
scan_cleanup() ; |
|
1353 |
set_code() ; |
|
1354 |
/* code must be set before call to resolve_fcalls() */
|
|
1355 |
if ( resolve_list ) resolve_fcalls() ; |
|
1356 |
||
1357 |
if ( compile_error_count != 0 ) mawk_exit(2) ; |
|
1358 |
if ( dump_code_flag ) { dump_code() ; mawk_exit(0) ; } |
|
1359 |
}
|
|
1360 |
||
1361 |
#line 1362 "y.tab.c"
|
|
1362 |
#define YYABORT goto yyabort
|
|
1363 |
#define YYREJECT goto yyabort
|
|
1364 |
#define YYACCEPT goto yyaccept
|
|
1365 |
#define YYERROR goto yyerrlab
|
|
1366 |
int
|
|
1367 |
yyparse() |
|
1368 |
{
|
|
1369 |
register int yym, yyn, yystate; |
|
1370 |
#ifdef YYPURE
|
|
1371 |
YYSTYPE yylval ; |
|
1372 |
#endif
|
|
1373 |
||
1374 |
#ifndef YYGLOBAL
|
|
1375 |
int yynerrs; |
|
1376 |
int yyerrflag; |
|
1377 |
int yychar; |
|
1378 |
short *yyssp; |
|
1379 |
YYSTYPE *yyvsp; |
|
1380 |
YYSTYPE yyval; |
|
1381 |
short yyss[YYSTACKSIZE]; |
|
1382 |
YYSTYPE yyvs[YYSTACKSIZE]; |
|
1383 |
#endif
|
|
1384 |
#if YYDEBUG
|
|
1385 |
register char *yys; |
|
1386 |
extern char *getenv(); |
|
1387 |
||
1388 |
if (yys = getenv("YYDEBUG")) |
|
1389 |
{
|
|
1390 |
yyn = *yys; |
|
1391 |
if (yyn >= '0' && yyn <= '9') |
|
1392 |
yydebug = yyn - '0'; |
|
1393 |
}
|
|
1394 |
#endif
|
|
1395 |
||
1396 |
yynerrs = 0; |
|
1397 |
yyerrflag = 0; |
|
1398 |
yychar = (-1); |
|
1399 |
||
1400 |
yyssp = yyss; |
|
1401 |
yyvsp = yyvs; |
|
1402 |
*yyssp = yystate = 0; |
|
1403 |
||
1404 |
yyloop: |
|
1405 |
if (yyn = yydefred[yystate]) goto yyreduce; |
|
1406 |
if (yychar < 0) |
|
1407 |
{
|
|
1408 |
if ((yychar = YYLEX()) < 0) yychar = 0; |
|
1409 |
#if YYDEBUG
|
|
1410 |
if (yydebug) |
|
1411 |
{
|
|
1412 |
yys = 0; |
|
1413 |
if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
|
1414 |
if (!yys) yys = "illegal-symbol"; |
|
1415 |
printf("%sdebug: state %d, reading %d (%s)\n", |
|
1416 |
YYPREFIX, yystate, yychar, yys); |
|
1417 |
}
|
|
1418 |
#endif
|
|
1419 |
}
|
|
1420 |
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && |
|
1421 |
yyn <= YYTABLESIZE && yycheck[yyn] == yychar) |
|
1422 |
{
|
|
1423 |
#if YYDEBUG
|
|
1424 |
if (yydebug) |
|
1425 |
printf("%sdebug: state %d, shifting to state %d\n", |
|
1426 |
YYPREFIX, yystate, yytable[yyn]); |
|
1427 |
#endif
|
|
1428 |
if (yyssp >= yyss + yystacksize - 1) |
|
1429 |
{
|
|
1430 |
goto yyoverflow; |
|
1431 |
}
|
|
1432 |
*++yyssp = yystate = yytable[yyn]; |
|
1433 |
*++yyvsp = yylval; |
|
1434 |
yychar = (-1); |
|
1435 |
if (yyerrflag > 0) --yyerrflag; |
|
1436 |
goto yyloop; |
|
1437 |
}
|
|
1438 |
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && |
|
1439 |
yyn <= YYTABLESIZE && yycheck[yyn] == yychar) |
|
1440 |
{
|
|
1441 |
yyn = yytable[yyn]; |
|
1442 |
goto yyreduce; |
|
1443 |
}
|
|
1444 |
if (yyerrflag) goto yyinrecovery; |
|
1445 |
#ifdef lint
|
|
1446 |
goto yynewerror; |
|
1447 |
#endif
|
|
1448 |
yynewerror: |
|
1449 |
yyerror("syntax error"); |
|
1450 |
#ifdef lint
|
|
1451 |
goto yyerrlab; |
|
1452 |
#endif
|
|
1453 |
yyerrlab: |
|
1454 |
++yynerrs; |
|
1455 |
yyinrecovery: |
|
1456 |
if (yyerrflag < 3) |
|
1457 |
{
|
|
1458 |
yyerrflag = 3; |
|
1459 |
for (;;) |
|
1460 |
{
|
|
1461 |
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && |
|
1462 |
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) |
|
1463 |
{
|
|
1464 |
#if YYDEBUG
|
|
1465 |
if (yydebug) |
|
1466 |
printf("%sdebug: state %d, error recovery shifting\ |
|
1467 |
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); |
|
1468 |
#endif
|
|
1469 |
if (yyssp >= yyss + yystacksize - 1) |
|
1470 |
{
|
|
1471 |
goto yyoverflow; |
|
1472 |
}
|
|
1473 |
*++yyssp = yystate = yytable[yyn]; |
|
1474 |
*++yyvsp = yylval; |
|
1475 |
goto yyloop; |
|
1476 |
}
|
|
1477 |
else
|
|
1478 |
{
|
|
1479 |
#if YYDEBUG
|
|
1480 |
if (yydebug) |
|
1481 |
printf("%sdebug: error recovery discarding state %d\n", |
|
1482 |
YYPREFIX, *yyssp); |
|
1483 |
#endif
|
|
1484 |
if (yyssp <= yyss) goto yyabort; |
|
1485 |
--yyssp; |
|
1486 |
--yyvsp; |
|
1487 |
}
|
|
1488 |
}
|
|
1489 |
}
|
|
1490 |
else
|
|
1491 |
{
|
|
1492 |
if (yychar == 0) goto yyabort; |
|
1493 |
#if YYDEBUG
|
|
1494 |
if (yydebug) |
|
1495 |
{
|
|
1496 |
yys = 0; |
|
1497 |
if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
|
1498 |
if (!yys) yys = "illegal-symbol"; |
|
1499 |
printf("%sdebug: state %d, error recovery discards token %d (%s)\n", |
|
1500 |
YYPREFIX, yystate, yychar, yys); |
|
1501 |
}
|
|
1502 |
#endif
|
|
1503 |
yychar = (-1); |
|
1504 |
goto yyloop; |
|
1505 |
}
|
|
1506 |
yyreduce: |
|
1507 |
#if YYDEBUG
|
|
1508 |
if (yydebug) |
|
1509 |
printf("%sdebug: state %d, reducing by rule %d (%s)\n", |
|
1510 |
YYPREFIX, yystate, yyn, yyrule[yyn]); |
|
1511 |
#endif
|
|
1512 |
yym = yylen[yyn]; |
|
1513 |
yyval = yyvsp[1-yym]; |
|
1514 |
switch (yyn) |
|
1515 |
{
|
|
1516 |
case 6: |
|
1517 |
#line 210 "parse.y"
|
|
1518 |
{ /* this do nothing action removes a vacuous warning |
|
1519 |
from Bison */
|
|
1520 |
}
|
|
1521 |
break; |
|
1522 |
case 7: |
|
1523 |
#line 215 "parse.y"
|
|
1524 |
{ be_setup(scope = SCOPE_BEGIN) ; } |
|
1525 |
break; |
|
1526 |
case 8: |
|
1527 |
#line 218 "parse.y"
|
|
1528 |
{ switch_code_to_main() ; } |
|
1529 |
break; |
|
1530 |
case 9: |
|
1531 |
#line 221 "parse.y"
|
|
1532 |
{ be_setup(scope = SCOPE_END) ; } |
|
1533 |
break; |
|
1534 |
case 10: |
|
1535 |
#line 224 "parse.y"
|
|
1536 |
{ switch_code_to_main() ; } |
|
1537 |
break; |
|
1538 |
case 11: |
|
1539 |
#line 227 "parse.y"
|
|
1540 |
{ code_jmp(_JZ, (INST*)0) ; } |
|
1541 |
break; |
|
1542 |
case 12: |
|
1543 |
#line 230 "parse.y"
|
|
1544 |
{ patch_jmp( code_ptr ) ; } |
|
1545 |
break; |
|
1546 |
case 13: |
|
1547 |
#line 234 "parse.y"
|
|
1548 |
{
|
|
1549 |
INST *p1 = CDP(yyvsp[-1].start) ; |
|
1550 |
int len ; |
|
1551 |
||
1552 |
code_push(p1, code_ptr - p1, scope, active_funct) ; |
|
1553 |
code_ptr = p1 ; |
|
1554 |
||
1555 |
code2op(_RANGE, 1) ; |
|
1556 |
code_ptr += 3 ; |
|
1557 |
len = code_pop(code_ptr) ; |
|
1558 |
code_ptr += len ; |
|
1559 |
code1(_STOP) ; |
|
1560 |
p1 = CDP(yyvsp[-1].start) ; |
|
1561 |
p1[2].op = code_ptr - (p1+1) ; |
|
1562 |
}
|
|
1563 |
break; |
|
1564 |
case 14: |
|
1565 |
#line 250 "parse.y"
|
|
1566 |
{ code1(_STOP) ; } |
|
1567 |
break; |
|
1568 |
case 15: |
|
1569 |
#line 253 "parse.y"
|
|
1570 |
{
|
|
1571 |
INST *p1 = CDP(yyvsp[-5].start) ; |
|
1572 |
||
1573 |
p1[3].op = CDP(yyvsp[0].start) - (p1+1) ; |
|
1574 |
p1[4].op = code_ptr - (p1+1) ; |
|
1575 |
}
|
|
1576 |
break; |
|
1577 |
case 16: |
|
1578 |
#line 264 "parse.y"
|
|
1579 |
{ yyval.start = yyvsp[-1].start ; } |
|
1580 |
break; |
|
1581 |
case 17: |
|
1582 |
#line 266 "parse.y"
|
|
1583 |
{ yyval.start = code_offset ; /* does nothing won't be executed */ |
|
1584 |
print_flag = getline_flag = paren_cnt = 0 ; |
|
1585 |
yyerrok ; } |
|
1586 |
break; |
|
1587 |
case 19: |
|
1588 |
#line 273 "parse.y"
|
|
1589 |
{ yyval.start = code_offset ; |
|
1590 |
code1(_PUSHINT) ; code1(0) ; |
|
1591 |
code2(_PRINT, bi_print) ; |
|
1592 |
}
|
|
1593 |
break; |
|
1594 |
case 23: |
|
1595 |
#line 285 "parse.y"
|
|
1596 |
{ code1(_POP) ; } |
|
1597 |
break; |
|
1598 |
case 24: |
|
1599 |
#line 287 "parse.y"
|
|
1600 |
{ yyval.start = code_offset ; } |
|
1601 |
break; |
|
1602 |
case 25: |
|
1603 |
#line 289 "parse.y"
|
|
1604 |
{ yyval.start = code_offset ; |
|
1605 |
print_flag = getline_flag = 0 ; |
|
1606 |
paren_cnt = 0 ; |
|
1607 |
yyerrok ; |
|
1608 |
}
|
|
1609 |
break; |
|
1610 |
case 26: |
|
1611 |
#line 295 "parse.y"
|
|
1612 |
{ yyval.start = code_offset ; BC_insert('B', code_ptr+1) ; |
|
1613 |
code2(_JMP, 0) /* don't use code_jmp ! */ ; } |
|
1614 |
break; |
|
1615 |
case 27: |
|
1616 |
#line 298 "parse.y"
|
|
1617 |
{ yyval.start = code_offset ; BC_insert('C', code_ptr+1) ; |
|
1618 |
code2(_JMP, 0) ; } |
|
1619 |
break; |
|
1620 |
case 28: |
|
1621 |
#line 301 "parse.y"
|
|
1622 |
{ if ( scope != SCOPE_FUNCT ) |
|
1623 |
compile_error("return outside function body") ; |
|
1624 |
}
|
|
1625 |
break; |
|
1626 |
case 29: |
|
1627 |
#line 305 "parse.y"
|
|
1628 |
{ if ( scope != SCOPE_MAIN ) |
|
1629 |
compile_error( "improper use of next" ) ; |
|
1630 |
yyval.start = code_offset ; |
|
1631 |
code1(_NEXT) ; |
|
1632 |
}
|
|
1633 |
break; |
|
1634 |
case 33: |
|
1635 |
#line 316 "parse.y"
|
|
1636 |
{ code1(_ASSIGN) ; } |
|
1637 |
break; |
|
1638 |
case 34: |
|
1639 |
#line 317 "parse.y"
|
|
1640 |
{ code1(_ADD_ASG) ; } |
|
1641 |
break; |
|
1642 |
case 35: |
|
1643 |
#line 318 "parse.y"
|
|
1644 |
{ code1(_SUB_ASG) ; } |
|
1645 |
break; |
|
1646 |
case 36: |
|
1647 |
#line 319 "parse.y"
|
|
1648 |
{ code1(_MUL_ASG) ; } |
|
1649 |
break; |
|
1650 |
case 37: |
|
1651 |
#line 320 "parse.y"
|
|
1652 |
{ code1(_DIV_ASG) ; } |
|
1653 |
break; |
|
1654 |
case 38: |
|
1655 |
#line 321 "parse.y"
|
|
1656 |
{ code1(_MOD_ASG) ; } |
|
1657 |
break; |
|
1658 |
case 39: |
|
1659 |
#line 322 "parse.y"
|
|
1660 |
{ code1(_POW_ASG) ; } |
|
1661 |
break; |
|
1662 |
case 40: |
|
1663 |
#line 323 "parse.y"
|
|
1664 |
{ code1(_EQ) ; } |
|
1665 |
break; |
|
1666 |
case 41: |
|
1667 |
#line 324 "parse.y"
|
|
1668 |
{ code1(_NEQ) ; } |
|
1669 |
break; |
|
1670 |
case 42: |
|
1671 |
#line 325 "parse.y"
|
|
1672 |
{ code1(_LT) ; } |
|
1673 |
break; |
|
1674 |
case 43: |
|
1675 |
#line 326 "parse.y"
|
|
1676 |
{ code1(_LTE) ; } |
|
1677 |
break; |
|
1678 |
case 44: |
|
1679 |
#line 327 "parse.y"
|
|
1680 |
{ code1(_GT) ; } |
|
1681 |
break; |
|
1682 |
case 45: |
|
1683 |
#line 328 "parse.y"
|
|
1684 |
{ code1(_GTE) ; } |
|
1685 |
break; |
|
1686 |
case 46: |
|
1687 |
#line 331 "parse.y"
|
|
1688 |
{
|
|
1689 |
INST *p3 = CDP(yyvsp[0].start) ; |
|
1690 |
||
1691 |
if ( p3 == code_ptr - 2 ) |
|
1692 |
{
|
|
1693 |
if ( p3->op == _MATCH0 ) p3->op = _MATCH1 ; |
|
1694 |
||
1695 |
else /* check for string */ |
|
1696 |
if ( p3->op == _PUSHS ) |
|
1697 |
{ CELL *cp = ZMALLOC(CELL) ; |
|
1698 |
||
1699 |
cp->type = C_STRING ; |
|
1700 |
cp->ptr = p3[1].ptr ; |
|
1701 |
cast_to_RE(cp) ; |
|
1702 |
code_ptr -= 2 ; |
|
1703 |
code2(_MATCH1, cp->ptr) ; |
|
1704 |
ZFREE(cp) ; |
|
1705 |
}
|
|
1706 |
else code1(_MATCH2) ; |
|
1707 |
}
|
|
1708 |
else code1(_MATCH2) ; |
|
1709 |
||
1710 |
if ( !yyvsp[-1].ival ) code1(_NOT) ; |
|
1711 |
}
|
|
1712 |
break; |
|
1713 |
case 47: |
|
1714 |
#line 358 "parse.y"
|
|
1715 |
{ code1(_TEST) ; |
|
1716 |
code_jmp(_LJNZ, (INST*)0) ; |
|
1717 |
}
|
|
1718 |
break; |
|
1719 |
case 48: |
|
1720 |
#line 362 "parse.y"
|
|
1721 |
{ code1(_TEST) ; patch_jmp(code_ptr) ; } |
|
1722 |
break; |
|
1723 |
case 49: |
|
1724 |
#line 365 "parse.y"
|
|
1725 |
{ code1(_TEST) ; |
|
1726 |
code_jmp(_LJZ, (INST*)0) ; |
|
1727 |
}
|
|
1728 |
break; |
|
1729 |
case 50: |
|
1730 |
#line 369 "parse.y"
|
|
1731 |
{ code1(_TEST) ; patch_jmp(code_ptr) ; } |
|
1732 |
break; |
|
1733 |
case 51: |
|
1734 |
#line 371 "parse.y"
|
|
1735 |
{ code_jmp(_JZ, (INST*)0) ; } |
|
1736 |
break; |
|
1737 |
case 52: |
|
1738 |
#line 372 "parse.y"
|
|
1739 |
{ code_jmp(_JMP, (INST*)0) ; } |
|
1740 |
break; |
|
1741 |
case 53: |
|
1742 |
#line 374 "parse.y"
|
|
1743 |
{ patch_jmp(code_ptr) ; patch_jmp(CDP(yyvsp[0].start)) ; } |
|
1744 |
break; |
|
1745 |
case 55: |
|
1746 |
#line 379 "parse.y"
|
|
1747 |
{ code1(_CAT) ; } |
|
1748 |
break; |
|
1749 |
case 56: |
|
1750 |
#line 383 "parse.y"
|
|
1751 |
{ yyval.start = code_offset ; code2(_PUSHD, yyvsp[0].ptr) ; } |
|
1752 |
break; |
|
1753 |
case 57: |
|
1754 |
#line 385 "parse.y"
|
|
1755 |
{ yyval.start = code_offset ; code2(_PUSHS, yyvsp[0].ptr) ; } |
|
1756 |
break; |
|
1757 |
case 58: |
|
1758 |
#line 387 "parse.y"
|
|
1759 |
{ check_var(yyvsp[0].stp) ; |
|
1760 |
yyval.start = code_offset ; |
|
1761 |
if ( is_local(yyvsp[0].stp) ) |
|
1762 |
{ code2op(L_PUSHI, yyvsp[0].stp->offset) ; } |
|
1763 |
else code2(_PUSHI, yyvsp[0].stp->stval.cp) ; |
|
1764 |
}
|
|
1765 |
break; |
|
1766 |
case 59: |
|
1767 |
#line 395 "parse.y"
|
|
1768 |
{ yyval.start = yyvsp[-1].start ; } |
|
1769 |
break; |
|
1770 |
case 60: |
|
1771 |
#line 399 "parse.y"
|
|
1772 |
{ yyval.start = code_offset ; code2(_MATCH0, yyvsp[0].ptr) ; } |
|
1773 |
break; |
|
1774 |
case 61: |
|
1775 |
#line 402 "parse.y"
|
|
1776 |
{ code1(_ADD) ; } |
|
1777 |
break; |
|
1778 |
case 62: |
|
1779 |
#line 403 "parse.y"
|
|
1780 |
{ code1(_SUB) ; } |
|
1781 |
break; |
|
1782 |
case 63: |
|
1783 |
#line 404 "parse.y"
|
|
1784 |
{ code1(_MUL) ; } |
|
1785 |
break; |
|
1786 |
case 64: |
|
1787 |
#line 405 "parse.y"
|
|
1788 |
{ code1(_DIV) ; } |
|
1789 |
break; |
|
1790 |
case 65: |
|
1791 |
#line 406 "parse.y"
|
|
1792 |
{ code1(_MOD) ; } |
|
1793 |
break; |
|
1794 |
case 66: |
|
1795 |
#line 407 "parse.y"
|
|
1796 |
{ code1(_POW) ; } |
|
1797 |
break; |
|
1798 |
case 67: |
|
1799 |
#line 409 "parse.y"
|
|
1800 |
{ yyval.start = yyvsp[0].start ; code1(_NOT) ; } |
|
1801 |
break; |
|
1802 |
case 68: |
|
1803 |
#line 411 "parse.y"
|
|
1804 |
{ yyval.start = yyvsp[0].start ; code1(_UPLUS) ; } |
|
1805 |
break; |
|
1806 |
case 69: |
|
1807 |
#line 413 "parse.y"
|
|
1808 |
{ yyval.start = yyvsp[0].start ; code1(_UMINUS) ; } |
|
1809 |
break; |
|
1810 |
case 71: |
|
1811 |
#line 418 "parse.y"
|
|
1812 |
{ check_var(yyvsp[-1].stp) ; |
|
1813 |
yyval.start = code_offset ; |
|
1814 |
code_address(yyvsp[-1].stp) ; |
|
1815 |
||
1816 |
if ( yyvsp[0].ival == '+' ) code1(_POST_INC) ; |
|
1817 |
else code1(_POST_DEC) ; |
|
1818 |
}
|
|
1819 |
break; |
|
1820 |
case 72: |
|
1821 |
#line 426 "parse.y"
|
|
1822 |
{ yyval.start = yyvsp[0].start ; |
|
1823 |
if ( yyvsp[-1].ival == '+' ) code1(_PRE_INC) ; |
|
1824 |
else code1(_PRE_DEC) ; |
|
1825 |
}
|
|
1826 |
break; |
|
1827 |
case 73: |
|
1828 |
#line 433 "parse.y"
|
|
1829 |
{ if (yyvsp[0].ival == '+' ) code1(F_POST_INC ) ; |
|
1830 |
else code1(F_POST_DEC) ; |
|
1831 |
}
|
|
1832 |
break; |
|
1833 |
case 74: |
|
1834 |
#line 437 "parse.y"
|
|
1835 |
{ yyval.start = yyvsp[0].start ; |
|
1836 |
if ( yyvsp[-1].ival == '+' ) code1(F_PRE_INC) ; |
|
1837 |
else code1( F_PRE_DEC) ; |
|
1838 |
}
|
|
1839 |
break; |
|
1840 |
case 75: |
|
1841 |
#line 444 "parse.y"
|
|
1842 |
{ yyval.start = code_offset ; |
|
1843 |
check_var(yyvsp[0].stp) ; |
|
1844 |
code_address(yyvsp[0].stp) ; |
|
1845 |
}
|
|
1846 |
break; |
|
1847 |
case 76: |
|
1848 |
#line 452 "parse.y"
|
|
1849 |
{ yyval.ival = 0 ; } |
|
1850 |
break; |
|
1851 |
case 78: |
|
1852 |
#line 457 "parse.y"
|
|
1853 |
{ yyval.ival = 1 ; } |
|
1854 |
break; |
|
1855 |
case 79: |
|
1856 |
#line 459 "parse.y"
|
|
1857 |
{ yyval.ival = yyvsp[-2].ival + 1 ; } |
|
1858 |
break; |
|
1859 |
case 80: |
|
1860 |
#line 464 "parse.y"
|
|
1861 |
{ BI_REC *p = yyvsp[-4].bip ; |
|
1862 |
yyval.start = yyvsp[-3].start ; |
|
1863 |
if ( (int)p->min_args > yyvsp[-1].ival || (int)p->max_args < yyvsp[-1].ival ) |
|
1864 |
compile_error( |
|
1865 |
"wrong number of arguments in call to %s" , |
|
1866 |
p->name ) ; |
|
1867 |
if ( p->min_args != p->max_args ) /* variable args */ |
|
1868 |
{ code1(_PUSHINT) ; code1(yyvsp[-1].ival) ; } |
|
1869 |
code2(_BUILTIN , p->fp) ; |
|
1870 |
}
|
|
1871 |
break; |
|
1872 |
case 81: |
|
1873 |
#line 475 "parse.y"
|
|
1874 |
{
|
|
1875 |
yyval.start = code_offset ; |
|
1876 |
code1(_PUSHINT) ; code1(0) ; |
|
1877 |
code2(_BUILTIN, yyvsp[0].bip->fp) ; |
|
1878 |
}
|
|
1879 |
break; |
|
1880 |
case 82: |
|
1881 |
#line 484 "parse.y"
|
|
1882 |
{ yyval.start = code_offset ; } |
|
1883 |
break; |
|
1884 |
case 83: |
|
1885 |
#line 488 "parse.y"
|
|
1886 |
{ code2(_PRINT, yyvsp[-4].fp) ; |
|
1887 |
if ( yyvsp[-4].fp == bi_printf && yyvsp[-2].ival == 0 ) |
|
1888 |
compile_error("no arguments in call to printf") ; |
|
1889 |
print_flag = 0 ; |
|
1890 |
yyval.start = yyvsp[-3].start ; |
|
1891 |
}
|
|
1892 |
break; |
|
1893 |
case 84: |
|
1894 |
#line 496 "parse.y"
|
|
1895 |
{ yyval.fp = bi_print ; print_flag = 1 ;} |
|
1896 |
break; |
|
1897 |
case 85: |
|
1898 |
#line 497 "parse.y"
|
|
1899 |
{ yyval.fp = bi_printf ; print_flag = 1 ; } |
|
1900 |
break; |
|
1901 |
case 86: |
|
1902 |
#line 500 "parse.y"
|
|
1903 |
{ code2op(_PUSHINT, yyvsp[0].ival) ; } |
|
1904 |
break; |
|
1905 |
case 87: |
|
1906 |
#line 502 "parse.y"
|
|
1907 |
{ yyval.ival = yyvsp[-1].arg2p->cnt ; zfree(yyvsp[-1].arg2p,sizeof(ARG2_REC)) ; |
|
1908 |
code2op(_PUSHINT, yyval.ival) ; |
|
1909 |
}
|
|
1910 |
break; |
|
1911 |
case 88: |
|
1912 |
#line 506 "parse.y"
|
|
1913 |
{ yyval.ival=0 ; code2op(_PUSHINT, 0) ; } |
|
1914 |
break; |
|
1915 |
case 89: |
|
1916 |
#line 510 "parse.y"
|
|
1917 |
{ yyval.arg2p = (ARG2_REC*) zmalloc(sizeof(ARG2_REC)) ; |
|
1918 |
yyval.arg2p->start = yyvsp[-2].start ; |
|
1919 |
yyval.arg2p->cnt = 2 ; |
|
1920 |
}
|
|
1921 |
break; |
|
1922 |
case 90: |
|
1923 |
#line 515 "parse.y"
|
|
1924 |
{ yyval.arg2p = yyvsp[-2].arg2p ; yyval.arg2p->cnt++ ; } |
|
1925 |
break; |
|
1926 |
case 92: |
|
1927 |
#line 520 "parse.y"
|
|
1928 |
{ code2op(_PUSHINT, yyvsp[-1].ival) ; } |
|
1929 |
break; |
|
1930 |
case 93: |
|
1931 |
#line 527 "parse.y"
|
|
1932 |
{ yyval.start = yyvsp[-1].start ; eat_nl() ; code_jmp(_JZ, (INST*)0) ; } |
|
1933 |
break; |
|
1934 |
case 94: |
|
1935 |
#line 532 "parse.y"
|
|
1936 |
{ patch_jmp( code_ptr ) ; } |
|
1937 |
break; |
|
1938 |
case 95: |
|
1939 |
#line 535 "parse.y"
|
|
1940 |
{ eat_nl() ; code_jmp(_JMP, (INST*)0) ; } |
|
1941 |
break; |
|
1942 |
case 96: |
|
1943 |
#line 540 "parse.y"
|
|
1944 |
{ patch_jmp(code_ptr) ; |
|
1945 |
patch_jmp(CDP(yyvsp[0].start)) ; |
|
1946 |
}
|
|
1947 |
break; |
|
1948 |
case 97: |
|
1949 |
#line 548 "parse.y"
|
|
1950 |
{ eat_nl() ; BC_new() ; } |
|
1951 |
break; |
|
1952 |
case 98: |
|
1953 |
#line 553 "parse.y"
|
|
1954 |
{ yyval.start = yyvsp[-5].start ; |
|
1955 |
code_jmp(_JNZ, CDP(yyvsp[-5].start)) ; |
|
1956 |
BC_clear(code_ptr, CDP(yyvsp[-2].start)) ; } |
|
1957 |
break; |
|
1958 |
case 99: |
|
1959 |
#line 559 "parse.y"
|
|
1960 |
{ eat_nl() ; BC_new() ; |
|
1961 |
yyval.start = yyvsp[-1].start ; |
|
1962 |
||
1963 |
/* check if const expression */
|
|
1964 |
if ( code_ptr - 2 == CDP(yyvsp[-1].start) && |
|
1965 |
code_ptr[-2].op == _PUSHD && |
|
1966 |
*(double*)code_ptr[-1].ptr != 0.0 |
|
1967 |
)
|
|
1968 |
code_ptr -= 2 ; |
|
1969 |
else
|
|
1970 |
{ INST *p3 = CDP(yyvsp[-1].start) ; |
|
1971 |
code_push(p3, code_ptr-p3, scope, active_funct) ; |
|
1972 |
code_ptr = p3 ; |
|
1973 |
code2(_JMP, (INST*)0) ; /* code2() not code_jmp() */ |
|
1974 |
}
|
|
1975 |
}
|
|
1976 |
break; |
|
1977 |
case 100: |
|
1978 |
#line 579 "parse.y"
|
|
1979 |
{
|
|
1980 |
int saved_offset ; |
|
1981 |
int len ; |
|
1982 |
INST *p1 = CDP(yyvsp[-1].start) ; |
|
1983 |
INST *p2 = CDP(yyvsp[0].start) ; |
|
1984 |
||
1985 |
if ( p1 != p2 ) /* real test in loop */ |
|
1986 |
{
|
|
1987 |
p1[1].op = code_ptr-(p1+1) ; |
|
1988 |
saved_offset = code_offset ; |
|
1989 |
len = code_pop(code_ptr) ; |
|
1990 |
code_ptr += len ; |
|
1991 |
code_jmp(_JNZ, CDP(yyvsp[0].start)) ; |
|
1992 |
BC_clear(code_ptr, CDP(saved_offset)) ; |
|
1993 |
}
|
|
1994 |
else /* while(1) */ |
|
1995 |
{
|
|
1996 |
code_jmp(_JMP, p1) ; |
|
1997 |
BC_clear(code_ptr, CDP(yyvsp[0].start)) ; |
|
1998 |
}
|
|
1999 |
}
|
|
2000 |
break; |
|
2001 |
case 101: |
|
2002 |
#line 605 "parse.y"
|
|
2003 |
{
|
|
2004 |
int cont_offset = code_offset ; |
|
2005 |
unsigned len = code_pop(code_ptr) ; |
|
2006 |
INST *p2 = CDP(yyvsp[-2].start) ; |
|
2007 |
INST *p4 = CDP(yyvsp[0].start) ; |
|
2008 |
||
2009 |
code_ptr += len ; |
|
2010 |
||
2011 |
if ( p2 != p4 ) /* real test in for2 */ |
|
2012 |
{
|
|
2013 |
p4[-1].op = code_ptr - p4 + 1 ; |
|
2014 |
len = code_pop(code_ptr) ; |
|
2015 |
code_ptr += len ; |
|
2016 |
code_jmp(_JNZ, CDP(yyvsp[0].start)) ; |
|
2017 |
}
|
|
2018 |
else /* for(;;) */ |
|
2019 |
code_jmp(_JMP, p4) ; |
|
2020 |
||
2021 |
BC_clear(code_ptr, CDP(cont_offset)) ; |
|
2022 |
||
2023 |
}
|
|
2024 |
break; |
|
2025 |
case 102: |
|
2026 |
#line 628 "parse.y"
|
|
2027 |
{ yyval.start = code_offset ; } |
|
2028 |
break; |
|
2029 |
case 103: |
|
2030 |
#line 630 "parse.y"
|
|
2031 |
{ yyval.start = yyvsp[-1].start ; code1(_POP) ; } |
|
2032 |
break; |
|
2033 |
case 104: |
|
2034 |
#line 633 "parse.y"
|
|
2035 |
{ yyval.start = code_offset ; } |
|
2036 |
break; |
|
2037 |
case 105: |
|
2038 |
#line 635 "parse.y"
|
|
2039 |
{
|
|
2040 |
if ( code_ptr - 2 == CDP(yyvsp[-1].start) && |
|
2041 |
code_ptr[-2].op == _PUSHD && |
|
2042 |
* (double*) code_ptr[-1].ptr != 0.0 |
|
2043 |
)
|
|
2044 |
code_ptr -= 2 ; |
|
2045 |
else
|
|
2046 |
{
|
|
2047 |
INST *p1 = CDP(yyvsp[-1].start) ; |
|
2048 |
code_push(p1, code_ptr-p1, scope, active_funct) ; |
|
2049 |
code_ptr = p1 ; |
|
2050 |
code2(_JMP, (INST*)0) ; |
|
2051 |
}
|
|
2052 |
}
|
|
2053 |
break; |
|
2054 |
case 106: |
|
2055 |
#line 652 "parse.y"
|
|
2056 |
{ eat_nl() ; BC_new() ; |
|
2057 |
code_push((INST*)0,0, scope, active_funct) ; |
|
2058 |
}
|
|
2059 |
break; |
|
2060 |
case 107: |
|
2061 |
#line 656 "parse.y"
|
|
2062 |
{ INST *p1 = CDP(yyvsp[-1].start) ; |
|
2063 |
||
2064 |
eat_nl() ; BC_new() ; |
|
2065 |
code1(_POP) ; |
|
2066 |
code_push(p1, code_ptr - p1, scope, active_funct) ; |
|
2067 |
code_ptr -= code_ptr - p1 ; |
|
2068 |
}
|
|
2069 |
break; |
|
2070 |
case 108: |
|
2071 |
#line 669 "parse.y"
|
|
2072 |
{ check_array(yyvsp[0].stp) ; |
|
2073 |
code_array(yyvsp[0].stp) ; |
|
2074 |
code1(A_TEST) ; |
|
2075 |
}
|
|
2076 |
break; |
|
2077 |
case 109: |
|
2078 |
#line 674 "parse.y"
|
|
2079 |
{ yyval.start = yyvsp[-3].arg2p->start ; |
|
2080 |
code2op(A_CAT, yyvsp[-3].arg2p->cnt) ; |
|
2081 |
zfree(yyvsp[-3].arg2p, sizeof(ARG2_REC)) ; |
|
2082 |
||
2083 |
check_array(yyvsp[0].stp) ; |
|
2084 |
code_array(yyvsp[0].stp) ; |
|
2085 |
code1(A_TEST) ; |
|
2086 |
}
|
|
2087 |
break; |
|
2088 |
case 110: |
|
2089 |
#line 685 "parse.y"
|
|
2090 |
{
|
|
2091 |
if ( yyvsp[-1].ival > 1 ) |
|
2092 |
{ code2op(A_CAT, yyvsp[-1].ival) ; } |
|
2093 |
||
2094 |
check_array(yyvsp[-4].stp) ; |
|
2095 |
if( is_local(yyvsp[-4].stp) ) |
|
2096 |
{ code2op(LAE_PUSHA, yyvsp[-4].stp->offset) ; } |
|
2097 |
else code2(AE_PUSHA, yyvsp[-4].stp->stval.array) ; |
|
2098 |
yyval.start = yyvsp[-3].start ; |
|
2099 |
}
|
|
2100 |
break; |
|
2101 |
case 111: |
|
2102 |
#line 698 "parse.y"
|
|
2103 |
{
|
|
2104 |
if ( yyvsp[-1].ival > 1 ) |
|
2105 |
{ code2op(A_CAT, yyvsp[-1].ival) ; } |
|
2106 |
||
2107 |
check_array(yyvsp[-4].stp) ; |
|
2108 |
if( is_local(yyvsp[-4].stp) ) |
|
2109 |
{ code2op(LAE_PUSHI, yyvsp[-4].stp->offset) ; } |
|
2110 |
else code2(AE_PUSHI, yyvsp[-4].stp->stval.array) ; |
|
2111 |
yyval.start = yyvsp[-3].start ; |
|
2112 |
}
|
|
2113 |
break; |
|
2114 |
case 112: |
|
2115 |
#line 710 "parse.y"
|
|
2116 |
{
|
|
2117 |
if ( yyvsp[-2].ival > 1 ) |
|
2118 |
{ code2op(A_CAT,yyvsp[-2].ival) ; } |
|
2119 |
||
2120 |
check_array(yyvsp[-5].stp) ; |
|
2121 |
if( is_local(yyvsp[-5].stp) ) |
|
2122 |
{ code2op(LAE_PUSHA, yyvsp[-5].stp->offset) ; } |
|
2123 |
else code2(AE_PUSHA, yyvsp[-5].stp->stval.array) ; |
|
2124 |
if ( yyvsp[0].ival == '+' ) code1(_POST_INC) ; |
|
2125 |
else code1(_POST_DEC) ; |
|
2126 |
||
2127 |
yyval.start = yyvsp[-4].start ; |
|
2128 |
}
|
|
2129 |
break; |
|
2130 |
case 113: |
|
2131 |
#line 727 "parse.y"
|
|
2132 |
{
|
|
2133 |
yyval.start = yyvsp[-4].start ; |
|
2134 |
if ( yyvsp[-2].ival > 1 ) { code2op(A_CAT, yyvsp[-2].ival) ; } |
|
2135 |
check_array(yyvsp[-5].stp) ; |
|
2136 |
code_array(yyvsp[-5].stp) ; |
|
2137 |
code1(A_DEL) ; |
|
2138 |
}
|
|
2139 |
break; |
|
2140 |
case 114: |
|
2141 |
#line 735 "parse.y"
|
|
2142 |
{
|
|
2143 |
yyval.start = code_offset ; |
|
2144 |
check_array(yyvsp[-1].stp) ; |
|
2145 |
code_array(yyvsp[-1].stp) ; |
|
2146 |
code1(DEL_A) ; |
|
2147 |
}
|
|
2148 |
break; |
|
2149 |
case 115: |
|
2150 |
#line 746 "parse.y"
|
|
2151 |
{ eat_nl() ; BC_new() ; |
|
2152 |
yyval.start = code_offset ; |
|
2153 |
||
2154 |
check_var(yyvsp[-3].stp) ; |
|
2155 |
code_address(yyvsp[-3].stp) ; |
|
2156 |
check_array(yyvsp[-1].stp) ; |
|
2157 |
code_array(yyvsp[-1].stp) ; |
|
2158 |
||
2159 |
code2(SET_ALOOP, (INST*)0) ; |
|
2160 |
}
|
|
2161 |
break; |
|
2162 |
case 116: |
|
2163 |
#line 760 "parse.y"
|
|
2164 |
{
|
|
2165 |
INST *p2 = CDP(yyvsp[0].start) ; |
|
2166 |
||
2167 |
p2[-1].op = code_ptr - p2 + 1 ; |
|
2168 |
BC_clear( code_ptr+2 , code_ptr) ; |
|
2169 |
code_jmp(ALOOP, p2) ; |
|
2170 |
code1(POP_AL) ; |
|
2171 |
}
|
|
2172 |
break; |
|
2173 |
case 117: |
|
2174 |
#line 777 "parse.y"
|
|
2175 |
{ yyval.start = code_offset ; code2(F_PUSHA, yyvsp[0].cp) ; } |
|
2176 |
break; |
|
2177 |
case 118: |
|
2178 |
#line 779 "parse.y"
|
|
2179 |
{ check_var(yyvsp[0].stp) ; |
|
2180 |
yyval.start = code_offset ; |
|
2181 |
if ( is_local(yyvsp[0].stp) ) |
|
2182 |
{ code2op(L_PUSHI, yyvsp[0].stp->offset) ; } |
|
2183 |
else code2(_PUSHI, yyvsp[0].stp->stval.cp) ; |
|
2184 |
||
2185 |
CODE_FE_PUSHA() ; |
|
2186 |
}
|
|
2187 |
break; |
|
2188 |
case 119: |
|
2189 |
#line 788 "parse.y"
|
|
2190 |
{
|
|
2191 |
if ( yyvsp[-1].ival > 1 ) |
|
2192 |
{ code2op(A_CAT, yyvsp[-1].ival) ; } |
|
2193 |
||
2194 |
check_array(yyvsp[-4].stp) ; |
|
2195 |
if( is_local(yyvsp[-4].stp) ) |
|
2196 |
{ code2op(LAE_PUSHI, yyvsp[-4].stp->offset) ; } |
|
2197 |
else code2(AE_PUSHI, yyvsp[-4].stp->stval.array) ; |
|
2198 |
||
2199 |
CODE_FE_PUSHA() ; |
|
2200 |
||
2201 |
yyval.start = yyvsp[-3].start ; |
|
2202 |
}
|
|
2203 |
break; |
|
2204 |
case 120: |
|
2205 |
#line 802 "parse.y"
|
|
2206 |
{ yyval.start = yyvsp[0].start ; CODE_FE_PUSHA() ; } |
|
2207 |
break; |
|
2208 |
case 121: |
|
2209 |
#line 804 "parse.y"
|
|
2210 |
{ yyval.start = yyvsp[-1].start ; } |
|
2211 |
break; |
|
2212 |
case 122: |
|
2213 |
#line 808 "parse.y"
|
|
2214 |
{ field_A2I() ; } |
|
2215 |
break; |
|
2216 |
case 123: |
|
2217 |
#line 811 "parse.y"
|
|
2218 |
{ code1(F_ASSIGN) ; } |
|
2219 |
break; |
|
2220 |
case 124: |
|
2221 |
#line 812 "parse.y"
|
|
2222 |
{ code1(F_ADD_ASG) ; } |
|
2223 |
break; |
|
2224 |
case 125: |
|
2225 |
#line 813 "parse.y"
|
|
2226 |
{ code1(F_SUB_ASG) ; } |
|
2227 |
break; |
|
2228 |
case 126: |
|
2229 |
#line 814 "parse.y"
|
|
2230 |
{ code1(F_MUL_ASG) ; } |
|
2231 |
break; |
|
2232 |
case 127: |
|
2233 |
#line 815 "parse.y"
|
|
2234 |
{ code1(F_DIV_ASG) ; } |
|
2235 |
break; |
|
2236 |
case 128: |
|
2237 |
#line 816 "parse.y"
|
|
2238 |
{ code1(F_MOD_ASG) ; } |
|
2239 |
break; |
|
2240 |
case 129: |
|
2241 |
#line 817 "parse.y"
|
|
2242 |
{ code1(F_POW_ASG) ; } |
|
2243 |
break; |
|
2244 |
case 130: |
|
2245 |
#line 824 "parse.y"
|
|
2246 |
{ code2(_BUILTIN, bi_split) ; } |
|
2247 |
break; |
|
2248 |
case 131: |
|
2249 |
#line 828 "parse.y"
|
|
2250 |
{ yyval.start = yyvsp[-2].start ; |
|
2251 |
check_array(yyvsp[0].stp) ; |
|
2252 |
code_array(yyvsp[0].stp) ; |
|
2253 |
}
|
|
2254 |
break; |
|
2255 |
case 132: |
|
2256 |
#line 835 "parse.y"
|
|
2257 |
{ code2(_PUSHI, &fs_shadow) ; } |
|
2258 |
break; |
|
2259 |
case 133: |
|
2260 |
#line 837 "parse.y"
|
|
2261 |
{
|
|
2262 |
if ( CDP(yyvsp[-1].start) == code_ptr - 2 ) |
|
2263 |
{
|
|
2264 |
if ( code_ptr[-2].op == _MATCH0 ) |
|
2265 |
RE_as_arg() ; |
|
2266 |
else
|
|
2267 |
if ( code_ptr[-2].op == _PUSHS ) |
|
2268 |
{ CELL *cp = ZMALLOC(CELL) ; |
|
2269 |
||
2270 |
cp->type = C_STRING ; |
|
2271 |
cp->ptr = code_ptr[-1].ptr ; |
|
2272 |
cast_for_split(cp) ; |
|
2273 |
code_ptr[-2].op = _PUSHC ; |
|
2274 |
code_ptr[-1].ptr = (PTR) cp ; |
|
2275 |
}
|
|
2276 |
}
|
|
2277 |
}
|
|
2278 |
break; |
|
2279 |
case 134: |
|
2280 |
#line 861 "parse.y"
|
|
2281 |
{ yyval.start = yyvsp[-3].start ; |
|
2282 |
code2(_BUILTIN, bi_match) ; |
|
2283 |
}
|
|
2284 |
break; |
|
2285 |
case 135: |
|
2286 |
#line 868 "parse.y"
|
|
2287 |
{
|
|
2288 |
INST *p1 = CDP(yyvsp[0].start) ; |
|
2289 |
||
2290 |
if ( p1 == code_ptr - 2 ) |
|
2291 |
{
|
|
2292 |
if ( p1->op == _MATCH0 ) RE_as_arg() ; |
|
2293 |
else
|
|
2294 |
if ( p1->op == _PUSHS ) |
|
2295 |
{ CELL *cp = ZMALLOC(CELL) ; |
|
2296 |
||
2297 |
cp->type = C_STRING ; |
|
2298 |
cp->ptr = p1[1].ptr ; |
|
2299 |
cast_to_RE(cp) ; |
|
2300 |
p1->op = _PUSHC ; |
|
2301 |
p1[1].ptr = (PTR) cp ; |
|
2302 |
}
|
|
2303 |
}
|
|
2304 |
}
|
|
2305 |
break; |
|
2306 |
case 136: |
|
2307 |
#line 891 "parse.y"
|
|
2308 |
{ yyval.start = code_offset ; |
|
2309 |
code1(_EXIT0) ; } |
|
2310 |
break; |
|
2311 |
case 137: |
|
2312 |
#line 894 "parse.y"
|
|
2313 |
{ yyval.start = yyvsp[-1].start ; code1(_EXIT) ; } |
|
2314 |
break; |
|
2315 |
case 138: |
|
2316 |
#line 897 "parse.y"
|
|
2317 |
{ yyval.start = code_offset ; |
|
2318 |
code1(_RET0) ; } |
|
2319 |
break; |
|
2320 |
case 139: |
|
2321 |
#line 900 "parse.y"
|
|
2322 |
{ yyval.start = yyvsp[-1].start ; code1(_RET) ; } |
|
2323 |
break; |
|
2324 |
case 140: |
|
2325 |
#line 905 "parse.y"
|
|
2326 |
{ yyval.start = code_offset ; |
|
2327 |
code2(F_PUSHA, &field[0]) ; |
|
2328 |
code1(_PUSHINT) ; code1(0) ; |
|
2329 |
code2(_BUILTIN, bi_getline) ; |
|
2330 |
getline_flag = 0 ; |
|
2331 |
}
|
|
2332 |
break; |
|
2333 |
case 141: |
|
2334 |
#line 912 "parse.y"
|
|
2335 |
{ yyval.start = yyvsp[0].start ; |
|
2336 |
code1(_PUSHINT) ; code1(0) ; |
|
2337 |
code2(_BUILTIN, bi_getline) ; |
|
2338 |
getline_flag = 0 ; |
|
2339 |
}
|
|
2340 |
break; |
|
2341 |
case 142: |
|
2342 |
#line 918 "parse.y"
|
|
2343 |
{ code1(_PUSHINT) ; code1(F_IN) ; |
|
2344 |
code2(_BUILTIN, bi_getline) ; |
|
2345 |
/* getline_flag already off in yylex() */
|
|
2346 |
}
|
|
2347 |
break; |
|
2348 |
case 143: |
|
2349 |
#line 923 "parse.y"
|
|
2350 |
{ code2(F_PUSHA, &field[0]) ; |
|
2351 |
code1(_PUSHINT) ; code1(PIPE_IN) ; |
|
2352 |
code2(_BUILTIN, bi_getline) ; |
|
2353 |
}
|
|
2354 |
break; |
|
2355 |
case 144: |
|
2356 |
#line 928 "parse.y"
|
|
2357 |
{
|
|
2358 |
code1(_PUSHINT) ; code1(PIPE_IN) ; |
|
2359 |
code2(_BUILTIN, bi_getline) ; |
|
2360 |
}
|
|
2361 |
break; |
|
2362 |
case 145: |
|
2363 |
#line 934 "parse.y"
|
|
2364 |
{ getline_flag = 1 ; } |
|
2365 |
break; |
|
2366 |
case 148: |
|
2367 |
#line 939 "parse.y"
|
|
2368 |
{ yyval.start = code_offset ; |
|
2369 |
code2(F_PUSHA, field+0) ; |
|
2370 |
}
|
|
2371 |
break; |
|
2372 |
case 149: |
|
2373 |
#line 943 "parse.y"
|
|
2374 |
{ yyval.start = yyvsp[-1].start ; } |
|
2375 |
break; |
|
2376 |
case 150: |
|
2377 |
#line 951 "parse.y"
|
|
2378 |
{
|
|
2379 |
INST *p5 = CDP(yyvsp[-1].start) ; |
|
2380 |
INST *p6 = CDP(yyvsp[0].start) ; |
|
2381 |
||
2382 |
if ( p6 - p5 == 2 && p5->op == _PUSHS ) |
|
2383 |
{ /* cast from STRING to REPL at compile time */ |
|
2384 |
CELL *cp = ZMALLOC(CELL) ; |
|
2385 |
cp->type = C_STRING ; |
|
2386 |
cp->ptr = p5[1].ptr ; |
|
2387 |
cast_to_REPL(cp) ; |
|
2388 |
p5->op = _PUSHC ; |
|
2389 |
p5[1].ptr = (PTR) cp ; |
|
2390 |
}
|
|
2391 |
code2(_BUILTIN, yyvsp[-5].fp) ; |
|
2392 |
yyval.start = yyvsp[-3].start ; |
|
2393 |
}
|
|
2394 |
break; |
|
2395 |
case 151: |
|
2396 |
#line 969 "parse.y"
|
|
2397 |
{ yyval.fp = bi_sub ; } |
|
2398 |
break; |
|
2399 |
case 152: |
|
2400 |
#line 970 "parse.y"
|
|
2401 |
{ yyval.fp = bi_gsub ; } |
|
2402 |
break; |
|
2403 |
case 153: |
|
2404 |
#line 975 "parse.y"
|
|
2405 |
{ yyval.start = code_offset ; |
|
2406 |
code2(F_PUSHA, &field[0]) ; |
|
2407 |
}
|
|
2408 |
break; |
|
2409 |
case 154: |
|
2410 |
#line 980 "parse.y"
|
|
2411 |
{ yyval.start = yyvsp[-1].start ; } |
|
2412 |
break; |
|
2413 |
case 155: |
|
2414 |
#line 988 "parse.y"
|
|
2415 |
{
|
|
2416 |
resize_fblock(yyvsp[-1].fbp) ; |
|
2417 |
restore_ids() ; |
|
2418 |
switch_code_to_main() ; |
|
2419 |
}
|
|
2420 |
break; |
|
2421 |
case 156: |
|
2422 |
#line 997 "parse.y"
|
|
2423 |
{ eat_nl() ; |
|
2424 |
scope = SCOPE_FUNCT ; |
|
2425 |
active_funct = yyvsp[-3].fbp ; |
|
2426 |
*main_code_p = active_code ; |
|
2427 |
||
2428 |
yyvsp[-3].fbp->nargs = yyvsp[-1].ival ; |
|
2429 |
if ( yyvsp[-1].ival ) |
|
2430 |
yyvsp[-3].fbp->typev = (char *) |
|
2431 |
memset( zmalloc(yyvsp[-1].ival), ST_LOCAL_NONE, yyvsp[-1].ival) ; |
|
2432 |
else yyvsp[-3].fbp->typev = (char *) 0 ; |
|
2433 |
||
2434 |
code_ptr = code_base = |
|
2435 |
(INST *) zmalloc(INST_BYTES(PAGESZ)); |
|
2436 |
code_limit = code_base + PAGESZ ; |
|
2437 |
code_warn = code_limit - CODEWARN ; |
|
2438 |
}
|
|
2439 |
break; |
|
2440 |
case 157: |
|
2441 |
#line 1016 "parse.y"
|
|
2442 |
{ FBLOCK *fbp ; |
|
2443 |
||
2444 |
if ( yyvsp[0].stp->type == ST_NONE ) |
|
2445 |
{
|
|
2446 |
yyvsp[0].stp->type = ST_FUNCT ; |
|
2447 |
fbp = yyvsp[0].stp->stval.fbp = |
|
2448 |
(FBLOCK *) zmalloc(sizeof(FBLOCK)) ; |
|
2449 |
fbp->name = yyvsp[0].stp->name ; |
|
2450 |
fbp->code = (INST*) 0 ; |
|
2451 |
}
|
|
2452 |
else
|
|
2453 |
{
|
|
2454 |
type_error( yyvsp[0].stp ) ; |
|
2455 |
||
2456 |
/* this FBLOCK will not be put in
|
|
2457 |
the symbol table */
|
|
2458 |
fbp = (FBLOCK*) zmalloc(sizeof(FBLOCK)) ; |
|
2459 |
fbp->name = "" ; |
|
2460 |
}
|
|
2461 |
yyval.fbp = fbp ; |
|
2462 |
}
|
|
2463 |
break; |
|
2464 |
case 158: |
|
2465 |
#line 1039 "parse.y"
|
|
2466 |
{ yyval.fbp = yyvsp[0].fbp ; |
|
2467 |
if ( yyvsp[0].fbp->code ) |
|
2468 |
compile_error("redefinition of %s" , yyvsp[0].fbp->name) ; |
|
2469 |
}
|
|
2470 |
break; |
|
2471 |
case 159: |
|
2472 |
#line 1045 "parse.y"
|
|
2473 |
{ yyval.ival = 0 ; } |
|
2474 |
break; |
|
2475 |
case 161: |
|
2476 |
#line 1050 "parse.y"
|
|
2477 |
{ yyvsp[0].stp = save_id(yyvsp[0].stp->name) ; |
|
2478 |
yyvsp[0].stp->type = ST_LOCAL_NONE ; |
|
2479 |
yyvsp[0].stp->offset = 0 ; |
|
2480 |
yyval.ival = 1 ; |
|
2481 |
}
|
|
2482 |
break; |
|
2483 |
case 162: |
|
2484 |
#line 1056 "parse.y"
|
|
2485 |
{ if ( is_local(yyvsp[0].stp) ) |
|
2486 |
compile_error("%s is duplicated in argument list", |
|
2487 |
yyvsp[0].stp->name) ; |
|
2488 |
else
|
|
2489 |
{ yyvsp[0].stp = save_id(yyvsp[0].stp->name) ; |
|
2490 |
yyvsp[0].stp->type = ST_LOCAL_NONE ; |
|
2491 |
yyvsp[0].stp->offset = yyvsp[-2].ival ; |
|
2492 |
yyval.ival = yyvsp[-2].ival + 1 ; |
|
2493 |
}
|
|
2494 |
}
|
|
2495 |
break; |
|
2496 |
case 163: |
|
2497 |
#line 1069 "parse.y"
|
|
2498 |
{ /* we may have to recover from a bungled function |
|
2499 |
definition */
|
|
2500 |
/* can have local ids, before code scope
|
|
2501 |
changes */
|
|
2502 |
restore_ids() ; |
|
2503 |
||
2504 |
switch_code_to_main() ; |
|
2505 |
}
|
|
2506 |
break; |
|
2507 |
case 164: |
|
2508 |
#line 1082 "parse.y"
|
|
2509 |
{ yyval.start = yyvsp[-1].start ; |
|
2510 |
code2(_CALL, yyvsp[-2].fbp) ; |
|
2511 |
||
2512 |
if ( yyvsp[0].ca_p ) code1(yyvsp[0].ca_p->arg_num+1) ; |
|
2513 |
else code1(0) ; |
|
2514 |
||
2515 |
check_fcall(yyvsp[-2].fbp, scope, code_move_level, active_funct, |
|
2516 |
yyvsp[0].ca_p, token_lineno) ; |
|
2517 |
}
|
|
2518 |
break; |
|
2519 |
case 165: |
|
2520 |
#line 1094 "parse.y"
|
|
2521 |
{ yyval.ca_p = (CA_REC *) 0 ; } |
|
2522 |
break; |
|
2523 |
case 166: |
|
2524 |
#line 1096 "parse.y"
|
|
2525 |
{ yyval.ca_p = yyvsp[0].ca_p ; |
|
2526 |
yyval.ca_p->link = yyvsp[-1].ca_p ; |
|
2527 |
yyval.ca_p->arg_num = yyvsp[-1].ca_p ? yyvsp[-1].ca_p->arg_num+1 : 0 ; |
|
2528 |
}
|
|
2529 |
break; |
|
2530 |
case 167: |
|
2531 |
#line 1111 "parse.y"
|
|
2532 |
{ yyval.ca_p = (CA_REC *) 0 ; } |
|
2533 |
break; |
|
2534 |
case 168: |
|
2535 |
#line 1113 "parse.y"
|
|
2536 |
{ yyval.ca_p = ZMALLOC(CA_REC) ; |
|
2537 |
yyval.ca_p->link = yyvsp[-2].ca_p ; |
|
2538 |
yyval.ca_p->type = CA_EXPR ; |
|
2539 |
yyval.ca_p->arg_num = yyvsp[-2].ca_p ? yyvsp[-2].ca_p->arg_num+1 : 0 ; |
|
2540 |
yyval.ca_p->call_offset = code_offset ; |
|
2541 |
}
|
|
2542 |
break; |
|
2543 |
case 169: |
|
2544 |
#line 1120 "parse.y"
|
|
2545 |
{ yyval.ca_p = ZMALLOC(CA_REC) ; |
|
2546 |
yyval.ca_p->link = yyvsp[-2].ca_p ; |
|
2547 |
yyval.ca_p->arg_num = yyvsp[-2].ca_p ? yyvsp[-2].ca_p->arg_num+1 : 0 ; |
|
2548 |
||
2549 |
code_call_id(yyval.ca_p, yyvsp[-1].stp) ; |
|
2550 |
}
|
|
2551 |
break; |
|
2552 |
case 170: |
|
2553 |
#line 1129 "parse.y"
|
|
2554 |
{ yyval.ca_p = ZMALLOC(CA_REC) ; |
|
2555 |
yyval.ca_p->type = CA_EXPR ; |
|
2556 |
yyval.ca_p->call_offset = code_offset ; |
|
2557 |
}
|
|
2558 |
break; |
|
2559 |
case 171: |
|
2560 |
#line 1135 "parse.y"
|
|
2561 |
{ yyval.ca_p = ZMALLOC(CA_REC) ; |
|
2562 |
code_call_id(yyval.ca_p, yyvsp[-1].stp) ; |
|
2563 |
}
|
|
2564 |
break; |
|
2565 |
#line 2566 "y.tab.c"
|
|
2566 |
}
|
|
2567 |
yyssp -= yym; |
|
2568 |
yystate = *yyssp; |
|
2569 |
yyvsp -= yym; |
|
2570 |
yym = yylhs[yyn]; |
|
2571 |
if (yystate == 0 && yym == 0) |
|
2572 |
{
|
|
2573 |
#if YYDEBUG
|
|
2574 |
if (yydebug) |
|
2575 |
printf("%sdebug: after reduction, shifting from state 0 to\ |
|
2576 |
state %d\n", YYPREFIX, YYFINAL); |
|
2577 |
#endif
|
|
2578 |
yystate = YYFINAL; |
|
2579 |
*++yyssp = YYFINAL; |
|
2580 |
*++yyvsp = yyval; |
|
2581 |
if (yychar < 0) |
|
2582 |
{
|
|
2583 |
if ((yychar = YYLEX()) < 0) yychar = 0; |
|
2584 |
#if YYDEBUG
|
|
2585 |
if (yydebug) |
|
2586 |
{
|
|
2587 |
yys = 0; |
|
2588 |
if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
|
2589 |
if (!yys) yys = "illegal-symbol"; |
|
2590 |
printf("%sdebug: state %d, reading %d (%s)\n", |
|
2591 |
YYPREFIX, YYFINAL, yychar, yys); |
|
2592 |
}
|
|
2593 |
#endif
|
|
2594 |
}
|
|
2595 |
if (yychar == 0) goto yyaccept; |
|
2596 |
goto yyloop; |
|
2597 |
}
|
|
2598 |
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && |
|
2599 |
yyn <= YYTABLESIZE && yycheck[yyn] == yystate) |
|
2600 |
yystate = yytable[yyn]; |
|
2601 |
else
|
|
2602 |
yystate = yydgoto[yym]; |
|
2603 |
#if YYDEBUG
|
|
2604 |
if (yydebug) |
|
2605 |
printf("%sdebug: after reduction, shifting from state %d \ |
|
2606 |
to state %d\n", YYPREFIX, *yyssp, yystate); |
|
2607 |
#endif
|
|
2608 |
if (yyssp >= yyss + yystacksize - 1) |
|
2609 |
{
|
|
2610 |
goto yyoverflow; |
|
2611 |
}
|
|
2612 |
*++yyssp = yystate; |
|
2613 |
*++yyvsp = yyval; |
|
2614 |
goto yyloop; |
|
2615 |
yyoverflow: |
|
2616 |
yyerror("yacc stack overflow"); |
|
2617 |
yyabort: |
|
2618 |
return (1); |
|
2619 |
yyaccept: |
|
2620 |
return (0); |
|
2621 |
}
|