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