btyacc_demo.tab.c revision 1.1.1.3 1 /* $NetBSD: btyacc_demo.tab.c,v 1.1.1.3 2016/01/09 21:59:46 christos Exp $ */
2
3 /* original parser id follows */
4 /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
5 /* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */
6
7 #define YYBYACC 1
8 #define YYMAJOR 1
9 #define YYMINOR 9
10 #define YYCHECK "yyyymmdd"
11
12 #define YYEMPTY (-1)
13 #define yyclearin (yychar = YYEMPTY)
14 #define yyerrok (yyerrflag = 0)
15 #define YYRECOVERING() (yyerrflag != 0)
16 #define YYENOMEM (-2)
17 #define YYEOF 0
18 #undef YYBTYACC
19 #define YYBTYACC 1
20 #define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
21
22 #ifndef yyparse
23 #define yyparse demo_parse
24 #endif /* yyparse */
25
26 #ifndef yylex
27 #define yylex demo_lex
28 #endif /* yylex */
29
30 #ifndef yyerror
31 #define yyerror demo_error
32 #endif /* yyerror */
33
34 #ifndef yychar
35 #define yychar demo_char
36 #endif /* yychar */
37
38 #ifndef yyval
39 #define yyval demo_val
40 #endif /* yyval */
41
42 #ifndef yylval
43 #define yylval demo_lval
44 #endif /* yylval */
45
46 #ifndef yydebug
47 #define yydebug demo_debug
48 #endif /* yydebug */
49
50 #ifndef yynerrs
51 #define yynerrs demo_nerrs
52 #endif /* yynerrs */
53
54 #ifndef yyerrflag
55 #define yyerrflag demo_errflag
56 #endif /* yyerrflag */
57
58 #ifndef yylhs
59 #define yylhs demo_lhs
60 #endif /* yylhs */
61
62 #ifndef yylen
63 #define yylen demo_len
64 #endif /* yylen */
65
66 #ifndef yydefred
67 #define yydefred demo_defred
68 #endif /* yydefred */
69
70 #ifndef yystos
71 #define yystos demo_stos
72 #endif /* yystos */
73
74 #ifndef yydgoto
75 #define yydgoto demo_dgoto
76 #endif /* yydgoto */
77
78 #ifndef yysindex
79 #define yysindex demo_sindex
80 #endif /* yysindex */
81
82 #ifndef yyrindex
83 #define yyrindex demo_rindex
84 #endif /* yyrindex */
85
86 #ifndef yygindex
87 #define yygindex demo_gindex
88 #endif /* yygindex */
89
90 #ifndef yytable
91 #define yytable demo_table
92 #endif /* yytable */
93
94 #ifndef yycheck
95 #define yycheck demo_check
96 #endif /* yycheck */
97
98 #ifndef yyname
99 #define yyname demo_name
100 #endif /* yyname */
101
102 #ifndef yyrule
103 #define yyrule demo_rule
104 #endif /* yyrule */
105
106 #ifndef yyloc
107 #define yyloc demo_loc
108 #endif /* yyloc */
109
110 #ifndef yylloc
111 #define yylloc demo_lloc
112 #endif /* yylloc */
113
114 #if YYBTYACC
115
116 #ifndef yycindex
117 #define yycindex demo_cindex
118 #endif /* yycindex */
119
120 #ifndef yyctable
121 #define yyctable demo_ctable
122 #endif /* yyctable */
123
124 #endif /* YYBTYACC */
125
126 #define YYPREFIX "demo_"
127
128 #define YYPURE 0
129
130 #line 15 "btyacc_demo.y"
131 /* dummy types just for compile check */
132 typedef int Code;
133 typedef int Decl_List;
134 typedef int Expr;
135 typedef int Expr_List;
136 typedef int Scope;
137 typedef int Type;
138 enum Operator { ADD, SUB, MUL, MOD, DIV, DEREF };
139
140 typedef unsigned char bool;
141 typedef struct Decl {
142 Scope *scope;
143 Type *type;
144 bool (*istype)(void);
145 } Decl;
146
147 #include "btyacc_demo.tab.h"
148 #include <stdlib.h>
149 #include <stdio.h>
150 #line 36 "btyacc_demo.y"
151 #ifdef YYSTYPE
152 #undef YYSTYPE_IS_DECLARED
153 #define YYSTYPE_IS_DECLARED 1
154 #endif
155 #ifndef YYSTYPE_IS_DECLARED
156 #define YYSTYPE_IS_DECLARED 1
157 typedef union {
158 Scope *scope;
159 Expr *expr;
160 Expr_List *elist;
161 Type *type;
162 Decl *decl;
163 Decl_List *dlist;
164 Code *code;
165 char *id;
166 } YYSTYPE;
167 #endif /* !YYSTYPE_IS_DECLARED */
168 #line 167 "btyacc_demo.tab.c"
169
170 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
171 /* Default: YYLTYPE is the text position type. */
172 typedef struct YYLTYPE
173 {
174 int first_line;
175 int first_column;
176 int last_line;
177 int last_column;
178 } YYLTYPE;
179 #define YYLTYPE_IS_DECLARED 1
180 #endif
181
182 /* compatibility with bison */
183 #ifdef YYPARSE_PARAM
184 /* compatibility with FreeBSD */
185 # ifdef YYPARSE_PARAM_TYPE
186 # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
187 # else
188 # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
189 # endif
190 #else
191 # define YYPARSE_DECL() yyparse(void)
192 #endif
193
194 /* Parameters sent to lex. */
195 #ifdef YYLEX_PARAM
196 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
197 # define YYLEX yylex(YYLEX_PARAM)
198 #else
199 # define YYLEX_DECL() yylex(void)
200 # define YYLEX yylex()
201 #endif
202
203 /* Parameters sent to yyerror. */
204 #ifndef YYERROR_DECL
205 #define YYERROR_DECL() yyerror(YYLTYPE loc, const char *s)
206 #endif
207 #ifndef YYERROR_CALL
208 #define YYERROR_CALL(msg) yyerror(yylloc, msg)
209 #endif
210
211 #ifndef YYDESTRUCT_DECL
212 #define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, YYLTYPE *loc)
213 #endif
214 #ifndef YYDESTRUCT_CALL
215 #define YYDESTRUCT_CALL(msg, psymb, val, loc) yydestruct(msg, psymb, val, loc)
216 #endif
217
218 extern int YYPARSE_DECL();
219
220 #define PREFIX 257
221 #define POSTFIX 258
222 #define ID 259
223 #define CONSTANT 260
224 #define EXTERN 261
225 #define REGISTER 262
226 #define STATIC 263
227 #define CONST 264
228 #define VOLATILE 265
229 #define IF 266
230 #define THEN 267
231 #define ELSE 268
232 #define CLCL 269
233 #define YYERRCODE 256
234 typedef short YYINT;
235 static const YYINT demo_lhs[] = { -1,
236 15, 15, 15, 12, 18, 0, 4, 19, 4, 20,
237 2, 21, 2, 10, 10, 13, 13, 11, 11, 11,
238 11, 11, 14, 14, 22, 23, 3, 3, 8, 8,
239 24, 25, 8, 8, 8, 8, 16, 16, 17, 17,
240 9, 1, 1, 1, 1, 1, 1, 1, 1, 5,
241 26, 5, 27, 28, 5, 5, 29, 5, 6, 6,
242 7,
243 };
244 static const YYINT demo_len[] = { 2,
245 0, 1, 3, 2, 0, 2, 0, 0, 3, 0,
246 5, 0, 6, 1, 3, 0, 2, 1, 1, 1,
247 1, 1, 1, 1, 0, 0, 5, 1, 0, 1,
248 0, 0, 5, 5, 5, 6, 0, 1, 4, 1,
249 4, 4, 4, 4, 4, 4, 3, 1, 1, 1,
250 0, 3, 0, 0, 11, 8, 0, 2, 0, 3,
251 4,
252 };
253 static const YYINT demo_defred[] = { 5,
254 0, 7, 0, 0, 20, 21, 22, 23, 24, 2,
255 9, 8, 14, 19, 18, 0, 0, 0, 15, 0,
256 3, 16, 31, 30, 0, 0, 0, 32, 11, 25,
257 25, 25, 0, 17, 26, 0, 26, 0, 0, 8,
258 13, 0, 0, 0, 40, 8, 0, 0, 8, 48,
259 49, 0, 59, 0, 33, 0, 0, 16, 31, 0,
260 31, 31, 31, 31, 31, 35, 0, 0, 0, 0,
261 47, 0, 0, 0, 0, 0, 61, 0, 0, 39,
262 0, 0, 44, 46, 45, 0, 50, 60, 0, 0,
263 31, 0, 58, 0, 52, 0, 0, 53, 0, 0,
264 54, 0, 55,
265 };
266 static const YYINT demo_stos[] = { 0,
267 271, 289, 275, 290, 261, 262, 263, 264, 265, 269,
268 273, 281, 282, 283, 285, 286, 290, 259, 282, 291,
269 269, 42, 40, 259, 274, 279, 284, 295, 59, 44,
270 40, 91, 292, 285, 293, 296, 293, 293, 293, 123,
271 278, 294, 279, 294, 280, 281, 287, 288, 42, 259,
272 260, 272, 290, 279, 41, 279, 290, 41, 44, 290,
273 43, 45, 42, 47, 37, 93, 277, 291, 284, 295,
274 272, 295, 295, 295, 295, 295, 125, 290, 279, 280,
275 272, 272, 272, 272, 272, 266, 273, 276, 297, 300,
276 40, 272, 278, 295, 59, 272, 41, 267, 298, 276,
277 268, 299, 276,
278 };
279 static const YYINT demo_dgoto[] = { 1,
280 52, 87, 25, 3, 88, 67, 41, 26, 45, 12,
281 13, 14, 27, 15, 16, 47, 48, 2, 4, 20,
282 33, 35, 42, 28, 36, 89, 99, 102, 90,
283 };
284 static const YYINT demo_sindex[] = { 0,
285 0, 0, 0, -124, 0, 0, 0, 0, 0, 0,
286 0, 0, 0, 0, 0, -256, -124, 0, 0, -33,
287 0, 0, 0, 0, 34, -4, -205, 0, 0, 0,
288 0, 0, -110, 0, 0, -33, 0, -124, -15, 0,
289 0, -33, -36, -33, 0, 0, 4, 7, 0, 0,
290 0, 5, 0, -4, 0, -4, -124, 0, 0, -15,
291 0, 0, 0, 0, 0, 0, -46, -33, -205, -124,
292 0, -15, -15, -15, -15, -15, 0, -91, -4, 0,
293 122, 122, 0, 0, 0, 40, 0, 0, -15, -110,
294 0, 106, 0, -15, 0, 113, -183, 0, -91, 0,
295 0, -91, 0,
296 };
297 static const YYINT demo_rindex[] = { 0,
298 0, 0, 1, -157, 0, 0, 0, 0, 0, 0,
299 0, 0, 0, 0, 0, 0, -28, -22, 0, -29,
300 0, 0, 0, 0, 0, -27, -34, 0, 0, 0,
301 0, 0, 0, 0, 0, 8, 0, -12, 0, 0,
302 0, -20, 0, 32, 0, 0, 0, 69, 0, 0,
303 0, 0, 0, -18, 0, 56, 33, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, -31, -1, -6, -157,
305 0, 0, 0, 0, 0, 0, 0, -14, 63, 0,
306 13, 23, 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, -14, -42,
308 0, -14, 0,
309 };
310 #if YYBTYACC
311 static const YYINT demo_cindex[] = { 0,
312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, -145, -150, 0, 81,
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 82, 0, 0, 0, 0,
316 0, 91, 0, 112, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, -113, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0, 117, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, -98, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 0, 0, -96, -92,
322 0, -82, 0,
323 };
324 #endif
325 static const YYINT demo_gindex[] = { 0,
326 53, 175, 0, 0, 9, 0, 90, 76, 111, 27,
327 29, 0, 124, -25, 0, 0, 0, 0, 21, 126,
328 0, 136, 147, 71, 0, 0, 0, 0, 0,
329 };
330 #define YYTABLESIZE 270
331 static const YYINT demo_table[] = { 56,
332 6, 34, 18, 31, 55, 25, 25, 25, 22, 25,
333 8, 10, 40, 10, 29, 10, 28, 4, 4, 4,
334 29, 4, 34, 29, 25, 34, 49, 51, 37, 29,
335 10, 28, 17, 36, 36, 31, 4, 36, 29, 29,
336 34, 65, 29, 34, 58, 19, 63, 61, 29, 62,
337 59, 64, 36, 42, 32, 42, 25, 42, 8, 9,
338 53, 29, 10, 43, 46, 43, 57, 43, 4, 60,
339 29, 42, 10, 10, 10, 29, 10, 30, 77, 91,
340 56, 43, 56, 98, 36, 19, 32, 78, 25, 29,
341 29, 8, 29, 29, 10, 12, 46, 66, 29, 27,
342 4, 1, 29, 41, 34, 42, 41, 100, 57, 38,
343 103, 43, 71, 0, 27, 43, 36, 54, 4, 56,
344 7, 7, 29, 10, 81, 82, 83, 84, 85, 70,
345 7, 72, 73, 74, 75, 76, 5, 6, 7, 8,
346 9, 92, 65, 79, 10, 0, 96, 63, 61, 65,
347 62, 7, 64, 97, 63, 61, 7, 62, 65, 64,
348 9, 94, 9, 63, 95, 37, 38, 39, 64, 5,
349 6, 7, 8, 9, 86, 13, 9, 10, 11, 93,
350 80, 69, 68, 44, 0, 0, 0, 0, 0, 0,
351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 56, 56, 56, 56,
354 56, 56, 56, 56, 25, 24, 56, 8, 8, 8,
355 8, 8, 8, 8, 8, 0, 4, 8, 4, 4,
356 4, 4, 4, 50, 51, 51, 1, 0, 0, 0,
357 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
358 0, 8, 8, 8, 8, 8, 0, 0, 0, 8,
359 };
360 static const YYINT demo_check[] = { 42,
361 0, 27, 259, 40, 41, 40, 41, 42, 42, 44,
362 42, 40, 123, 42, 44, 44, 44, 40, 41, 42,
363 41, 44, 41, 44, 59, 44, 42, 42, 41, 59,
364 59, 59, 12, 40, 41, 40, 59, 44, 59, 41,
365 59, 37, 44, 69, 41, 17, 42, 43, 41, 45,
366 44, 47, 59, 41, 91, 43, 91, 45, 264, 265,
367 40, 91, 91, 41, 38, 43, 46, 45, 91, 49,
368 91, 59, 40, 41, 42, 44, 44, 44, 125, 40,
369 123, 59, 125, 267, 91, 57, 91, 67, 123, 91,
370 59, 123, 59, 123, 123, 123, 70, 93, 91, 44,
371 123, 259, 123, 41, 123, 93, 44, 99, 123, 41,
372 102, 36, 60, 259, 59, 93, 123, 42, 269, 44,
373 40, 40, 91, 91, 72, 73, 74, 75, 76, 59,
374 40, 61, 62, 63, 64, 65, 261, 262, 263, 264,
375 265, 89, 37, 68, 269, 259, 94, 42, 43, 37,
376 45, 40, 47, 41, 42, 43, 40, 45, 37, 47,
377 259, 91, 259, 42, 59, 30, 31, 32, 47, 261,
378 262, 263, 264, 265, 266, 268, 259, 269, 4, 90,
379 70, 58, 57, 37, -1, -1, -1, -1, -1, -1,
380 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
382 -1, -1, -1, -1, -1, -1, 259, 260, 261, 262,
383 263, 264, 265, 266, 259, 259, 269, 259, 260, 261,
384 262, 263, 264, 265, 266, -1, 259, 269, 261, 262,
385 263, 264, 265, 259, 260, 260, 259, -1, -1, -1,
386 -1, -1, -1, -1, -1, -1, -1, -1, -1, 259,
387 -1, 261, 262, 263, 264, 265, -1, -1, -1, 269,
388 };
389 #if YYBTYACC
390 static const YYINT demo_ctable[] = { -1,
391 1, 10, -1, 21, 4, -1, 23, 29, -1, 1,
392 51, -1, 101, 56, -1, -1, -1, -1, -1, -1,
393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
396 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
402 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
404 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
417 -1, -1, -1, -1, -1, -1, -1, -1, -1,
418 };
419 #endif
420 #define YYFINAL 1
421 #ifndef YYDEBUG
422 #define YYDEBUG 0
423 #endif
424 #define YYMAXTOKEN 269
425 #define YYUNDFTOKEN 301
426 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
427 #if YYDEBUG
428 static const char *const demo_name[] = {
429
430 "$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,
431 "'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,0,0,0,0,0,
432 "';'",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,
433 "']'",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,
434 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,
435 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,
436 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,
437 0,0,0,0,0,0,0,0,0,"error","PREFIX","POSTFIX","ID","CONSTANT","EXTERN",
438 "REGISTER","STATIC","CONST","VOLATILE","IF","THEN","ELSE","CLCL","$accept",
439 "input","expr","decl","declarator_list","decl_list","statement",
440 "statement_list","block_statement","declarator","formal_arg","decl_specs",
441 "decl_spec","typename","cv_quals","cv_qual","opt_scope","formal_arg_list",
442 "nonempty_formal_arg_list","$$1","$$2","$$3","$$4","$$5","$$6","$$7","$$8",
443 "$$9","$$10","$$11","$$12","illegal-symbol",
444 };
445 static const char *const demo_rule[] = {
446 "$accept : input",
447 "opt_scope :",
448 "opt_scope : CLCL",
449 "opt_scope : opt_scope ID CLCL",
450 "typename : opt_scope ID",
451 "$$1 :",
452 "input : $$1 decl_list",
453 "decl_list :",
454 "$$2 :",
455 "decl_list : decl_list $$2 decl",
456 "$$3 :",
457 "decl : decl_specs $$2 $$3 declarator_list ';'",
458 "$$4 :",
459 "decl : decl_specs $$2 $$3 declarator $$4 block_statement",
460 "decl_specs : decl_spec",
461 "decl_specs : decl_specs $$2 decl_spec",
462 "cv_quals :",
463 "cv_quals : cv_quals cv_qual",
464 "decl_spec : cv_qual",
465 "decl_spec : typename",
466 "decl_spec : EXTERN",
467 "decl_spec : REGISTER",
468 "decl_spec : STATIC",
469 "cv_qual : CONST",
470 "cv_qual : VOLATILE",
471 "$$5 :",
472 "$$6 :",
473 "declarator_list : declarator_list ',' $$5 $$6 declarator",
474 "declarator_list : declarator",
475 "declarator :",
476 "declarator : ID",
477 "$$7 :",
478 "$$8 :",
479 "declarator : '(' $$7 $$8 declarator ')'",
480 "declarator : '*' cv_quals $$5 $$6 declarator",
481 "declarator : declarator '[' $$5 expr ']'",
482 "declarator : declarator '(' $$5 formal_arg_list ')' cv_quals",
483 "formal_arg_list :",
484 "formal_arg_list : nonempty_formal_arg_list",
485 "nonempty_formal_arg_list : nonempty_formal_arg_list ',' $$7 formal_arg",
486 "nonempty_formal_arg_list : formal_arg",
487 "formal_arg : decl_specs $$2 $$3 declarator",
488 "expr : expr '+' $$7 expr",
489 "expr : expr '-' $$7 expr",
490 "expr : expr '*' $$7 expr",
491 "expr : expr '%' $$7 expr",
492 "expr : expr '/' $$7 expr",
493 "expr : '*' $$2 expr",
494 "expr : ID",
495 "expr : CONSTANT",
496 "statement : decl",
497 "$$9 :",
498 "statement : $$9 expr ';'",
499 "$$10 :",
500 "$$11 :",
501 "statement : IF '(' $$7 expr ')' THEN $$10 statement ELSE $$11 statement",
502 "statement : IF '(' $$7 expr ')' THEN $$10 statement",
503 "$$12 :",
504 "statement : $$12 block_statement",
505 "statement_list :",
506 "statement_list : statement_list $$2 statement",
507 "block_statement : '{' $$2 statement_list '}'",
508
509 };
510 #endif
511
512 int yydebug;
513 int yynerrs;
514
515 int yyerrflag;
516 int yychar;
517 YYSTYPE yyval;
518 YYSTYPE yylval;
519 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
520 YYLTYPE yyloc; /* position returned by actions */
521 YYLTYPE yylloc; /* position from the lexer */
522 #endif
523
524 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
525 #ifndef YYLLOC_DEFAULT
526 #define YYLLOC_DEFAULT(loc, rhs, n) \
527 do \
528 { \
529 if (n == 0) \
530 { \
531 (loc).first_line = ((rhs)[-1]).last_line; \
532 (loc).first_column = ((rhs)[-1]).last_column; \
533 (loc).last_line = ((rhs)[-1]).last_line; \
534 (loc).last_column = ((rhs)[-1]).last_column; \
535 } \
536 else \
537 { \
538 (loc).first_line = ((rhs)[ 0 ]).first_line; \
539 (loc).first_column = ((rhs)[ 0 ]).first_column; \
540 (loc).last_line = ((rhs)[n-1]).last_line; \
541 (loc).last_column = ((rhs)[n-1]).last_column; \
542 } \
543 } while (0)
544 #endif /* YYLLOC_DEFAULT */
545 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
546 #if YYBTYACC
547
548 #ifndef YYLVQUEUEGROWTH
549 #define YYLVQUEUEGROWTH 32
550 #endif
551 #endif /* YYBTYACC */
552
553 /* define the initial stack-sizes */
554 #ifdef YYSTACKSIZE
555 #undef YYMAXDEPTH
556 #define YYMAXDEPTH YYSTACKSIZE
557 #else
558 #ifdef YYMAXDEPTH
559 #define YYSTACKSIZE YYMAXDEPTH
560 #else
561 #define YYSTACKSIZE 10000
562 #define YYMAXDEPTH 10000
563 #endif
564 #endif
565
566 #ifndef YYINITSTACKSIZE
567 #define YYINITSTACKSIZE 200
568 #endif
569
570 typedef struct {
571 unsigned stacksize;
572 short *s_base;
573 short *s_mark;
574 short *s_last;
575 YYSTYPE *l_base;
576 YYSTYPE *l_mark;
577 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
578 YYLTYPE *p_base;
579 YYLTYPE *p_mark;
580 #endif
581 } YYSTACKDATA;
582 #if YYBTYACC
583
584 struct YYParseState_s
585 {
586 struct YYParseState_s *save; /* Previously saved parser state */
587 YYSTACKDATA yystack; /* saved parser stack */
588 int state; /* saved parser state */
589 int errflag; /* saved error recovery status */
590 int lexeme; /* saved index of the conflict lexeme in the lexical queue */
591 YYINT ctry; /* saved index in yyctable[] for this conflict */
592 };
593 typedef struct YYParseState_s YYParseState;
594 #endif /* YYBTYACC */
595 /* variables for the parser stack */
596 static YYSTACKDATA yystack;
597 #if YYBTYACC
598
599 /* Current parser state */
600 static YYParseState *yyps = 0;
601
602 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
603 static YYParseState *yypath = 0;
604
605 /* Base of the lexical value queue */
606 static YYSTYPE *yylvals = 0;
607
608 /* Current position at lexical value queue */
609 static YYSTYPE *yylvp = 0;
610
611 /* End position of lexical value queue */
612 static YYSTYPE *yylve = 0;
613
614 /* The last allocated position at the lexical value queue */
615 static YYSTYPE *yylvlim = 0;
616
617 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
618 /* Base of the lexical position queue */
619 static YYLTYPE *yylpsns = 0;
620
621 /* Current position at lexical position queue */
622 static YYLTYPE *yylpp = 0;
623
624 /* End position of lexical position queue */
625 static YYLTYPE *yylpe = 0;
626
627 /* The last allocated position at the lexical position queue */
628 static YYLTYPE *yylplim = 0;
629 #endif
630
631 /* Current position at lexical token queue */
632 static short *yylexp = 0;
633
634 static short *yylexemes = 0;
635 #endif /* YYBTYACC */
636 #line 200 "btyacc_demo.y"
637
638 extern int YYLEX_DECL();
639 extern void YYERROR_DECL();
640
641 extern Scope *global_scope;
642
643 extern Decl * lookup(Scope *scope, char *id);
644 extern Scope * new_scope(Scope *outer_scope);
645 extern Scope * start_fn_def(Scope *scope, Decl *fn_decl);
646 extern void finish_fn_def(Decl *fn_decl, Code *block);
647 extern Type * type_combine(Type *specs, Type *spec);
648 extern Type * bare_extern(void);
649 extern Type * bare_register(void);
650 extern Type * bare_static(void);
651 extern Type * bare_const(void);
652 extern Type * bare_volatile(void);
653 extern Decl * declare(Scope *scope, char *id, Type *type);
654 extern Decl * make_pointer(Decl *decl, Type *type);
655 extern Decl * make_array(Type *type, Expr *expr);
656 extern Decl * build_function(Decl *decl, Decl_List *dlist, Type *type);
657 extern Decl_List * append_dlist(Decl_List *dlist, Decl *decl);
658 extern Decl_List * build_dlist(Decl *decl);
659 extern Expr * build_expr(Expr *left, enum Operator op, Expr *right);
660 extern Expr * var_expr(Scope *scope, char *id);
661 extern Code * build_expr_code(Expr *expr);
662 extern Code * build_if(Expr *cond_expr, Code *then_stmt, Code *else_stmt);
663 extern Code * code_append(Code *stmt_list, Code *stmt);
664 #line 663 "btyacc_demo.tab.c"
665
666 /* Release memory associated with symbol. */
667 #if ! defined YYDESTRUCT_IS_DECLARED
668 static void
669 YYDESTRUCT_DECL()
670 {
671 switch (psymb)
672 {
673 case 43:
674 #line 83 "btyacc_demo.y"
675 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
676 msg,
677 (*loc).first_line, (*loc).first_column,
678 (*loc).last_line, (*loc).last_column);
679 /* in this example, we don't know what to do here */ }
680 break;
681 #line 680 "btyacc_demo.tab.c"
682 case 45:
683 #line 83 "btyacc_demo.y"
684 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
685 msg,
686 (*loc).first_line, (*loc).first_column,
687 (*loc).last_line, (*loc).last_column);
688 /* in this example, we don't know what to do here */ }
689 break;
690 #line 689 "btyacc_demo.tab.c"
691 case 42:
692 #line 83 "btyacc_demo.y"
693 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
694 msg,
695 (*loc).first_line, (*loc).first_column,
696 (*loc).last_line, (*loc).last_column);
697 /* in this example, we don't know what to do here */ }
698 break;
699 #line 698 "btyacc_demo.tab.c"
700 case 47:
701 #line 83 "btyacc_demo.y"
702 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
703 msg,
704 (*loc).first_line, (*loc).first_column,
705 (*loc).last_line, (*loc).last_column);
706 /* in this example, we don't know what to do here */ }
707 break;
708 #line 707 "btyacc_demo.tab.c"
709 case 37:
710 #line 83 "btyacc_demo.y"
711 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
712 msg,
713 (*loc).first_line, (*loc).first_column,
714 (*loc).last_line, (*loc).last_column);
715 /* in this example, we don't know what to do here */ }
716 break;
717 #line 716 "btyacc_demo.tab.c"
718 case 257:
719 #line 83 "btyacc_demo.y"
720 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
721 msg,
722 (*loc).first_line, (*loc).first_column,
723 (*loc).last_line, (*loc).last_column);
724 /* in this example, we don't know what to do here */ }
725 break;
726 #line 725 "btyacc_demo.tab.c"
727 case 258:
728 #line 83 "btyacc_demo.y"
729 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
730 msg,
731 (*loc).first_line, (*loc).first_column,
732 (*loc).last_line, (*loc).last_column);
733 /* in this example, we don't know what to do here */ }
734 break;
735 #line 734 "btyacc_demo.tab.c"
736 case 40:
737 #line 83 "btyacc_demo.y"
738 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
739 msg,
740 (*loc).first_line, (*loc).first_column,
741 (*loc).last_line, (*loc).last_column);
742 /* in this example, we don't know what to do here */ }
743 break;
744 #line 743 "btyacc_demo.tab.c"
745 case 91:
746 #line 83 "btyacc_demo.y"
747 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
748 msg,
749 (*loc).first_line, (*loc).first_column,
750 (*loc).last_line, (*loc).last_column);
751 /* in this example, we don't know what to do here */ }
752 break;
753 #line 752 "btyacc_demo.tab.c"
754 case 46:
755 #line 83 "btyacc_demo.y"
756 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
757 msg,
758 (*loc).first_line, (*loc).first_column,
759 (*loc).last_line, (*loc).last_column);
760 /* in this example, we don't know what to do here */ }
761 break;
762 #line 761 "btyacc_demo.tab.c"
763 case 259:
764 #line 78 "btyacc_demo.y"
765 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
766 msg,
767 (*loc).first_line, (*loc).first_column,
768 (*loc).last_line, (*loc).last_column);
769 free((*val).id); }
770 break;
771 #line 770 "btyacc_demo.tab.c"
772 case 260:
773 #line 78 "btyacc_demo.y"
774 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
775 msg,
776 (*loc).first_line, (*loc).first_column,
777 (*loc).last_line, (*loc).last_column);
778 free((*val).expr); }
779 break;
780 #line 779 "btyacc_demo.tab.c"
781 case 261:
782 #line 83 "btyacc_demo.y"
783 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
784 msg,
785 (*loc).first_line, (*loc).first_column,
786 (*loc).last_line, (*loc).last_column);
787 /* in this example, we don't know what to do here */ }
788 break;
789 #line 788 "btyacc_demo.tab.c"
790 case 262:
791 #line 83 "btyacc_demo.y"
792 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
793 msg,
794 (*loc).first_line, (*loc).first_column,
795 (*loc).last_line, (*loc).last_column);
796 /* in this example, we don't know what to do here */ }
797 break;
798 #line 797 "btyacc_demo.tab.c"
799 case 263:
800 #line 83 "btyacc_demo.y"
801 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
802 msg,
803 (*loc).first_line, (*loc).first_column,
804 (*loc).last_line, (*loc).last_column);
805 /* in this example, we don't know what to do here */ }
806 break;
807 #line 806 "btyacc_demo.tab.c"
808 case 264:
809 #line 83 "btyacc_demo.y"
810 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
811 msg,
812 (*loc).first_line, (*loc).first_column,
813 (*loc).last_line, (*loc).last_column);
814 /* in this example, we don't know what to do here */ }
815 break;
816 #line 815 "btyacc_demo.tab.c"
817 case 265:
818 #line 83 "btyacc_demo.y"
819 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
820 msg,
821 (*loc).first_line, (*loc).first_column,
822 (*loc).last_line, (*loc).last_column);
823 /* in this example, we don't know what to do here */ }
824 break;
825 #line 824 "btyacc_demo.tab.c"
826 case 266:
827 #line 83 "btyacc_demo.y"
828 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
829 msg,
830 (*loc).first_line, (*loc).first_column,
831 (*loc).last_line, (*loc).last_column);
832 /* in this example, we don't know what to do here */ }
833 break;
834 #line 833 "btyacc_demo.tab.c"
835 case 267:
836 #line 83 "btyacc_demo.y"
837 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
838 msg,
839 (*loc).first_line, (*loc).first_column,
840 (*loc).last_line, (*loc).last_column);
841 /* in this example, we don't know what to do here */ }
842 break;
843 #line 842 "btyacc_demo.tab.c"
844 case 268:
845 #line 83 "btyacc_demo.y"
846 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
847 msg,
848 (*loc).first_line, (*loc).first_column,
849 (*loc).last_line, (*loc).last_column);
850 /* in this example, we don't know what to do here */ }
851 break;
852 #line 851 "btyacc_demo.tab.c"
853 case 269:
854 #line 83 "btyacc_demo.y"
855 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
856 msg,
857 (*loc).first_line, (*loc).first_column,
858 (*loc).last_line, (*loc).last_column);
859 /* in this example, we don't know what to do here */ }
860 break;
861 #line 860 "btyacc_demo.tab.c"
862 case 59:
863 #line 83 "btyacc_demo.y"
864 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
865 msg,
866 (*loc).first_line, (*loc).first_column,
867 (*loc).last_line, (*loc).last_column);
868 /* in this example, we don't know what to do here */ }
869 break;
870 #line 869 "btyacc_demo.tab.c"
871 case 44:
872 #line 83 "btyacc_demo.y"
873 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
874 msg,
875 (*loc).first_line, (*loc).first_column,
876 (*loc).last_line, (*loc).last_column);
877 /* in this example, we don't know what to do here */ }
878 break;
879 #line 878 "btyacc_demo.tab.c"
880 case 41:
881 #line 83 "btyacc_demo.y"
882 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
883 msg,
884 (*loc).first_line, (*loc).first_column,
885 (*loc).last_line, (*loc).last_column);
886 /* in this example, we don't know what to do here */ }
887 break;
888 #line 887 "btyacc_demo.tab.c"
889 case 93:
890 #line 83 "btyacc_demo.y"
891 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
892 msg,
893 (*loc).first_line, (*loc).first_column,
894 (*loc).last_line, (*loc).last_column);
895 /* in this example, we don't know what to do here */ }
896 break;
897 #line 896 "btyacc_demo.tab.c"
898 case 123:
899 #line 83 "btyacc_demo.y"
900 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
901 msg,
902 (*loc).first_line, (*loc).first_column,
903 (*loc).last_line, (*loc).last_column);
904 /* in this example, we don't know what to do here */ }
905 break;
906 #line 905 "btyacc_demo.tab.c"
907 case 125:
908 #line 83 "btyacc_demo.y"
909 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
910 msg,
911 (*loc).first_line, (*loc).first_column,
912 (*loc).last_line, (*loc).last_column);
913 /* in this example, we don't know what to do here */ }
914 break;
915 #line 914 "btyacc_demo.tab.c"
916 case 270:
917 #line 83 "btyacc_demo.y"
918 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
919 msg,
920 (*loc).first_line, (*loc).first_column,
921 (*loc).last_line, (*loc).last_column);
922 /* in this example, we don't know what to do here */ }
923 break;
924 #line 923 "btyacc_demo.tab.c"
925 case 271:
926 #line 83 "btyacc_demo.y"
927 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
928 msg,
929 (*loc).first_line, (*loc).first_column,
930 (*loc).last_line, (*loc).last_column);
931 /* in this example, we don't know what to do here */ }
932 break;
933 #line 932 "btyacc_demo.tab.c"
934 case 272:
935 #line 78 "btyacc_demo.y"
936 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
937 msg,
938 (*loc).first_line, (*loc).first_column,
939 (*loc).last_line, (*loc).last_column);
940 free((*val).expr); }
941 break;
942 #line 941 "btyacc_demo.tab.c"
943 case 273:
944 #line 67 "btyacc_demo.y"
945 { /* 'msg' is a 'char *' indicating the context of destructor invocation*/
946 printf("%s accessed by symbol \"decl\" (case s.b. 273) @ position[%d,%d..%d,%d]\n",
947 msg,
948 (*loc).first_line, (*loc).first_column,
949 (*loc).last_line, (*loc).last_column);
950 free((*val).decl->scope); free((*val).decl->type); }
951 break;
952 #line 951 "btyacc_demo.tab.c"
953 case 274:
954 #line 83 "btyacc_demo.y"
955 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
956 msg,
957 (*loc).first_line, (*loc).first_column,
958 (*loc).last_line, (*loc).last_column);
959 /* in this example, we don't know what to do here */ }
960 break;
961 #line 960 "btyacc_demo.tab.c"
962 case 275:
963 #line 83 "btyacc_demo.y"
964 { printf("%s accessed by symbol with no type @ position[%d,%d..%d,%d]\n",
965 msg,
966 (*loc).first_line, (*loc).first_column,
967 (*loc).last_line, (*loc).last_column);
968 /* in this example, we don't know what to do here */ }
969 break;
970 #line 969 "btyacc_demo.tab.c"
971 case 276:
972 #line 78 "btyacc_demo.y"
973 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
974 msg,
975 (*loc).first_line, (*loc).first_column,
976 (*loc).last_line, (*loc).last_column);
977 free((*val).code); }
978 break;
979 #line 978 "btyacc_demo.tab.c"
980 case 277:
981 #line 78 "btyacc_demo.y"
982 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
983 msg,
984 (*loc).first_line, (*loc).first_column,
985 (*loc).last_line, (*loc).last_column);
986 free((*val).code); }
987 break;
988 #line 987 "btyacc_demo.tab.c"
989 case 278:
990 #line 78 "btyacc_demo.y"
991 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
992 msg,
993 (*loc).first_line, (*loc).first_column,
994 (*loc).last_line, (*loc).last_column);
995 free((*val).code); }
996 break;
997 #line 996 "btyacc_demo.tab.c"
998 case 279:
999 #line 73 "btyacc_demo.y"
1000 { printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n",
1001 msg,
1002 (*loc).first_line, (*loc).first_column,
1003 (*loc).last_line, (*loc).last_column);
1004 free((*val).decl); }
1005 break;
1006 #line 1005 "btyacc_demo.tab.c"
1007 case 280:
1008 #line 73 "btyacc_demo.y"
1009 { printf("%s accessed by symbol with type <decl> (case s.b. 279 & 280) @ position[%d,%d..%d,%d]\n",
1010 msg,
1011 (*loc).first_line, (*loc).first_column,
1012 (*loc).last_line, (*loc).last_column);
1013 free((*val).decl); }
1014 break;
1015 #line 1014 "btyacc_demo.tab.c"
1016 case 281:
1017 #line 78 "btyacc_demo.y"
1018 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1019 msg,
1020 (*loc).first_line, (*loc).first_column,
1021 (*loc).last_line, (*loc).last_column);
1022 free((*val).type); }
1023 break;
1024 #line 1023 "btyacc_demo.tab.c"
1025 case 282:
1026 #line 78 "btyacc_demo.y"
1027 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1028 msg,
1029 (*loc).first_line, (*loc).first_column,
1030 (*loc).last_line, (*loc).last_column);
1031 free((*val).type); }
1032 break;
1033 #line 1032 "btyacc_demo.tab.c"
1034 case 283:
1035 #line 78 "btyacc_demo.y"
1036 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1037 msg,
1038 (*loc).first_line, (*loc).first_column,
1039 (*loc).last_line, (*loc).last_column);
1040 free((*val).type); }
1041 break;
1042 #line 1041 "btyacc_demo.tab.c"
1043 case 284:
1044 #line 78 "btyacc_demo.y"
1045 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1046 msg,
1047 (*loc).first_line, (*loc).first_column,
1048 (*loc).last_line, (*loc).last_column);
1049 free((*val).type); }
1050 break;
1051 #line 1050 "btyacc_demo.tab.c"
1052 case 285:
1053 #line 78 "btyacc_demo.y"
1054 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1055 msg,
1056 (*loc).first_line, (*loc).first_column,
1057 (*loc).last_line, (*loc).last_column);
1058 free((*val).type); }
1059 break;
1060 #line 1059 "btyacc_demo.tab.c"
1061 case 286:
1062 #line 78 "btyacc_demo.y"
1063 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1064 msg,
1065 (*loc).first_line, (*loc).first_column,
1066 (*loc).last_line, (*loc).last_column);
1067 free((*val).scope); }
1068 break;
1069 #line 1068 "btyacc_demo.tab.c"
1070 case 287:
1071 #line 78 "btyacc_demo.y"
1072 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1073 msg,
1074 (*loc).first_line, (*loc).first_column,
1075 (*loc).last_line, (*loc).last_column);
1076 free((*val).dlist); }
1077 break;
1078 #line 1077 "btyacc_demo.tab.c"
1079 case 288:
1080 #line 78 "btyacc_demo.y"
1081 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1082 msg,
1083 (*loc).first_line, (*loc).first_column,
1084 (*loc).last_line, (*loc).last_column);
1085 free((*val).dlist); }
1086 break;
1087 #line 1086 "btyacc_demo.tab.c"
1088 case 289:
1089 #line 78 "btyacc_demo.y"
1090 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1091 msg,
1092 (*loc).first_line, (*loc).first_column,
1093 (*loc).last_line, (*loc).last_column);
1094 free((*val).scope); }
1095 break;
1096 #line 1095 "btyacc_demo.tab.c"
1097 case 290:
1098 #line 78 "btyacc_demo.y"
1099 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1100 msg,
1101 (*loc).first_line, (*loc).first_column,
1102 (*loc).last_line, (*loc).last_column);
1103 free((*val).scope); }
1104 break;
1105 #line 1104 "btyacc_demo.tab.c"
1106 case 291:
1107 #line 78 "btyacc_demo.y"
1108 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1109 msg,
1110 (*loc).first_line, (*loc).first_column,
1111 (*loc).last_line, (*loc).last_column);
1112 free((*val).type); }
1113 break;
1114 #line 1113 "btyacc_demo.tab.c"
1115 case 292:
1116 #line 78 "btyacc_demo.y"
1117 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1118 msg,
1119 (*loc).first_line, (*loc).first_column,
1120 (*loc).last_line, (*loc).last_column);
1121 free((*val).scope); }
1122 break;
1123 #line 1122 "btyacc_demo.tab.c"
1124 case 293:
1125 #line 78 "btyacc_demo.y"
1126 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1127 msg,
1128 (*loc).first_line, (*loc).first_column,
1129 (*loc).last_line, (*loc).last_column);
1130 free((*val).scope); }
1131 break;
1132 #line 1131 "btyacc_demo.tab.c"
1133 case 294:
1134 #line 78 "btyacc_demo.y"
1135 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1136 msg,
1137 (*loc).first_line, (*loc).first_column,
1138 (*loc).last_line, (*loc).last_column);
1139 free((*val).type); }
1140 break;
1141 #line 1140 "btyacc_demo.tab.c"
1142 case 295:
1143 #line 78 "btyacc_demo.y"
1144 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1145 msg,
1146 (*loc).first_line, (*loc).first_column,
1147 (*loc).last_line, (*loc).last_column);
1148 free((*val).scope); }
1149 break;
1150 #line 1149 "btyacc_demo.tab.c"
1151 case 296:
1152 #line 78 "btyacc_demo.y"
1153 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1154 msg,
1155 (*loc).first_line, (*loc).first_column,
1156 (*loc).last_line, (*loc).last_column);
1157 free((*val).type); }
1158 break;
1159 #line 1158 "btyacc_demo.tab.c"
1160 case 297:
1161 #line 78 "btyacc_demo.y"
1162 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1163 msg,
1164 (*loc).first_line, (*loc).first_column,
1165 (*loc).last_line, (*loc).last_column);
1166 free((*val).scope); }
1167 break;
1168 #line 1167 "btyacc_demo.tab.c"
1169 case 298:
1170 #line 78 "btyacc_demo.y"
1171 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1172 msg,
1173 (*loc).first_line, (*loc).first_column,
1174 (*loc).last_line, (*loc).last_column);
1175 free((*val).scope); }
1176 break;
1177 #line 1176 "btyacc_demo.tab.c"
1178 case 299:
1179 #line 78 "btyacc_demo.y"
1180 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1181 msg,
1182 (*loc).first_line, (*loc).first_column,
1183 (*loc).last_line, (*loc).last_column);
1184 free((*val).scope); }
1185 break;
1186 #line 1185 "btyacc_demo.tab.c"
1187 case 300:
1188 #line 78 "btyacc_demo.y"
1189 { printf("%s accessed by symbol of any type other than <decl> @ position[%d,%d..%d,%d]\n",
1190 msg,
1191 (*loc).first_line, (*loc).first_column,
1192 (*loc).last_line, (*loc).last_column);
1193 free((*val).scope); }
1194 break;
1195 #line 1194 "btyacc_demo.tab.c"
1196 }
1197 }
1198 #define YYDESTRUCT_IS_DECLARED 1
1199 #endif
1200
1201 /* For use in generated program */
1202 #define yydepth (int)(yystack.s_mark - yystack.s_base)
1203 #if YYBTYACC
1204 #define yytrial (yyps->save)
1205 #endif /* YYBTYACC */
1206
1207 #if YYDEBUG
1208 #include <stdio.h> /* needed for printf */
1209 #endif
1210
1211 #include <stdlib.h> /* needed for malloc, etc */
1212 #include <string.h> /* needed for memset */
1213
1214 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
1215 static int yygrowstack(YYSTACKDATA *data)
1216 {
1217 int i;
1218 unsigned newsize;
1219 short *newss;
1220 YYSTYPE *newvs;
1221 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1222 YYLTYPE *newps;
1223 #endif
1224
1225 if ((newsize = data->stacksize) == 0)
1226 newsize = YYINITSTACKSIZE;
1227 else if (newsize >= YYMAXDEPTH)
1228 return YYENOMEM;
1229 else if ((newsize *= 2) > YYMAXDEPTH)
1230 newsize = YYMAXDEPTH;
1231
1232 i = (int) (data->s_mark - data->s_base);
1233 newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
1234 if (newss == 0)
1235 return YYENOMEM;
1236
1237 data->s_base = newss;
1238 data->s_mark = newss + i;
1239
1240 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1241 if (newvs == 0)
1242 return YYENOMEM;
1243
1244 data->l_base = newvs;
1245 data->l_mark = newvs + i;
1246
1247 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1248 newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
1249 if (newps == 0)
1250 return YYENOMEM;
1251
1252 data->p_base = newps;
1253 data->p_mark = newps + i;
1254 #endif
1255
1256 data->stacksize = newsize;
1257 data->s_last = data->s_base + newsize - 1;
1258
1259 #if YYDEBUG
1260 if (yydebug)
1261 fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
1262 #endif
1263 return 0;
1264 }
1265
1266 #if YYPURE || defined(YY_NO_LEAKS)
1267 static void yyfreestack(YYSTACKDATA *data)
1268 {
1269 free(data->s_base);
1270 free(data->l_base);
1271 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1272 free(data->p_base);
1273 #endif
1274 memset(data, 0, sizeof(*data));
1275 }
1276 #else
1277 #define yyfreestack(data) /* nothing */
1278 #endif /* YYPURE || defined(YY_NO_LEAKS) */
1279 #if YYBTYACC
1280
1281 static YYParseState *
1282 yyNewState(unsigned size)
1283 {
1284 YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
1285 if (p == NULL) return NULL;
1286
1287 p->yystack.stacksize = size;
1288 if (size == 0)
1289 {
1290 p->yystack.s_base = NULL;
1291 p->yystack.l_base = NULL;
1292 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1293 p->yystack.p_base = NULL;
1294 #endif
1295 return p;
1296 }
1297 p->yystack.s_base = (short *) malloc(size * sizeof(short));
1298 if (p->yystack.s_base == NULL) return NULL;
1299 p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
1300 if (p->yystack.l_base == NULL) return NULL;
1301 memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
1302 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1303 p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
1304 if (p->yystack.p_base == NULL) return NULL;
1305 memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
1306 #endif
1307
1308 return p;
1309 }
1310
1311 static void
1312 yyFreeState(YYParseState *p)
1313 {
1314 yyfreestack(&p->yystack);
1315 free(p);
1316 }
1317 #endif /* YYBTYACC */
1318
1319 #define YYABORT goto yyabort
1320 #define YYREJECT goto yyabort
1321 #define YYACCEPT goto yyaccept
1322 #define YYERROR goto yyerrlab
1323 #if YYBTYACC
1324 #define YYVALID do { if (yyps->save) goto yyvalid; } while(0)
1325 #define YYVALID_NESTED do { if (yyps->save && \
1326 yyps->save->save == 0) goto yyvalid; } while(0)
1327 #endif /* YYBTYACC */
1328
1329 int
1330 YYPARSE_DECL()
1331 {
1332 int yym, yyn, yystate, yyresult;
1333 #if YYBTYACC
1334 int yynewerrflag;
1335 YYParseState *yyerrctx = NULL;
1336 #endif /* YYBTYACC */
1337 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1338 YYLTYPE yyerror_loc_range[2]; /* position of error start & end */
1339 #endif
1340 #if YYDEBUG
1341 const char *yys;
1342
1343 if ((yys = getenv("YYDEBUG")) != 0)
1344 {
1345 yyn = *yys;
1346 if (yyn >= '0' && yyn <= '9')
1347 yydebug = yyn - '0';
1348 }
1349 if (yydebug)
1350 fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
1351 #endif
1352
1353 #if YYBTYACC
1354 yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
1355 yyps->save = 0;
1356 #endif /* YYBTYACC */
1357 yynerrs = 0;
1358 yyerrflag = 0;
1359 yychar = YYEMPTY;
1360 yystate = 0;
1361
1362 #if YYPURE
1363 memset(&yystack, 0, sizeof(yystack));
1364 #endif
1365
1366 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1367 yystack.s_mark = yystack.s_base;
1368 yystack.l_mark = yystack.l_base;
1369 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1370 yystack.p_mark = yystack.p_base;
1371 #endif
1372 yystate = 0;
1373 *yystack.s_mark = 0;
1374
1375 yyloop:
1376 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1377 if (yychar < 0)
1378 {
1379 #if YYBTYACC
1380 do {
1381 if (yylvp < yylve)
1382 {
1383 /* we're currently re-reading tokens */
1384 yylval = *yylvp++;
1385 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1386 yylloc = *yylpp++;
1387 #endif
1388 yychar = *yylexp++;
1389 break;
1390 }
1391 if (yyps->save)
1392 {
1393 /* in trial mode; save scanner results for future parse attempts */
1394 if (yylvp == yylvlim)
1395 { /* Enlarge lexical value queue */
1396 size_t p = (size_t) (yylvp - yylvals);
1397 size_t s = (size_t) (yylvlim - yylvals);
1398
1399 s += YYLVQUEUEGROWTH;
1400 if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
1401 if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
1402 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1403 if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
1404 #endif
1405 yylvp = yylve = yylvals + p;
1406 yylvlim = yylvals + s;
1407 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1408 yylpp = yylpe = yylpsns + p;
1409 yylplim = yylpsns + s;
1410 #endif
1411 yylexp = yylexemes + p;
1412 }
1413 *yylexp = (short) YYLEX;
1414 *yylvp++ = yylval;
1415 yylve++;
1416 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1417 *yylpp++ = yylloc;
1418 yylpe++;
1419 #endif
1420 yychar = *yylexp++;
1421 break;
1422 }
1423 /* normal operation, no conflict encountered */
1424 #endif /* YYBTYACC */
1425 yychar = YYLEX;
1426 #if YYBTYACC
1427 } while (0);
1428 #endif /* YYBTYACC */
1429 if (yychar < 0) yychar = YYEOF;
1430 /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1431 #if YYDEBUG
1432 if (yydebug)
1433 {
1434 yys = yyname[YYTRANSLATE(yychar)];
1435 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
1436 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1437 #ifdef YYSTYPE_TOSTRING
1438 #if YYBTYACC
1439 if (!yytrial)
1440 #endif /* YYBTYACC */
1441 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
1442 #endif
1443 fputc('\n', stderr);
1444 }
1445 #endif
1446 }
1447 #if YYBTYACC
1448
1449 /* Do we have a conflict? */
1450 if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1451 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1452 {
1453 YYINT ctry;
1454
1455 if (yypath)
1456 {
1457 YYParseState *save;
1458 #if YYDEBUG
1459 if (yydebug)
1460 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
1461 YYDEBUGSTR, yydepth, yystate);
1462 #endif
1463 /* Switch to the next conflict context */
1464 save = yypath;
1465 yypath = save->save;
1466 save->save = NULL;
1467 ctry = save->ctry;
1468 if (save->state != yystate) YYABORT;
1469 yyFreeState(save);
1470
1471 }
1472 else
1473 {
1474
1475 /* Unresolved conflict - start/continue trial parse */
1476 YYParseState *save;
1477 #if YYDEBUG
1478 if (yydebug)
1479 {
1480 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
1481 if (yyps->save)
1482 fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
1483 else
1484 fputs("Starting trial parse.\n", stderr);
1485 }
1486 #endif
1487 save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1488 if (save == NULL) goto yyenomem;
1489 save->save = yyps->save;
1490 save->state = yystate;
1491 save->errflag = yyerrflag;
1492 save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
1493 memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1494 save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
1495 memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1496 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1497 save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
1498 memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1499 #endif
1500 ctry = yytable[yyn];
1501 if (yyctable[ctry] == -1)
1502 {
1503 #if YYDEBUG
1504 if (yydebug && yychar >= YYEOF)
1505 fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
1506 #endif
1507 ctry++;
1508 }
1509 save->ctry = ctry;
1510 if (yyps->save == NULL)
1511 {
1512 /* If this is a first conflict in the stack, start saving lexemes */
1513 if (!yylexemes)
1514 {
1515 yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
1516 if (yylexemes == NULL) goto yyenomem;
1517 yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
1518 if (yylvals == NULL) goto yyenomem;
1519 yylvlim = yylvals + YYLVQUEUEGROWTH;
1520 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1521 yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
1522 if (yylpsns == NULL) goto yyenomem;
1523 yylplim = yylpsns + YYLVQUEUEGROWTH;
1524 #endif
1525 }
1526 if (yylvp == yylve)
1527 {
1528 yylvp = yylve = yylvals;
1529 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1530 yylpp = yylpe = yylpsns;
1531 #endif
1532 yylexp = yylexemes;
1533 if (yychar >= YYEOF)
1534 {
1535 *yylve++ = yylval;
1536 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1537 *yylpe++ = yylloc;
1538 #endif
1539 *yylexp = (short) yychar;
1540 yychar = YYEMPTY;
1541 }
1542 }
1543 }
1544 if (yychar >= YYEOF)
1545 {
1546 yylvp--;
1547 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1548 yylpp--;
1549 #endif
1550 yylexp--;
1551 yychar = YYEMPTY;
1552 }
1553 save->lexeme = (int) (yylvp - yylvals);
1554 yyps->save = save;
1555 }
1556 if (yytable[yyn] == ctry)
1557 {
1558 #if YYDEBUG
1559 if (yydebug)
1560 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1561 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1562 #endif
1563 if (yychar < 0)
1564 {
1565 yylvp++;
1566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1567 yylpp++;
1568 #endif
1569 yylexp++;
1570 }
1571 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1572 goto yyoverflow;
1573 yystate = yyctable[ctry];
1574 *++yystack.s_mark = (short) yystate;
1575 *++yystack.l_mark = yylval;
1576 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1577 *++yystack.p_mark = yylloc;
1578 #endif
1579 yychar = YYEMPTY;
1580 if (yyerrflag > 0) --yyerrflag;
1581 goto yyloop;
1582 }
1583 else
1584 {
1585 yyn = yyctable[ctry];
1586 goto yyreduce;
1587 }
1588 } /* End of code dealing with conflicts */
1589 #endif /* YYBTYACC */
1590 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1591 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1592 {
1593 #if YYDEBUG
1594 if (yydebug)
1595 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1596 YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1597 #endif
1598 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1599 yystate = yytable[yyn];
1600 *++yystack.s_mark = yytable[yyn];
1601 *++yystack.l_mark = yylval;
1602 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1603 *++yystack.p_mark = yylloc;
1604 #endif
1605 yychar = YYEMPTY;
1606 if (yyerrflag > 0) --yyerrflag;
1607 goto yyloop;
1608 }
1609 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1610 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1611 {
1612 yyn = yytable[yyn];
1613 goto yyreduce;
1614 }
1615 if (yyerrflag != 0) goto yyinrecovery;
1616 #if YYBTYACC
1617
1618 yynewerrflag = 1;
1619 goto yyerrhandler;
1620 goto yyerrlab;
1621
1622 yyerrlab:
1623 yynewerrflag = 0;
1624 yyerrhandler:
1625 while (yyps->save)
1626 {
1627 int ctry;
1628 YYParseState *save = yyps->save;
1629 #if YYDEBUG
1630 if (yydebug)
1631 fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1632 YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1633 (int)(yylvp - yylvals - yyps->save->lexeme));
1634 #endif
1635 /* Memorize most forward-looking error state in case it's really an error. */
1636 if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1637 {
1638 /* Free old saved error context state */
1639 if (yyerrctx) yyFreeState(yyerrctx);
1640 /* Create and fill out new saved error context state */
1641 yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1642 if (yyerrctx == NULL) goto yyenomem;
1643 yyerrctx->save = yyps->save;
1644 yyerrctx->state = yystate;
1645 yyerrctx->errflag = yyerrflag;
1646 yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1647 memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1648 yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1649 memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1650 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1651 yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1652 memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1653 #endif
1654 yyerrctx->lexeme = (int) (yylvp - yylvals);
1655 }
1656 yylvp = yylvals + save->lexeme;
1657 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1658 yylpp = yylpsns + save->lexeme;
1659 #endif
1660 yylexp = yylexemes + save->lexeme;
1661 yychar = YYEMPTY;
1662 yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1663 memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1664 yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1665 memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1666 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1667 yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1668 memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1669 #endif
1670 ctry = ++save->ctry;
1671 yystate = save->state;
1672 /* We tried shift, try reduce now */
1673 if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1674 yyps->save = save->save;
1675 save->save = NULL;
1676 yyFreeState(save);
1677
1678 /* Nothing left on the stack -- error */
1679 if (!yyps->save)
1680 {
1681 #if YYDEBUG
1682 if (yydebug)
1683 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1684 YYPREFIX, yydepth);
1685 #endif
1686 /* Restore state as it was in the most forward-advanced error */
1687 yylvp = yylvals + yyerrctx->lexeme;
1688 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1689 yylpp = yylpsns + yyerrctx->lexeme;
1690 #endif
1691 yylexp = yylexemes + yyerrctx->lexeme;
1692 yychar = yylexp[-1];
1693 yylval = yylvp[-1];
1694 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1695 yylloc = yylpp[-1];
1696 #endif
1697 yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1698 memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1699 yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1700 memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1701 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1702 yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1703 memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1704 #endif
1705 yystate = yyerrctx->state;
1706 yyFreeState(yyerrctx);
1707 yyerrctx = NULL;
1708 }
1709 yynewerrflag = 1;
1710 }
1711 if (yynewerrflag == 0) goto yyinrecovery;
1712 #endif /* YYBTYACC */
1713
1714 YYERROR_CALL("syntax error");
1715 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1716 yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1717 #endif
1718
1719 #if !YYBTYACC
1720 goto yyerrlab;
1721 yyerrlab:
1722 #endif
1723 ++yynerrs;
1724
1725 yyinrecovery:
1726 if (yyerrflag < 3)
1727 {
1728 yyerrflag = 3;
1729 for (;;)
1730 {
1731 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1732 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1733 {
1734 #if YYDEBUG
1735 if (yydebug)
1736 fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1737 YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1738 #endif
1739 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1740 yystate = yytable[yyn];
1741 *++yystack.s_mark = yytable[yyn];
1742 *++yystack.l_mark = yylval;
1743 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1744 /* lookahead position is error end position */
1745 yyerror_loc_range[1] = yylloc;
1746 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1747 *++yystack.p_mark = yyloc;
1748 #endif
1749 goto yyloop;
1750 }
1751 else
1752 {
1753 #if YYDEBUG
1754 if (yydebug)
1755 fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1756 YYDEBUGSTR, yydepth, *yystack.s_mark);
1757 #endif
1758 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1759 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1760 /* the current TOS position is the error start position */
1761 yyerror_loc_range[0] = *yystack.p_mark;
1762 #endif
1763 #if defined(YYDESTRUCT_CALL)
1764 #if YYBTYACC
1765 if (!yytrial)
1766 #endif /* YYBTYACC */
1767 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1768 YYDESTRUCT_CALL("error: discarding state",
1769 yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1770 #else
1771 YYDESTRUCT_CALL("error: discarding state",
1772 yystos[*yystack.s_mark], yystack.l_mark);
1773 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1774 #endif /* defined(YYDESTRUCT_CALL) */
1775 --yystack.s_mark;
1776 --yystack.l_mark;
1777 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1778 --yystack.p_mark;
1779 #endif
1780 }
1781 }
1782 }
1783 else
1784 {
1785 if (yychar == YYEOF) goto yyabort;
1786 #if YYDEBUG
1787 if (yydebug)
1788 {
1789 yys = yyname[YYTRANSLATE(yychar)];
1790 fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1791 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1792 }
1793 #endif
1794 #if defined(YYDESTRUCT_CALL)
1795 #if YYBTYACC
1796 if (!yytrial)
1797 #endif /* YYBTYACC */
1798 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1799 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1800 #else
1801 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1802 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1803 #endif /* defined(YYDESTRUCT_CALL) */
1804 yychar = YYEMPTY;
1805 goto yyloop;
1806 }
1807
1808 yyreduce:
1809 yym = yylen[yyn];
1810 #if YYDEBUG
1811 if (yydebug)
1812 {
1813 fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1814 YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1815 #ifdef YYSTYPE_TOSTRING
1816 #if YYBTYACC
1817 if (!yytrial)
1818 #endif /* YYBTYACC */
1819 if (yym > 0)
1820 {
1821 int i;
1822 fputc('<', stderr);
1823 for (i = yym; i > 0; i--)
1824 {
1825 if (i != yym) fputs(", ", stderr);
1826 fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1827 yystack.l_mark[1-i]), stderr);
1828 }
1829 fputc('>', stderr);
1830 }
1831 #endif
1832 fputc('\n', stderr);
1833 }
1834 #endif
1835 if (yym > 0)
1836 yyval = yystack.l_mark[1-yym];
1837 else
1838 memset(&yyval, 0, sizeof yyval);
1839 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1840
1841 /* Perform position reduction */
1842 memset(&yyloc, 0, sizeof(yyloc));
1843 #if YYBTYACC
1844 if (!yytrial)
1845 #endif /* YYBTYACC */
1846 {
1847 YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1848 /* just in case YYERROR is invoked within the action, save
1849 the start of the rhs as the error start position */
1850 yyerror_loc_range[0] = yystack.p_mark[1-yym];
1851 }
1852 #endif
1853
1854 switch (yyn)
1855 {
1856 case 1:
1857 #line 93 "btyacc_demo.y"
1858 { yyval.scope = yystack.l_mark[0].scope; }
1859 break;
1860 case 2:
1861 #line 94 "btyacc_demo.y"
1862 { yyval.scope = global_scope; }
1863 break;
1864 case 3:
1865 #line 95 "btyacc_demo.y"
1866 { Decl *d = lookup(yystack.l_mark[-2].scope, yystack.l_mark[-1].id);
1867 if (!d || !d->scope) YYERROR;
1868 yyval.scope = d->scope; }
1869 break;
1870 case 4:
1871 #line 101 "btyacc_demo.y"
1872 { Decl *d = lookup(yystack.l_mark[-1].scope, yystack.l_mark[0].id);
1873 if (d == NULL || d->istype() == 0) YYERROR;
1874 yyval.type = d->type; }
1875 break;
1876 case 5:
1877 #line 106 "btyacc_demo.y"
1878 yyval.scope = global_scope = new_scope(0);
1879 break;
1880 case 8:
1881 #line 107 "btyacc_demo.y"
1882 yyval.scope = yystack.l_mark[-1].scope;
1883 break;
1884 case 10:
1885 #line 109 "btyacc_demo.y"
1886 yyval.type = yystack.l_mark[-1].type;
1887 break;
1888 case 11:
1889 #line 109 "btyacc_demo.y"
1890 {YYVALID;}
1891 break;
1892 case 12:
1893 #line 110 "btyacc_demo.y"
1894 yyval.scope = start_fn_def(yystack.l_mark[-4].scope, yystack.l_mark[0].decl);
1895 break;
1896 case 13:
1897 if (!yytrial)
1898 #line 111 "btyacc_demo.y"
1899 { /* demonstrate use of @$ & @N, although this is just the
1900 default computation and so is not necessary */
1901 yyloc.first_line = yystack.p_mark[-5].first_line;
1902 yyloc.first_column = yystack.p_mark[-5].first_column;
1903 yyloc.last_line = yystack.p_mark[0].last_line;
1904 yyloc.last_column = yystack.p_mark[0].last_column;
1905 finish_fn_def(yystack.l_mark[-2].decl, yystack.l_mark[0].code); }
1906 break;
1907 case 14:
1908 #line 121 "btyacc_demo.y"
1909 { yyval.type = yystack.l_mark[0].type; }
1910 break;
1911 case 15:
1912 #line 122 "btyacc_demo.y"
1913 { yyval.type = type_combine(yystack.l_mark[-2].type, yystack.l_mark[0].type); }
1914 break;
1915 case 16:
1916 #line 125 "btyacc_demo.y"
1917 { yyval.type = 0; }
1918 break;
1919 case 17:
1920 #line 126 "btyacc_demo.y"
1921 { yyval.type = type_combine(yystack.l_mark[-1].type, yystack.l_mark[0].type); }
1922 break;
1923 case 18:
1924 #line 130 "btyacc_demo.y"
1925 { yyval.type = yystack.l_mark[0].type; }
1926 break;
1927 case 19:
1928 #line 131 "btyacc_demo.y"
1929 { yyval.type = yystack.l_mark[0].type; }
1930 break;
1931 case 20:
1932 #line 132 "btyacc_demo.y"
1933 { yyval.type = bare_extern(); }
1934 break;
1935 case 21:
1936 #line 133 "btyacc_demo.y"
1937 { yyval.type = bare_register(); }
1938 break;
1939 case 22:
1940 #line 134 "btyacc_demo.y"
1941 { yyval.type = bare_static(); }
1942 break;
1943 case 23:
1944 #line 138 "btyacc_demo.y"
1945 { yyval.type = bare_const(); }
1946 break;
1947 case 24:
1948 #line 139 "btyacc_demo.y"
1949 { yyval.type = bare_volatile(); }
1950 break;
1951 case 25:
1952 #line 143 "btyacc_demo.y"
1953 yyval.scope = yystack.l_mark[-3].scope;
1954 break;
1955 case 26:
1956 #line 143 "btyacc_demo.y"
1957 yyval.type = yystack.l_mark[-3].type;
1958 break;
1959 case 29:
1960 #line 148 "btyacc_demo.y"
1961 { if (!yystack.l_mark[0].type) YYERROR; } if (!yytrial)
1962 #line 149 "btyacc_demo.y"
1963 { yyval.decl = declare(yystack.l_mark[-1].scope, 0, yystack.l_mark[0].type); }
1964 break;
1965 case 30:
1966 if (!yytrial)
1967 #line 150 "btyacc_demo.y"
1968 { yyval.decl = declare(yystack.l_mark[-2].scope, yystack.l_mark[0].id, yystack.l_mark[-1].type); }
1969 break;
1970 case 31:
1971 #line 151 "btyacc_demo.y"
1972 yyval.scope = yystack.l_mark[-2].scope;
1973 break;
1974 case 32:
1975 #line 151 "btyacc_demo.y"
1976 yyval.type = yystack.l_mark[-2].type;
1977 break;
1978 case 33:
1979 if (!yytrial)
1980 #line 151 "btyacc_demo.y"
1981 { yyval.decl = yystack.l_mark[-1].decl; }
1982 break;
1983 case 34:
1984 if (!yytrial)
1985 #line 153 "btyacc_demo.y"
1986 { yyval.decl = make_pointer(yystack.l_mark[0].decl, yystack.l_mark[-3].type); }
1987 break;
1988 case 35:
1989 if (!yytrial)
1990 #line 155 "btyacc_demo.y"
1991 { yyval.decl = make_array(yystack.l_mark[-4].decl->type, yystack.l_mark[-1].expr); }
1992 break;
1993 case 36:
1994 if (!yytrial)
1995 #line 157 "btyacc_demo.y"
1996 { yyval.decl = build_function(yystack.l_mark[-5].decl, yystack.l_mark[-2].dlist, yystack.l_mark[0].type); }
1997 break;
1998 case 37:
1999 if (!yytrial)
2000 #line 160 "btyacc_demo.y"
2001 { yyval.dlist = 0; }
2002 break;
2003 case 38:
2004 if (!yytrial)
2005 #line 161 "btyacc_demo.y"
2006 { yyval.dlist = yystack.l_mark[0].dlist; }
2007 break;
2008 case 39:
2009 if (!yytrial)
2010 #line 164 "btyacc_demo.y"
2011 { yyval.dlist = append_dlist(yystack.l_mark[-3].dlist, yystack.l_mark[0].decl); }
2012 break;
2013 case 40:
2014 if (!yytrial)
2015 #line 165 "btyacc_demo.y"
2016 { yyval.dlist = build_dlist(yystack.l_mark[0].decl); }
2017 break;
2018 case 41:
2019 if (!yytrial)
2020 #line 168 "btyacc_demo.y"
2021 { yyval.decl = yystack.l_mark[0].decl; }
2022 break;
2023 case 42:
2024 if (!yytrial)
2025 #line 172 "btyacc_demo.y"
2026 { yyval.expr = build_expr(yystack.l_mark[-3].expr, ADD, yystack.l_mark[0].expr); }
2027 break;
2028 case 43:
2029 if (!yytrial)
2030 #line 173 "btyacc_demo.y"
2031 { yyval.expr = build_expr(yystack.l_mark[-3].expr, SUB, yystack.l_mark[0].expr); }
2032 break;
2033 case 44:
2034 if (!yytrial)
2035 #line 174 "btyacc_demo.y"
2036 { yyval.expr = build_expr(yystack.l_mark[-3].expr, MUL, yystack.l_mark[0].expr); }
2037 break;
2038 case 45:
2039 if (!yytrial)
2040 #line 175 "btyacc_demo.y"
2041 { yyval.expr = build_expr(yystack.l_mark[-3].expr, MOD, yystack.l_mark[0].expr); }
2042 break;
2043 case 46:
2044 if (!yytrial)
2045 #line 176 "btyacc_demo.y"
2046 { yyval.expr = build_expr(yystack.l_mark[-3].expr, DIV, yystack.l_mark[0].expr); }
2047 break;
2048 case 47:
2049 if (!yytrial)
2050 #line 177 "btyacc_demo.y"
2051 { yyval.expr = build_expr(0, DEREF, yystack.l_mark[0].expr); }
2052 break;
2053 case 48:
2054 if (!yytrial)
2055 #line 178 "btyacc_demo.y"
2056 { yyval.expr = var_expr(yystack.l_mark[-1].scope, yystack.l_mark[0].id); }
2057 break;
2058 case 49:
2059 if (!yytrial)
2060 #line 179 "btyacc_demo.y"
2061 { yyval.expr = yystack.l_mark[0].expr; }
2062 break;
2063 case 50:
2064 if (!yytrial)
2065 #line 183 "btyacc_demo.y"
2066 { yyval.code = 0; }
2067 break;
2068 case 51:
2069 #line 184 "btyacc_demo.y"
2070 yyval.scope = yystack.l_mark[0].scope;
2071 break;
2072 case 52:
2073 #line 184 "btyacc_demo.y"
2074 {YYVALID;} if (!yytrial)
2075 #line 184 "btyacc_demo.y"
2076 { yyval.code = build_expr_code(yystack.l_mark[-1].expr); }
2077 break;
2078 case 53:
2079 #line 185 "btyacc_demo.y"
2080 yyval.scope = yystack.l_mark[-6].scope;
2081 break;
2082 case 54:
2083 #line 185 "btyacc_demo.y"
2084 yyval.scope = yystack.l_mark[-9].scope;
2085 break;
2086 case 55:
2087 #line 185 "btyacc_demo.y"
2088 {YYVALID;} if (!yytrial)
2089 #line 186 "btyacc_demo.y"
2090 { yyval.code = build_if(yystack.l_mark[-7].expr, yystack.l_mark[-3].code, yystack.l_mark[0].code); }
2091 break;
2092 case 56:
2093 #line 187 "btyacc_demo.y"
2094 {YYVALID;} if (!yytrial)
2095 #line 188 "btyacc_demo.y"
2096 { yyval.code = build_if(yystack.l_mark[-4].expr, yystack.l_mark[0].code, 0); }
2097 break;
2098 case 57:
2099 #line 189 "btyacc_demo.y"
2100 yyval.scope = new_scope(yystack.l_mark[0].scope);
2101 break;
2102 case 58:
2103 #line 189 "btyacc_demo.y"
2104 {YYVALID;} if (!yytrial)
2105 #line 189 "btyacc_demo.y"
2106 { yyval.code = yystack.l_mark[0].code; }
2107 break;
2108 case 59:
2109 if (!yytrial)
2110 #line 192 "btyacc_demo.y"
2111 { yyval.code = 0; }
2112 break;
2113 case 60:
2114 if (!yytrial)
2115 #line 193 "btyacc_demo.y"
2116 { yyval.code = code_append(yystack.l_mark[-2].code, yystack.l_mark[0].code); }
2117 break;
2118 case 61:
2119 if (!yytrial)
2120 #line 197 "btyacc_demo.y"
2121 { yyval.code = yystack.l_mark[-1].code; }
2122 break;
2123 #line 2122 "btyacc_demo.tab.c"
2124 default:
2125 break;
2126 }
2127 yystack.s_mark -= yym;
2128 yystate = *yystack.s_mark;
2129 yystack.l_mark -= yym;
2130 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2131 yystack.p_mark -= yym;
2132 #endif
2133 yym = yylhs[yyn];
2134 if (yystate == 0 && yym == 0)
2135 {
2136 #if YYDEBUG
2137 if (yydebug)
2138 {
2139 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2140 #ifdef YYSTYPE_TOSTRING
2141 #if YYBTYACC
2142 if (!yytrial)
2143 #endif /* YYBTYACC */
2144 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
2145 #endif
2146 fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
2147 }
2148 #endif
2149 yystate = YYFINAL;
2150 *++yystack.s_mark = YYFINAL;
2151 *++yystack.l_mark = yyval;
2152 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2153 *++yystack.p_mark = yyloc;
2154 #endif
2155 if (yychar < 0)
2156 {
2157 #if YYBTYACC
2158 do {
2159 if (yylvp < yylve)
2160 {
2161 /* we're currently re-reading tokens */
2162 yylval = *yylvp++;
2163 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2164 yylloc = *yylpp++;
2165 #endif
2166 yychar = *yylexp++;
2167 break;
2168 }
2169 if (yyps->save)
2170 {
2171 /* in trial mode; save scanner results for future parse attempts */
2172 if (yylvp == yylvlim)
2173 { /* Enlarge lexical value queue */
2174 size_t p = (size_t) (yylvp - yylvals);
2175 size_t s = (size_t) (yylvlim - yylvals);
2176
2177 s += YYLVQUEUEGROWTH;
2178 if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL)
2179 goto yyenomem;
2180 if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
2181 goto yyenomem;
2182 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2183 if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
2184 goto yyenomem;
2185 #endif
2186 yylvp = yylve = yylvals + p;
2187 yylvlim = yylvals + s;
2188 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2189 yylpp = yylpe = yylpsns + p;
2190 yylplim = yylpsns + s;
2191 #endif
2192 yylexp = yylexemes + p;
2193 }
2194 *yylexp = (short) YYLEX;
2195 *yylvp++ = yylval;
2196 yylve++;
2197 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2198 *yylpp++ = yylloc;
2199 yylpe++;
2200 #endif
2201 yychar = *yylexp++;
2202 break;
2203 }
2204 /* normal operation, no conflict encountered */
2205 #endif /* YYBTYACC */
2206 yychar = YYLEX;
2207 #if YYBTYACC
2208 } while (0);
2209 #endif /* YYBTYACC */
2210 if (yychar < 0) yychar = YYEOF;
2211 /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
2212 #if YYDEBUG
2213 if (yydebug)
2214 {
2215 yys = yyname[YYTRANSLATE(yychar)];
2216 fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
2217 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
2218 }
2219 #endif
2220 }
2221 if (yychar == YYEOF) goto yyaccept;
2222 goto yyloop;
2223 }
2224 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
2225 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
2226 yystate = yytable[yyn];
2227 else
2228 yystate = yydgoto[yym];
2229 #if YYDEBUG
2230 if (yydebug)
2231 {
2232 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2233 #ifdef YYSTYPE_TOSTRING
2234 #if YYBTYACC
2235 if (!yytrial)
2236 #endif /* YYBTYACC */
2237 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
2238 #endif
2239 fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
2240 }
2241 #endif
2242 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2243 *++yystack.s_mark = (short) yystate;
2244 *++yystack.l_mark = yyval;
2245 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2246 *++yystack.p_mark = yyloc;
2247 #endif
2248 goto yyloop;
2249 #if YYBTYACC
2250
2251 /* Reduction declares that this path is valid. Set yypath and do a full parse */
2252 yyvalid:
2253 if (yypath) YYABORT;
2254 while (yyps->save)
2255 {
2256 YYParseState *save = yyps->save;
2257 yyps->save = save->save;
2258 save->save = yypath;
2259 yypath = save;
2260 }
2261 #if YYDEBUG
2262 if (yydebug)
2263 fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
2264 YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
2265 #endif
2266 if (yyerrctx)
2267 {
2268 yyFreeState(yyerrctx);
2269 yyerrctx = NULL;
2270 }
2271 yylvp = yylvals + yypath->lexeme;
2272 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2273 yylpp = yylpsns + yypath->lexeme;
2274 #endif
2275 yylexp = yylexemes + yypath->lexeme;
2276 yychar = YYEMPTY;
2277 yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
2278 memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
2279 yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
2280 memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2281 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2282 yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
2283 memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2284 #endif
2285 yystate = yypath->state;
2286 goto yyloop;
2287 #endif /* YYBTYACC */
2288
2289 yyoverflow:
2290 YYERROR_CALL("yacc stack overflow");
2291 #if YYBTYACC
2292 goto yyabort_nomem;
2293 yyenomem:
2294 YYERROR_CALL("memory exhausted");
2295 yyabort_nomem:
2296 #endif /* YYBTYACC */
2297 yyresult = 2;
2298 goto yyreturn;
2299
2300 yyabort:
2301 yyresult = 1;
2302 goto yyreturn;
2303
2304 yyaccept:
2305 #if YYBTYACC
2306 if (yyps->save) goto yyvalid;
2307 #endif /* YYBTYACC */
2308 yyresult = 0;
2309
2310 yyreturn:
2311 #if defined(YYDESTRUCT_CALL)
2312 if (yychar != YYEOF && yychar != YYEMPTY)
2313 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2314 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
2315 #else
2316 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
2317 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2318
2319 {
2320 YYSTYPE *pv;
2321 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2322 YYLTYPE *pp;
2323
2324 for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
2325 YYDESTRUCT_CALL("cleanup: discarding state",
2326 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
2327 #else
2328 for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
2329 YYDESTRUCT_CALL("cleanup: discarding state",
2330 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
2331 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2332 }
2333 #endif /* defined(YYDESTRUCT_CALL) */
2334
2335 #if YYBTYACC
2336 if (yyerrctx)
2337 {
2338 yyFreeState(yyerrctx);
2339 yyerrctx = NULL;
2340 }
2341 while (yyps)
2342 {
2343 YYParseState *save = yyps;
2344 yyps = save->save;
2345 save->save = NULL;
2346 yyFreeState(save);
2347 }
2348 while (yypath)
2349 {
2350 YYParseState *save = yypath;
2351 yypath = save->save;
2352 save->save = NULL;
2353 yyFreeState(save);
2354 }
2355 #endif /* YYBTYACC */
2356 yyfreestack(&yystack);
2357 return (yyresult);
2358 }
2359