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