btyacc_demo.tab.c revision 1.2.4.1 1 /* $NetBSD: btyacc_demo.tab.c,v 1.2.4.1 2017/07/18 18:09:43 snj 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 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1336 memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
1337 #endif
1338
1339 #if YYBTYACC
1340 yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
1341 yyps->save = 0;
1342 #endif /* YYBTYACC */
1343 yym = 0;
1344 yyn = 0;
1345 yynerrs = 0;
1346 yyerrflag = 0;
1347 yychar = YYEMPTY;
1348 yystate = 0;
1349
1350 #if YYPURE
1351 memset(&yystack, 0, sizeof(yystack));
1352 #endif
1353
1354 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1355 yystack.s_mark = yystack.s_base;
1356 yystack.l_mark = yystack.l_base;
1357 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1358 yystack.p_mark = yystack.p_base;
1359 #endif
1360 yystate = 0;
1361 *yystack.s_mark = 0;
1362
1363 yyloop:
1364 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1365 if (yychar < 0)
1366 {
1367 #if YYBTYACC
1368 do {
1369 if (yylvp < yylve)
1370 {
1371 /* we're currently re-reading tokens */
1372 yylval = *yylvp++;
1373 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1374 yylloc = *yylpp++;
1375 #endif
1376 yychar = *yylexp++;
1377 break;
1378 }
1379 if (yyps->save)
1380 {
1381 /* in trial mode; save scanner results for future parse attempts */
1382 if (yylvp == yylvlim)
1383 { /* Enlarge lexical value queue */
1384 size_t p = (size_t) (yylvp - yylvals);
1385 size_t s = (size_t) (yylvlim - yylvals);
1386
1387 s += YYLVQUEUEGROWTH;
1388 if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
1389 if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
1390 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1391 if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
1392 #endif
1393 yylvp = yylve = yylvals + p;
1394 yylvlim = yylvals + s;
1395 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1396 yylpp = yylpe = yylpsns + p;
1397 yylplim = yylpsns + s;
1398 #endif
1399 yylexp = yylexemes + p;
1400 }
1401 *yylexp = (YYINT) YYLEX;
1402 *yylvp++ = yylval;
1403 yylve++;
1404 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1405 *yylpp++ = yylloc;
1406 yylpe++;
1407 #endif
1408 yychar = *yylexp++;
1409 break;
1410 }
1411 /* normal operation, no conflict encountered */
1412 #endif /* YYBTYACC */
1413 yychar = YYLEX;
1414 #if YYBTYACC
1415 } while (0);
1416 #endif /* YYBTYACC */
1417 if (yychar < 0) yychar = YYEOF;
1418 #if YYDEBUG
1419 if (yydebug)
1420 {
1421 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1422 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
1423 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1424 #ifdef YYSTYPE_TOSTRING
1425 #if YYBTYACC
1426 if (!yytrial)
1427 #endif /* YYBTYACC */
1428 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
1429 #endif
1430 fputc('\n', stderr);
1431 }
1432 #endif
1433 }
1434 #if YYBTYACC
1435
1436 /* Do we have a conflict? */
1437 if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1438 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1439 {
1440 YYINT ctry;
1441
1442 if (yypath)
1443 {
1444 YYParseState *save;
1445 #if YYDEBUG
1446 if (yydebug)
1447 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
1448 YYDEBUGSTR, yydepth, yystate);
1449 #endif
1450 /* Switch to the next conflict context */
1451 save = yypath;
1452 yypath = save->save;
1453 save->save = NULL;
1454 ctry = save->ctry;
1455 if (save->state != yystate) YYABORT;
1456 yyFreeState(save);
1457
1458 }
1459 else
1460 {
1461
1462 /* Unresolved conflict - start/continue trial parse */
1463 YYParseState *save;
1464 #if YYDEBUG
1465 if (yydebug)
1466 {
1467 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
1468 if (yyps->save)
1469 fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
1470 else
1471 fputs("Starting trial parse.\n", stderr);
1472 }
1473 #endif
1474 save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1475 if (save == NULL) goto yyenomem;
1476 save->save = yyps->save;
1477 save->state = yystate;
1478 save->errflag = yyerrflag;
1479 save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
1480 memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1481 save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
1482 memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1483 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1484 save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
1485 memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1486 #endif
1487 ctry = yytable[yyn];
1488 if (yyctable[ctry] == -1)
1489 {
1490 #if YYDEBUG
1491 if (yydebug && yychar >= YYEOF)
1492 fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
1493 #endif
1494 ctry++;
1495 }
1496 save->ctry = ctry;
1497 if (yyps->save == NULL)
1498 {
1499 /* If this is a first conflict in the stack, start saving lexemes */
1500 if (!yylexemes)
1501 {
1502 yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
1503 if (yylexemes == NULL) goto yyenomem;
1504 yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
1505 if (yylvals == NULL) goto yyenomem;
1506 yylvlim = yylvals + YYLVQUEUEGROWTH;
1507 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1508 yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
1509 if (yylpsns == NULL) goto yyenomem;
1510 yylplim = yylpsns + YYLVQUEUEGROWTH;
1511 #endif
1512 }
1513 if (yylvp == yylve)
1514 {
1515 yylvp = yylve = yylvals;
1516 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1517 yylpp = yylpe = yylpsns;
1518 #endif
1519 yylexp = yylexemes;
1520 if (yychar >= YYEOF)
1521 {
1522 *yylve++ = yylval;
1523 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1524 *yylpe++ = yylloc;
1525 #endif
1526 *yylexp = (YYINT) yychar;
1527 yychar = YYEMPTY;
1528 }
1529 }
1530 }
1531 if (yychar >= YYEOF)
1532 {
1533 yylvp--;
1534 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1535 yylpp--;
1536 #endif
1537 yylexp--;
1538 yychar = YYEMPTY;
1539 }
1540 save->lexeme = (int) (yylvp - yylvals);
1541 yyps->save = save;
1542 }
1543 if (yytable[yyn] == ctry)
1544 {
1545 #if YYDEBUG
1546 if (yydebug)
1547 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1548 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1549 #endif
1550 if (yychar < 0)
1551 {
1552 yylvp++;
1553 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1554 yylpp++;
1555 #endif
1556 yylexp++;
1557 }
1558 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1559 goto yyoverflow;
1560 yystate = yyctable[ctry];
1561 *++yystack.s_mark = (YYINT) yystate;
1562 *++yystack.l_mark = yylval;
1563 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1564 *++yystack.p_mark = yylloc;
1565 #endif
1566 yychar = YYEMPTY;
1567 if (yyerrflag > 0) --yyerrflag;
1568 goto yyloop;
1569 }
1570 else
1571 {
1572 yyn = yyctable[ctry];
1573 goto yyreduce;
1574 }
1575 } /* End of code dealing with conflicts */
1576 #endif /* YYBTYACC */
1577 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1578 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1579 {
1580 #if YYDEBUG
1581 if (yydebug)
1582 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1583 YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1584 #endif
1585 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1586 yystate = yytable[yyn];
1587 *++yystack.s_mark = yytable[yyn];
1588 *++yystack.l_mark = yylval;
1589 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1590 *++yystack.p_mark = yylloc;
1591 #endif
1592 yychar = YYEMPTY;
1593 if (yyerrflag > 0) --yyerrflag;
1594 goto yyloop;
1595 }
1596 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1597 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1598 {
1599 yyn = yytable[yyn];
1600 goto yyreduce;
1601 }
1602 if (yyerrflag != 0) goto yyinrecovery;
1603 #if YYBTYACC
1604
1605 yynewerrflag = 1;
1606 goto yyerrhandler;
1607 goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1608
1609 yyerrlab:
1610 /* explicit YYERROR from an action -- pop the rhs of the rule reduced
1611 * before looking for error recovery */
1612 yystack.s_mark -= yym;
1613 yystate = *yystack.s_mark;
1614 yystack.l_mark -= yym;
1615 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1616 yystack.p_mark -= yym;
1617 #endif
1618
1619 yynewerrflag = 0;
1620 yyerrhandler:
1621 while (yyps->save)
1622 {
1623 int ctry;
1624 YYParseState *save = yyps->save;
1625 #if YYDEBUG
1626 if (yydebug)
1627 fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1628 YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1629 (int)(yylvp - yylvals - yyps->save->lexeme));
1630 #endif
1631 /* Memorize most forward-looking error state in case it's really an error. */
1632 if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1633 {
1634 /* Free old saved error context state */
1635 if (yyerrctx) yyFreeState(yyerrctx);
1636 /* Create and fill out new saved error context state */
1637 yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1638 if (yyerrctx == NULL) goto yyenomem;
1639 yyerrctx->save = yyps->save;
1640 yyerrctx->state = yystate;
1641 yyerrctx->errflag = yyerrflag;
1642 yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1643 memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1644 yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1645 memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1646 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1647 yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1648 memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1649 #endif
1650 yyerrctx->lexeme = (int) (yylvp - yylvals);
1651 }
1652 yylvp = yylvals + save->lexeme;
1653 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1654 yylpp = yylpsns + save->lexeme;
1655 #endif
1656 yylexp = yylexemes + save->lexeme;
1657 yychar = YYEMPTY;
1658 yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1659 memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1660 yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1661 memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1662 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1663 yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1664 memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1665 #endif
1666 ctry = ++save->ctry;
1667 yystate = save->state;
1668 /* We tried shift, try reduce now */
1669 if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1670 yyps->save = save->save;
1671 save->save = NULL;
1672 yyFreeState(save);
1673
1674 /* Nothing left on the stack -- error */
1675 if (!yyps->save)
1676 {
1677 #if YYDEBUG
1678 if (yydebug)
1679 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1680 YYPREFIX, yydepth);
1681 #endif
1682 /* Restore state as it was in the most forward-advanced error */
1683 yylvp = yylvals + yyerrctx->lexeme;
1684 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1685 yylpp = yylpsns + yyerrctx->lexeme;
1686 #endif
1687 yylexp = yylexemes + yyerrctx->lexeme;
1688 yychar = yylexp[-1];
1689 yylval = yylvp[-1];
1690 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1691 yylloc = yylpp[-1];
1692 #endif
1693 yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1694 memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1695 yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1696 memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1697 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1698 yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1699 memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1700 #endif
1701 yystate = yyerrctx->state;
1702 yyFreeState(yyerrctx);
1703 yyerrctx = NULL;
1704 }
1705 yynewerrflag = 1;
1706 }
1707 if (yynewerrflag == 0) goto yyinrecovery;
1708 #endif /* YYBTYACC */
1709
1710 YYERROR_CALL("syntax error");
1711 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1712 yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1713 #endif
1714
1715 #if !YYBTYACC
1716 goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1717 yyerrlab:
1718 #endif
1719 ++yynerrs;
1720
1721 yyinrecovery:
1722 if (yyerrflag < 3)
1723 {
1724 yyerrflag = 3;
1725 for (;;)
1726 {
1727 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1728 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1729 {
1730 #if YYDEBUG
1731 if (yydebug)
1732 fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1733 YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1734 #endif
1735 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1736 yystate = yytable[yyn];
1737 *++yystack.s_mark = yytable[yyn];
1738 *++yystack.l_mark = yylval;
1739 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1740 /* lookahead position is error end position */
1741 yyerror_loc_range[1] = yylloc;
1742 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1743 *++yystack.p_mark = yyloc;
1744 #endif
1745 goto yyloop;
1746 }
1747 else
1748 {
1749 #if YYDEBUG
1750 if (yydebug)
1751 fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1752 YYDEBUGSTR, yydepth, *yystack.s_mark);
1753 #endif
1754 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1755 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1756 /* the current TOS position is the error start position */
1757 yyerror_loc_range[0] = *yystack.p_mark;
1758 #endif
1759 #if defined(YYDESTRUCT_CALL)
1760 #if YYBTYACC
1761 if (!yytrial)
1762 #endif /* YYBTYACC */
1763 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1764 YYDESTRUCT_CALL("error: discarding state",
1765 yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1766 #else
1767 YYDESTRUCT_CALL("error: discarding state",
1768 yystos[*yystack.s_mark], yystack.l_mark);
1769 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1770 #endif /* defined(YYDESTRUCT_CALL) */
1771 --yystack.s_mark;
1772 --yystack.l_mark;
1773 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1774 --yystack.p_mark;
1775 #endif
1776 }
1777 }
1778 }
1779 else
1780 {
1781 if (yychar == YYEOF) goto yyabort;
1782 #if YYDEBUG
1783 if (yydebug)
1784 {
1785 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1786 fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1787 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1788 }
1789 #endif
1790 #if defined(YYDESTRUCT_CALL)
1791 #if YYBTYACC
1792 if (!yytrial)
1793 #endif /* YYBTYACC */
1794 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1795 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1796 #else
1797 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1798 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1799 #endif /* defined(YYDESTRUCT_CALL) */
1800 yychar = YYEMPTY;
1801 goto yyloop;
1802 }
1803
1804 yyreduce:
1805 yym = yylen[yyn];
1806 #if YYDEBUG
1807 if (yydebug)
1808 {
1809 fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1810 YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1811 #ifdef YYSTYPE_TOSTRING
1812 #if YYBTYACC
1813 if (!yytrial)
1814 #endif /* YYBTYACC */
1815 if (yym > 0)
1816 {
1817 int i;
1818 fputc('<', stderr);
1819 for (i = yym; i > 0; i--)
1820 {
1821 if (i != yym) fputs(", ", stderr);
1822 fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1823 yystack.l_mark[1-i]), stderr);
1824 }
1825 fputc('>', stderr);
1826 }
1827 #endif
1828 fputc('\n', stderr);
1829 }
1830 #endif
1831 if (yym > 0)
1832 yyval = yystack.l_mark[1-yym];
1833 else
1834 memset(&yyval, 0, sizeof yyval);
1835 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1836
1837 /* Perform position reduction */
1838 memset(&yyloc, 0, sizeof(yyloc));
1839 #if YYBTYACC
1840 if (!yytrial)
1841 #endif /* YYBTYACC */
1842 {
1843 YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1844 /* just in case YYERROR is invoked within the action, save
1845 the start of the rhs as the error start position */
1846 yyerror_loc_range[0] = yystack.p_mark[1-yym];
1847 }
1848 #endif
1849
1850 switch (yyn)
1851 {
1852 case 1:
1853 #line 93 "btyacc_demo.y"
1854 { yyval.scope = yystack.l_mark[0].scope; }
1855 break;
1856 case 2:
1857 #line 94 "btyacc_demo.y"
1858 { yyval.scope = global_scope; }
1859 break;
1860 case 3:
1861 #line 95 "btyacc_demo.y"
1862 { Decl *d = lookup(yystack.l_mark[-2].scope, yystack.l_mark[-1].id);
1863 if (!d || !d->scope) YYERROR;
1864 yyval.scope = d->scope; }
1865 break;
1866 case 4:
1867 #line 101 "btyacc_demo.y"
1868 { Decl *d = lookup(yystack.l_mark[-1].scope, yystack.l_mark[0].id);
1869 if (d == NULL || d->istype() == 0) YYERROR;
1870 yyval.type = d->type; }
1871 break;
1872 case 5:
1873 #line 106 "btyacc_demo.y"
1874 yyval.scope = global_scope = new_scope(0);
1875 break;
1876 case 8:
1877 #line 107 "btyacc_demo.y"
1878 yyval.scope = yystack.l_mark[-1].scope;
1879 break;
1880 case 10:
1881 #line 109 "btyacc_demo.y"
1882 {YYVALID;}
1883 break;
1884 case 11:
1885 #line 110 "btyacc_demo.y"
1886 yyval.scope = start_fn_def(yystack.l_mark[-2].scope, yystack.l_mark[0].decl);
1887 break;
1888 case 12:
1889 if (!yytrial)
1890 #line 111 "btyacc_demo.y"
1891 { /* demonstrate use of @$ & @N, although this is just the
1892 default computation and so is not necessary */
1893 yyloc.first_line = yystack.p_mark[-3].first_line;
1894 yyloc.first_column = yystack.p_mark[-3].first_column;
1895 yyloc.last_line = yystack.p_mark[0].last_line;
1896 yyloc.last_column = yystack.p_mark[0].last_column;
1897 finish_fn_def(yystack.l_mark[-2].decl, yystack.l_mark[0].code); }
1898 break;
1899 case 13:
1900 #line 121 "btyacc_demo.y"
1901 { yyval.type = yystack.l_mark[0].type; }
1902 break;
1903 case 14:
1904 #line 122 "btyacc_demo.y"
1905 { yyval.type = type_combine(yystack.l_mark[-2].type, yystack.l_mark[0].type); }
1906 break;
1907 case 15:
1908 #line 125 "btyacc_demo.y"
1909 { yyval.type = 0; }
1910 break;
1911 case 16:
1912 #line 126 "btyacc_demo.y"
1913 { yyval.type = type_combine(yystack.l_mark[-1].type, yystack.l_mark[0].type); }
1914 break;
1915 case 17:
1916 #line 130 "btyacc_demo.y"
1917 { yyval.type = yystack.l_mark[0].type; }
1918 break;
1919 case 18:
1920 #line 131 "btyacc_demo.y"
1921 { yyval.type = yystack.l_mark[0].type; }
1922 break;
1923 case 19:
1924 #line 132 "btyacc_demo.y"
1925 { yyval.type = bare_extern(); }
1926 break;
1927 case 20:
1928 #line 133 "btyacc_demo.y"
1929 { yyval.type = bare_register(); }
1930 break;
1931 case 21:
1932 #line 134 "btyacc_demo.y"
1933 { yyval.type = bare_static(); }
1934 break;
1935 case 22:
1936 #line 138 "btyacc_demo.y"
1937 { yyval.type = bare_const(); }
1938 break;
1939 case 23:
1940 #line 139 "btyacc_demo.y"
1941 { yyval.type = bare_volatile(); }
1942 break;
1943 case 24:
1944 #line 143 "btyacc_demo.y"
1945 yyval.scope = yystack.l_mark[-3].scope;
1946 break;
1947 case 25:
1948 #line 143 "btyacc_demo.y"
1949 yyval.type = yystack.l_mark[-3].type;
1950 break;
1951 case 28:
1952 #line 148 "btyacc_demo.y"
1953 { if (!yystack.l_mark[0].type) YYERROR; } if (!yytrial)
1954 #line 149 "btyacc_demo.y"
1955 { yyval.decl = declare(yystack.l_mark[-1].scope, 0, yystack.l_mark[0].type); }
1956 break;
1957 case 29:
1958 if (!yytrial)
1959 #line 150 "btyacc_demo.y"
1960 { yyval.decl = declare(yystack.l_mark[-2].scope, yystack.l_mark[0].id, yystack.l_mark[-1].type); }
1961 break;
1962 case 30:
1963 #line 151 "btyacc_demo.y"
1964 yyval.scope = yystack.l_mark[-2].scope;
1965 break;
1966 case 31:
1967 #line 151 "btyacc_demo.y"
1968 yyval.type = yystack.l_mark[-2].type;
1969 break;
1970 case 32:
1971 if (!yytrial)
1972 #line 151 "btyacc_demo.y"
1973 { yyval.decl = yystack.l_mark[-1].decl; }
1974 break;
1975 case 33:
1976 if (!yytrial)
1977 #line 153 "btyacc_demo.y"
1978 { yyval.decl = make_pointer(yystack.l_mark[0].decl, yystack.l_mark[-3].type); }
1979 break;
1980 case 34:
1981 if (!yytrial)
1982 #line 155 "btyacc_demo.y"
1983 { yyval.decl = make_array(yystack.l_mark[-4].decl->type, yystack.l_mark[-1].expr); }
1984 break;
1985 case 35:
1986 if (!yytrial)
1987 #line 157 "btyacc_demo.y"
1988 { yyval.decl = build_function(yystack.l_mark[-5].decl, yystack.l_mark[-2].dlist, yystack.l_mark[0].type); }
1989 break;
1990 case 36:
1991 if (!yytrial)
1992 #line 160 "btyacc_demo.y"
1993 { yyval.dlist = 0; }
1994 break;
1995 case 37:
1996 if (!yytrial)
1997 #line 161 "btyacc_demo.y"
1998 { yyval.dlist = yystack.l_mark[0].dlist; }
1999 break;
2000 case 38:
2001 if (!yytrial)
2002 #line 164 "btyacc_demo.y"
2003 { yyval.dlist = append_dlist(yystack.l_mark[-3].dlist, yystack.l_mark[0].decl); }
2004 break;
2005 case 39:
2006 if (!yytrial)
2007 #line 165 "btyacc_demo.y"
2008 { yyval.dlist = build_dlist(yystack.l_mark[0].decl); }
2009 break;
2010 case 40:
2011 if (!yytrial)
2012 #line 168 "btyacc_demo.y"
2013 { yyval.decl = yystack.l_mark[0].decl; }
2014 break;
2015 case 41:
2016 if (!yytrial)
2017 #line 172 "btyacc_demo.y"
2018 { yyval.expr = build_expr(yystack.l_mark[-3].expr, ADD, yystack.l_mark[0].expr); }
2019 break;
2020 case 42:
2021 if (!yytrial)
2022 #line 173 "btyacc_demo.y"
2023 { yyval.expr = build_expr(yystack.l_mark[-3].expr, SUB, yystack.l_mark[0].expr); }
2024 break;
2025 case 43:
2026 if (!yytrial)
2027 #line 174 "btyacc_demo.y"
2028 { yyval.expr = build_expr(yystack.l_mark[-3].expr, MUL, yystack.l_mark[0].expr); }
2029 break;
2030 case 44:
2031 if (!yytrial)
2032 #line 175 "btyacc_demo.y"
2033 { yyval.expr = build_expr(yystack.l_mark[-3].expr, MOD, yystack.l_mark[0].expr); }
2034 break;
2035 case 45:
2036 if (!yytrial)
2037 #line 176 "btyacc_demo.y"
2038 { yyval.expr = build_expr(yystack.l_mark[-3].expr, DIV, yystack.l_mark[0].expr); }
2039 break;
2040 case 46:
2041 if (!yytrial)
2042 #line 177 "btyacc_demo.y"
2043 { yyval.expr = build_expr(0, DEREF, yystack.l_mark[0].expr); }
2044 break;
2045 case 47:
2046 if (!yytrial)
2047 #line 178 "btyacc_demo.y"
2048 { yyval.expr = var_expr(yystack.l_mark[-1].scope, yystack.l_mark[0].id); }
2049 break;
2050 case 48:
2051 if (!yytrial)
2052 #line 179 "btyacc_demo.y"
2053 { yyval.expr = yystack.l_mark[0].expr; }
2054 break;
2055 case 49:
2056 if (!yytrial)
2057 #line 183 "btyacc_demo.y"
2058 { yyval.code = 0; }
2059 break;
2060 case 50:
2061 #line 184 "btyacc_demo.y"
2062 {YYVALID;} if (!yytrial)
2063 #line 184 "btyacc_demo.y"
2064 { yyval.code = build_expr_code(yystack.l_mark[-1].expr); }
2065 break;
2066 case 51:
2067 #line 185 "btyacc_demo.y"
2068 yyval.scope = yystack.l_mark[-6].scope;
2069 break;
2070 case 52:
2071 #line 185 "btyacc_demo.y"
2072 yyval.scope = yystack.l_mark[-9].scope;
2073 break;
2074 case 53:
2075 #line 185 "btyacc_demo.y"
2076 {YYVALID;} if (!yytrial)
2077 #line 186 "btyacc_demo.y"
2078 { yyval.code = build_if(yystack.l_mark[-7].expr, yystack.l_mark[-3].code, yystack.l_mark[0].code); }
2079 break;
2080 case 54:
2081 #line 187 "btyacc_demo.y"
2082 {YYVALID;} if (!yytrial)
2083 #line 188 "btyacc_demo.y"
2084 { yyval.code = build_if(yystack.l_mark[-4].expr, yystack.l_mark[0].code, 0); }
2085 break;
2086 case 55:
2087 #line 189 "btyacc_demo.y"
2088 yyval.scope = new_scope(yystack.l_mark[0].scope);
2089 break;
2090 case 56:
2091 #line 189 "btyacc_demo.y"
2092 {YYVALID;} if (!yytrial)
2093 #line 189 "btyacc_demo.y"
2094 { yyval.code = yystack.l_mark[0].code; }
2095 break;
2096 case 57:
2097 if (!yytrial)
2098 #line 192 "btyacc_demo.y"
2099 { yyval.code = 0; }
2100 break;
2101 case 58:
2102 if (!yytrial)
2103 #line 193 "btyacc_demo.y"
2104 { yyval.code = code_append(yystack.l_mark[-2].code, yystack.l_mark[0].code); }
2105 break;
2106 case 59:
2107 if (!yytrial)
2108 #line 197 "btyacc_demo.y"
2109 { yyval.code = yystack.l_mark[-1].code; }
2110 break;
2111 #line 2110 "btyacc_demo.tab.c"
2112 default:
2113 break;
2114 }
2115 yystack.s_mark -= yym;
2116 yystate = *yystack.s_mark;
2117 yystack.l_mark -= yym;
2118 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2119 yystack.p_mark -= yym;
2120 #endif
2121 yym = yylhs[yyn];
2122 if (yystate == 0 && yym == 0)
2123 {
2124 #if YYDEBUG
2125 if (yydebug)
2126 {
2127 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2128 #ifdef YYSTYPE_TOSTRING
2129 #if YYBTYACC
2130 if (!yytrial)
2131 #endif /* YYBTYACC */
2132 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
2133 #endif
2134 fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
2135 }
2136 #endif
2137 yystate = YYFINAL;
2138 *++yystack.s_mark = YYFINAL;
2139 *++yystack.l_mark = yyval;
2140 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2141 *++yystack.p_mark = yyloc;
2142 #endif
2143 if (yychar < 0)
2144 {
2145 #if YYBTYACC
2146 do {
2147 if (yylvp < yylve)
2148 {
2149 /* we're currently re-reading tokens */
2150 yylval = *yylvp++;
2151 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2152 yylloc = *yylpp++;
2153 #endif
2154 yychar = *yylexp++;
2155 break;
2156 }
2157 if (yyps->save)
2158 {
2159 /* in trial mode; save scanner results for future parse attempts */
2160 if (yylvp == yylvlim)
2161 { /* Enlarge lexical value queue */
2162 size_t p = (size_t) (yylvp - yylvals);
2163 size_t s = (size_t) (yylvlim - yylvals);
2164
2165 s += YYLVQUEUEGROWTH;
2166 if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL)
2167 goto yyenomem;
2168 if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
2169 goto yyenomem;
2170 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2171 if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
2172 goto yyenomem;
2173 #endif
2174 yylvp = yylve = yylvals + p;
2175 yylvlim = yylvals + s;
2176 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2177 yylpp = yylpe = yylpsns + p;
2178 yylplim = yylpsns + s;
2179 #endif
2180 yylexp = yylexemes + p;
2181 }
2182 *yylexp = (YYINT) YYLEX;
2183 *yylvp++ = yylval;
2184 yylve++;
2185 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2186 *yylpp++ = yylloc;
2187 yylpe++;
2188 #endif
2189 yychar = *yylexp++;
2190 break;
2191 }
2192 /* normal operation, no conflict encountered */
2193 #endif /* YYBTYACC */
2194 yychar = YYLEX;
2195 #if YYBTYACC
2196 } while (0);
2197 #endif /* YYBTYACC */
2198 if (yychar < 0) yychar = YYEOF;
2199 #if YYDEBUG
2200 if (yydebug)
2201 {
2202 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
2203 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
2204 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
2205 }
2206 #endif
2207 }
2208 if (yychar == YYEOF) goto yyaccept;
2209 goto yyloop;
2210 }
2211 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
2212 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
2213 yystate = yytable[yyn];
2214 else
2215 yystate = yydgoto[yym];
2216 #if YYDEBUG
2217 if (yydebug)
2218 {
2219 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2220 #ifdef YYSTYPE_TOSTRING
2221 #if YYBTYACC
2222 if (!yytrial)
2223 #endif /* YYBTYACC */
2224 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
2225 #endif
2226 fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
2227 }
2228 #endif
2229 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2230 *++yystack.s_mark = (YYINT) yystate;
2231 *++yystack.l_mark = yyval;
2232 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2233 *++yystack.p_mark = yyloc;
2234 #endif
2235 goto yyloop;
2236 #if YYBTYACC
2237
2238 /* Reduction declares that this path is valid. Set yypath and do a full parse */
2239 yyvalid:
2240 if (yypath) YYABORT;
2241 while (yyps->save)
2242 {
2243 YYParseState *save = yyps->save;
2244 yyps->save = save->save;
2245 save->save = yypath;
2246 yypath = save;
2247 }
2248 #if YYDEBUG
2249 if (yydebug)
2250 fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
2251 YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
2252 #endif
2253 if (yyerrctx)
2254 {
2255 yyFreeState(yyerrctx);
2256 yyerrctx = NULL;
2257 }
2258 yylvp = yylvals + yypath->lexeme;
2259 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2260 yylpp = yylpsns + yypath->lexeme;
2261 #endif
2262 yylexp = yylexemes + yypath->lexeme;
2263 yychar = YYEMPTY;
2264 yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
2265 memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2266 yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
2267 memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2268 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2269 yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
2270 memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2271 #endif
2272 yystate = yypath->state;
2273 goto yyloop;
2274 #endif /* YYBTYACC */
2275
2276 yyoverflow:
2277 YYERROR_CALL("yacc stack overflow");
2278 #if YYBTYACC
2279 goto yyabort_nomem;
2280 yyenomem:
2281 YYERROR_CALL("memory exhausted");
2282 yyabort_nomem:
2283 #endif /* YYBTYACC */
2284 yyresult = 2;
2285 goto yyreturn;
2286
2287 yyabort:
2288 yyresult = 1;
2289 goto yyreturn;
2290
2291 yyaccept:
2292 #if YYBTYACC
2293 if (yyps->save) goto yyvalid;
2294 #endif /* YYBTYACC */
2295 yyresult = 0;
2296
2297 yyreturn:
2298 #if defined(YYDESTRUCT_CALL)
2299 if (yychar != YYEOF && yychar != YYEMPTY)
2300 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2301 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
2302 #else
2303 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
2304 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2305
2306 {
2307 YYSTYPE *pv;
2308 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2309 YYLTYPE *pp;
2310
2311 for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
2312 YYDESTRUCT_CALL("cleanup: discarding state",
2313 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
2314 #else
2315 for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
2316 YYDESTRUCT_CALL("cleanup: discarding state",
2317 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
2318 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2319 }
2320 #endif /* defined(YYDESTRUCT_CALL) */
2321
2322 #if YYBTYACC
2323 if (yyerrctx)
2324 {
2325 yyFreeState(yyerrctx);
2326 yyerrctx = NULL;
2327 }
2328 while (yyps)
2329 {
2330 YYParseState *save = yyps;
2331 yyps = save->save;
2332 save->save = NULL;
2333 yyFreeState(save);
2334 }
2335 while (yypath)
2336 {
2337 YYParseState *save = yypath;
2338 yypath = save->save;
2339 save->save = NULL;
2340 yyFreeState(save);
2341 }
2342 #endif /* YYBTYACC */
2343 yyfreestack(&yystack);
2344 return (yyresult);
2345 }
2346