btyacc_destroy1.tab.c revision 1.7 1 1.5 christos /* $NetBSD: btyacc_destroy1.tab.c,v 1.7 2026/01/18 16:41:29 christos Exp $ */
2 1.1 christos
3 1.1 christos /* original parser id follows */
4 1.1 christos /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
5 1.2 christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
6 1.1 christos
7 1.1 christos #define YYBYACC 1
8 1.5 christos #define YYMAJOR 2
9 1.5 christos #define YYMINOR 0
10 1.1 christos #define YYCHECK "yyyymmdd"
11 1.1 christos
12 1.1 christos #define YYEMPTY (-1)
13 1.1 christos #define yyclearin (yychar = YYEMPTY)
14 1.1 christos #define yyerrok (yyerrflag = 0)
15 1.1 christos #define YYRECOVERING() (yyerrflag != 0)
16 1.1 christos #define YYENOMEM (-2)
17 1.1 christos #define YYEOF 0
18 1.1 christos #undef YYBTYACC
19 1.1 christos #define YYBTYACC 1
20 1.1 christos #define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
21 1.1 christos
22 1.1 christos #ifndef yyparse
23 1.1 christos #define yyparse destroy1_parse
24 1.1 christos #endif /* yyparse */
25 1.1 christos
26 1.1 christos #ifndef yylex
27 1.1 christos #define yylex destroy1_lex
28 1.1 christos #endif /* yylex */
29 1.1 christos
30 1.1 christos #ifndef yyerror
31 1.1 christos #define yyerror destroy1_error
32 1.1 christos #endif /* yyerror */
33 1.1 christos
34 1.1 christos #ifndef yychar
35 1.1 christos #define yychar destroy1_char
36 1.1 christos #endif /* yychar */
37 1.1 christos
38 1.1 christos #ifndef yyval
39 1.1 christos #define yyval destroy1_val
40 1.1 christos #endif /* yyval */
41 1.1 christos
42 1.1 christos #ifndef yylval
43 1.1 christos #define yylval destroy1_lval
44 1.1 christos #endif /* yylval */
45 1.1 christos
46 1.1 christos #ifndef yydebug
47 1.1 christos #define yydebug destroy1_debug
48 1.1 christos #endif /* yydebug */
49 1.1 christos
50 1.1 christos #ifndef yynerrs
51 1.1 christos #define yynerrs destroy1_nerrs
52 1.1 christos #endif /* yynerrs */
53 1.1 christos
54 1.1 christos #ifndef yyerrflag
55 1.1 christos #define yyerrflag destroy1_errflag
56 1.1 christos #endif /* yyerrflag */
57 1.1 christos
58 1.1 christos #ifndef yylhs
59 1.1 christos #define yylhs destroy1_lhs
60 1.1 christos #endif /* yylhs */
61 1.1 christos
62 1.1 christos #ifndef yylen
63 1.1 christos #define yylen destroy1_len
64 1.1 christos #endif /* yylen */
65 1.1 christos
66 1.1 christos #ifndef yydefred
67 1.1 christos #define yydefred destroy1_defred
68 1.1 christos #endif /* yydefred */
69 1.1 christos
70 1.1 christos #ifndef yystos
71 1.1 christos #define yystos destroy1_stos
72 1.1 christos #endif /* yystos */
73 1.1 christos
74 1.1 christos #ifndef yydgoto
75 1.1 christos #define yydgoto destroy1_dgoto
76 1.1 christos #endif /* yydgoto */
77 1.1 christos
78 1.1 christos #ifndef yysindex
79 1.1 christos #define yysindex destroy1_sindex
80 1.1 christos #endif /* yysindex */
81 1.1 christos
82 1.1 christos #ifndef yyrindex
83 1.1 christos #define yyrindex destroy1_rindex
84 1.1 christos #endif /* yyrindex */
85 1.1 christos
86 1.1 christos #ifndef yygindex
87 1.1 christos #define yygindex destroy1_gindex
88 1.1 christos #endif /* yygindex */
89 1.1 christos
90 1.1 christos #ifndef yytable
91 1.1 christos #define yytable destroy1_table
92 1.1 christos #endif /* yytable */
93 1.1 christos
94 1.1 christos #ifndef yycheck
95 1.1 christos #define yycheck destroy1_check
96 1.1 christos #endif /* yycheck */
97 1.1 christos
98 1.1 christos #ifndef yyname
99 1.1 christos #define yyname destroy1_name
100 1.1 christos #endif /* yyname */
101 1.1 christos
102 1.1 christos #ifndef yyrule
103 1.1 christos #define yyrule destroy1_rule
104 1.1 christos #endif /* yyrule */
105 1.1 christos
106 1.1 christos #if YYBTYACC
107 1.1 christos
108 1.1 christos #ifndef yycindex
109 1.1 christos #define yycindex destroy1_cindex
110 1.1 christos #endif /* yycindex */
111 1.1 christos
112 1.1 christos #ifndef yyctable
113 1.1 christos #define yyctable destroy1_ctable
114 1.1 christos #endif /* yyctable */
115 1.1 christos
116 1.1 christos #endif /* YYBTYACC */
117 1.1 christos
118 1.1 christos #define YYPREFIX "destroy1_"
119 1.1 christos
120 1.1 christos #define YYPURE 0
121 1.1 christos
122 1.1 christos #line 4 "btyacc_destroy1.y"
123 1.1 christos #include <stdlib.h>
124 1.1 christos
125 1.1 christos typedef enum {cGLOBAL, cLOCAL} class;
126 1.1 christos typedef enum {tREAL, tINTEGER} type;
127 1.1 christos typedef char * name;
128 1.1 christos
129 1.1 christos struct symbol { class c; type t; name id; };
130 1.1 christos typedef struct symbol symbol;
131 1.1 christos
132 1.1 christos struct namelist { symbol *s; struct namelist *next; };
133 1.1 christos typedef struct namelist namelist;
134 1.1 christos
135 1.1 christos struct parser_param {
136 1.1 christos int *rtrn;
137 1.1 christos symbol ss;
138 1.1 christos };
139 1.1 christos
140 1.1 christos extern symbol *mksymbol(type t, class c, name id);
141 1.1 christos
142 1.1 christos #ifdef YYBISON
143 1.1 christos #define YYLEX_DECL() yylex(void)
144 1.1 christos #define YYERROR_DECL() yyerror(const char *s)
145 1.1 christos #endif
146 1.1 christos #ifdef YYSTYPE
147 1.1 christos #undef YYSTYPE_IS_DECLARED
148 1.1 christos #define YYSTYPE_IS_DECLARED 1
149 1.1 christos #endif
150 1.1 christos #ifndef YYSTYPE_IS_DECLARED
151 1.1 christos #define YYSTYPE_IS_DECLARED 1
152 1.2 christos #line 50 "btyacc_destroy1.y"
153 1.6 christos typedef union YYSTYPE
154 1.1 christos {
155 1.1 christos class cval;
156 1.1 christos type tval;
157 1.1 christos namelist * nlist;
158 1.1 christos name id;
159 1.1 christos } YYSTYPE;
160 1.1 christos #endif /* !YYSTYPE_IS_DECLARED */
161 1.1 christos #line 160 "btyacc_destroy1.tab.c"
162 1.1 christos
163 1.1 christos /* compatibility with bison */
164 1.1 christos #ifdef YYPARSE_PARAM
165 1.1 christos /* compatibility with FreeBSD */
166 1.1 christos # ifdef YYPARSE_PARAM_TYPE
167 1.1 christos # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
168 1.1 christos # else
169 1.1 christos # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
170 1.1 christos # endif
171 1.1 christos #else
172 1.1 christos # define YYPARSE_DECL() yyparse(struct parser_param *param, int flag)
173 1.1 christos #endif
174 1.1 christos
175 1.1 christos /* Parameters sent to lex. */
176 1.1 christos #ifdef YYLEX_PARAM
177 1.1 christos # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
178 1.1 christos # define YYLEX yylex(YYLEX_PARAM)
179 1.1 christos #else
180 1.1 christos # define YYLEX_DECL() yylex(void)
181 1.1 christos # define YYLEX yylex()
182 1.1 christos #endif
183 1.1 christos
184 1.1 christos /* Parameters sent to yyerror. */
185 1.1 christos #ifndef YYERROR_DECL
186 1.1 christos #define YYERROR_DECL() yyerror(struct parser_param *param, int flag, const char *s)
187 1.1 christos #endif
188 1.1 christos #ifndef YYERROR_CALL
189 1.1 christos #define YYERROR_CALL(msg) yyerror(param, flag, msg)
190 1.1 christos #endif
191 1.1 christos
192 1.1 christos #ifndef YYDESTRUCT_DECL
193 1.1 christos #define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, struct parser_param *param, int flag)
194 1.1 christos #endif
195 1.1 christos #ifndef YYDESTRUCT_CALL
196 1.1 christos #define YYDESTRUCT_CALL(msg, psymb, val) yydestruct(msg, psymb, val, param, flag)
197 1.1 christos #endif
198 1.1 christos
199 1.1 christos extern int YYPARSE_DECL();
200 1.1 christos
201 1.1 christos #define GLOBAL 257
202 1.1 christos #define LOCAL 258
203 1.1 christos #define REAL 259
204 1.1 christos #define INTEGER 260
205 1.1 christos #define NAME 261
206 1.1 christos #define YYERRCODE 256
207 1.6 christos typedef int YYINT;
208 1.1 christos static const YYINT destroy1_lhs[] = { -1,
209 1.1 christos 0, 0, 2, 2, 3, 3, 4, 4, 1,
210 1.1 christos };
211 1.1 christos static const YYINT destroy1_len[] = { 2,
212 1.1 christos 8, 5, 1, 1, 1, 1, 2, 1, 6,
213 1.1 christos };
214 1.1 christos static const YYINT destroy1_defred[] = { 0,
215 1.1 christos 3, 4, 5, 6, 0, 0, 0, 0, 8, 0,
216 1.1 christos 0, 0, 0, 7, 0, 0, 0, 0, 0, 2,
217 1.1 christos 0, 0, 0, 0, 9, 1,
218 1.1 christos };
219 1.2 christos #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
220 1.1 christos static const YYINT destroy1_stos[] = { 0,
221 1.1 christos 257, 258, 259, 260, 263, 265, 266, 266, 261, 264,
222 1.1 christos 267, 267, 40, 261, 40, 40, 265, 258, 265, 41,
223 1.1 christos 44, 44, 266, 266, 41, 41,
224 1.1 christos };
225 1.2 christos #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
226 1.1 christos static const YYINT destroy1_dgoto[] = { 5,
227 1.1 christos 10, 6, 7, 11,
228 1.1 christos };
229 1.1 christos static const YYINT destroy1_sindex[] = { -254,
230 1.1 christos 0, 0, 0, 0, 0, -251, -248, -248, 0, -26,
231 1.1 christos -40, -39, -246, 0, -243, -246, -25, -24, -23, 0,
232 1.1 christos -251, -251, -22, -19, 0, 0,
233 1.1 christos };
234 1.1 christos static const YYINT destroy1_rindex[] = { 0,
235 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
237 1.1 christos 0, 0, 0, 0, 0, 0,
238 1.1 christos };
239 1.1 christos #if YYBTYACC
240 1.1 christos static const YYINT destroy1_cindex[] = { 0,
241 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 1.1 christos 0, 0, 0, 0, 0, 0,
244 1.1 christos };
245 1.1 christos #endif
246 1.1 christos static const YYINT destroy1_gindex[] = { 0,
247 1.1 christos 0, -6, -4, 15,
248 1.1 christos };
249 1.1 christos #define YYTABLESIZE 222
250 1.1 christos static const YYINT destroy1_table[] = { 15,
251 1.1 christos 16, 8, 1, 2, 3, 4, 17, 3, 4, 19,
252 1.1 christos 1, 2, 9, 13, 18, 20, 23, 24, 25, 21,
253 1.1 christos 22, 26, 12, 0, 0, 0, 0, 0, 0, 0,
254 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
257 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
259 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
260 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
261 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
264 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
265 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
267 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
268 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
269 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
273 1.1 christos 14, 14,
274 1.1 christos };
275 1.1 christos static const YYINT destroy1_check[] = { 40,
276 1.1 christos 40, 6, 257, 258, 259, 260, 13, 259, 260, 16,
277 1.1 christos 257, 258, 261, 40, 258, 41, 21, 22, 41, 44,
278 1.1 christos 44, 41, 8, -1, -1, -1, -1, -1, -1, -1,
279 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
280 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
281 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
282 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
283 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
284 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
285 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
286 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
287 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
288 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
289 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
290 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
291 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
292 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
293 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
294 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
295 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
296 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
297 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
298 1.1 christos 261, 261,
299 1.1 christos };
300 1.1 christos #if YYBTYACC
301 1.1 christos static const YYINT destroy1_ctable[] = { -1,
302 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
303 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
304 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
305 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
306 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
307 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
308 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
309 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
310 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
311 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
312 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
313 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
314 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
315 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
316 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
317 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
318 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
319 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
320 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
321 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
322 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
323 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
324 1.1 christos -1,
325 1.1 christos };
326 1.1 christos #endif
327 1.1 christos #define YYFINAL 5
328 1.1 christos #ifndef YYDEBUG
329 1.1 christos #define YYDEBUG 0
330 1.1 christos #endif
331 1.1 christos #define YYMAXTOKEN 261
332 1.1 christos #define YYUNDFTOKEN 268
333 1.1 christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
334 1.1 christos #if YYDEBUG
335 1.7 christos #ifndef NULL
336 1.7 christos #define NULL (void*)0
337 1.7 christos #endif
338 1.1 christos static const char *const destroy1_name[] = {
339 1.1 christos
340 1.7 christos "$end",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
341 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
342 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'('","')'",NULL,NULL,"','",NULL,
343 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
344 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
345 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
346 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
347 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
348 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
349 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
350 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
351 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
352 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
353 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
354 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
355 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
356 1.7 christos NULL,NULL,"error","GLOBAL","LOCAL","REAL","INTEGER","NAME","$accept",
357 1.7 christos "declaration","locnamelist","class","type","namelist","illegal-symbol",
358 1.1 christos };
359 1.1 christos static const char *const destroy1_rule[] = {
360 1.1 christos "$accept : declaration",
361 1.1 christos "declaration : class type namelist '(' class ',' type ')'",
362 1.1 christos "declaration : type locnamelist '(' class ')'",
363 1.1 christos "class : GLOBAL",
364 1.1 christos "class : LOCAL",
365 1.1 christos "type : REAL",
366 1.1 christos "type : INTEGER",
367 1.1 christos "namelist : namelist NAME",
368 1.1 christos "namelist : NAME",
369 1.1 christos "locnamelist : namelist '(' LOCAL ',' type ')'",
370 1.1 christos
371 1.1 christos };
372 1.1 christos #endif
373 1.1 christos
374 1.4 christos #if YYDEBUG
375 1.1 christos int yydebug;
376 1.4 christos #endif
377 1.1 christos
378 1.1 christos int yyerrflag;
379 1.1 christos int yychar;
380 1.1 christos YYSTYPE yyval;
381 1.1 christos YYSTYPE yylval;
382 1.4 christos int yynerrs;
383 1.4 christos
384 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
385 1.1 christos YYLTYPE yyloc; /* position returned by actions */
386 1.1 christos YYLTYPE yylloc; /* position from the lexer */
387 1.1 christos #endif
388 1.1 christos
389 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
390 1.1 christos #ifndef YYLLOC_DEFAULT
391 1.1 christos #define YYLLOC_DEFAULT(loc, rhs, n) \
392 1.1 christos do \
393 1.1 christos { \
394 1.1 christos if (n == 0) \
395 1.1 christos { \
396 1.4 christos (loc).first_line = YYRHSLOC(rhs, 0).last_line; \
397 1.4 christos (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
398 1.4 christos (loc).last_line = YYRHSLOC(rhs, 0).last_line; \
399 1.4 christos (loc).last_column = YYRHSLOC(rhs, 0).last_column; \
400 1.1 christos } \
401 1.1 christos else \
402 1.1 christos { \
403 1.4 christos (loc).first_line = YYRHSLOC(rhs, 1).first_line; \
404 1.4 christos (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
405 1.4 christos (loc).last_line = YYRHSLOC(rhs, n).last_line; \
406 1.4 christos (loc).last_column = YYRHSLOC(rhs, n).last_column; \
407 1.1 christos } \
408 1.1 christos } while (0)
409 1.1 christos #endif /* YYLLOC_DEFAULT */
410 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
411 1.1 christos #if YYBTYACC
412 1.1 christos
413 1.1 christos #ifndef YYLVQUEUEGROWTH
414 1.1 christos #define YYLVQUEUEGROWTH 32
415 1.1 christos #endif
416 1.1 christos #endif /* YYBTYACC */
417 1.1 christos
418 1.1 christos /* define the initial stack-sizes */
419 1.1 christos #ifdef YYSTACKSIZE
420 1.1 christos #undef YYMAXDEPTH
421 1.1 christos #define YYMAXDEPTH YYSTACKSIZE
422 1.1 christos #else
423 1.1 christos #ifdef YYMAXDEPTH
424 1.1 christos #define YYSTACKSIZE YYMAXDEPTH
425 1.1 christos #else
426 1.1 christos #define YYSTACKSIZE 10000
427 1.1 christos #define YYMAXDEPTH 10000
428 1.1 christos #endif
429 1.1 christos #endif
430 1.1 christos
431 1.1 christos #ifndef YYINITSTACKSIZE
432 1.1 christos #define YYINITSTACKSIZE 200
433 1.1 christos #endif
434 1.1 christos
435 1.1 christos typedef struct {
436 1.1 christos unsigned stacksize;
437 1.2 christos YYINT *s_base;
438 1.2 christos YYINT *s_mark;
439 1.2 christos YYINT *s_last;
440 1.1 christos YYSTYPE *l_base;
441 1.1 christos YYSTYPE *l_mark;
442 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
443 1.1 christos YYLTYPE *p_base;
444 1.1 christos YYLTYPE *p_mark;
445 1.1 christos #endif
446 1.1 christos } YYSTACKDATA;
447 1.1 christos #if YYBTYACC
448 1.1 christos
449 1.1 christos struct YYParseState_s
450 1.1 christos {
451 1.1 christos struct YYParseState_s *save; /* Previously saved parser state */
452 1.1 christos YYSTACKDATA yystack; /* saved parser stack */
453 1.1 christos int state; /* saved parser state */
454 1.1 christos int errflag; /* saved error recovery status */
455 1.1 christos int lexeme; /* saved index of the conflict lexeme in the lexical queue */
456 1.1 christos YYINT ctry; /* saved index in yyctable[] for this conflict */
457 1.1 christos };
458 1.1 christos typedef struct YYParseState_s YYParseState;
459 1.1 christos #endif /* YYBTYACC */
460 1.1 christos /* variables for the parser stack */
461 1.1 christos static YYSTACKDATA yystack;
462 1.1 christos #if YYBTYACC
463 1.1 christos
464 1.1 christos /* Current parser state */
465 1.7 christos static YYParseState *yyps = NULL;
466 1.1 christos
467 1.1 christos /* yypath != NULL: do the full parse, starting at *yypath parser state. */
468 1.7 christos static YYParseState *yypath = NULL;
469 1.1 christos
470 1.1 christos /* Base of the lexical value queue */
471 1.7 christos static YYSTYPE *yylvals = NULL;
472 1.1 christos
473 1.1 christos /* Current position at lexical value queue */
474 1.7 christos static YYSTYPE *yylvp = NULL;
475 1.1 christos
476 1.1 christos /* End position of lexical value queue */
477 1.7 christos static YYSTYPE *yylve = NULL;
478 1.1 christos
479 1.1 christos /* The last allocated position at the lexical value queue */
480 1.7 christos static YYSTYPE *yylvlim = NULL;
481 1.1 christos
482 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
483 1.1 christos /* Base of the lexical position queue */
484 1.7 christos static YYLTYPE *yylpsns = NULL;
485 1.1 christos
486 1.1 christos /* Current position at lexical position queue */
487 1.7 christos static YYLTYPE *yylpp = NULL;
488 1.1 christos
489 1.1 christos /* End position of lexical position queue */
490 1.7 christos static YYLTYPE *yylpe = NULL;
491 1.1 christos
492 1.1 christos /* The last allocated position at the lexical position queue */
493 1.7 christos static YYLTYPE *yylplim = NULL;
494 1.1 christos #endif
495 1.1 christos
496 1.1 christos /* Current position at lexical token queue */
497 1.7 christos static YYINT *yylexp = NULL;
498 1.1 christos
499 1.7 christos static YYINT *yylexemes = NULL;
500 1.1 christos #endif /* YYBTYACC */
501 1.1 christos #line 89 "btyacc_destroy1.y"
502 1.1 christos
503 1.1 christos extern int YYLEX_DECL();
504 1.1 christos extern void YYERROR_DECL();
505 1.7 christos #line 504 "btyacc_destroy1.tab.c"
506 1.1 christos
507 1.1 christos /* Release memory associated with symbol. */
508 1.1 christos #if ! defined YYDESTRUCT_IS_DECLARED
509 1.1 christos static void
510 1.1 christos YYDESTRUCT_DECL()
511 1.1 christos {
512 1.1 christos switch (psymb)
513 1.1 christos {
514 1.1 christos case 263:
515 1.1 christos #line 41 "btyacc_destroy1.y"
516 1.1 christos {
517 1.1 christos namelist *p = (*val).nlist;
518 1.1 christos while (p != NULL)
519 1.1 christos { namelist *pp = p;
520 1.1 christos p = p->next;
521 1.1 christos free(pp->s); free(pp);
522 1.1 christos }
523 1.1 christos }
524 1.7 christos #line 523 "btyacc_destroy1.tab.c"
525 1.1 christos break;
526 1.1 christos }
527 1.1 christos }
528 1.1 christos #define YYDESTRUCT_IS_DECLARED 1
529 1.1 christos #endif
530 1.1 christos
531 1.1 christos /* For use in generated program */
532 1.1 christos #define yydepth (int)(yystack.s_mark - yystack.s_base)
533 1.1 christos #if YYBTYACC
534 1.1 christos #define yytrial (yyps->save)
535 1.1 christos #endif /* YYBTYACC */
536 1.1 christos
537 1.1 christos #if YYDEBUG
538 1.2 christos #include <stdio.h> /* needed for printf */
539 1.1 christos #endif
540 1.1 christos
541 1.2 christos #include <stdlib.h> /* needed for malloc, etc */
542 1.2 christos #include <string.h> /* needed for memset */
543 1.1 christos
544 1.1 christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
545 1.1 christos static int yygrowstack(YYSTACKDATA *data)
546 1.1 christos {
547 1.1 christos int i;
548 1.1 christos unsigned newsize;
549 1.2 christos YYINT *newss;
550 1.1 christos YYSTYPE *newvs;
551 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
552 1.1 christos YYLTYPE *newps;
553 1.1 christos #endif
554 1.1 christos
555 1.1 christos if ((newsize = data->stacksize) == 0)
556 1.1 christos newsize = YYINITSTACKSIZE;
557 1.1 christos else if (newsize >= YYMAXDEPTH)
558 1.1 christos return YYENOMEM;
559 1.1 christos else if ((newsize *= 2) > YYMAXDEPTH)
560 1.1 christos newsize = YYMAXDEPTH;
561 1.1 christos
562 1.1 christos i = (int) (data->s_mark - data->s_base);
563 1.2 christos newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
564 1.7 christos if (newss == NULL)
565 1.1 christos return YYENOMEM;
566 1.1 christos
567 1.1 christos data->s_base = newss;
568 1.1 christos data->s_mark = newss + i;
569 1.1 christos
570 1.1 christos newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
571 1.7 christos if (newvs == NULL)
572 1.1 christos return YYENOMEM;
573 1.1 christos
574 1.1 christos data->l_base = newvs;
575 1.1 christos data->l_mark = newvs + i;
576 1.1 christos
577 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
578 1.1 christos newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
579 1.7 christos if (newps == NULL)
580 1.1 christos return YYENOMEM;
581 1.1 christos
582 1.1 christos data->p_base = newps;
583 1.1 christos data->p_mark = newps + i;
584 1.1 christos #endif
585 1.1 christos
586 1.1 christos data->stacksize = newsize;
587 1.1 christos data->s_last = data->s_base + newsize - 1;
588 1.1 christos
589 1.1 christos #if YYDEBUG
590 1.1 christos if (yydebug)
591 1.1 christos fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
592 1.1 christos #endif
593 1.1 christos return 0;
594 1.1 christos }
595 1.1 christos
596 1.1 christos #if YYPURE || defined(YY_NO_LEAKS)
597 1.1 christos static void yyfreestack(YYSTACKDATA *data)
598 1.1 christos {
599 1.1 christos free(data->s_base);
600 1.1 christos free(data->l_base);
601 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
602 1.1 christos free(data->p_base);
603 1.1 christos #endif
604 1.1 christos memset(data, 0, sizeof(*data));
605 1.1 christos }
606 1.1 christos #else
607 1.1 christos #define yyfreestack(data) /* nothing */
608 1.1 christos #endif /* YYPURE || defined(YY_NO_LEAKS) */
609 1.1 christos #if YYBTYACC
610 1.1 christos
611 1.1 christos static YYParseState *
612 1.1 christos yyNewState(unsigned size)
613 1.1 christos {
614 1.1 christos YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
615 1.1 christos if (p == NULL) return NULL;
616 1.1 christos
617 1.1 christos p->yystack.stacksize = size;
618 1.1 christos if (size == 0)
619 1.1 christos {
620 1.1 christos p->yystack.s_base = NULL;
621 1.1 christos p->yystack.l_base = NULL;
622 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
623 1.1 christos p->yystack.p_base = NULL;
624 1.1 christos #endif
625 1.1 christos return p;
626 1.1 christos }
627 1.2 christos p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));
628 1.1 christos if (p->yystack.s_base == NULL) return NULL;
629 1.1 christos p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
630 1.1 christos if (p->yystack.l_base == NULL) return NULL;
631 1.1 christos memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
632 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
633 1.1 christos p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
634 1.1 christos if (p->yystack.p_base == NULL) return NULL;
635 1.1 christos memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
636 1.1 christos #endif
637 1.1 christos
638 1.1 christos return p;
639 1.1 christos }
640 1.1 christos
641 1.1 christos static void
642 1.1 christos yyFreeState(YYParseState *p)
643 1.1 christos {
644 1.1 christos yyfreestack(&p->yystack);
645 1.1 christos free(p);
646 1.1 christos }
647 1.1 christos #endif /* YYBTYACC */
648 1.1 christos
649 1.1 christos #define YYABORT goto yyabort
650 1.1 christos #define YYREJECT goto yyabort
651 1.1 christos #define YYACCEPT goto yyaccept
652 1.1 christos #define YYERROR goto yyerrlab
653 1.1 christos #if YYBTYACC
654 1.1 christos #define YYVALID do { if (yyps->save) goto yyvalid; } while(0)
655 1.1 christos #define YYVALID_NESTED do { if (yyps->save && \
656 1.1 christos yyps->save->save == 0) goto yyvalid; } while(0)
657 1.1 christos #endif /* YYBTYACC */
658 1.1 christos
659 1.1 christos int
660 1.1 christos YYPARSE_DECL()
661 1.1 christos {
662 1.1 christos int yym, yyn, yystate, yyresult;
663 1.1 christos #if YYBTYACC
664 1.1 christos int yynewerrflag;
665 1.1 christos YYParseState *yyerrctx = NULL;
666 1.1 christos #endif /* YYBTYACC */
667 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
668 1.4 christos YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */
669 1.1 christos #endif
670 1.1 christos #if YYDEBUG
671 1.1 christos const char *yys;
672 1.1 christos
673 1.7 christos if ((yys = getenv("YYDEBUG")) != NULL)
674 1.1 christos {
675 1.1 christos yyn = *yys;
676 1.1 christos if (yyn >= '0' && yyn <= '9')
677 1.1 christos yydebug = yyn - '0';
678 1.1 christos }
679 1.1 christos if (yydebug)
680 1.1 christos fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
681 1.1 christos #endif
682 1.3 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
683 1.3 christos memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
684 1.3 christos #endif
685 1.1 christos
686 1.1 christos #if YYBTYACC
687 1.7 christos yyps = yyNewState(0); if (yyps == NULL) goto yyenomem;
688 1.7 christos yyps->save = NULL;
689 1.1 christos #endif /* YYBTYACC */
690 1.2 christos yym = 0;
691 1.6 christos /* yyn is set below */
692 1.1 christos yynerrs = 0;
693 1.1 christos yyerrflag = 0;
694 1.1 christos yychar = YYEMPTY;
695 1.1 christos yystate = 0;
696 1.1 christos
697 1.1 christos #if YYPURE
698 1.1 christos memset(&yystack, 0, sizeof(yystack));
699 1.1 christos #endif
700 1.1 christos
701 1.1 christos if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
702 1.1 christos yystack.s_mark = yystack.s_base;
703 1.1 christos yystack.l_mark = yystack.l_base;
704 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
705 1.1 christos yystack.p_mark = yystack.p_base;
706 1.1 christos #endif
707 1.1 christos yystate = 0;
708 1.1 christos *yystack.s_mark = 0;
709 1.1 christos
710 1.1 christos yyloop:
711 1.1 christos if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
712 1.1 christos if (yychar < 0)
713 1.1 christos {
714 1.1 christos #if YYBTYACC
715 1.1 christos do {
716 1.1 christos if (yylvp < yylve)
717 1.1 christos {
718 1.1 christos /* we're currently re-reading tokens */
719 1.1 christos yylval = *yylvp++;
720 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
721 1.1 christos yylloc = *yylpp++;
722 1.1 christos #endif
723 1.1 christos yychar = *yylexp++;
724 1.1 christos break;
725 1.1 christos }
726 1.1 christos if (yyps->save)
727 1.1 christos {
728 1.1 christos /* in trial mode; save scanner results for future parse attempts */
729 1.1 christos if (yylvp == yylvlim)
730 1.1 christos { /* Enlarge lexical value queue */
731 1.1 christos size_t p = (size_t) (yylvp - yylvals);
732 1.1 christos size_t s = (size_t) (yylvlim - yylvals);
733 1.1 christos
734 1.1 christos s += YYLVQUEUEGROWTH;
735 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
736 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
737 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
738 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
739 1.1 christos #endif
740 1.1 christos yylvp = yylve = yylvals + p;
741 1.1 christos yylvlim = yylvals + s;
742 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
743 1.1 christos yylpp = yylpe = yylpsns + p;
744 1.1 christos yylplim = yylpsns + s;
745 1.1 christos #endif
746 1.1 christos yylexp = yylexemes + p;
747 1.1 christos }
748 1.2 christos *yylexp = (YYINT) YYLEX;
749 1.1 christos *yylvp++ = yylval;
750 1.1 christos yylve++;
751 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
752 1.1 christos *yylpp++ = yylloc;
753 1.1 christos yylpe++;
754 1.1 christos #endif
755 1.1 christos yychar = *yylexp++;
756 1.1 christos break;
757 1.1 christos }
758 1.1 christos /* normal operation, no conflict encountered */
759 1.1 christos #endif /* YYBTYACC */
760 1.1 christos yychar = YYLEX;
761 1.1 christos #if YYBTYACC
762 1.1 christos } while (0);
763 1.1 christos #endif /* YYBTYACC */
764 1.1 christos if (yychar < 0) yychar = YYEOF;
765 1.1 christos #if YYDEBUG
766 1.1 christos if (yydebug)
767 1.1 christos {
768 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
769 1.1 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
770 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys);
771 1.1 christos #ifdef YYSTYPE_TOSTRING
772 1.1 christos #if YYBTYACC
773 1.1 christos if (!yytrial)
774 1.1 christos #endif /* YYBTYACC */
775 1.1 christos fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
776 1.1 christos #endif
777 1.1 christos fputc('\n', stderr);
778 1.1 christos }
779 1.1 christos #endif
780 1.1 christos }
781 1.1 christos #if YYBTYACC
782 1.1 christos
783 1.1 christos /* Do we have a conflict? */
784 1.1 christos if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
785 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
786 1.1 christos {
787 1.1 christos YYINT ctry;
788 1.1 christos
789 1.1 christos if (yypath)
790 1.1 christos {
791 1.1 christos YYParseState *save;
792 1.1 christos #if YYDEBUG
793 1.1 christos if (yydebug)
794 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
795 1.1 christos YYDEBUGSTR, yydepth, yystate);
796 1.1 christos #endif
797 1.1 christos /* Switch to the next conflict context */
798 1.1 christos save = yypath;
799 1.1 christos yypath = save->save;
800 1.1 christos save->save = NULL;
801 1.1 christos ctry = save->ctry;
802 1.1 christos if (save->state != yystate) YYABORT;
803 1.1 christos yyFreeState(save);
804 1.1 christos
805 1.1 christos }
806 1.1 christos else
807 1.1 christos {
808 1.1 christos
809 1.1 christos /* Unresolved conflict - start/continue trial parse */
810 1.1 christos YYParseState *save;
811 1.1 christos #if YYDEBUG
812 1.1 christos if (yydebug)
813 1.1 christos {
814 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
815 1.1 christos if (yyps->save)
816 1.1 christos fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
817 1.1 christos else
818 1.1 christos fputs("Starting trial parse.\n", stderr);
819 1.1 christos }
820 1.1 christos #endif
821 1.1 christos save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
822 1.1 christos if (save == NULL) goto yyenomem;
823 1.1 christos save->save = yyps->save;
824 1.1 christos save->state = yystate;
825 1.1 christos save->errflag = yyerrflag;
826 1.1 christos save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
827 1.2 christos memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
828 1.1 christos save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
829 1.1 christos memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
830 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
831 1.1 christos save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
832 1.1 christos memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
833 1.1 christos #endif
834 1.1 christos ctry = yytable[yyn];
835 1.1 christos if (yyctable[ctry] == -1)
836 1.1 christos {
837 1.1 christos #if YYDEBUG
838 1.1 christos if (yydebug && yychar >= YYEOF)
839 1.1 christos fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
840 1.1 christos #endif
841 1.1 christos ctry++;
842 1.1 christos }
843 1.1 christos save->ctry = ctry;
844 1.1 christos if (yyps->save == NULL)
845 1.1 christos {
846 1.1 christos /* If this is a first conflict in the stack, start saving lexemes */
847 1.1 christos if (!yylexemes)
848 1.1 christos {
849 1.4 christos yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
850 1.1 christos if (yylexemes == NULL) goto yyenomem;
851 1.1 christos yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
852 1.1 christos if (yylvals == NULL) goto yyenomem;
853 1.1 christos yylvlim = yylvals + YYLVQUEUEGROWTH;
854 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
855 1.1 christos yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
856 1.1 christos if (yylpsns == NULL) goto yyenomem;
857 1.1 christos yylplim = yylpsns + YYLVQUEUEGROWTH;
858 1.1 christos #endif
859 1.1 christos }
860 1.1 christos if (yylvp == yylve)
861 1.1 christos {
862 1.1 christos yylvp = yylve = yylvals;
863 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
864 1.1 christos yylpp = yylpe = yylpsns;
865 1.1 christos #endif
866 1.1 christos yylexp = yylexemes;
867 1.1 christos if (yychar >= YYEOF)
868 1.1 christos {
869 1.1 christos *yylve++ = yylval;
870 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
871 1.1 christos *yylpe++ = yylloc;
872 1.1 christos #endif
873 1.2 christos *yylexp = (YYINT) yychar;
874 1.1 christos yychar = YYEMPTY;
875 1.1 christos }
876 1.1 christos }
877 1.1 christos }
878 1.1 christos if (yychar >= YYEOF)
879 1.1 christos {
880 1.1 christos yylvp--;
881 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
882 1.1 christos yylpp--;
883 1.1 christos #endif
884 1.1 christos yylexp--;
885 1.1 christos yychar = YYEMPTY;
886 1.1 christos }
887 1.1 christos save->lexeme = (int) (yylvp - yylvals);
888 1.1 christos yyps->save = save;
889 1.1 christos }
890 1.1 christos if (yytable[yyn] == ctry)
891 1.1 christos {
892 1.1 christos #if YYDEBUG
893 1.1 christos if (yydebug)
894 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
895 1.1 christos YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
896 1.1 christos #endif
897 1.1 christos if (yychar < 0)
898 1.1 christos {
899 1.1 christos yylvp++;
900 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
901 1.1 christos yylpp++;
902 1.1 christos #endif
903 1.1 christos yylexp++;
904 1.1 christos }
905 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
906 1.1 christos goto yyoverflow;
907 1.1 christos yystate = yyctable[ctry];
908 1.2 christos *++yystack.s_mark = (YYINT) yystate;
909 1.1 christos *++yystack.l_mark = yylval;
910 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
911 1.1 christos *++yystack.p_mark = yylloc;
912 1.1 christos #endif
913 1.1 christos yychar = YYEMPTY;
914 1.1 christos if (yyerrflag > 0) --yyerrflag;
915 1.1 christos goto yyloop;
916 1.1 christos }
917 1.1 christos else
918 1.1 christos {
919 1.1 christos yyn = yyctable[ctry];
920 1.1 christos goto yyreduce;
921 1.1 christos }
922 1.1 christos } /* End of code dealing with conflicts */
923 1.1 christos #endif /* YYBTYACC */
924 1.1 christos if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
925 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
926 1.1 christos {
927 1.1 christos #if YYDEBUG
928 1.1 christos if (yydebug)
929 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
930 1.1 christos YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
931 1.1 christos #endif
932 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
933 1.1 christos yystate = yytable[yyn];
934 1.1 christos *++yystack.s_mark = yytable[yyn];
935 1.1 christos *++yystack.l_mark = yylval;
936 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
937 1.1 christos *++yystack.p_mark = yylloc;
938 1.1 christos #endif
939 1.1 christos yychar = YYEMPTY;
940 1.1 christos if (yyerrflag > 0) --yyerrflag;
941 1.1 christos goto yyloop;
942 1.1 christos }
943 1.1 christos if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
944 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
945 1.1 christos {
946 1.1 christos yyn = yytable[yyn];
947 1.1 christos goto yyreduce;
948 1.1 christos }
949 1.1 christos if (yyerrflag != 0) goto yyinrecovery;
950 1.1 christos #if YYBTYACC
951 1.1 christos
952 1.1 christos yynewerrflag = 1;
953 1.1 christos goto yyerrhandler;
954 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */
955 1.1 christos
956 1.1 christos yyerrlab:
957 1.2 christos /* explicit YYERROR from an action -- pop the rhs of the rule reduced
958 1.2 christos * before looking for error recovery */
959 1.2 christos yystack.s_mark -= yym;
960 1.2 christos yystate = *yystack.s_mark;
961 1.2 christos yystack.l_mark -= yym;
962 1.2 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
963 1.2 christos yystack.p_mark -= yym;
964 1.2 christos #endif
965 1.2 christos
966 1.1 christos yynewerrflag = 0;
967 1.1 christos yyerrhandler:
968 1.1 christos while (yyps->save)
969 1.1 christos {
970 1.1 christos int ctry;
971 1.1 christos YYParseState *save = yyps->save;
972 1.1 christos #if YYDEBUG
973 1.1 christos if (yydebug)
974 1.1 christos fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
975 1.1 christos YYDEBUGSTR, yydepth, yystate, yyps->save->state,
976 1.1 christos (int)(yylvp - yylvals - yyps->save->lexeme));
977 1.1 christos #endif
978 1.1 christos /* Memorize most forward-looking error state in case it's really an error. */
979 1.1 christos if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
980 1.1 christos {
981 1.1 christos /* Free old saved error context state */
982 1.1 christos if (yyerrctx) yyFreeState(yyerrctx);
983 1.1 christos /* Create and fill out new saved error context state */
984 1.1 christos yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
985 1.1 christos if (yyerrctx == NULL) goto yyenomem;
986 1.1 christos yyerrctx->save = yyps->save;
987 1.1 christos yyerrctx->state = yystate;
988 1.1 christos yyerrctx->errflag = yyerrflag;
989 1.1 christos yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
990 1.2 christos memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
991 1.1 christos yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
992 1.1 christos memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
993 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
994 1.1 christos yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
995 1.1 christos memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
996 1.1 christos #endif
997 1.1 christos yyerrctx->lexeme = (int) (yylvp - yylvals);
998 1.1 christos }
999 1.1 christos yylvp = yylvals + save->lexeme;
1000 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1001 1.1 christos yylpp = yylpsns + save->lexeme;
1002 1.1 christos #endif
1003 1.1 christos yylexp = yylexemes + save->lexeme;
1004 1.1 christos yychar = YYEMPTY;
1005 1.1 christos yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1006 1.2 christos memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1007 1.1 christos yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1008 1.1 christos memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1009 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1010 1.1 christos yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1011 1.1 christos memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1012 1.1 christos #endif
1013 1.1 christos ctry = ++save->ctry;
1014 1.1 christos yystate = save->state;
1015 1.1 christos /* We tried shift, try reduce now */
1016 1.1 christos if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1017 1.1 christos yyps->save = save->save;
1018 1.1 christos save->save = NULL;
1019 1.1 christos yyFreeState(save);
1020 1.1 christos
1021 1.1 christos /* Nothing left on the stack -- error */
1022 1.1 christos if (!yyps->save)
1023 1.1 christos {
1024 1.1 christos #if YYDEBUG
1025 1.1 christos if (yydebug)
1026 1.1 christos fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1027 1.1 christos YYPREFIX, yydepth);
1028 1.1 christos #endif
1029 1.1 christos /* Restore state as it was in the most forward-advanced error */
1030 1.1 christos yylvp = yylvals + yyerrctx->lexeme;
1031 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1032 1.1 christos yylpp = yylpsns + yyerrctx->lexeme;
1033 1.1 christos #endif
1034 1.1 christos yylexp = yylexemes + yyerrctx->lexeme;
1035 1.1 christos yychar = yylexp[-1];
1036 1.1 christos yylval = yylvp[-1];
1037 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1038 1.1 christos yylloc = yylpp[-1];
1039 1.1 christos #endif
1040 1.1 christos yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1041 1.2 christos memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1042 1.1 christos yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1043 1.1 christos memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1044 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1045 1.1 christos yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1046 1.1 christos memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1047 1.1 christos #endif
1048 1.1 christos yystate = yyerrctx->state;
1049 1.1 christos yyFreeState(yyerrctx);
1050 1.1 christos yyerrctx = NULL;
1051 1.1 christos }
1052 1.1 christos yynewerrflag = 1;
1053 1.1 christos }
1054 1.1 christos if (yynewerrflag == 0) goto yyinrecovery;
1055 1.1 christos #endif /* YYBTYACC */
1056 1.1 christos
1057 1.1 christos YYERROR_CALL("syntax error");
1058 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1059 1.4 christos yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
1060 1.1 christos #endif
1061 1.1 christos
1062 1.1 christos #if !YYBTYACC
1063 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1064 1.1 christos yyerrlab:
1065 1.1 christos #endif
1066 1.1 christos ++yynerrs;
1067 1.1 christos
1068 1.1 christos yyinrecovery:
1069 1.1 christos if (yyerrflag < 3)
1070 1.1 christos {
1071 1.1 christos yyerrflag = 3;
1072 1.1 christos for (;;)
1073 1.1 christos {
1074 1.1 christos if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1075 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1076 1.1 christos {
1077 1.1 christos #if YYDEBUG
1078 1.1 christos if (yydebug)
1079 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1080 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1081 1.1 christos #endif
1082 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1083 1.1 christos yystate = yytable[yyn];
1084 1.1 christos *++yystack.s_mark = yytable[yyn];
1085 1.1 christos *++yystack.l_mark = yylval;
1086 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1087 1.1 christos /* lookahead position is error end position */
1088 1.4 christos yyerror_loc_range[2] = yylloc;
1089 1.1 christos YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1090 1.1 christos *++yystack.p_mark = yyloc;
1091 1.1 christos #endif
1092 1.1 christos goto yyloop;
1093 1.1 christos }
1094 1.1 christos else
1095 1.1 christos {
1096 1.1 christos #if YYDEBUG
1097 1.1 christos if (yydebug)
1098 1.1 christos fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1099 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark);
1100 1.1 christos #endif
1101 1.1 christos if (yystack.s_mark <= yystack.s_base) goto yyabort;
1102 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1103 1.1 christos /* the current TOS position is the error start position */
1104 1.4 christos yyerror_loc_range[1] = *yystack.p_mark;
1105 1.1 christos #endif
1106 1.1 christos #if defined(YYDESTRUCT_CALL)
1107 1.1 christos #if YYBTYACC
1108 1.1 christos if (!yytrial)
1109 1.1 christos #endif /* YYBTYACC */
1110 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1111 1.1 christos YYDESTRUCT_CALL("error: discarding state",
1112 1.1 christos yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1113 1.1 christos #else
1114 1.1 christos YYDESTRUCT_CALL("error: discarding state",
1115 1.1 christos yystos[*yystack.s_mark], yystack.l_mark);
1116 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1117 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */
1118 1.1 christos --yystack.s_mark;
1119 1.1 christos --yystack.l_mark;
1120 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1121 1.1 christos --yystack.p_mark;
1122 1.1 christos #endif
1123 1.1 christos }
1124 1.1 christos }
1125 1.1 christos }
1126 1.1 christos else
1127 1.1 christos {
1128 1.1 christos if (yychar == YYEOF) goto yyabort;
1129 1.1 christos #if YYDEBUG
1130 1.1 christos if (yydebug)
1131 1.1 christos {
1132 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1133 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1134 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys);
1135 1.1 christos }
1136 1.1 christos #endif
1137 1.1 christos #if defined(YYDESTRUCT_CALL)
1138 1.1 christos #if YYBTYACC
1139 1.1 christos if (!yytrial)
1140 1.1 christos #endif /* YYBTYACC */
1141 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1142 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1143 1.1 christos #else
1144 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1145 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1146 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */
1147 1.1 christos yychar = YYEMPTY;
1148 1.1 christos goto yyloop;
1149 1.1 christos }
1150 1.1 christos
1151 1.1 christos yyreduce:
1152 1.1 christos yym = yylen[yyn];
1153 1.1 christos #if YYDEBUG
1154 1.1 christos if (yydebug)
1155 1.1 christos {
1156 1.1 christos fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1157 1.1 christos YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1158 1.1 christos #ifdef YYSTYPE_TOSTRING
1159 1.1 christos #if YYBTYACC
1160 1.1 christos if (!yytrial)
1161 1.1 christos #endif /* YYBTYACC */
1162 1.1 christos if (yym > 0)
1163 1.1 christos {
1164 1.1 christos int i;
1165 1.1 christos fputc('<', stderr);
1166 1.1 christos for (i = yym; i > 0; i--)
1167 1.1 christos {
1168 1.1 christos if (i != yym) fputs(", ", stderr);
1169 1.1 christos fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1170 1.1 christos yystack.l_mark[1-i]), stderr);
1171 1.1 christos }
1172 1.1 christos fputc('>', stderr);
1173 1.1 christos }
1174 1.1 christos #endif
1175 1.1 christos fputc('\n', stderr);
1176 1.1 christos }
1177 1.1 christos #endif
1178 1.1 christos if (yym > 0)
1179 1.1 christos yyval = yystack.l_mark[1-yym];
1180 1.1 christos else
1181 1.1 christos memset(&yyval, 0, sizeof yyval);
1182 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1183 1.1 christos
1184 1.1 christos /* Perform position reduction */
1185 1.1 christos memset(&yyloc, 0, sizeof(yyloc));
1186 1.1 christos #if YYBTYACC
1187 1.1 christos if (!yytrial)
1188 1.1 christos #endif /* YYBTYACC */
1189 1.1 christos {
1190 1.4 christos YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
1191 1.1 christos /* just in case YYERROR is invoked within the action, save
1192 1.1 christos the start of the rhs as the error start position */
1193 1.4 christos yyerror_loc_range[1] = yystack.p_mark[1-yym];
1194 1.1 christos }
1195 1.1 christos #endif
1196 1.1 christos
1197 1.1 christos switch (yyn)
1198 1.1 christos {
1199 1.1 christos case 1:
1200 1.1 christos if (!yytrial)
1201 1.1 christos #line 62 "btyacc_destroy1.y"
1202 1.1 christos { yyval.nlist = yystack.l_mark[-5].nlist; }
1203 1.7 christos #line 1202 "btyacc_destroy1.tab.c"
1204 1.1 christos break;
1205 1.1 christos case 2:
1206 1.1 christos if (!yytrial)
1207 1.1 christos #line 64 "btyacc_destroy1.y"
1208 1.1 christos { yyval.nlist = yystack.l_mark[-3].nlist; }
1209 1.7 christos #line 1208 "btyacc_destroy1.tab.c"
1210 1.1 christos break;
1211 1.1 christos case 3:
1212 1.1 christos if (!yytrial)
1213 1.1 christos #line 67 "btyacc_destroy1.y"
1214 1.1 christos { yyval.cval = cGLOBAL; }
1215 1.7 christos #line 1214 "btyacc_destroy1.tab.c"
1216 1.1 christos break;
1217 1.1 christos case 4:
1218 1.1 christos if (!yytrial)
1219 1.1 christos #line 68 "btyacc_destroy1.y"
1220 1.1 christos { yyval.cval = cLOCAL; }
1221 1.7 christos #line 1220 "btyacc_destroy1.tab.c"
1222 1.1 christos break;
1223 1.1 christos case 5:
1224 1.1 christos if (!yytrial)
1225 1.1 christos #line 71 "btyacc_destroy1.y"
1226 1.1 christos { yyval.tval = tREAL; }
1227 1.7 christos #line 1226 "btyacc_destroy1.tab.c"
1228 1.1 christos break;
1229 1.1 christos case 6:
1230 1.1 christos if (!yytrial)
1231 1.1 christos #line 72 "btyacc_destroy1.y"
1232 1.1 christos { yyval.tval = tINTEGER; }
1233 1.7 christos #line 1232 "btyacc_destroy1.tab.c"
1234 1.1 christos break;
1235 1.1 christos case 7:
1236 1.1 christos if (!yytrial)
1237 1.1 christos #line 76 "btyacc_destroy1.y"
1238 1.1 christos { yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id);
1239 1.1 christos yyval.nlist->next = yystack.l_mark[-1].nlist;
1240 1.1 christos }
1241 1.7 christos #line 1240 "btyacc_destroy1.tab.c"
1242 1.1 christos break;
1243 1.1 christos case 8:
1244 1.1 christos if (!yytrial)
1245 1.1 christos #line 80 "btyacc_destroy1.y"
1246 1.1 christos { yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id);
1247 1.1 christos yyval.nlist->next = NULL;
1248 1.1 christos }
1249 1.7 christos #line 1248 "btyacc_destroy1.tab.c"
1250 1.1 christos break;
1251 1.1 christos case 9:
1252 1.1 christos if (!yytrial)
1253 1.1 christos #line 86 "btyacc_destroy1.y"
1254 1.1 christos { yyval.nlist = yystack.l_mark[-5].nlist; }
1255 1.7 christos #line 1254 "btyacc_destroy1.tab.c"
1256 1.1 christos break;
1257 1.7 christos #line 1256 "btyacc_destroy1.tab.c"
1258 1.1 christos default:
1259 1.1 christos break;
1260 1.1 christos }
1261 1.1 christos yystack.s_mark -= yym;
1262 1.1 christos yystate = *yystack.s_mark;
1263 1.1 christos yystack.l_mark -= yym;
1264 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1265 1.1 christos yystack.p_mark -= yym;
1266 1.1 christos #endif
1267 1.1 christos yym = yylhs[yyn];
1268 1.1 christos if (yystate == 0 && yym == 0)
1269 1.1 christos {
1270 1.1 christos #if YYDEBUG
1271 1.1 christos if (yydebug)
1272 1.1 christos {
1273 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1274 1.1 christos #ifdef YYSTYPE_TOSTRING
1275 1.1 christos #if YYBTYACC
1276 1.1 christos if (!yytrial)
1277 1.1 christos #endif /* YYBTYACC */
1278 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1279 1.1 christos #endif
1280 1.1 christos fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1281 1.1 christos }
1282 1.1 christos #endif
1283 1.1 christos yystate = YYFINAL;
1284 1.1 christos *++yystack.s_mark = YYFINAL;
1285 1.1 christos *++yystack.l_mark = yyval;
1286 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1287 1.1 christos *++yystack.p_mark = yyloc;
1288 1.1 christos #endif
1289 1.1 christos if (yychar < 0)
1290 1.1 christos {
1291 1.1 christos #if YYBTYACC
1292 1.1 christos do {
1293 1.1 christos if (yylvp < yylve)
1294 1.1 christos {
1295 1.1 christos /* we're currently re-reading tokens */
1296 1.1 christos yylval = *yylvp++;
1297 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1298 1.1 christos yylloc = *yylpp++;
1299 1.1 christos #endif
1300 1.1 christos yychar = *yylexp++;
1301 1.1 christos break;
1302 1.1 christos }
1303 1.1 christos if (yyps->save)
1304 1.1 christos {
1305 1.1 christos /* in trial mode; save scanner results for future parse attempts */
1306 1.1 christos if (yylvp == yylvlim)
1307 1.1 christos { /* Enlarge lexical value queue */
1308 1.1 christos size_t p = (size_t) (yylvp - yylvals);
1309 1.1 christos size_t s = (size_t) (yylvlim - yylvals);
1310 1.1 christos
1311 1.1 christos s += YYLVQUEUEGROWTH;
1312 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1313 1.1 christos goto yyenomem;
1314 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1315 1.1 christos goto yyenomem;
1316 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1317 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1318 1.1 christos goto yyenomem;
1319 1.1 christos #endif
1320 1.1 christos yylvp = yylve = yylvals + p;
1321 1.1 christos yylvlim = yylvals + s;
1322 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1323 1.1 christos yylpp = yylpe = yylpsns + p;
1324 1.1 christos yylplim = yylpsns + s;
1325 1.1 christos #endif
1326 1.1 christos yylexp = yylexemes + p;
1327 1.1 christos }
1328 1.2 christos *yylexp = (YYINT) YYLEX;
1329 1.1 christos *yylvp++ = yylval;
1330 1.1 christos yylve++;
1331 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1332 1.1 christos *yylpp++ = yylloc;
1333 1.1 christos yylpe++;
1334 1.1 christos #endif
1335 1.1 christos yychar = *yylexp++;
1336 1.1 christos break;
1337 1.1 christos }
1338 1.1 christos /* normal operation, no conflict encountered */
1339 1.1 christos #endif /* YYBTYACC */
1340 1.1 christos yychar = YYLEX;
1341 1.1 christos #if YYBTYACC
1342 1.1 christos } while (0);
1343 1.1 christos #endif /* YYBTYACC */
1344 1.1 christos if (yychar < 0) yychar = YYEOF;
1345 1.1 christos #if YYDEBUG
1346 1.1 christos if (yydebug)
1347 1.1 christos {
1348 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1349 1.2 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1350 1.1 christos YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1351 1.1 christos }
1352 1.1 christos #endif
1353 1.1 christos }
1354 1.1 christos if (yychar == YYEOF) goto yyaccept;
1355 1.1 christos goto yyloop;
1356 1.1 christos }
1357 1.1 christos if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1358 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1359 1.1 christos yystate = yytable[yyn];
1360 1.1 christos else
1361 1.1 christos yystate = yydgoto[yym];
1362 1.1 christos #if YYDEBUG
1363 1.1 christos if (yydebug)
1364 1.1 christos {
1365 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1366 1.1 christos #ifdef YYSTYPE_TOSTRING
1367 1.1 christos #if YYBTYACC
1368 1.1 christos if (!yytrial)
1369 1.1 christos #endif /* YYBTYACC */
1370 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1371 1.1 christos #endif
1372 1.1 christos fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1373 1.1 christos }
1374 1.1 christos #endif
1375 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1376 1.2 christos *++yystack.s_mark = (YYINT) yystate;
1377 1.1 christos *++yystack.l_mark = yyval;
1378 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1379 1.1 christos *++yystack.p_mark = yyloc;
1380 1.1 christos #endif
1381 1.1 christos goto yyloop;
1382 1.1 christos #if YYBTYACC
1383 1.1 christos
1384 1.1 christos /* Reduction declares that this path is valid. Set yypath and do a full parse */
1385 1.1 christos yyvalid:
1386 1.1 christos if (yypath) YYABORT;
1387 1.1 christos while (yyps->save)
1388 1.1 christos {
1389 1.1 christos YYParseState *save = yyps->save;
1390 1.1 christos yyps->save = save->save;
1391 1.1 christos save->save = yypath;
1392 1.1 christos yypath = save;
1393 1.1 christos }
1394 1.1 christos #if YYDEBUG
1395 1.1 christos if (yydebug)
1396 1.1 christos fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1397 1.1 christos YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1398 1.1 christos #endif
1399 1.1 christos if (yyerrctx)
1400 1.1 christos {
1401 1.1 christos yyFreeState(yyerrctx);
1402 1.1 christos yyerrctx = NULL;
1403 1.1 christos }
1404 1.1 christos yylvp = yylvals + yypath->lexeme;
1405 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1406 1.1 christos yylpp = yylpsns + yypath->lexeme;
1407 1.1 christos #endif
1408 1.1 christos yylexp = yylexemes + yypath->lexeme;
1409 1.1 christos yychar = YYEMPTY;
1410 1.1 christos yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1411 1.2 christos memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1412 1.1 christos yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1413 1.1 christos memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1414 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1415 1.1 christos yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1416 1.1 christos memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1417 1.1 christos #endif
1418 1.1 christos yystate = yypath->state;
1419 1.1 christos goto yyloop;
1420 1.1 christos #endif /* YYBTYACC */
1421 1.1 christos
1422 1.1 christos yyoverflow:
1423 1.1 christos YYERROR_CALL("yacc stack overflow");
1424 1.1 christos #if YYBTYACC
1425 1.1 christos goto yyabort_nomem;
1426 1.1 christos yyenomem:
1427 1.1 christos YYERROR_CALL("memory exhausted");
1428 1.1 christos yyabort_nomem:
1429 1.1 christos #endif /* YYBTYACC */
1430 1.1 christos yyresult = 2;
1431 1.1 christos goto yyreturn;
1432 1.1 christos
1433 1.1 christos yyabort:
1434 1.1 christos yyresult = 1;
1435 1.1 christos goto yyreturn;
1436 1.1 christos
1437 1.1 christos yyaccept:
1438 1.1 christos #if YYBTYACC
1439 1.1 christos if (yyps->save) goto yyvalid;
1440 1.1 christos #endif /* YYBTYACC */
1441 1.1 christos yyresult = 0;
1442 1.1 christos
1443 1.1 christos yyreturn:
1444 1.1 christos #if defined(YYDESTRUCT_CALL)
1445 1.1 christos if (yychar != YYEOF && yychar != YYEMPTY)
1446 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1447 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1448 1.1 christos #else
1449 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1450 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1451 1.1 christos
1452 1.1 christos {
1453 1.1 christos YYSTYPE *pv;
1454 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1455 1.1 christos YYLTYPE *pp;
1456 1.1 christos
1457 1.1 christos for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1458 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state",
1459 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1460 1.1 christos #else
1461 1.1 christos for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1462 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state",
1463 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1464 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1465 1.1 christos }
1466 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */
1467 1.1 christos
1468 1.1 christos #if YYBTYACC
1469 1.1 christos if (yyerrctx)
1470 1.1 christos {
1471 1.1 christos yyFreeState(yyerrctx);
1472 1.1 christos yyerrctx = NULL;
1473 1.1 christos }
1474 1.1 christos while (yyps)
1475 1.1 christos {
1476 1.1 christos YYParseState *save = yyps;
1477 1.1 christos yyps = save->save;
1478 1.1 christos save->save = NULL;
1479 1.1 christos yyFreeState(save);
1480 1.1 christos }
1481 1.1 christos while (yypath)
1482 1.1 christos {
1483 1.1 christos YYParseState *save = yypath;
1484 1.1 christos yypath = save->save;
1485 1.1 christos save->save = NULL;
1486 1.1 christos yyFreeState(save);
1487 1.1 christos }
1488 1.1 christos #endif /* YYBTYACC */
1489 1.1 christos yyfreestack(&yystack);
1490 1.1 christos return (yyresult);
1491 1.1 christos }
1492