1272651Sbapt/* original parser id follows */
2272651Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3272651Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */
4272651Sbapt
5272651Sbapt#define YYBYACC 1
6272651Sbapt#define YYMAJOR 1
7272651Sbapt#define YYMINOR 9
8272651Sbapt#define YYCHECK "yyyymmdd"
9272651Sbapt
10272651Sbapt#define YYEMPTY        (-1)
11272651Sbapt#define yyclearin      (yychar = YYEMPTY)
12272651Sbapt#define yyerrok        (yyerrflag = 0)
13272651Sbapt#define YYRECOVERING() (yyerrflag != 0)
14272651Sbapt#define YYENOMEM       (-2)
15272651Sbapt#define YYEOF          0
16272651Sbapt#undef YYBTYACC
17272651Sbapt#define YYBTYACC 1
18272651Sbapt#define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
19272651Sbapt
20272651Sbapt#ifndef yyparse
21272651Sbapt#define yyparse    destroy3_parse
22272651Sbapt#endif /* yyparse */
23272651Sbapt
24272651Sbapt#ifndef yylex
25272651Sbapt#define yylex      destroy3_lex
26272651Sbapt#endif /* yylex */
27272651Sbapt
28272651Sbapt#ifndef yyerror
29272651Sbapt#define yyerror    destroy3_error
30272651Sbapt#endif /* yyerror */
31272651Sbapt
32272651Sbapt#ifndef yychar
33272651Sbapt#define yychar     destroy3_char
34272651Sbapt#endif /* yychar */
35272651Sbapt
36272651Sbapt#ifndef yyval
37272651Sbapt#define yyval      destroy3_val
38272651Sbapt#endif /* yyval */
39272651Sbapt
40272651Sbapt#ifndef yylval
41272651Sbapt#define yylval     destroy3_lval
42272651Sbapt#endif /* yylval */
43272651Sbapt
44272651Sbapt#ifndef yydebug
45272651Sbapt#define yydebug    destroy3_debug
46272651Sbapt#endif /* yydebug */
47272651Sbapt
48272651Sbapt#ifndef yynerrs
49272651Sbapt#define yynerrs    destroy3_nerrs
50272651Sbapt#endif /* yynerrs */
51272651Sbapt
52272651Sbapt#ifndef yyerrflag
53272651Sbapt#define yyerrflag  destroy3_errflag
54272651Sbapt#endif /* yyerrflag */
55272651Sbapt
56272651Sbapt#ifndef yylhs
57272651Sbapt#define yylhs      destroy3_lhs
58272651Sbapt#endif /* yylhs */
59272651Sbapt
60272651Sbapt#ifndef yylen
61272651Sbapt#define yylen      destroy3_len
62272651Sbapt#endif /* yylen */
63272651Sbapt
64272651Sbapt#ifndef yydefred
65272651Sbapt#define yydefred   destroy3_defred
66272651Sbapt#endif /* yydefred */
67272651Sbapt
68272651Sbapt#ifndef yystos
69272651Sbapt#define yystos     destroy3_stos
70272651Sbapt#endif /* yystos */
71272651Sbapt
72272651Sbapt#ifndef yydgoto
73272651Sbapt#define yydgoto    destroy3_dgoto
74272651Sbapt#endif /* yydgoto */
75272651Sbapt
76272651Sbapt#ifndef yysindex
77272651Sbapt#define yysindex   destroy3_sindex
78272651Sbapt#endif /* yysindex */
79272651Sbapt
80272651Sbapt#ifndef yyrindex
81272651Sbapt#define yyrindex   destroy3_rindex
82272651Sbapt#endif /* yyrindex */
83272651Sbapt
84272651Sbapt#ifndef yygindex
85272651Sbapt#define yygindex   destroy3_gindex
86272651Sbapt#endif /* yygindex */
87272651Sbapt
88272651Sbapt#ifndef yytable
89272651Sbapt#define yytable    destroy3_table
90272651Sbapt#endif /* yytable */
91272651Sbapt
92272651Sbapt#ifndef yycheck
93272651Sbapt#define yycheck    destroy3_check
94272651Sbapt#endif /* yycheck */
95272651Sbapt
96272651Sbapt#ifndef yyname
97272651Sbapt#define yyname     destroy3_name
98272651Sbapt#endif /* yyname */
99272651Sbapt
100272651Sbapt#ifndef yyrule
101272651Sbapt#define yyrule     destroy3_rule
102272651Sbapt#endif /* yyrule */
103272651Sbapt
104272651Sbapt#if YYBTYACC
105272651Sbapt
106272651Sbapt#ifndef yycindex
107272651Sbapt#define yycindex   destroy3_cindex
108272651Sbapt#endif /* yycindex */
109272651Sbapt
110272651Sbapt#ifndef yyctable
111272651Sbapt#define yyctable   destroy3_ctable
112272651Sbapt#endif /* yyctable */
113272651Sbapt
114272651Sbapt#endif /* YYBTYACC */
115272651Sbapt
116272651Sbapt#define YYPREFIX "destroy3_"
117272651Sbapt
118272651Sbapt#define YYPURE 0
119272651Sbapt
120272651Sbapt#line 7 "btyacc_destroy3.y"
121272651Sbapt#include <stdlib.h>
122272651Sbapt
123272651Sbapttypedef enum {cGLOBAL, cLOCAL} class;
124272651Sbapttypedef enum {tREAL, tINTEGER} type;
125272651Sbapttypedef char * name;
126272651Sbapt
127272651Sbaptstruct symbol { class c; type t; name id; };
128272651Sbapttypedef struct symbol symbol;
129272651Sbapt
130272651Sbaptstruct namelist { symbol *s; struct namelist *next; };
131272651Sbapttypedef struct namelist namelist;
132272651Sbapt
133272651Sbaptstruct parser_param {
134272651Sbapt	int *rtrn;
135272651Sbapt	symbol ss;
136272651Sbapt};
137272651Sbapt
138272651Sbaptextern symbol *mksymbol(type t, class c, name id);
139272651Sbapt
140272651Sbapt#ifdef YYBISON
141272651Sbapt#define YYLEX_DECL() yylex(void)
142272651Sbapt#define YYERROR_DECL() yyerror(const char *s)
143272651Sbapt#endif
144272651Sbapt#line 53 "btyacc_destroy3.y"
145272651Sbapt#ifdef YYSTYPE
146272651Sbapt#undef  YYSTYPE_IS_DECLARED
147272651Sbapt#define YYSTYPE_IS_DECLARED 1
148272651Sbapt#endif
149272651Sbapt#ifndef YYSTYPE_IS_DECLARED
150272651Sbapt#define YYSTYPE_IS_DECLARED 1
151272651Sbapttypedef union
152272651Sbapt{
153272651Sbapt    class	cval;
154272651Sbapt    type	tval;
155272651Sbapt    namelist *	nlist;
156272651Sbapt    name	id;
157272651Sbapt} YYSTYPE;
158272651Sbapt#endif /* !YYSTYPE_IS_DECLARED */
159272651Sbapt#line 160 "btyacc_destroy3.tab.c"
160272651Sbapt
161272651Sbapt/* compatibility with bison */
162272651Sbapt#ifdef YYPARSE_PARAM
163272651Sbapt/* compatibility with FreeBSD */
164272651Sbapt# ifdef YYPARSE_PARAM_TYPE
165272651Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
166272651Sbapt# else
167272651Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
168272651Sbapt# endif
169272651Sbapt#else
170272651Sbapt# define YYPARSE_DECL() yyparse(struct parser_param *param, int flag)
171272651Sbapt#endif
172272651Sbapt
173272651Sbapt/* Parameters sent to lex. */
174272651Sbapt#ifdef YYLEX_PARAM
175272651Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
176272651Sbapt# define YYLEX yylex(YYLEX_PARAM)
177272651Sbapt#else
178272651Sbapt# define YYLEX_DECL() yylex(void)
179272651Sbapt# define YYLEX yylex()
180272651Sbapt#endif
181272651Sbapt
182272651Sbapt/* Parameters sent to yyerror. */
183272651Sbapt#ifndef YYERROR_DECL
184272651Sbapt#define YYERROR_DECL() yyerror(struct parser_param *param, int flag, const char *s)
185272651Sbapt#endif
186272651Sbapt#ifndef YYERROR_CALL
187272651Sbapt#define YYERROR_CALL(msg) yyerror(param, flag, msg)
188272651Sbapt#endif
189272651Sbapt
190272651Sbapt#ifndef YYDESTRUCT_DECL
191272651Sbapt#define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, struct parser_param *param, int flag)
192272651Sbapt#endif
193272651Sbapt#ifndef YYDESTRUCT_CALL
194272651Sbapt#define YYDESTRUCT_CALL(msg, psymb, val) yydestruct(msg, psymb, val, param, flag)
195272651Sbapt#endif
196272651Sbapt
197272651Sbaptextern int YYPARSE_DECL();
198272651Sbapt
199272651Sbapt#define GLOBAL 257
200272651Sbapt#define LOCAL 258
201272651Sbapt#define REAL 259
202272651Sbapt#define INTEGER 260
203272651Sbapt#define NAME 261
204272651Sbapt#define YYERRCODE 256
205272651Sbapttypedef short YYINT;
206272651Sbaptstatic const YYINT destroy3_lhs[] = {                    -1,
207272651Sbapt    0,    0,    2,    2,    3,    3,    4,    4,    1,
208272651Sbapt};
209272651Sbaptstatic const YYINT destroy3_len[] = {                     2,
210272651Sbapt    8,    5,    1,    1,    1,    1,    2,    1,    6,
211272651Sbapt};
212272651Sbaptstatic const YYINT destroy3_defred[] = {                  0,
213272651Sbapt    3,    4,    5,    6,    0,    0,    0,    0,    8,    0,
214272651Sbapt    0,    0,    0,    7,    0,    0,    0,    0,    0,    2,
215272651Sbapt    0,    0,    0,    0,    9,    1,
216272651Sbapt};
217272651Sbaptstatic const YYINT destroy3_stos[] = {                    0,
218272651Sbapt  257,  258,  259,  260,  263,  265,  266,  266,  261,  264,
219272651Sbapt  267,  267,   40,  261,   40,   40,  265,  258,  265,   41,
220272651Sbapt   44,   44,  266,  266,   41,   41,
221272651Sbapt};
222272651Sbaptstatic const YYINT destroy3_dgoto[] = {                   5,
223272651Sbapt   10,    6,    7,   11,
224272651Sbapt};
225272651Sbaptstatic const YYINT destroy3_sindex[] = {               -254,
226272651Sbapt    0,    0,    0,    0,    0, -251, -248, -248,    0,  -26,
227272651Sbapt  -40,  -39, -246,    0, -243, -246,  -25,  -24,  -23,    0,
228272651Sbapt -251, -251,  -22,  -19,    0,    0,
229272651Sbapt};
230272651Sbaptstatic const YYINT destroy3_rindex[] = {                  0,
231272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
232272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
233272651Sbapt    0,    0,    0,    0,    0,    0,
234272651Sbapt};
235272651Sbapt#if YYBTYACC
236272651Sbaptstatic const YYINT destroy3_cindex[] = {                  0,
237272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
238272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
239272651Sbapt    0,    0,    0,    0,    0,    0,
240272651Sbapt};
241272651Sbapt#endif
242272651Sbaptstatic const YYINT destroy3_gindex[] = {                  0,
243272651Sbapt    0,   -6,   -4,   15,
244272651Sbapt};
245272651Sbapt#define YYTABLESIZE 222
246272651Sbaptstatic const YYINT destroy3_table[] = {                  15,
247272651Sbapt   16,    8,    1,    2,    3,    4,   17,    3,    4,   19,
248272651Sbapt    1,    2,    9,   13,   18,   20,   23,   24,   25,   21,
249272651Sbapt   22,   26,   12,    0,    0,    0,    0,    0,    0,    0,
250272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
251272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
252272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
253272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
254272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
255272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
258272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
259272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
260272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
261272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
262272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
263272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
264272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
265272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
266272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
267272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
268272651Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
269272651Sbapt   14,   14,
270272651Sbapt};
271272651Sbaptstatic const YYINT destroy3_check[] = {                  40,
272272651Sbapt   40,    6,  257,  258,  259,  260,   13,  259,  260,   16,
273272651Sbapt  257,  258,  261,   40,  258,   41,   21,   22,   41,   44,
274272651Sbapt   44,   41,    8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
275272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
276272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
277272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
278272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
279272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
280272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
281272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
282272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
283272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
284272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
285272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
286272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
287272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
288272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
289272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
290272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
291272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
292272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
293272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
294272651Sbapt  261,  261,
295272651Sbapt};
296272651Sbapt#if YYBTYACC
297272651Sbaptstatic const YYINT destroy3_ctable[] = {                 -1,
298272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
299272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
300272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
301272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
302272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
303272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
304272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
305272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
307272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
308272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
309272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
310272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
311272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
312272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
313272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
314272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
315272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
316272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
317272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
318272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
319272651Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
320272651Sbapt   -1,
321272651Sbapt};
322272651Sbapt#endif
323272651Sbapt#define YYFINAL 5
324272651Sbapt#ifndef YYDEBUG
325272651Sbapt#define YYDEBUG 0
326272651Sbapt#endif
327272651Sbapt#define YYMAXTOKEN 261
328272651Sbapt#define YYUNDFTOKEN 268
329272651Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
330272651Sbapt#if YYDEBUG
331272651Sbaptstatic const char *const destroy3_name[] = {
332272651Sbapt
333272651Sbapt"$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,
334272651Sbapt0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
335272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
336272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
337272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
338272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
339272651Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL",
340272651Sbapt"REAL","INTEGER","NAME","$accept","declaration","locnamelist","class","type",
341272651Sbapt"namelist","illegal-symbol",
342272651Sbapt};
343272651Sbaptstatic const char *const destroy3_rule[] = {
344272651Sbapt"$accept : declaration",
345272651Sbapt"declaration : class type namelist '(' class ',' type ')'",
346272651Sbapt"declaration : type locnamelist '(' class ')'",
347272651Sbapt"class : GLOBAL",
348272651Sbapt"class : LOCAL",
349272651Sbapt"type : REAL",
350272651Sbapt"type : INTEGER",
351272651Sbapt"namelist : namelist NAME",
352272651Sbapt"namelist : NAME",
353272651Sbapt"locnamelist : namelist '(' LOCAL ',' type ')'",
354272651Sbapt
355272651Sbapt};
356272651Sbapt#endif
357272651Sbapt
358272651Sbaptint      yydebug;
359272651Sbaptint      yynerrs;
360272651Sbapt
361272651Sbaptint      yyerrflag;
362272651Sbaptint      yychar;
363272651SbaptYYSTYPE  yyval;
364272651SbaptYYSTYPE  yylval;
365272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
366272651SbaptYYLTYPE  yyloc; /* position returned by actions */
367272651SbaptYYLTYPE  yylloc; /* position from the lexer */
368272651Sbapt#endif
369272651Sbapt
370272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
371272651Sbapt#ifndef YYLLOC_DEFAULT
372272651Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \
373272651Sbaptdo \
374272651Sbapt{ \
375272651Sbapt    if (n == 0) \
376272651Sbapt    { \
377272651Sbapt        (loc).first_line   = ((rhs)[-1]).last_line; \
378272651Sbapt        (loc).first_column = ((rhs)[-1]).last_column; \
379272651Sbapt        (loc).last_line    = ((rhs)[-1]).last_line; \
380272651Sbapt        (loc).last_column  = ((rhs)[-1]).last_column; \
381272651Sbapt    } \
382272651Sbapt    else \
383272651Sbapt    { \
384272651Sbapt        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
385272651Sbapt        (loc).first_column = ((rhs)[ 0 ]).first_column; \
386272651Sbapt        (loc).last_line    = ((rhs)[n-1]).last_line; \
387272651Sbapt        (loc).last_column  = ((rhs)[n-1]).last_column; \
388272651Sbapt    } \
389272651Sbapt} while (0)
390272651Sbapt#endif /* YYLLOC_DEFAULT */
391272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
392272651Sbapt#if YYBTYACC
393272651Sbapt
394272651Sbapt#ifndef YYLVQUEUEGROWTH
395272651Sbapt#define YYLVQUEUEGROWTH 32
396272651Sbapt#endif
397272651Sbapt#endif /* YYBTYACC */
398272651Sbapt
399272651Sbapt/* define the initial stack-sizes */
400272651Sbapt#ifdef YYSTACKSIZE
401272651Sbapt#undef YYMAXDEPTH
402272651Sbapt#define YYMAXDEPTH  YYSTACKSIZE
403272651Sbapt#else
404272651Sbapt#ifdef YYMAXDEPTH
405272651Sbapt#define YYSTACKSIZE YYMAXDEPTH
406272651Sbapt#else
407272651Sbapt#define YYSTACKSIZE 10000
408272651Sbapt#define YYMAXDEPTH  10000
409272651Sbapt#endif
410272651Sbapt#endif
411272651Sbapt
412272651Sbapt#ifndef YYINITSTACKSIZE
413272651Sbapt#define YYINITSTACKSIZE 200
414272651Sbapt#endif
415272651Sbapt
416272651Sbapttypedef struct {
417272651Sbapt    unsigned stacksize;
418272651Sbapt    short    *s_base;
419272651Sbapt    short    *s_mark;
420272651Sbapt    short    *s_last;
421272651Sbapt    YYSTYPE  *l_base;
422272651Sbapt    YYSTYPE  *l_mark;
423272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
424272651Sbapt    YYLTYPE  *p_base;
425272651Sbapt    YYLTYPE  *p_mark;
426272651Sbapt#endif
427272651Sbapt} YYSTACKDATA;
428272651Sbapt#if YYBTYACC
429272651Sbapt
430272651Sbaptstruct YYParseState_s
431272651Sbapt{
432272651Sbapt    struct YYParseState_s *save;    /* Previously saved parser state */
433272651Sbapt    YYSTACKDATA            yystack; /* saved parser stack */
434272651Sbapt    int                    state;   /* saved parser state */
435272651Sbapt    int                    errflag; /* saved error recovery status */
436272651Sbapt    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
437272651Sbapt    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
438272651Sbapt};
439272651Sbapttypedef struct YYParseState_s YYParseState;
440272651Sbapt#endif /* YYBTYACC */
441272651Sbapt/* variables for the parser stack */
442272651Sbaptstatic YYSTACKDATA yystack;
443272651Sbapt#if YYBTYACC
444272651Sbapt
445272651Sbapt/* Current parser state */
446272651Sbaptstatic YYParseState *yyps = 0;
447272651Sbapt
448272651Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */
449272651Sbaptstatic YYParseState *yypath = 0;
450272651Sbapt
451272651Sbapt/* Base of the lexical value queue */
452272651Sbaptstatic YYSTYPE *yylvals = 0;
453272651Sbapt
454272651Sbapt/* Current position at lexical value queue */
455272651Sbaptstatic YYSTYPE *yylvp = 0;
456272651Sbapt
457272651Sbapt/* End position of lexical value queue */
458272651Sbaptstatic YYSTYPE *yylve = 0;
459272651Sbapt
460272651Sbapt/* The last allocated position at the lexical value queue */
461272651Sbaptstatic YYSTYPE *yylvlim = 0;
462272651Sbapt
463272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
464272651Sbapt/* Base of the lexical position queue */
465272651Sbaptstatic YYLTYPE *yylpsns = 0;
466272651Sbapt
467272651Sbapt/* Current position at lexical position queue */
468272651Sbaptstatic YYLTYPE *yylpp = 0;
469272651Sbapt
470272651Sbapt/* End position of lexical position queue */
471272651Sbaptstatic YYLTYPE *yylpe = 0;
472272651Sbapt
473272651Sbapt/* The last allocated position at the lexical position queue */
474272651Sbaptstatic YYLTYPE *yylplim = 0;
475272651Sbapt#endif
476272651Sbapt
477272651Sbapt/* Current position at lexical token queue */
478272651Sbaptstatic short  *yylexp = 0;
479272651Sbapt
480272651Sbaptstatic short  *yylexemes = 0;
481272651Sbapt#endif /* YYBTYACC */
482272651Sbapt#line 92 "btyacc_destroy3.y"
483272651Sbapt
484272651Sbaptextern int YYLEX_DECL();
485272651Sbaptextern void YYERROR_DECL();
486272651Sbapt#line 487 "btyacc_destroy3.tab.c"
487272651Sbapt
488272651Sbapt/* Release memory associated with symbol. */
489272651Sbapt#if ! defined YYDESTRUCT_IS_DECLARED
490272651Sbaptstatic void
491272651SbaptYYDESTRUCT_DECL()
492272651Sbapt{
493272651Sbapt    switch (psymb)
494272651Sbapt    {
495272651Sbapt	case 263:
496272651Sbapt#line 44 "btyacc_destroy3.y"
497272651Sbapt	{
498272651Sbapt		  namelist *p = (*val).nlist;
499272651Sbapt		  while (p != NULL)
500272651Sbapt		  { namelist *pp = p;
501272651Sbapt		    p = p->next;
502272651Sbapt		    free(pp->s); free(pp);
503272651Sbapt		  }
504272651Sbapt		}
505272651Sbapt	break;
506272651Sbapt#line 507 "btyacc_destroy3.tab.c"
507272651Sbapt    }
508272651Sbapt}
509272651Sbapt#define YYDESTRUCT_IS_DECLARED 1
510272651Sbapt#endif
511272651Sbapt
512272651Sbapt/* For use in generated program */
513272651Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base)
514272651Sbapt#if YYBTYACC
515272651Sbapt#define yytrial (yyps->save)
516272651Sbapt#endif /* YYBTYACC */
517272651Sbapt
518272651Sbapt#if YYDEBUG
519272651Sbapt#include <stdio.h>         /* needed for printf */
520272651Sbapt#endif
521272651Sbapt
522272651Sbapt#include <stdlib.h>        /* needed for malloc, etc */
523272651Sbapt#include <string.h>        /* needed for memset */
524272651Sbapt
525272651Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
526272651Sbaptstatic int yygrowstack(YYSTACKDATA *data)
527272651Sbapt{
528272651Sbapt    int i;
529272651Sbapt    unsigned newsize;
530272651Sbapt    short *newss;
531272651Sbapt    YYSTYPE *newvs;
532272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
533272651Sbapt    YYLTYPE *newps;
534272651Sbapt#endif
535272651Sbapt
536272651Sbapt    if ((newsize = data->stacksize) == 0)
537272651Sbapt        newsize = YYINITSTACKSIZE;
538272651Sbapt    else if (newsize >= YYMAXDEPTH)
539272651Sbapt        return YYENOMEM;
540272651Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
541272651Sbapt        newsize = YYMAXDEPTH;
542272651Sbapt
543272651Sbapt    i = (int) (data->s_mark - data->s_base);
544272651Sbapt    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
545272651Sbapt    if (newss == 0)
546272651Sbapt        return YYENOMEM;
547272651Sbapt
548272651Sbapt    data->s_base = newss;
549272651Sbapt    data->s_mark = newss + i;
550272651Sbapt
551272651Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
552272651Sbapt    if (newvs == 0)
553272651Sbapt        return YYENOMEM;
554272651Sbapt
555272651Sbapt    data->l_base = newvs;
556272651Sbapt    data->l_mark = newvs + i;
557272651Sbapt
558272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
559272651Sbapt    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
560272651Sbapt    if (newps == 0)
561272651Sbapt        return YYENOMEM;
562272651Sbapt
563272651Sbapt    data->p_base = newps;
564272651Sbapt    data->p_mark = newps + i;
565272651Sbapt#endif
566272651Sbapt
567272651Sbapt    data->stacksize = newsize;
568272651Sbapt    data->s_last = data->s_base + newsize - 1;
569272651Sbapt
570272651Sbapt#if YYDEBUG
571272651Sbapt    if (yydebug)
572272651Sbapt        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
573272651Sbapt#endif
574272651Sbapt    return 0;
575272651Sbapt}
576272651Sbapt
577272651Sbapt#if YYPURE || defined(YY_NO_LEAKS)
578272651Sbaptstatic void yyfreestack(YYSTACKDATA *data)
579272651Sbapt{
580272651Sbapt    free(data->s_base);
581272651Sbapt    free(data->l_base);
582272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
583272651Sbapt    free(data->p_base);
584272651Sbapt#endif
585272651Sbapt    memset(data, 0, sizeof(*data));
586272651Sbapt}
587272651Sbapt#else
588272651Sbapt#define yyfreestack(data) /* nothing */
589272651Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */
590272651Sbapt#if YYBTYACC
591272651Sbapt
592272651Sbaptstatic YYParseState *
593272651SbaptyyNewState(unsigned size)
594272651Sbapt{
595272651Sbapt    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
596272651Sbapt    if (p == NULL) return NULL;
597272651Sbapt
598272651Sbapt    p->yystack.stacksize = size;
599272651Sbapt    if (size == 0)
600272651Sbapt    {
601272651Sbapt        p->yystack.s_base = NULL;
602272651Sbapt        p->yystack.l_base = NULL;
603272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
604272651Sbapt        p->yystack.p_base = NULL;
605272651Sbapt#endif
606272651Sbapt        return p;
607272651Sbapt    }
608272651Sbapt    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
609272651Sbapt    if (p->yystack.s_base == NULL) return NULL;
610272651Sbapt    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
611272651Sbapt    if (p->yystack.l_base == NULL) return NULL;
612272651Sbapt    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
613272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
614272651Sbapt    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
615272651Sbapt    if (p->yystack.p_base == NULL) return NULL;
616272651Sbapt    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
617272651Sbapt#endif
618272651Sbapt
619272651Sbapt    return p;
620272651Sbapt}
621272651Sbapt
622272651Sbaptstatic void
623272651SbaptyyFreeState(YYParseState *p)
624272651Sbapt{
625272651Sbapt    yyfreestack(&p->yystack);
626272651Sbapt    free(p);
627272651Sbapt}
628272651Sbapt#endif /* YYBTYACC */
629272651Sbapt
630272651Sbapt#define YYABORT  goto yyabort
631272651Sbapt#define YYREJECT goto yyabort
632272651Sbapt#define YYACCEPT goto yyaccept
633272651Sbapt#define YYERROR  goto yyerrlab
634272651Sbapt#if YYBTYACC
635272651Sbapt#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
636272651Sbapt#define YYVALID_NESTED do { if (yyps->save && \
637272651Sbapt                                yyps->save->save == 0) goto yyvalid; } while(0)
638272651Sbapt#endif /* YYBTYACC */
639272651Sbapt
640272651Sbaptint
641272651SbaptYYPARSE_DECL()
642272651Sbapt{
643272651Sbapt    int yym, yyn, yystate, yyresult;
644272651Sbapt#if YYBTYACC
645272651Sbapt    int yynewerrflag;
646272651Sbapt    YYParseState *yyerrctx = NULL;
647272651Sbapt#endif /* YYBTYACC */
648272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
649272651Sbapt    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
650272651Sbapt#endif
651272651Sbapt#if YYDEBUG
652272651Sbapt    const char *yys;
653272651Sbapt
654272651Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
655272651Sbapt    {
656272651Sbapt        yyn = *yys;
657272651Sbapt        if (yyn >= '0' && yyn <= '9')
658272651Sbapt            yydebug = yyn - '0';
659272651Sbapt    }
660272651Sbapt    if (yydebug)
661272651Sbapt        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
662272651Sbapt#endif
663272651Sbapt
664272651Sbapt#if YYBTYACC
665272651Sbapt    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
666272651Sbapt    yyps->save = 0;
667272651Sbapt#endif /* YYBTYACC */
668272651Sbapt    yynerrs = 0;
669272651Sbapt    yyerrflag = 0;
670272651Sbapt    yychar = YYEMPTY;
671272651Sbapt    yystate = 0;
672272651Sbapt
673272651Sbapt#if YYPURE
674272651Sbapt    memset(&yystack, 0, sizeof(yystack));
675272651Sbapt#endif
676272651Sbapt
677272651Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
678272651Sbapt    yystack.s_mark = yystack.s_base;
679272651Sbapt    yystack.l_mark = yystack.l_base;
680272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
681272651Sbapt    yystack.p_mark = yystack.p_base;
682272651Sbapt#endif
683272651Sbapt    yystate = 0;
684272651Sbapt    *yystack.s_mark = 0;
685272651Sbapt
686272651Sbaptyyloop:
687272651Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
688272651Sbapt    if (yychar < 0)
689272651Sbapt    {
690272651Sbapt#if YYBTYACC
691272651Sbapt        do {
692272651Sbapt        if (yylvp < yylve)
693272651Sbapt        {
694272651Sbapt            /* we're currently re-reading tokens */
695272651Sbapt            yylval = *yylvp++;
696272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
697272651Sbapt            yylloc = *yylpp++;
698272651Sbapt#endif
699272651Sbapt            yychar = *yylexp++;
700272651Sbapt            break;
701272651Sbapt        }
702272651Sbapt        if (yyps->save)
703272651Sbapt        {
704272651Sbapt            /* in trial mode; save scanner results for future parse attempts */
705272651Sbapt            if (yylvp == yylvlim)
706272651Sbapt            {   /* Enlarge lexical value queue */
707272651Sbapt                size_t p = (size_t) (yylvp - yylvals);
708272651Sbapt                size_t s = (size_t) (yylvlim - yylvals);
709272651Sbapt
710272651Sbapt                s += YYLVQUEUEGROWTH;
711272651Sbapt                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
712272651Sbapt                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
713272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
714272651Sbapt                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
715272651Sbapt#endif
716272651Sbapt                yylvp   = yylve = yylvals + p;
717272651Sbapt                yylvlim = yylvals + s;
718272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
719272651Sbapt                yylpp   = yylpe = yylpsns + p;
720272651Sbapt                yylplim = yylpsns + s;
721272651Sbapt#endif
722272651Sbapt                yylexp  = yylexemes + p;
723272651Sbapt            }
724272651Sbapt            *yylexp = (short) YYLEX;
725272651Sbapt            *yylvp++ = yylval;
726272651Sbapt            yylve++;
727272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
728272651Sbapt            *yylpp++ = yylloc;
729272651Sbapt            yylpe++;
730272651Sbapt#endif
731272651Sbapt            yychar = *yylexp++;
732272651Sbapt            break;
733272651Sbapt        }
734272651Sbapt        /* normal operation, no conflict encountered */
735272651Sbapt#endif /* YYBTYACC */
736272651Sbapt        yychar = YYLEX;
737272651Sbapt#if YYBTYACC
738272651Sbapt        } while (0);
739272651Sbapt#endif /* YYBTYACC */
740272651Sbapt        if (yychar < 0) yychar = YYEOF;
741272651Sbapt        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
742272651Sbapt#if YYDEBUG
743272651Sbapt        if (yydebug)
744272651Sbapt        {
745272651Sbapt            yys = yyname[YYTRANSLATE(yychar)];
746272651Sbapt            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
747272651Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
748272651Sbapt#ifdef YYSTYPE_TOSTRING
749272651Sbapt#if YYBTYACC
750272651Sbapt            if (!yytrial)
751272651Sbapt#endif /* YYBTYACC */
752272651Sbapt                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
753272651Sbapt#endif
754272651Sbapt            fputc('\n', stderr);
755272651Sbapt        }
756272651Sbapt#endif
757272651Sbapt    }
758272651Sbapt#if YYBTYACC
759272651Sbapt
760272651Sbapt    /* Do we have a conflict? */
761272651Sbapt    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
762272651Sbapt        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
763272651Sbapt    {
764272651Sbapt        YYINT ctry;
765272651Sbapt
766272651Sbapt        if (yypath)
767272651Sbapt        {
768272651Sbapt            YYParseState *save;
769272651Sbapt#if YYDEBUG
770272651Sbapt            if (yydebug)
771272651Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
772272651Sbapt                                YYDEBUGSTR, yydepth, yystate);
773272651Sbapt#endif
774272651Sbapt            /* Switch to the next conflict context */
775272651Sbapt            save = yypath;
776272651Sbapt            yypath = save->save;
777272651Sbapt            save->save = NULL;
778272651Sbapt            ctry = save->ctry;
779272651Sbapt            if (save->state != yystate) YYABORT;
780272651Sbapt            yyFreeState(save);
781272651Sbapt
782272651Sbapt        }
783272651Sbapt        else
784272651Sbapt        {
785272651Sbapt
786272651Sbapt            /* Unresolved conflict - start/continue trial parse */
787272651Sbapt            YYParseState *save;
788272651Sbapt#if YYDEBUG
789272651Sbapt            if (yydebug)
790272651Sbapt            {
791272651Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
792272651Sbapt                if (yyps->save)
793272651Sbapt                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
794272651Sbapt                else
795272651Sbapt                    fputs("Starting trial parse.\n", stderr);
796272651Sbapt            }
797272651Sbapt#endif
798272651Sbapt            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
799272651Sbapt            if (save == NULL) goto yyenomem;
800272651Sbapt            save->save            = yyps->save;
801272651Sbapt            save->state           = yystate;
802272651Sbapt            save->errflag         = yyerrflag;
803272651Sbapt            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
804272651Sbapt            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
805272651Sbapt            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
806272651Sbapt            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
807272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
808272651Sbapt            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
809272651Sbapt            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
810272651Sbapt#endif
811272651Sbapt            ctry                  = yytable[yyn];
812272651Sbapt            if (yyctable[ctry] == -1)
813272651Sbapt            {
814272651Sbapt#if YYDEBUG
815272651Sbapt                if (yydebug && yychar >= YYEOF)
816272651Sbapt                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
817272651Sbapt#endif
818272651Sbapt                ctry++;
819272651Sbapt            }
820272651Sbapt            save->ctry = ctry;
821272651Sbapt            if (yyps->save == NULL)
822272651Sbapt            {
823272651Sbapt                /* If this is a first conflict in the stack, start saving lexemes */
824272651Sbapt                if (!yylexemes)
825272651Sbapt                {
826272651Sbapt                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
827272651Sbapt                    if (yylexemes == NULL) goto yyenomem;
828272651Sbapt                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
829272651Sbapt                    if (yylvals == NULL) goto yyenomem;
830272651Sbapt                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
831272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
832272651Sbapt                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
833272651Sbapt                    if (yylpsns == NULL) goto yyenomem;
834272651Sbapt                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
835272651Sbapt#endif
836272651Sbapt                }
837272651Sbapt                if (yylvp == yylve)
838272651Sbapt                {
839272651Sbapt                    yylvp  = yylve = yylvals;
840272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
841272651Sbapt                    yylpp  = yylpe = yylpsns;
842272651Sbapt#endif
843272651Sbapt                    yylexp = yylexemes;
844272651Sbapt                    if (yychar >= YYEOF)
845272651Sbapt                    {
846272651Sbapt                        *yylve++ = yylval;
847272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
848272651Sbapt                        *yylpe++ = yylloc;
849272651Sbapt#endif
850272651Sbapt                        *yylexp  = (short) yychar;
851272651Sbapt                        yychar   = YYEMPTY;
852272651Sbapt                    }
853272651Sbapt                }
854272651Sbapt            }
855272651Sbapt            if (yychar >= YYEOF)
856272651Sbapt            {
857272651Sbapt                yylvp--;
858272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
859272651Sbapt                yylpp--;
860272651Sbapt#endif
861272651Sbapt                yylexp--;
862272651Sbapt                yychar = YYEMPTY;
863272651Sbapt            }
864272651Sbapt            save->lexeme = (int) (yylvp - yylvals);
865272651Sbapt            yyps->save   = save;
866272651Sbapt        }
867272651Sbapt        if (yytable[yyn] == ctry)
868272651Sbapt        {
869272651Sbapt#if YYDEBUG
870272651Sbapt            if (yydebug)
871272651Sbapt                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
872272651Sbapt                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
873272651Sbapt#endif
874272651Sbapt            if (yychar < 0)
875272651Sbapt            {
876272651Sbapt                yylvp++;
877272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
878272651Sbapt                yylpp++;
879272651Sbapt#endif
880272651Sbapt                yylexp++;
881272651Sbapt            }
882272651Sbapt            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
883272651Sbapt                goto yyoverflow;
884272651Sbapt            yystate = yyctable[ctry];
885272651Sbapt            *++yystack.s_mark = (short) yystate;
886272651Sbapt            *++yystack.l_mark = yylval;
887272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
888272651Sbapt            *++yystack.p_mark = yylloc;
889272651Sbapt#endif
890272651Sbapt            yychar  = YYEMPTY;
891272651Sbapt            if (yyerrflag > 0) --yyerrflag;
892272651Sbapt            goto yyloop;
893272651Sbapt        }
894272651Sbapt        else
895272651Sbapt        {
896272651Sbapt            yyn = yyctable[ctry];
897272651Sbapt            goto yyreduce;
898272651Sbapt        }
899272651Sbapt    } /* End of code dealing with conflicts */
900272651Sbapt#endif /* YYBTYACC */
901272651Sbapt    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
902272651Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
903272651Sbapt    {
904272651Sbapt#if YYDEBUG
905272651Sbapt        if (yydebug)
906272651Sbapt            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
907272651Sbapt                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
908272651Sbapt#endif
909272651Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
910272651Sbapt        yystate = yytable[yyn];
911272651Sbapt        *++yystack.s_mark = yytable[yyn];
912272651Sbapt        *++yystack.l_mark = yylval;
913272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
914272651Sbapt        *++yystack.p_mark = yylloc;
915272651Sbapt#endif
916272651Sbapt        yychar = YYEMPTY;
917272651Sbapt        if (yyerrflag > 0)  --yyerrflag;
918272651Sbapt        goto yyloop;
919272651Sbapt    }
920272651Sbapt    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
921272651Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
922272651Sbapt    {
923272651Sbapt        yyn = yytable[yyn];
924272651Sbapt        goto yyreduce;
925272651Sbapt    }
926272651Sbapt    if (yyerrflag != 0) goto yyinrecovery;
927272651Sbapt#if YYBTYACC
928272651Sbapt
929272651Sbapt    yynewerrflag = 1;
930272651Sbapt    goto yyerrhandler;
931272651Sbapt    goto yyerrlab;
932272651Sbapt
933272651Sbaptyyerrlab:
934272651Sbapt    yynewerrflag = 0;
935272651Sbaptyyerrhandler:
936272651Sbapt    while (yyps->save)
937272651Sbapt    {
938272651Sbapt        int ctry;
939272651Sbapt        YYParseState *save = yyps->save;
940272651Sbapt#if YYDEBUG
941272651Sbapt        if (yydebug)
942272651Sbapt            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
943272651Sbapt                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
944272651Sbapt                    (int)(yylvp - yylvals - yyps->save->lexeme));
945272651Sbapt#endif
946272651Sbapt        /* Memorize most forward-looking error state in case it's really an error. */
947272651Sbapt        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
948272651Sbapt        {
949272651Sbapt            /* Free old saved error context state */
950272651Sbapt            if (yyerrctx) yyFreeState(yyerrctx);
951272651Sbapt            /* Create and fill out new saved error context state */
952272651Sbapt            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
953272651Sbapt            if (yyerrctx == NULL) goto yyenomem;
954272651Sbapt            yyerrctx->save           = yyps->save;
955272651Sbapt            yyerrctx->state          = yystate;
956272651Sbapt            yyerrctx->errflag        = yyerrflag;
957272651Sbapt            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
958272651Sbapt            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
959272651Sbapt            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
960272651Sbapt            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
961272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
962272651Sbapt            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
963272651Sbapt            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
964272651Sbapt#endif
965272651Sbapt            yyerrctx->lexeme         = (int) (yylvp - yylvals);
966272651Sbapt        }
967272651Sbapt        yylvp          = yylvals   + save->lexeme;
968272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
969272651Sbapt        yylpp          = yylpsns   + save->lexeme;
970272651Sbapt#endif
971272651Sbapt        yylexp         = yylexemes + save->lexeme;
972272651Sbapt        yychar         = YYEMPTY;
973272651Sbapt        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
974272651Sbapt        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
975272651Sbapt        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
976272651Sbapt        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
977272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
978272651Sbapt        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
979272651Sbapt        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
980272651Sbapt#endif
981272651Sbapt        ctry           = ++save->ctry;
982272651Sbapt        yystate        = save->state;
983272651Sbapt        /* We tried shift, try reduce now */
984272651Sbapt        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
985272651Sbapt        yyps->save     = save->save;
986272651Sbapt        save->save     = NULL;
987272651Sbapt        yyFreeState(save);
988272651Sbapt
989272651Sbapt        /* Nothing left on the stack -- error */
990272651Sbapt        if (!yyps->save)
991272651Sbapt        {
992272651Sbapt#if YYDEBUG
993272651Sbapt            if (yydebug)
994272651Sbapt                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
995272651Sbapt                                YYPREFIX, yydepth);
996272651Sbapt#endif
997272651Sbapt            /* Restore state as it was in the most forward-advanced error */
998272651Sbapt            yylvp          = yylvals   + yyerrctx->lexeme;
999272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1000272651Sbapt            yylpp          = yylpsns   + yyerrctx->lexeme;
1001272651Sbapt#endif
1002272651Sbapt            yylexp         = yylexemes + yyerrctx->lexeme;
1003272651Sbapt            yychar         = yylexp[-1];
1004272651Sbapt            yylval         = yylvp[-1];
1005272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1006272651Sbapt            yylloc         = yylpp[-1];
1007272651Sbapt#endif
1008272651Sbapt            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1009272651Sbapt            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1010272651Sbapt            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1011272651Sbapt            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1012272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1013272651Sbapt            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1014272651Sbapt            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1015272651Sbapt#endif
1016272651Sbapt            yystate        = yyerrctx->state;
1017272651Sbapt            yyFreeState(yyerrctx);
1018272651Sbapt            yyerrctx       = NULL;
1019272651Sbapt        }
1020272651Sbapt        yynewerrflag = 1;
1021272651Sbapt    }
1022272651Sbapt    if (yynewerrflag == 0) goto yyinrecovery;
1023272651Sbapt#endif /* YYBTYACC */
1024272651Sbapt
1025272651Sbapt    YYERROR_CALL("syntax error");
1026272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1027272651Sbapt    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1028272651Sbapt#endif
1029272651Sbapt
1030272651Sbapt#if !YYBTYACC
1031272651Sbapt    goto yyerrlab;
1032272651Sbaptyyerrlab:
1033272651Sbapt#endif
1034272651Sbapt    ++yynerrs;
1035272651Sbapt
1036272651Sbaptyyinrecovery:
1037272651Sbapt    if (yyerrflag < 3)
1038272651Sbapt    {
1039272651Sbapt        yyerrflag = 3;
1040272651Sbapt        for (;;)
1041272651Sbapt        {
1042272651Sbapt            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1043272651Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1044272651Sbapt            {
1045272651Sbapt#if YYDEBUG
1046272651Sbapt                if (yydebug)
1047272651Sbapt                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1048272651Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1049272651Sbapt#endif
1050272651Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1051272651Sbapt                yystate = yytable[yyn];
1052272651Sbapt                *++yystack.s_mark = yytable[yyn];
1053272651Sbapt                *++yystack.l_mark = yylval;
1054272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1055272651Sbapt                /* lookahead position is error end position */
1056272651Sbapt                yyerror_loc_range[1] = yylloc;
1057272651Sbapt                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1058272651Sbapt                *++yystack.p_mark = yyloc;
1059272651Sbapt#endif
1060272651Sbapt                goto yyloop;
1061272651Sbapt            }
1062272651Sbapt            else
1063272651Sbapt            {
1064272651Sbapt#if YYDEBUG
1065272651Sbapt                if (yydebug)
1066272651Sbapt                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1067272651Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1068272651Sbapt#endif
1069272651Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1070272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1071272651Sbapt                /* the current TOS position is the error start position */
1072272651Sbapt                yyerror_loc_range[0] = *yystack.p_mark;
1073272651Sbapt#endif
1074272651Sbapt#if defined(YYDESTRUCT_CALL)
1075272651Sbapt#if YYBTYACC
1076272651Sbapt                if (!yytrial)
1077272651Sbapt#endif /* YYBTYACC */
1078272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1079272651Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1080272651Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1081272651Sbapt#else
1082272651Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1083272651Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark);
1084272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1085272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1086272651Sbapt                --yystack.s_mark;
1087272651Sbapt                --yystack.l_mark;
1088272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1089272651Sbapt                --yystack.p_mark;
1090272651Sbapt#endif
1091272651Sbapt            }
1092272651Sbapt        }
1093272651Sbapt    }
1094272651Sbapt    else
1095272651Sbapt    {
1096272651Sbapt        if (yychar == YYEOF) goto yyabort;
1097272651Sbapt#if YYDEBUG
1098272651Sbapt        if (yydebug)
1099272651Sbapt        {
1100272651Sbapt            yys = yyname[YYTRANSLATE(yychar)];
1101272651Sbapt            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1102272651Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1103272651Sbapt        }
1104272651Sbapt#endif
1105272651Sbapt#if defined(YYDESTRUCT_CALL)
1106272651Sbapt#if YYBTYACC
1107272651Sbapt        if (!yytrial)
1108272651Sbapt#endif /* YYBTYACC */
1109272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1110272651Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1111272651Sbapt#else
1112272651Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1113272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1114272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1115272651Sbapt        yychar = YYEMPTY;
1116272651Sbapt        goto yyloop;
1117272651Sbapt    }
1118272651Sbapt
1119272651Sbaptyyreduce:
1120272651Sbapt    yym = yylen[yyn];
1121272651Sbapt#if YYDEBUG
1122272651Sbapt    if (yydebug)
1123272651Sbapt    {
1124272651Sbapt        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1125272651Sbapt                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1126272651Sbapt#ifdef YYSTYPE_TOSTRING
1127272651Sbapt#if YYBTYACC
1128272651Sbapt        if (!yytrial)
1129272651Sbapt#endif /* YYBTYACC */
1130272651Sbapt            if (yym > 0)
1131272651Sbapt            {
1132272651Sbapt                int i;
1133272651Sbapt                fputc('<', stderr);
1134272651Sbapt                for (i = yym; i > 0; i--)
1135272651Sbapt                {
1136272651Sbapt                    if (i != yym) fputs(", ", stderr);
1137272651Sbapt                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1138272651Sbapt                                           yystack.l_mark[1-i]), stderr);
1139272651Sbapt                }
1140272651Sbapt                fputc('>', stderr);
1141272651Sbapt            }
1142272651Sbapt#endif
1143272651Sbapt        fputc('\n', stderr);
1144272651Sbapt    }
1145272651Sbapt#endif
1146272651Sbapt    if (yym > 0)
1147272651Sbapt        yyval = yystack.l_mark[1-yym];
1148272651Sbapt    else
1149272651Sbapt        memset(&yyval, 0, sizeof yyval);
1150272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1151272651Sbapt
1152272651Sbapt    /* Perform position reduction */
1153272651Sbapt    memset(&yyloc, 0, sizeof(yyloc));
1154272651Sbapt#if YYBTYACC
1155272651Sbapt    if (!yytrial)
1156272651Sbapt#endif /* YYBTYACC */
1157272651Sbapt    {
1158272651Sbapt        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1159272651Sbapt        /* just in case YYERROR is invoked within the action, save
1160272651Sbapt           the start of the rhs as the error start position */
1161272651Sbapt        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1162272651Sbapt    }
1163272651Sbapt#endif
1164272651Sbapt
1165272651Sbapt    switch (yyn)
1166272651Sbapt    {
1167272651Sbaptcase 1:
1168272651Sbapt  if (!yytrial)
1169272651Sbapt#line 65 "btyacc_destroy3.y"
1170272651Sbapt	{ yyval.nlist = yystack.l_mark[-5].nlist; }
1171272651Sbaptbreak;
1172272651Sbaptcase 2:
1173272651Sbapt  if (!yytrial)
1174272651Sbapt#line 67 "btyacc_destroy3.y"
1175272651Sbapt	{ yyval.nlist = yystack.l_mark[-3].nlist; }
1176272651Sbaptbreak;
1177272651Sbaptcase 3:
1178272651Sbapt  if (!yytrial)
1179272651Sbapt#line 70 "btyacc_destroy3.y"
1180272651Sbapt	{ yyval.cval = cGLOBAL; }
1181272651Sbaptbreak;
1182272651Sbaptcase 4:
1183272651Sbapt  if (!yytrial)
1184272651Sbapt#line 71 "btyacc_destroy3.y"
1185272651Sbapt	{ yyval.cval = cLOCAL; }
1186272651Sbaptbreak;
1187272651Sbaptcase 5:
1188272651Sbapt  if (!yytrial)
1189272651Sbapt#line 74 "btyacc_destroy3.y"
1190272651Sbapt	{ yyval.tval = tREAL; }
1191272651Sbaptbreak;
1192272651Sbaptcase 6:
1193272651Sbapt  if (!yytrial)
1194272651Sbapt#line 75 "btyacc_destroy3.y"
1195272651Sbapt	{ yyval.tval = tINTEGER; }
1196272651Sbaptbreak;
1197272651Sbaptcase 7:
1198272651Sbapt  if (!yytrial)
1199272651Sbapt#line 79 "btyacc_destroy3.y"
1200272651Sbapt	{ yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id);
1201272651Sbapt	      yyval.nlist->next = yystack.l_mark[-1].nlist;
1202272651Sbapt	    }
1203272651Sbaptbreak;
1204272651Sbaptcase 8:
1205272651Sbapt  if (!yytrial)
1206272651Sbapt#line 83 "btyacc_destroy3.y"
1207272651Sbapt	{ yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id);
1208272651Sbapt	      yyval.nlist->next = NULL;
1209272651Sbapt	    }
1210272651Sbaptbreak;
1211272651Sbaptcase 9:
1212272651Sbapt  if (!yytrial)
1213272651Sbapt#line 89 "btyacc_destroy3.y"
1214272651Sbapt	{ yyval.nlist = yystack.l_mark[-5].nlist; }
1215272651Sbaptbreak;
1216272651Sbapt#line 1217 "btyacc_destroy3.tab.c"
1217272651Sbapt    default:
1218272651Sbapt        break;
1219272651Sbapt    }
1220272651Sbapt    yystack.s_mark -= yym;
1221272651Sbapt    yystate = *yystack.s_mark;
1222272651Sbapt    yystack.l_mark -= yym;
1223272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1224272651Sbapt    yystack.p_mark -= yym;
1225272651Sbapt#endif
1226272651Sbapt    yym = yylhs[yyn];
1227272651Sbapt    if (yystate == 0 && yym == 0)
1228272651Sbapt    {
1229272651Sbapt#if YYDEBUG
1230272651Sbapt        if (yydebug)
1231272651Sbapt        {
1232272651Sbapt            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1233272651Sbapt#ifdef YYSTYPE_TOSTRING
1234272651Sbapt#if YYBTYACC
1235272651Sbapt            if (!yytrial)
1236272651Sbapt#endif /* YYBTYACC */
1237272651Sbapt                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1238272651Sbapt#endif
1239272651Sbapt            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1240272651Sbapt        }
1241272651Sbapt#endif
1242272651Sbapt        yystate = YYFINAL;
1243272651Sbapt        *++yystack.s_mark = YYFINAL;
1244272651Sbapt        *++yystack.l_mark = yyval;
1245272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1246272651Sbapt        *++yystack.p_mark = yyloc;
1247272651Sbapt#endif
1248272651Sbapt        if (yychar < 0)
1249272651Sbapt        {
1250272651Sbapt#if YYBTYACC
1251272651Sbapt            do {
1252272651Sbapt            if (yylvp < yylve)
1253272651Sbapt            {
1254272651Sbapt                /* we're currently re-reading tokens */
1255272651Sbapt                yylval = *yylvp++;
1256272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1257272651Sbapt                yylloc = *yylpp++;
1258272651Sbapt#endif
1259272651Sbapt                yychar = *yylexp++;
1260272651Sbapt                break;
1261272651Sbapt            }
1262272651Sbapt            if (yyps->save)
1263272651Sbapt            {
1264272651Sbapt                /* in trial mode; save scanner results for future parse attempts */
1265272651Sbapt                if (yylvp == yylvlim)
1266272651Sbapt                {   /* Enlarge lexical value queue */
1267272651Sbapt                    size_t p = (size_t) (yylvp - yylvals);
1268272651Sbapt                    size_t s = (size_t) (yylvlim - yylvals);
1269272651Sbapt
1270272651Sbapt                    s += YYLVQUEUEGROWTH;
1271272651Sbapt                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
1272272651Sbapt                        goto yyenomem;
1273272651Sbapt                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1274272651Sbapt                        goto yyenomem;
1275272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1276272651Sbapt                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1277272651Sbapt                        goto yyenomem;
1278272651Sbapt#endif
1279272651Sbapt                    yylvp   = yylve = yylvals + p;
1280272651Sbapt                    yylvlim = yylvals + s;
1281272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1282272651Sbapt                    yylpp   = yylpe = yylpsns + p;
1283272651Sbapt                    yylplim = yylpsns + s;
1284272651Sbapt#endif
1285272651Sbapt                    yylexp  = yylexemes + p;
1286272651Sbapt                }
1287272651Sbapt                *yylexp = (short) YYLEX;
1288272651Sbapt                *yylvp++ = yylval;
1289272651Sbapt                yylve++;
1290272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1291272651Sbapt                *yylpp++ = yylloc;
1292272651Sbapt                yylpe++;
1293272651Sbapt#endif
1294272651Sbapt                yychar = *yylexp++;
1295272651Sbapt                break;
1296272651Sbapt            }
1297272651Sbapt            /* normal operation, no conflict encountered */
1298272651Sbapt#endif /* YYBTYACC */
1299272651Sbapt            yychar = YYLEX;
1300272651Sbapt#if YYBTYACC
1301272651Sbapt            } while (0);
1302272651Sbapt#endif /* YYBTYACC */
1303272651Sbapt            if (yychar < 0) yychar = YYEOF;
1304272651Sbapt            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1305272651Sbapt#if YYDEBUG
1306272651Sbapt            if (yydebug)
1307272651Sbapt            {
1308272651Sbapt                yys = yyname[YYTRANSLATE(yychar)];
1309272651Sbapt                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
1310272651Sbapt                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1311272651Sbapt            }
1312272651Sbapt#endif
1313272651Sbapt        }
1314272651Sbapt        if (yychar == YYEOF) goto yyaccept;
1315272651Sbapt        goto yyloop;
1316272651Sbapt    }
1317272651Sbapt    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1318272651Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1319272651Sbapt        yystate = yytable[yyn];
1320272651Sbapt    else
1321272651Sbapt        yystate = yydgoto[yym];
1322272651Sbapt#if YYDEBUG
1323272651Sbapt    if (yydebug)
1324272651Sbapt    {
1325272651Sbapt        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1326272651Sbapt#ifdef YYSTYPE_TOSTRING
1327272651Sbapt#if YYBTYACC
1328272651Sbapt        if (!yytrial)
1329272651Sbapt#endif /* YYBTYACC */
1330272651Sbapt            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1331272651Sbapt#endif
1332272651Sbapt        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1333272651Sbapt    }
1334272651Sbapt#endif
1335272651Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1336272651Sbapt    *++yystack.s_mark = (short) yystate;
1337272651Sbapt    *++yystack.l_mark = yyval;
1338272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1339272651Sbapt    *++yystack.p_mark = yyloc;
1340272651Sbapt#endif
1341272651Sbapt    goto yyloop;
1342272651Sbapt#if YYBTYACC
1343272651Sbapt
1344272651Sbapt    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1345272651Sbaptyyvalid:
1346272651Sbapt    if (yypath) YYABORT;
1347272651Sbapt    while (yyps->save)
1348272651Sbapt    {
1349272651Sbapt        YYParseState *save = yyps->save;
1350272651Sbapt        yyps->save = save->save;
1351272651Sbapt        save->save = yypath;
1352272651Sbapt        yypath = save;
1353272651Sbapt    }
1354272651Sbapt#if YYDEBUG
1355272651Sbapt    if (yydebug)
1356272651Sbapt        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1357272651Sbapt                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1358272651Sbapt#endif
1359272651Sbapt    if (yyerrctx)
1360272651Sbapt    {
1361272651Sbapt        yyFreeState(yyerrctx);
1362272651Sbapt        yyerrctx = NULL;
1363272651Sbapt    }
1364272651Sbapt    yylvp          = yylvals + yypath->lexeme;
1365272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1366272651Sbapt    yylpp          = yylpsns + yypath->lexeme;
1367272651Sbapt#endif
1368272651Sbapt    yylexp         = yylexemes + yypath->lexeme;
1369272651Sbapt    yychar         = YYEMPTY;
1370272651Sbapt    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1371272651Sbapt    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1372272651Sbapt    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1373272651Sbapt    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1374272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1375272651Sbapt    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1376272651Sbapt    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1377272651Sbapt#endif
1378272651Sbapt    yystate        = yypath->state;
1379272651Sbapt    goto yyloop;
1380272651Sbapt#endif /* YYBTYACC */
1381272651Sbapt
1382272651Sbaptyyoverflow:
1383272651Sbapt    YYERROR_CALL("yacc stack overflow");
1384272651Sbapt#if YYBTYACC
1385272651Sbapt    goto yyabort_nomem;
1386272651Sbaptyyenomem:
1387272651Sbapt    YYERROR_CALL("memory exhausted");
1388272651Sbaptyyabort_nomem:
1389272651Sbapt#endif /* YYBTYACC */
1390272651Sbapt    yyresult = 2;
1391272651Sbapt    goto yyreturn;
1392272651Sbapt
1393272651Sbaptyyabort:
1394272651Sbapt    yyresult = 1;
1395272651Sbapt    goto yyreturn;
1396272651Sbapt
1397272651Sbaptyyaccept:
1398272651Sbapt#if YYBTYACC
1399272651Sbapt    if (yyps->save) goto yyvalid;
1400272651Sbapt#endif /* YYBTYACC */
1401272651Sbapt    yyresult = 0;
1402272651Sbapt
1403272651Sbaptyyreturn:
1404272651Sbapt#if defined(YYDESTRUCT_CALL)
1405272651Sbapt    if (yychar != YYEOF && yychar != YYEMPTY)
1406272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1407272651Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1408272651Sbapt#else
1409272651Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1410272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1411272651Sbapt
1412272651Sbapt    {
1413272651Sbapt        YYSTYPE *pv;
1414272651Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1415272651Sbapt        YYLTYPE *pp;
1416272651Sbapt
1417272651Sbapt        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1418272651Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1419272651Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1420272651Sbapt#else
1421272651Sbapt        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1422272651Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1423272651Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1424272651Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1425272651Sbapt    }
1426272651Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1427272651Sbapt
1428272651Sbapt#if YYBTYACC
1429272651Sbapt    if (yyerrctx)
1430272651Sbapt    {
1431272651Sbapt        yyFreeState(yyerrctx);
1432272651Sbapt        yyerrctx = NULL;
1433272651Sbapt    }
1434272651Sbapt    while (yyps)
1435272651Sbapt    {
1436272651Sbapt        YYParseState *save = yyps;
1437272651Sbapt        yyps = save->save;
1438272651Sbapt        save->save = NULL;
1439272651Sbapt        yyFreeState(save);
1440272651Sbapt    }
1441272651Sbapt    while (yypath)
1442272651Sbapt    {
1443272651Sbapt        YYParseState *save = yypath;
1444272651Sbapt        yypath = save->save;
1445272651Sbapt        save->save = NULL;
1446272651Sbapt        yyFreeState(save);
1447272651Sbapt    }
1448272651Sbapt#endif /* YYBTYACC */
1449272651Sbapt    yyfreestack(&yystack);
1450272651Sbapt    return (yyresult);
1451272651Sbapt}
1452