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