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