1264790Sbapt/* original parser id follows */
2264790Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3272955Srodrigc/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */
4264790Sbapt
5264790Sbapt#define YYBYACC 1
6264790Sbapt#define YYMAJOR 1
7264790Sbapt#define YYMINOR 9
8264790Sbapt#define YYCHECK "yyyymmdd"
9264790Sbapt
10264790Sbapt#define YYEMPTY        (-1)
11264790Sbapt#define yyclearin      (yychar = YYEMPTY)
12264790Sbapt#define yyerrok        (yyerrflag = 0)
13264790Sbapt#define YYRECOVERING() (yyerrflag != 0)
14264790Sbapt#define YYENOMEM       (-2)
15264790Sbapt#define YYEOF          0
16264790Sbapt#undef YYBTYACC
17264790Sbapt#define YYBTYACC 1
18264790Sbapt#define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
19264790Sbapt
20264790Sbapt#ifndef yyparse
21264790Sbapt#define yyparse    calc1_parse
22264790Sbapt#endif /* yyparse */
23264790Sbapt
24264790Sbapt#ifndef yylex
25264790Sbapt#define yylex      calc1_lex
26264790Sbapt#endif /* yylex */
27264790Sbapt
28264790Sbapt#ifndef yyerror
29264790Sbapt#define yyerror    calc1_error
30264790Sbapt#endif /* yyerror */
31264790Sbapt
32264790Sbapt#ifndef yychar
33264790Sbapt#define yychar     calc1_char
34264790Sbapt#endif /* yychar */
35264790Sbapt
36264790Sbapt#ifndef yyval
37264790Sbapt#define yyval      calc1_val
38264790Sbapt#endif /* yyval */
39264790Sbapt
40264790Sbapt#ifndef yylval
41264790Sbapt#define yylval     calc1_lval
42264790Sbapt#endif /* yylval */
43264790Sbapt
44264790Sbapt#ifndef yydebug
45264790Sbapt#define yydebug    calc1_debug
46264790Sbapt#endif /* yydebug */
47264790Sbapt
48264790Sbapt#ifndef yynerrs
49264790Sbapt#define yynerrs    calc1_nerrs
50264790Sbapt#endif /* yynerrs */
51264790Sbapt
52264790Sbapt#ifndef yyerrflag
53264790Sbapt#define yyerrflag  calc1_errflag
54264790Sbapt#endif /* yyerrflag */
55264790Sbapt
56264790Sbapt#ifndef yylhs
57264790Sbapt#define yylhs      calc1_lhs
58264790Sbapt#endif /* yylhs */
59264790Sbapt
60264790Sbapt#ifndef yylen
61264790Sbapt#define yylen      calc1_len
62264790Sbapt#endif /* yylen */
63264790Sbapt
64264790Sbapt#ifndef yydefred
65264790Sbapt#define yydefred   calc1_defred
66264790Sbapt#endif /* yydefred */
67264790Sbapt
68264790Sbapt#ifndef yystos
69264790Sbapt#define yystos     calc1_stos
70264790Sbapt#endif /* yystos */
71264790Sbapt
72264790Sbapt#ifndef yydgoto
73264790Sbapt#define yydgoto    calc1_dgoto
74264790Sbapt#endif /* yydgoto */
75264790Sbapt
76264790Sbapt#ifndef yysindex
77264790Sbapt#define yysindex   calc1_sindex
78264790Sbapt#endif /* yysindex */
79264790Sbapt
80264790Sbapt#ifndef yyrindex
81264790Sbapt#define yyrindex   calc1_rindex
82264790Sbapt#endif /* yyrindex */
83264790Sbapt
84264790Sbapt#ifndef yygindex
85264790Sbapt#define yygindex   calc1_gindex
86264790Sbapt#endif /* yygindex */
87264790Sbapt
88264790Sbapt#ifndef yytable
89264790Sbapt#define yytable    calc1_table
90264790Sbapt#endif /* yytable */
91264790Sbapt
92264790Sbapt#ifndef yycheck
93264790Sbapt#define yycheck    calc1_check
94264790Sbapt#endif /* yycheck */
95264790Sbapt
96264790Sbapt#ifndef yyname
97264790Sbapt#define yyname     calc1_name
98264790Sbapt#endif /* yyname */
99264790Sbapt
100264790Sbapt#ifndef yyrule
101264790Sbapt#define yyrule     calc1_rule
102264790Sbapt#endif /* yyrule */
103264790Sbapt
104264790Sbapt#if YYBTYACC
105264790Sbapt
106264790Sbapt#ifndef yycindex
107264790Sbapt#define yycindex   calc1_cindex
108264790Sbapt#endif /* yycindex */
109264790Sbapt
110264790Sbapt#ifndef yyctable
111264790Sbapt#define yyctable   calc1_ctable
112264790Sbapt#endif /* yyctable */
113264790Sbapt
114264790Sbapt#endif /* YYBTYACC */
115264790Sbapt
116264790Sbapt#define YYPREFIX "calc1_"
117264790Sbapt
118264790Sbapt#define YYPURE 1
119264790Sbapt
120264790Sbapt#line 3 "btyacc_calc1.y"
121264790Sbapt
122264790Sbapt/* http://dinosaur.compilertools.net/yacc/index.html */
123264790Sbapt
124264790Sbapt#include <stdlib.h>
125264790Sbapt#include <stdio.h>
126264790Sbapt#include <ctype.h>
127264790Sbapt#include <math.h>
128264790Sbapt
129264790Sbapttypedef struct interval
130264790Sbapt{
131264790Sbapt    double lo, hi;
132264790Sbapt}
133264790SbaptINTERVAL;
134264790Sbapt
135264790SbaptINTERVAL vmul(double, double, INTERVAL);
136264790SbaptINTERVAL vdiv(double, double, INTERVAL);
137264790Sbapt
138264790Sbaptint dcheck(INTERVAL);
139264790Sbapt
140264790Sbaptdouble dreg[26];
141264790SbaptINTERVAL vreg[26];
142264790Sbapt
143264790Sbapt#line 29 "btyacc_calc1.y"
144264790Sbapt#ifdef YYSTYPE
145264790Sbapt#undef  YYSTYPE_IS_DECLARED
146264790Sbapt#define YYSTYPE_IS_DECLARED 1
147264790Sbapt#endif
148264790Sbapt#ifndef YYSTYPE_IS_DECLARED
149264790Sbapt#define YYSTYPE_IS_DECLARED 1
150264790Sbapttypedef union
151264790Sbapt{
152264790Sbapt	int ival;
153264790Sbapt	double dval;
154264790Sbapt	INTERVAL vval;
155264790Sbapt} YYSTYPE;
156264790Sbapt#endif /* !YYSTYPE_IS_DECLARED */
157264790Sbapt#line 158 "btyacc_calc1.tab.c"
158264790Sbapt
159264790Sbapt/* compatibility with bison */
160264790Sbapt#ifdef YYPARSE_PARAM
161264790Sbapt/* compatibility with FreeBSD */
162264790Sbapt# ifdef YYPARSE_PARAM_TYPE
163264790Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
164264790Sbapt# else
165264790Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
166264790Sbapt# endif
167264790Sbapt#else
168264790Sbapt# define YYPARSE_DECL() yyparse(void)
169264790Sbapt#endif
170264790Sbapt
171264790Sbapt/* Parameters sent to lex. */
172264790Sbapt#ifdef YYLEX_PARAM
173264790Sbapt# ifdef YYLEX_PARAM_TYPE
174264790Sbapt#  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
175264790Sbapt# else
176264790Sbapt#  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
177264790Sbapt# endif
178264790Sbapt# define YYLEX yylex(&yylval, YYLEX_PARAM)
179264790Sbapt#else
180264790Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval)
181264790Sbapt# define YYLEX yylex(&yylval)
182264790Sbapt#endif
183264790Sbapt
184264790Sbapt/* Parameters sent to yyerror. */
185264790Sbapt#ifndef YYERROR_DECL
186264790Sbapt#define YYERROR_DECL() yyerror(const char *s)
187264790Sbapt#endif
188264790Sbapt#ifndef YYERROR_CALL
189264790Sbapt#define YYERROR_CALL(msg) yyerror(msg)
190264790Sbapt#endif
191264790Sbapt
192264790Sbaptextern int YYPARSE_DECL();
193264790Sbapt
194264790Sbapt#define DREG 257
195264790Sbapt#define VREG 258
196264790Sbapt#define CONST 259
197264790Sbapt#define UMINUS 260
198264790Sbapt#define YYERRCODE 256
199264790Sbapttypedef short YYINT;
200264790Sbaptstatic const YYINT calc1_lhs[] = {                       -1,
201264790Sbapt    0,    0,    0,    3,    3,    3,    3,    1,    1,    1,
202264790Sbapt    1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
203264790Sbapt    2,    2,    2,    2,    2,    2,    2,    2,
204264790Sbapt};
205264790Sbaptstatic const YYINT calc1_len[] = {                        2,
206264790Sbapt    0,    3,    3,    1,    1,    3,    3,    1,    1,    3,
207264790Sbapt    3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
208264790Sbapt    3,    3,    3,    3,    3,    3,    2,    3,
209264790Sbapt};
210264790Sbaptstatic const YYINT calc1_defred[] = {                     1,
211264790Sbapt    0,    0,    0,    0,    8,    0,    0,    0,    0,    0,
212264790Sbapt    3,    0,    0,    9,   18,    0,   27,    0,    0,    0,
213264790Sbapt    0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
214264790Sbapt    0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
215264790Sbapt    0,   24,    0,   26,    0,    0,   23,   25,   14,    0,
216264790Sbapt    0,    0,    0,    0,    0,    0,    0,   12,   13,   17,
217264790Sbapt};
218264790Sbaptstatic const YYINT calc1_stos[] = {                       0,
219264790Sbapt  262,  256,  257,  258,  259,   45,   40,  263,  264,  265,
220264790Sbapt   10,   61,   61,  257,  258,  263,  264,  263,  264,   43,
221264790Sbapt   45,   42,   47,   43,   45,   42,   47,   10,   45,   40,
222264790Sbapt  263,  263,  264,   41,   44,   41,  263,  264,  263,  264,
223264790Sbapt  263,  264,  263,  264,  264,  264,  264,  264,  263,  263,
224264790Sbapt   43,   45,   42,   47,  263,  263,  263,  263,  263,   41,
225264790Sbapt};
226264790Sbaptstatic const YYINT calc1_dgoto[] = {                      1,
227264790Sbapt   32,    9,   10,
228264790Sbapt};
229264790Sbaptstatic const YYINT calc1_sindex[] = {                     0,
230264790Sbapt  -40,   -9,  -59,  -54,    0,  -37,  -37,    0,   82,    4,
231264790Sbapt    0,  -34,  -37,    0,    0,    0,    0,  -31,  -25,  -37,
232264790Sbapt  -37,  -37,  -37,  -37,  -37,  -37,  -37,    0,  -34,  -34,
233264790Sbapt  132,    0,   82,    0,  -34,    0,    0,  -12,    0,  -12,
234264790Sbapt    0,    0,    0,    0,  -12,  -12,    0,    0,    0,  112,
235264790Sbapt  -34,  -34,  -34,  -34,  119,  -11,  -11,    0,    0,    0,
236264790Sbapt};
237264790Sbaptstatic const YYINT calc1_rindex[] = {                     0,
238264790Sbapt    0,    0,   51,   58,    0,    0,    0,    0,   11,    0,
239264790Sbapt    0,    0,    0,    0,    0,  -16,    0,    0,    0,    0,
240264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
241264790Sbapt   19,    9,   27,    0,    0,    0,   -5,   41,   -4,   77,
242264790Sbapt   -2,    0,    8,    0,   78,   85,    0,    0,    0,    0,
243264790Sbapt    0,    0,    0,    0,    0,   92,   99,    0,    0,    0,
244264790Sbapt};
245264790Sbapt#if YYBTYACC
246264790Sbaptstatic const YYINT calc1_cindex[] = {                     0,
247264790Sbapt    0,    0,    0,    0,    0,    0,    0,   65,    0,    0,
248264790Sbapt    0,    0,    0,    0,    0,    2,    0,  126,    0,    0,
249264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
250264790Sbapt    0,  138,    0,    0,    0,    0,   17,    0,   24,    0,
251264790Sbapt   31,    0,   38,    0,    0,    0,    0,    0,    0,    0,
252264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
253264790Sbapt};
254264790Sbapt#endif
255264790Sbaptstatic const YYINT calc1_gindex[] = {                     0,
256264790Sbapt    3,  125,    0,
257264790Sbapt};
258264790Sbapt#define YYTABLESIZE 225
259264790Sbaptstatic const YYINT calc1_table[] = {                      7,
260264790Sbapt   11,   12,    7,    8,    6,   30,   13,    6,   16,   18,
261264790Sbapt   29,   14,   35,   28,   31,   36,   26,   24,   16,   25,
262264790Sbapt    5,   27,   37,   39,   41,   43,   20,   14,    6,   26,
263264790Sbapt   53,   49,   50,   23,   27,   54,    7,   55,   10,   11,
264264790Sbapt   26,   12,   14,   14,   14,    0,   14,   29,   14,   16,
265264790Sbapt   20,   13,    0,   56,   57,   58,   59,   20,    6,   20,
266264790Sbapt    9,   20,    0,    9,   23,    6,   23,   18,   23,    0,
267264790Sbapt    9,   26,   26,   26,   11,   26,    0,   26,   29,   29,
268264790Sbapt   29,   20,   29,   20,   29,   20,   22,   19,    0,    0,
269264790Sbapt    0,    0,    9,    9,   21,    9,    0,    9,    0,   18,
270264790Sbapt   18,   10,   18,    0,   18,    0,    6,    0,   11,    3,
271264790Sbapt    0,    9,    0,    0,    0,    0,    0,   22,   19,   22,
272264790Sbapt   19,   22,   19,   26,   24,   21,   25,   21,   27,   21,
273264790Sbapt   17,   19,   10,    0,   10,    0,   10,   33,    0,   11,
274264790Sbapt    0,   11,    0,   11,   38,   40,   42,   44,   45,   46,
275264790Sbapt   47,   48,   34,   53,   51,    0,   52,    0,   54,   60,
276264790Sbapt   53,   51,    0,   52,    0,   54,   18,    6,    0,    0,
277264790Sbapt    3,    0,    9,   53,   51,    0,   52,    0,   54,    6,
278264790Sbapt    0,    0,    3,    0,    9,    0,    0,    0,    0,    0,
279264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
280264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
281264790Sbapt    0,    0,    0,    0,    0,    2,    3,    4,    5,   14,
282264790Sbapt   15,    5,   14,    0,    5,
283264790Sbapt};
284264790Sbaptstatic const YYINT calc1_check[] = {                     40,
285264790Sbapt   10,   61,   40,    1,   45,   40,   61,   45,    6,    7,
286264790Sbapt   45,   10,   44,   10,   12,   41,   42,   43,   10,   45,
287264790Sbapt   10,   47,   20,   21,   22,   23,   10,   44,   10,   42,
288264790Sbapt   42,   29,   30,   10,   47,   47,   10,   35,   44,   44,
289264790Sbapt   10,   44,   41,   42,   43,   -1,   45,   10,   47,   41,
290264790Sbapt   10,   44,   -1,   51,   52,   53,   54,   41,   42,   43,
291264790Sbapt   10,   45,   -1,   47,   41,   42,   43,   10,   45,   -1,
292264790Sbapt   47,   41,   42,   43,   10,   45,   -1,   47,   41,   42,
293264790Sbapt   43,   41,   45,   43,   47,   45,   10,   10,   -1,   -1,
294264790Sbapt   -1,   -1,   42,   43,   10,   45,   -1,   47,   -1,   42,
295264790Sbapt   43,   10,   45,   -1,   47,   -1,   42,   43,   10,   45,
296264790Sbapt   -1,   47,   -1,   -1,   -1,   -1,   -1,   41,   41,   43,
297264790Sbapt   43,   45,   45,   42,   43,   41,   45,   43,   47,   45,
298264790Sbapt    6,    7,   41,   -1,   43,   -1,   45,   13,   -1,   41,
299264790Sbapt   -1,   43,   -1,   45,   20,   21,   22,   23,   24,   25,
300264790Sbapt   26,   27,   41,   42,   43,   -1,   45,   -1,   47,   41,
301264790Sbapt   42,   43,   -1,   45,   -1,   47,   41,   42,   43,   -1,
302264790Sbapt   45,   -1,   47,   42,   43,   -1,   45,   -1,   47,   42,
303264790Sbapt   43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,
304264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
305264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306264790Sbapt   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
307264790Sbapt  258,  259,  257,   -1,  259,
308264790Sbapt};
309264790Sbapt#if YYBTYACC
310264790Sbaptstatic const YYINT calc1_ctable[] = {                    20,
311264790Sbapt   16,   -1,   21,   16,   -1,   22,   16,   -1,   23,   16,
312264790Sbapt   -1,    4,   16,   -1,   14,   16,   -1,   34,   16,   -1,
313264790Sbapt   10,   16,   -1,   11,   16,   -1,   12,   16,   -1,   13,
314272955Srodrigc   16,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
315272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
316272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
317272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
318272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
319272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
320272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
321272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
322272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
323272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
324272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
325272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
326272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
327272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
328272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
329272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
330272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
331272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
332272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
333272955Srodrigc   -1,   -1,   -1,   -1,
334264790Sbapt};
335264790Sbapt#endif
336264790Sbapt#define YYFINAL 1
337264790Sbapt#ifndef YYDEBUG
338264790Sbapt#define YYDEBUG 0
339264790Sbapt#endif
340264790Sbapt#define YYMAXTOKEN 260
341264790Sbapt#define YYUNDFTOKEN 266
342264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
343264790Sbapt#if YYDEBUG
344264790Sbaptstatic const char *const calc1_name[] = {
345264790Sbapt
346264790Sbapt"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
347264790Sbapt0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,
348264790Sbapt0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
349264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
350264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
351264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
352264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
353264790Sbapt"error","DREG","VREG","CONST","UMINUS","$accept","lines","dexp","vexp","line",
354264790Sbapt"illegal-symbol",
355264790Sbapt};
356264790Sbaptstatic const char *const calc1_rule[] = {
357264790Sbapt"$accept : lines",
358264790Sbapt"lines :",
359264790Sbapt"lines : lines line '\\n'",
360264790Sbapt"lines : lines error '\\n'",
361264790Sbapt"line : dexp",
362264790Sbapt"line : vexp",
363264790Sbapt"line : DREG '=' dexp",
364264790Sbapt"line : VREG '=' vexp",
365264790Sbapt"dexp : CONST",
366264790Sbapt"dexp : DREG",
367264790Sbapt"dexp : dexp '+' dexp",
368264790Sbapt"dexp : dexp '-' dexp",
369264790Sbapt"dexp : dexp '*' dexp",
370264790Sbapt"dexp : dexp '/' dexp",
371264790Sbapt"dexp : '-' dexp",
372264790Sbapt"dexp : '(' dexp ')'",
373264790Sbapt"vexp : dexp",
374264790Sbapt"vexp : '(' dexp ',' dexp ')'",
375264790Sbapt"vexp : VREG",
376264790Sbapt"vexp : vexp '+' vexp",
377264790Sbapt"vexp : dexp '+' vexp",
378264790Sbapt"vexp : vexp '-' vexp",
379264790Sbapt"vexp : dexp '-' vexp",
380264790Sbapt"vexp : vexp '*' vexp",
381264790Sbapt"vexp : dexp '*' vexp",
382264790Sbapt"vexp : vexp '/' vexp",
383264790Sbapt"vexp : dexp '/' vexp",
384264790Sbapt"vexp : '-' vexp",
385264790Sbapt"vexp : '(' vexp ')'",
386264790Sbapt
387264790Sbapt};
388264790Sbapt#endif
389264790Sbapt
390264790Sbaptint      yydebug;
391264790Sbaptint      yynerrs;
392264790Sbapt
393264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
394264790Sbapt#ifndef YYLLOC_DEFAULT
395264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \
396264790Sbaptdo \
397264790Sbapt{ \
398264790Sbapt    if (n == 0) \
399264790Sbapt    { \
400264790Sbapt        (loc).first_line   = ((rhs)[-1]).last_line; \
401264790Sbapt        (loc).first_column = ((rhs)[-1]).last_column; \
402264790Sbapt        (loc).last_line    = ((rhs)[-1]).last_line; \
403264790Sbapt        (loc).last_column  = ((rhs)[-1]).last_column; \
404264790Sbapt    } \
405264790Sbapt    else \
406264790Sbapt    { \
407264790Sbapt        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
408264790Sbapt        (loc).first_column = ((rhs)[ 0 ]).first_column; \
409264790Sbapt        (loc).last_line    = ((rhs)[n-1]).last_line; \
410264790Sbapt        (loc).last_column  = ((rhs)[n-1]).last_column; \
411264790Sbapt    } \
412264790Sbapt} while (0)
413264790Sbapt#endif /* YYLLOC_DEFAULT */
414264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
415264790Sbapt#if YYBTYACC
416264790Sbapt
417264790Sbapt#ifndef YYLVQUEUEGROWTH
418264790Sbapt#define YYLVQUEUEGROWTH 32
419264790Sbapt#endif
420264790Sbapt#endif /* YYBTYACC */
421264790Sbapt
422264790Sbapt/* define the initial stack-sizes */
423264790Sbapt#ifdef YYSTACKSIZE
424264790Sbapt#undef YYMAXDEPTH
425264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
426264790Sbapt#else
427264790Sbapt#ifdef YYMAXDEPTH
428264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
429264790Sbapt#else
430264790Sbapt#define YYSTACKSIZE 10000
431264790Sbapt#define YYMAXDEPTH  10000
432264790Sbapt#endif
433264790Sbapt#endif
434264790Sbapt
435264790Sbapt#ifndef YYINITSTACKSIZE
436264790Sbapt#define YYINITSTACKSIZE 200
437264790Sbapt#endif
438264790Sbapt
439264790Sbapttypedef struct {
440264790Sbapt    unsigned stacksize;
441264790Sbapt    short    *s_base;
442264790Sbapt    short    *s_mark;
443264790Sbapt    short    *s_last;
444264790Sbapt    YYSTYPE  *l_base;
445264790Sbapt    YYSTYPE  *l_mark;
446264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
447264790Sbapt    YYLTYPE  *p_base;
448264790Sbapt    YYLTYPE  *p_mark;
449264790Sbapt#endif
450264790Sbapt} YYSTACKDATA;
451264790Sbapt#if YYBTYACC
452264790Sbapt
453264790Sbaptstruct YYParseState_s
454264790Sbapt{
455264790Sbapt    struct YYParseState_s *save;    /* Previously saved parser state */
456264790Sbapt    YYSTACKDATA            yystack; /* saved parser stack */
457264790Sbapt    int                    state;   /* saved parser state */
458264790Sbapt    int                    errflag; /* saved error recovery status */
459264790Sbapt    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
460264790Sbapt    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
461264790Sbapt};
462264790Sbapttypedef struct YYParseState_s YYParseState;
463264790Sbapt#endif /* YYBTYACC */
464264790Sbapt#line 174 "btyacc_calc1.y"
465264790Sbapt	/* beginning of subroutines section */
466264790Sbapt
467264790Sbaptint
468264790Sbaptmain (void)
469264790Sbapt{
470264790Sbapt    while(!feof(stdin)) {
471264790Sbapt	yyparse();
472264790Sbapt    }
473264790Sbapt    return 0;
474264790Sbapt}
475264790Sbapt
476264790Sbapt#define BSZ 50			/* buffer size for floating point numbers */
477264790Sbapt
478264790Sbaptstatic void
479264790SbaptYYERROR_DECL()
480264790Sbapt{
481264790Sbapt    fprintf(stderr, "%s\n", s);
482264790Sbapt}
483264790Sbapt
484264790Sbapt	/* lexical analysis */
485264790Sbapt
486264790Sbaptstatic int
487264790SbaptYYLEX_DECL()
488264790Sbapt{
489264790Sbapt    int c;
490264790Sbapt
491264790Sbapt    while ((c = getchar()) == ' ')
492264790Sbapt    {				/* skip over blanks */
493264790Sbapt    }
494264790Sbapt
495264790Sbapt    if (isupper(c))
496264790Sbapt    {
497264790Sbapt#if YYPURE
498264790Sbapt	(*yylval).ival = c - 'A';
499264790Sbapt#else
500264790Sbapt	yylval.ival = c - 'A';
501264790Sbapt#endif
502264790Sbapt	return (VREG);
503264790Sbapt    }
504264790Sbapt    if (islower(c))
505264790Sbapt    {
506264790Sbapt#if YYPURE
507264790Sbapt	(*yylval).ival = c - 'a';
508264790Sbapt#else
509264790Sbapt	yylval.ival = c - 'a';
510264790Sbapt#endif
511264790Sbapt	return (DREG);
512264790Sbapt    }
513264790Sbapt
514264790Sbapt    if (isdigit(c) || c == '.')
515264790Sbapt    {
516264790Sbapt	/* gobble up digits, points, exponents */
517264790Sbapt	char buf[BSZ + 1], *cp = buf;
518264790Sbapt	int dot = 0, expr = 0;
519264790Sbapt
520264790Sbapt	for (; (cp - buf) < BSZ; ++cp, c = getchar())
521264790Sbapt	{
522264790Sbapt
523264790Sbapt	    *cp = (char) c;
524264790Sbapt	    if (isdigit(c))
525264790Sbapt		continue;
526264790Sbapt	    if (c == '.')
527264790Sbapt	    {
528264790Sbapt		if (dot++ || expr)
529264790Sbapt		    return ('.');	/* will cause syntax error */
530264790Sbapt		continue;
531264790Sbapt	    }
532264790Sbapt
533264790Sbapt	    if (c == 'e')
534264790Sbapt	    {
535264790Sbapt		if (expr++)
536264790Sbapt		    return ('e');	/*  will  cause  syntax  error  */
537264790Sbapt		continue;
538264790Sbapt	    }
539264790Sbapt
540264790Sbapt	    /*  end  of  number  */
541264790Sbapt	    break;
542264790Sbapt	}
543264790Sbapt	*cp = '\0';
544264790Sbapt
545264790Sbapt	if ((cp - buf) >= BSZ)
546264790Sbapt	    printf("constant  too  long:  truncated\n");
547264790Sbapt	else
548264790Sbapt	    ungetc(c, stdin);	/*  push  back  last  char  read  */
549264790Sbapt#if YYPURE
550264790Sbapt	(*yylval).dval = atof(buf);
551264790Sbapt#else
552264790Sbapt	yylval.dval = atof(buf);
553264790Sbapt#endif
554264790Sbapt	return (CONST);
555264790Sbapt    }
556264790Sbapt    return (c);
557264790Sbapt}
558264790Sbapt
559264790Sbaptstatic INTERVAL
560264790Sbapthilo(double a, double b, double c, double d)
561264790Sbapt{
562264790Sbapt    /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
563264790Sbapt    /*  used  by  *,  /  routines  */
564264790Sbapt    INTERVAL v;
565264790Sbapt
566264790Sbapt    if (a > b)
567264790Sbapt    {
568264790Sbapt	v.hi = a;
569264790Sbapt	v.lo = b;
570264790Sbapt    }
571264790Sbapt    else
572264790Sbapt    {
573264790Sbapt	v.hi = b;
574264790Sbapt	v.lo = a;
575264790Sbapt    }
576264790Sbapt
577264790Sbapt    if (c > d)
578264790Sbapt    {
579264790Sbapt	if (c > v.hi)
580264790Sbapt	    v.hi = c;
581264790Sbapt	if (d < v.lo)
582264790Sbapt	    v.lo = d;
583264790Sbapt    }
584264790Sbapt    else
585264790Sbapt    {
586264790Sbapt	if (d > v.hi)
587264790Sbapt	    v.hi = d;
588264790Sbapt	if (c < v.lo)
589264790Sbapt	    v.lo = c;
590264790Sbapt    }
591264790Sbapt    return (v);
592264790Sbapt}
593264790Sbapt
594264790SbaptINTERVAL
595264790Sbaptvmul(double a, double b, INTERVAL v)
596264790Sbapt{
597264790Sbapt    return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
598264790Sbapt}
599264790Sbapt
600264790Sbaptint
601264790Sbaptdcheck(INTERVAL v)
602264790Sbapt{
603264790Sbapt    if (v.hi >= 0. && v.lo <= 0.)
604264790Sbapt    {
605264790Sbapt	printf("divisor  interval  contains  0.\n");
606264790Sbapt	return (1);
607264790Sbapt    }
608264790Sbapt    return (0);
609264790Sbapt}
610264790Sbapt
611264790SbaptINTERVAL
612264790Sbaptvdiv(double a, double b, INTERVAL v)
613264790Sbapt{
614264790Sbapt    return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
615264790Sbapt}
616272955Srodrigc#line 617 "btyacc_calc1.tab.c"
617264790Sbapt
618264790Sbapt/* For use in generated program */
619264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base)
620264790Sbapt#if YYBTYACC
621264790Sbapt#define yytrial (yyps->save)
622264790Sbapt#endif /* YYBTYACC */
623264790Sbapt
624264790Sbapt#if YYDEBUG
625272955Srodrigc#include <stdio.h>         /* needed for printf */
626264790Sbapt#endif
627264790Sbapt
628272955Srodrigc#include <stdlib.h>        /* needed for malloc, etc */
629272955Srodrigc#include <string.h>        /* needed for memset */
630264790Sbapt
631264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
632264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
633264790Sbapt{
634264790Sbapt    int i;
635264790Sbapt    unsigned newsize;
636264790Sbapt    short *newss;
637264790Sbapt    YYSTYPE *newvs;
638264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
639264790Sbapt    YYLTYPE *newps;
640264790Sbapt#endif
641264790Sbapt
642264790Sbapt    if ((newsize = data->stacksize) == 0)
643264790Sbapt        newsize = YYINITSTACKSIZE;
644264790Sbapt    else if (newsize >= YYMAXDEPTH)
645264790Sbapt        return YYENOMEM;
646264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
647264790Sbapt        newsize = YYMAXDEPTH;
648264790Sbapt
649264790Sbapt    i = (int) (data->s_mark - data->s_base);
650264790Sbapt    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
651264790Sbapt    if (newss == 0)
652264790Sbapt        return YYENOMEM;
653264790Sbapt
654264790Sbapt    data->s_base = newss;
655264790Sbapt    data->s_mark = newss + i;
656264790Sbapt
657264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
658264790Sbapt    if (newvs == 0)
659264790Sbapt        return YYENOMEM;
660264790Sbapt
661264790Sbapt    data->l_base = newvs;
662264790Sbapt    data->l_mark = newvs + i;
663264790Sbapt
664264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
665264790Sbapt    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
666264790Sbapt    if (newps == 0)
667264790Sbapt        return YYENOMEM;
668264790Sbapt
669264790Sbapt    data->p_base = newps;
670264790Sbapt    data->p_mark = newps + i;
671264790Sbapt#endif
672264790Sbapt
673264790Sbapt    data->stacksize = newsize;
674264790Sbapt    data->s_last = data->s_base + newsize - 1;
675264790Sbapt
676264790Sbapt#if YYDEBUG
677264790Sbapt    if (yydebug)
678264790Sbapt        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
679264790Sbapt#endif
680264790Sbapt    return 0;
681264790Sbapt}
682264790Sbapt
683264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
684264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
685264790Sbapt{
686264790Sbapt    free(data->s_base);
687264790Sbapt    free(data->l_base);
688264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
689264790Sbapt    free(data->p_base);
690264790Sbapt#endif
691264790Sbapt    memset(data, 0, sizeof(*data));
692264790Sbapt}
693264790Sbapt#else
694264790Sbapt#define yyfreestack(data) /* nothing */
695264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */
696264790Sbapt#if YYBTYACC
697264790Sbapt
698264790Sbaptstatic YYParseState *
699264790SbaptyyNewState(unsigned size)
700264790Sbapt{
701264790Sbapt    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
702264790Sbapt    if (p == NULL) return NULL;
703264790Sbapt
704264790Sbapt    p->yystack.stacksize = size;
705264790Sbapt    if (size == 0)
706264790Sbapt    {
707264790Sbapt        p->yystack.s_base = NULL;
708264790Sbapt        p->yystack.l_base = NULL;
709264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
710264790Sbapt        p->yystack.p_base = NULL;
711264790Sbapt#endif
712264790Sbapt        return p;
713264790Sbapt    }
714264790Sbapt    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
715264790Sbapt    if (p->yystack.s_base == NULL) return NULL;
716264790Sbapt    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
717264790Sbapt    if (p->yystack.l_base == NULL) return NULL;
718264790Sbapt    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
719264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
720264790Sbapt    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
721264790Sbapt    if (p->yystack.p_base == NULL) return NULL;
722264790Sbapt    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
723264790Sbapt#endif
724264790Sbapt
725264790Sbapt    return p;
726264790Sbapt}
727264790Sbapt
728264790Sbaptstatic void
729264790SbaptyyFreeState(YYParseState *p)
730264790Sbapt{
731264790Sbapt    yyfreestack(&p->yystack);
732264790Sbapt    free(p);
733264790Sbapt}
734264790Sbapt#endif /* YYBTYACC */
735264790Sbapt
736264790Sbapt#define YYABORT  goto yyabort
737264790Sbapt#define YYREJECT goto yyabort
738264790Sbapt#define YYACCEPT goto yyaccept
739264790Sbapt#define YYERROR  goto yyerrlab
740264790Sbapt#if YYBTYACC
741264790Sbapt#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
742264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \
743264790Sbapt                                yyps->save->save == 0) goto yyvalid; } while(0)
744264790Sbapt#endif /* YYBTYACC */
745264790Sbapt
746264790Sbaptint
747264790SbaptYYPARSE_DECL()
748264790Sbapt{
749264790Sbapt    int      yyerrflag;
750264790Sbapt    int      yychar;
751264790Sbapt    YYSTYPE  yyval;
752264790Sbapt    YYSTYPE  yylval;
753264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
754264790Sbapt    YYLTYPE  yyloc; /* position returned by actions */
755264790Sbapt    YYLTYPE  yylloc; /* position from the lexer */
756264790Sbapt#endif
757264790Sbapt
758264790Sbapt    /* variables for the parser stack */
759264790Sbapt    YYSTACKDATA yystack;
760264790Sbapt#if YYBTYACC
761264790Sbapt
762264790Sbapt    /* Current parser state */
763264790Sbapt    static YYParseState *yyps = 0;
764264790Sbapt
765264790Sbapt    /* yypath != NULL: do the full parse, starting at *yypath parser state. */
766264790Sbapt    static YYParseState *yypath = 0;
767264790Sbapt
768264790Sbapt    /* Base of the lexical value queue */
769264790Sbapt    static YYSTYPE *yylvals = 0;
770264790Sbapt
771264790Sbapt    /* Current position at lexical value queue */
772264790Sbapt    static YYSTYPE *yylvp = 0;
773264790Sbapt
774264790Sbapt    /* End position of lexical value queue */
775264790Sbapt    static YYSTYPE *yylve = 0;
776264790Sbapt
777264790Sbapt    /* The last allocated position at the lexical value queue */
778264790Sbapt    static YYSTYPE *yylvlim = 0;
779264790Sbapt
780264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
781264790Sbapt    /* Base of the lexical position queue */
782264790Sbapt    static YYLTYPE *yylpsns = 0;
783264790Sbapt
784264790Sbapt    /* Current position at lexical position queue */
785264790Sbapt    static YYLTYPE *yylpp = 0;
786264790Sbapt
787264790Sbapt    /* End position of lexical position queue */
788264790Sbapt    static YYLTYPE *yylpe = 0;
789264790Sbapt
790264790Sbapt    /* The last allocated position at the lexical position queue */
791264790Sbapt    static YYLTYPE *yylplim = 0;
792264790Sbapt#endif
793264790Sbapt
794264790Sbapt    /* Current position at lexical token queue */
795264790Sbapt    static short  *yylexp = 0;
796264790Sbapt
797264790Sbapt    static short  *yylexemes = 0;
798264790Sbapt#endif /* YYBTYACC */
799264790Sbapt    int yym, yyn, yystate, yyresult;
800264790Sbapt#if YYBTYACC
801264790Sbapt    int yynewerrflag;
802264790Sbapt    YYParseState *yyerrctx = NULL;
803264790Sbapt#endif /* YYBTYACC */
804264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
805264790Sbapt    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
806264790Sbapt#endif
807264790Sbapt#if YYDEBUG
808264790Sbapt    const char *yys;
809264790Sbapt
810264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
811264790Sbapt    {
812264790Sbapt        yyn = *yys;
813264790Sbapt        if (yyn >= '0' && yyn <= '9')
814264790Sbapt            yydebug = yyn - '0';
815264790Sbapt    }
816264790Sbapt    if (yydebug)
817264790Sbapt        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
818264790Sbapt#endif
819264790Sbapt
820264790Sbapt#if YYBTYACC
821264790Sbapt    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
822264790Sbapt    yyps->save = 0;
823264790Sbapt#endif /* YYBTYACC */
824264790Sbapt    yynerrs = 0;
825264790Sbapt    yyerrflag = 0;
826264790Sbapt    yychar = YYEMPTY;
827264790Sbapt    yystate = 0;
828264790Sbapt
829264790Sbapt#if YYPURE
830264790Sbapt    memset(&yystack, 0, sizeof(yystack));
831264790Sbapt#endif
832264790Sbapt
833264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
834264790Sbapt    yystack.s_mark = yystack.s_base;
835264790Sbapt    yystack.l_mark = yystack.l_base;
836264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
837264790Sbapt    yystack.p_mark = yystack.p_base;
838264790Sbapt#endif
839264790Sbapt    yystate = 0;
840264790Sbapt    *yystack.s_mark = 0;
841264790Sbapt
842264790Sbaptyyloop:
843264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
844264790Sbapt    if (yychar < 0)
845264790Sbapt    {
846264790Sbapt#if YYBTYACC
847264790Sbapt        do {
848264790Sbapt        if (yylvp < yylve)
849264790Sbapt        {
850264790Sbapt            /* we're currently re-reading tokens */
851264790Sbapt            yylval = *yylvp++;
852264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
853264790Sbapt            yylloc = *yylpp++;
854264790Sbapt#endif
855264790Sbapt            yychar = *yylexp++;
856264790Sbapt            break;
857264790Sbapt        }
858264790Sbapt        if (yyps->save)
859264790Sbapt        {
860264790Sbapt            /* in trial mode; save scanner results for future parse attempts */
861264790Sbapt            if (yylvp == yylvlim)
862264790Sbapt            {   /* Enlarge lexical value queue */
863272955Srodrigc                size_t p = (size_t) (yylvp - yylvals);
864272955Srodrigc                size_t s = (size_t) (yylvlim - yylvals);
865264790Sbapt
866264790Sbapt                s += YYLVQUEUEGROWTH;
867264790Sbapt                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
868264790Sbapt                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
869264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
870264790Sbapt                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
871264790Sbapt#endif
872264790Sbapt                yylvp   = yylve = yylvals + p;
873264790Sbapt                yylvlim = yylvals + s;
874264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
875264790Sbapt                yylpp   = yylpe = yylpsns + p;
876264790Sbapt                yylplim = yylpsns + s;
877264790Sbapt#endif
878264790Sbapt                yylexp  = yylexemes + p;
879264790Sbapt            }
880264790Sbapt            *yylexp = (short) YYLEX;
881264790Sbapt            *yylvp++ = yylval;
882264790Sbapt            yylve++;
883264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
884264790Sbapt            *yylpp++ = yylloc;
885264790Sbapt            yylpe++;
886264790Sbapt#endif
887264790Sbapt            yychar = *yylexp++;
888264790Sbapt            break;
889264790Sbapt        }
890264790Sbapt        /* normal operation, no conflict encountered */
891264790Sbapt#endif /* YYBTYACC */
892264790Sbapt        yychar = YYLEX;
893264790Sbapt#if YYBTYACC
894264790Sbapt        } while (0);
895264790Sbapt#endif /* YYBTYACC */
896264790Sbapt        if (yychar < 0) yychar = YYEOF;
897264790Sbapt        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
898264790Sbapt#if YYDEBUG
899264790Sbapt        if (yydebug)
900264790Sbapt        {
901264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
902264790Sbapt            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
903264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
904264790Sbapt#ifdef YYSTYPE_TOSTRING
905264790Sbapt#if YYBTYACC
906264790Sbapt            if (!yytrial)
907264790Sbapt#endif /* YYBTYACC */
908264790Sbapt                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
909264790Sbapt#endif
910264790Sbapt            fputc('\n', stderr);
911264790Sbapt        }
912264790Sbapt#endif
913264790Sbapt    }
914264790Sbapt#if YYBTYACC
915264790Sbapt
916264790Sbapt    /* Do we have a conflict? */
917264790Sbapt    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
918264790Sbapt        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
919264790Sbapt    {
920264790Sbapt        YYINT ctry;
921264790Sbapt
922264790Sbapt        if (yypath)
923264790Sbapt        {
924264790Sbapt            YYParseState *save;
925264790Sbapt#if YYDEBUG
926264790Sbapt            if (yydebug)
927264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
928264790Sbapt                                YYDEBUGSTR, yydepth, yystate);
929264790Sbapt#endif
930264790Sbapt            /* Switch to the next conflict context */
931264790Sbapt            save = yypath;
932264790Sbapt            yypath = save->save;
933264790Sbapt            save->save = NULL;
934264790Sbapt            ctry = save->ctry;
935264790Sbapt            if (save->state != yystate) YYABORT;
936264790Sbapt            yyFreeState(save);
937264790Sbapt
938264790Sbapt        }
939264790Sbapt        else
940264790Sbapt        {
941264790Sbapt
942264790Sbapt            /* Unresolved conflict - start/continue trial parse */
943264790Sbapt            YYParseState *save;
944264790Sbapt#if YYDEBUG
945264790Sbapt            if (yydebug)
946264790Sbapt            {
947264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
948264790Sbapt                if (yyps->save)
949264790Sbapt                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
950264790Sbapt                else
951264790Sbapt                    fputs("Starting trial parse.\n", stderr);
952264790Sbapt            }
953264790Sbapt#endif
954264790Sbapt            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
955264790Sbapt            if (save == NULL) goto yyenomem;
956264790Sbapt            save->save            = yyps->save;
957264790Sbapt            save->state           = yystate;
958264790Sbapt            save->errflag         = yyerrflag;
959264790Sbapt            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
960272955Srodrigc            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
961264790Sbapt            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
962272955Srodrigc            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
963264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
964264790Sbapt            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
965272955Srodrigc            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
966264790Sbapt#endif
967264790Sbapt            ctry                  = yytable[yyn];
968264790Sbapt            if (yyctable[ctry] == -1)
969264790Sbapt            {
970264790Sbapt#if YYDEBUG
971264790Sbapt                if (yydebug && yychar >= YYEOF)
972264790Sbapt                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
973264790Sbapt#endif
974264790Sbapt                ctry++;
975264790Sbapt            }
976264790Sbapt            save->ctry = ctry;
977264790Sbapt            if (yyps->save == NULL)
978264790Sbapt            {
979264790Sbapt                /* If this is a first conflict in the stack, start saving lexemes */
980264790Sbapt                if (!yylexemes)
981264790Sbapt                {
982264790Sbapt                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
983264790Sbapt                    if (yylexemes == NULL) goto yyenomem;
984264790Sbapt                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
985264790Sbapt                    if (yylvals == NULL) goto yyenomem;
986264790Sbapt                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
987264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
988264790Sbapt                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
989264790Sbapt                    if (yylpsns == NULL) goto yyenomem;
990264790Sbapt                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
991264790Sbapt#endif
992264790Sbapt                }
993264790Sbapt                if (yylvp == yylve)
994264790Sbapt                {
995264790Sbapt                    yylvp  = yylve = yylvals;
996264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
997264790Sbapt                    yylpp  = yylpe = yylpsns;
998264790Sbapt#endif
999264790Sbapt                    yylexp = yylexemes;
1000264790Sbapt                    if (yychar >= YYEOF)
1001264790Sbapt                    {
1002264790Sbapt                        *yylve++ = yylval;
1003264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1004264790Sbapt                        *yylpe++ = yylloc;
1005264790Sbapt#endif
1006264790Sbapt                        *yylexp  = (short) yychar;
1007264790Sbapt                        yychar   = YYEMPTY;
1008264790Sbapt                    }
1009264790Sbapt                }
1010264790Sbapt            }
1011264790Sbapt            if (yychar >= YYEOF)
1012264790Sbapt            {
1013264790Sbapt                yylvp--;
1014264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1015264790Sbapt                yylpp--;
1016264790Sbapt#endif
1017264790Sbapt                yylexp--;
1018264790Sbapt                yychar = YYEMPTY;
1019264790Sbapt            }
1020272955Srodrigc            save->lexeme = (int) (yylvp - yylvals);
1021264790Sbapt            yyps->save   = save;
1022264790Sbapt        }
1023264790Sbapt        if (yytable[yyn] == ctry)
1024264790Sbapt        {
1025264790Sbapt#if YYDEBUG
1026264790Sbapt            if (yydebug)
1027264790Sbapt                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1028264790Sbapt                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1029264790Sbapt#endif
1030264790Sbapt            if (yychar < 0)
1031264790Sbapt            {
1032264790Sbapt                yylvp++;
1033264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1034264790Sbapt                yylpp++;
1035264790Sbapt#endif
1036264790Sbapt                yylexp++;
1037264790Sbapt            }
1038264790Sbapt            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1039264790Sbapt                goto yyoverflow;
1040264790Sbapt            yystate = yyctable[ctry];
1041264790Sbapt            *++yystack.s_mark = (short) yystate;
1042264790Sbapt            *++yystack.l_mark = yylval;
1043264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1044264790Sbapt            *++yystack.p_mark = yylloc;
1045264790Sbapt#endif
1046264790Sbapt            yychar  = YYEMPTY;
1047264790Sbapt            if (yyerrflag > 0) --yyerrflag;
1048264790Sbapt            goto yyloop;
1049264790Sbapt        }
1050264790Sbapt        else
1051264790Sbapt        {
1052264790Sbapt            yyn = yyctable[ctry];
1053264790Sbapt            goto yyreduce;
1054264790Sbapt        }
1055264790Sbapt    } /* End of code dealing with conflicts */
1056264790Sbapt#endif /* YYBTYACC */
1057264790Sbapt    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1058264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1059264790Sbapt    {
1060264790Sbapt#if YYDEBUG
1061264790Sbapt        if (yydebug)
1062264790Sbapt            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1063264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1064264790Sbapt#endif
1065264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1066264790Sbapt        yystate = yytable[yyn];
1067264790Sbapt        *++yystack.s_mark = yytable[yyn];
1068264790Sbapt        *++yystack.l_mark = yylval;
1069264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1070264790Sbapt        *++yystack.p_mark = yylloc;
1071264790Sbapt#endif
1072264790Sbapt        yychar = YYEMPTY;
1073264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
1074264790Sbapt        goto yyloop;
1075264790Sbapt    }
1076264790Sbapt    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1077264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1078264790Sbapt    {
1079264790Sbapt        yyn = yytable[yyn];
1080264790Sbapt        goto yyreduce;
1081264790Sbapt    }
1082264790Sbapt    if (yyerrflag != 0) goto yyinrecovery;
1083264790Sbapt#if YYBTYACC
1084264790Sbapt
1085264790Sbapt    yynewerrflag = 1;
1086264790Sbapt    goto yyerrhandler;
1087264790Sbapt    goto yyerrlab;
1088264790Sbapt
1089264790Sbaptyyerrlab:
1090264790Sbapt    yynewerrflag = 0;
1091264790Sbaptyyerrhandler:
1092264790Sbapt    while (yyps->save)
1093264790Sbapt    {
1094264790Sbapt        int ctry;
1095264790Sbapt        YYParseState *save = yyps->save;
1096264790Sbapt#if YYDEBUG
1097264790Sbapt        if (yydebug)
1098264790Sbapt            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1099264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1100264790Sbapt                    (int)(yylvp - yylvals - yyps->save->lexeme));
1101264790Sbapt#endif
1102264790Sbapt        /* Memorize most forward-looking error state in case it's really an error. */
1103264790Sbapt        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1104264790Sbapt        {
1105264790Sbapt            /* Free old saved error context state */
1106264790Sbapt            if (yyerrctx) yyFreeState(yyerrctx);
1107264790Sbapt            /* Create and fill out new saved error context state */
1108264790Sbapt            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1109264790Sbapt            if (yyerrctx == NULL) goto yyenomem;
1110264790Sbapt            yyerrctx->save           = yyps->save;
1111264790Sbapt            yyerrctx->state          = yystate;
1112264790Sbapt            yyerrctx->errflag        = yyerrflag;
1113264790Sbapt            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1114272955Srodrigc            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1115264790Sbapt            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1116272955Srodrigc            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1117264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1118264790Sbapt            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1119272955Srodrigc            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1120264790Sbapt#endif
1121272955Srodrigc            yyerrctx->lexeme         = (int) (yylvp - yylvals);
1122264790Sbapt        }
1123264790Sbapt        yylvp          = yylvals   + save->lexeme;
1124264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1125264790Sbapt        yylpp          = yylpsns   + save->lexeme;
1126264790Sbapt#endif
1127264790Sbapt        yylexp         = yylexemes + save->lexeme;
1128264790Sbapt        yychar         = YYEMPTY;
1129264790Sbapt        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1130272955Srodrigc        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1131264790Sbapt        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1132272955Srodrigc        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1133264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1134264790Sbapt        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1135272955Srodrigc        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1136264790Sbapt#endif
1137264790Sbapt        ctry           = ++save->ctry;
1138264790Sbapt        yystate        = save->state;
1139264790Sbapt        /* We tried shift, try reduce now */
1140264790Sbapt        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1141264790Sbapt        yyps->save     = save->save;
1142264790Sbapt        save->save     = NULL;
1143264790Sbapt        yyFreeState(save);
1144264790Sbapt
1145264790Sbapt        /* Nothing left on the stack -- error */
1146264790Sbapt        if (!yyps->save)
1147264790Sbapt        {
1148264790Sbapt#if YYDEBUG
1149264790Sbapt            if (yydebug)
1150264790Sbapt                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1151264790Sbapt                                YYPREFIX, yydepth);
1152264790Sbapt#endif
1153264790Sbapt            /* Restore state as it was in the most forward-advanced error */
1154264790Sbapt            yylvp          = yylvals   + yyerrctx->lexeme;
1155264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1156264790Sbapt            yylpp          = yylpsns   + yyerrctx->lexeme;
1157264790Sbapt#endif
1158264790Sbapt            yylexp         = yylexemes + yyerrctx->lexeme;
1159264790Sbapt            yychar         = yylexp[-1];
1160264790Sbapt            yylval         = yylvp[-1];
1161264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1162264790Sbapt            yylloc         = yylpp[-1];
1163264790Sbapt#endif
1164264790Sbapt            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1165272955Srodrigc            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1166264790Sbapt            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1167272955Srodrigc            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1168264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1169264790Sbapt            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1170272955Srodrigc            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1171264790Sbapt#endif
1172264790Sbapt            yystate        = yyerrctx->state;
1173264790Sbapt            yyFreeState(yyerrctx);
1174264790Sbapt            yyerrctx       = NULL;
1175264790Sbapt        }
1176264790Sbapt        yynewerrflag = 1;
1177264790Sbapt    }
1178264790Sbapt    if (yynewerrflag == 0) goto yyinrecovery;
1179264790Sbapt#endif /* YYBTYACC */
1180264790Sbapt
1181264790Sbapt    YYERROR_CALL("syntax error");
1182264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1183264790Sbapt    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1184264790Sbapt#endif
1185264790Sbapt
1186264790Sbapt#if !YYBTYACC
1187264790Sbapt    goto yyerrlab;
1188264790Sbaptyyerrlab:
1189264790Sbapt#endif
1190264790Sbapt    ++yynerrs;
1191264790Sbapt
1192264790Sbaptyyinrecovery:
1193264790Sbapt    if (yyerrflag < 3)
1194264790Sbapt    {
1195264790Sbapt        yyerrflag = 3;
1196264790Sbapt        for (;;)
1197264790Sbapt        {
1198264790Sbapt            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1199264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1200264790Sbapt            {
1201264790Sbapt#if YYDEBUG
1202264790Sbapt                if (yydebug)
1203264790Sbapt                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1204264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1205264790Sbapt#endif
1206264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1207264790Sbapt                yystate = yytable[yyn];
1208264790Sbapt                *++yystack.s_mark = yytable[yyn];
1209264790Sbapt                *++yystack.l_mark = yylval;
1210264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1211264790Sbapt                /* lookahead position is error end position */
1212264790Sbapt                yyerror_loc_range[1] = yylloc;
1213264790Sbapt                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1214264790Sbapt                *++yystack.p_mark = yyloc;
1215264790Sbapt#endif
1216264790Sbapt                goto yyloop;
1217264790Sbapt            }
1218264790Sbapt            else
1219264790Sbapt            {
1220264790Sbapt#if YYDEBUG
1221264790Sbapt                if (yydebug)
1222264790Sbapt                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1223264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1224264790Sbapt#endif
1225264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1226264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1227264790Sbapt                /* the current TOS position is the error start position */
1228264790Sbapt                yyerror_loc_range[0] = *yystack.p_mark;
1229264790Sbapt#endif
1230264790Sbapt#if defined(YYDESTRUCT_CALL)
1231264790Sbapt#if YYBTYACC
1232264790Sbapt                if (!yytrial)
1233264790Sbapt#endif /* YYBTYACC */
1234264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1235264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1236264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1237264790Sbapt#else
1238264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1239264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark);
1240264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1241264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1242264790Sbapt                --yystack.s_mark;
1243264790Sbapt                --yystack.l_mark;
1244264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1245264790Sbapt                --yystack.p_mark;
1246264790Sbapt#endif
1247264790Sbapt            }
1248264790Sbapt        }
1249264790Sbapt    }
1250264790Sbapt    else
1251264790Sbapt    {
1252264790Sbapt        if (yychar == YYEOF) goto yyabort;
1253264790Sbapt#if YYDEBUG
1254264790Sbapt        if (yydebug)
1255264790Sbapt        {
1256264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
1257264790Sbapt            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1258264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1259264790Sbapt        }
1260264790Sbapt#endif
1261264790Sbapt#if defined(YYDESTRUCT_CALL)
1262264790Sbapt#if YYBTYACC
1263264790Sbapt        if (!yytrial)
1264264790Sbapt#endif /* YYBTYACC */
1265264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1266264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1267264790Sbapt#else
1268264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1269264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1270264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1271264790Sbapt        yychar = YYEMPTY;
1272264790Sbapt        goto yyloop;
1273264790Sbapt    }
1274264790Sbapt
1275264790Sbaptyyreduce:
1276264790Sbapt    yym = yylen[yyn];
1277264790Sbapt#if YYDEBUG
1278264790Sbapt    if (yydebug)
1279264790Sbapt    {
1280264790Sbapt        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1281264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1282264790Sbapt#ifdef YYSTYPE_TOSTRING
1283264790Sbapt#if YYBTYACC
1284264790Sbapt        if (!yytrial)
1285264790Sbapt#endif /* YYBTYACC */
1286264790Sbapt            if (yym > 0)
1287264790Sbapt            {
1288264790Sbapt                int i;
1289264790Sbapt                fputc('<', stderr);
1290264790Sbapt                for (i = yym; i > 0; i--)
1291264790Sbapt                {
1292264790Sbapt                    if (i != yym) fputs(", ", stderr);
1293264790Sbapt                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1294264790Sbapt                                           yystack.l_mark[1-i]), stderr);
1295264790Sbapt                }
1296264790Sbapt                fputc('>', stderr);
1297264790Sbapt            }
1298264790Sbapt#endif
1299264790Sbapt        fputc('\n', stderr);
1300264790Sbapt    }
1301264790Sbapt#endif
1302264790Sbapt    if (yym > 0)
1303264790Sbapt        yyval = yystack.l_mark[1-yym];
1304264790Sbapt    else
1305264790Sbapt        memset(&yyval, 0, sizeof yyval);
1306264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1307264790Sbapt
1308264790Sbapt    /* Perform position reduction */
1309264790Sbapt    memset(&yyloc, 0, sizeof(yyloc));
1310264790Sbapt#if YYBTYACC
1311264790Sbapt    if (!yytrial)
1312264790Sbapt#endif /* YYBTYACC */
1313264790Sbapt    {
1314264790Sbapt        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1315264790Sbapt        /* just in case YYERROR is invoked within the action, save
1316264790Sbapt           the start of the rhs as the error start position */
1317264790Sbapt        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1318264790Sbapt    }
1319264790Sbapt#endif
1320264790Sbapt
1321264790Sbapt    switch (yyn)
1322264790Sbapt    {
1323264790Sbaptcase 2:
1324264790Sbapt#line 51 "btyacc_calc1.y"
1325264790Sbapt{YYVALID;}
1326264790Sbaptbreak;
1327264790Sbaptcase 3:
1328264790Sbapt#line 52 "btyacc_calc1.y"
1329264790Sbapt{YYVALID;}  if (!yytrial)
1330264790Sbapt#line 53 "btyacc_calc1.y"
1331264790Sbapt{
1332264790Sbapt		yyerrok;
1333264790Sbapt	}
1334264790Sbaptbreak;
1335264790Sbaptcase 4:
1336264790Sbapt  if (!yytrial)
1337264790Sbapt#line 59 "btyacc_calc1.y"
1338264790Sbapt	{
1339264790Sbapt		(void) printf("%15.8f\n", yystack.l_mark[0].dval);
1340264790Sbapt	}
1341264790Sbaptbreak;
1342264790Sbaptcase 5:
1343264790Sbapt  if (!yytrial)
1344264790Sbapt#line 63 "btyacc_calc1.y"
1345264790Sbapt	{
1346264790Sbapt		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[0].vval.lo, yystack.l_mark[0].vval.hi);
1347264790Sbapt	}
1348264790Sbaptbreak;
1349264790Sbaptcase 6:
1350264790Sbapt  if (!yytrial)
1351264790Sbapt#line 67 "btyacc_calc1.y"
1352264790Sbapt	{
1353264790Sbapt		dreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].dval;
1354264790Sbapt	}
1355264790Sbaptbreak;
1356264790Sbaptcase 7:
1357264790Sbapt  if (!yytrial)
1358264790Sbapt#line 71 "btyacc_calc1.y"
1359264790Sbapt	{
1360264790Sbapt		vreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].vval;
1361264790Sbapt	}
1362264790Sbaptbreak;
1363264790Sbaptcase 9:
1364264790Sbapt  if (!yytrial)
1365264790Sbapt#line 78 "btyacc_calc1.y"
1366264790Sbapt	{
1367264790Sbapt		yyval.dval = dreg[yystack.l_mark[0].ival];
1368264790Sbapt	}
1369264790Sbaptbreak;
1370264790Sbaptcase 10:
1371264790Sbapt  if (!yytrial)
1372264790Sbapt#line 82 "btyacc_calc1.y"
1373264790Sbapt	{
1374264790Sbapt		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
1375264790Sbapt	}
1376264790Sbaptbreak;
1377264790Sbaptcase 11:
1378264790Sbapt  if (!yytrial)
1379264790Sbapt#line 86 "btyacc_calc1.y"
1380264790Sbapt	{
1381264790Sbapt		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
1382264790Sbapt	}
1383264790Sbaptbreak;
1384264790Sbaptcase 12:
1385264790Sbapt  if (!yytrial)
1386264790Sbapt#line 90 "btyacc_calc1.y"
1387264790Sbapt	{
1388264790Sbapt		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
1389264790Sbapt	}
1390264790Sbaptbreak;
1391264790Sbaptcase 13:
1392264790Sbapt  if (!yytrial)
1393264790Sbapt#line 94 "btyacc_calc1.y"
1394264790Sbapt	{
1395264790Sbapt		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
1396264790Sbapt	}
1397264790Sbaptbreak;
1398264790Sbaptcase 14:
1399264790Sbapt  if (!yytrial)
1400264790Sbapt#line 98 "btyacc_calc1.y"
1401264790Sbapt	{
1402264790Sbapt		yyval.dval = -yystack.l_mark[0].dval;
1403264790Sbapt	}
1404264790Sbaptbreak;
1405264790Sbaptcase 15:
1406264790Sbapt  if (!yytrial)
1407264790Sbapt#line 102 "btyacc_calc1.y"
1408264790Sbapt	{
1409264790Sbapt		yyval.dval = yystack.l_mark[-1].dval;
1410264790Sbapt	}
1411264790Sbaptbreak;
1412264790Sbaptcase 16:
1413264790Sbapt  if (!yytrial)
1414264790Sbapt#line 108 "btyacc_calc1.y"
1415264790Sbapt	{
1416264790Sbapt		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
1417264790Sbapt	}
1418264790Sbaptbreak;
1419264790Sbaptcase 17:
1420264790Sbapt  if (!yytrial)
1421264790Sbapt#line 112 "btyacc_calc1.y"
1422264790Sbapt	{
1423264790Sbapt		yyval.vval.lo = yystack.l_mark[-3].dval;
1424264790Sbapt		yyval.vval.hi = yystack.l_mark[-1].dval;
1425264790Sbapt		if ( yyval.vval.lo > yyval.vval.hi )
1426264790Sbapt		{
1427264790Sbapt			(void) printf("interval out of order\n");
1428264790Sbapt			YYERROR;
1429264790Sbapt		}
1430264790Sbapt	}
1431264790Sbaptbreak;
1432264790Sbaptcase 18:
1433264790Sbapt  if (!yytrial)
1434264790Sbapt#line 122 "btyacc_calc1.y"
1435264790Sbapt	{
1436264790Sbapt		yyval.vval = vreg[yystack.l_mark[0].ival];
1437264790Sbapt	}
1438264790Sbaptbreak;
1439264790Sbaptcase 19:
1440264790Sbapt  if (!yytrial)
1441264790Sbapt#line 126 "btyacc_calc1.y"
1442264790Sbapt	{
1443264790Sbapt		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
1444264790Sbapt		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
1445264790Sbapt	}
1446264790Sbaptbreak;
1447264790Sbaptcase 20:
1448264790Sbapt  if (!yytrial)
1449264790Sbapt#line 131 "btyacc_calc1.y"
1450264790Sbapt	{
1451264790Sbapt		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
1452264790Sbapt		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
1453264790Sbapt	}
1454264790Sbaptbreak;
1455264790Sbaptcase 21:
1456264790Sbapt  if (!yytrial)
1457264790Sbapt#line 136 "btyacc_calc1.y"
1458264790Sbapt	{
1459264790Sbapt		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
1460264790Sbapt		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
1461264790Sbapt	}
1462264790Sbaptbreak;
1463264790Sbaptcase 22:
1464264790Sbapt  if (!yytrial)
1465264790Sbapt#line 141 "btyacc_calc1.y"
1466264790Sbapt	{
1467264790Sbapt		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
1468264790Sbapt		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
1469264790Sbapt	}
1470264790Sbaptbreak;
1471264790Sbaptcase 23:
1472264790Sbapt  if (!yytrial)
1473264790Sbapt#line 146 "btyacc_calc1.y"
1474264790Sbapt	{
1475264790Sbapt		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1476264790Sbapt	}
1477264790Sbaptbreak;
1478264790Sbaptcase 24:
1479264790Sbapt  if (!yytrial)
1480264790Sbapt#line 150 "btyacc_calc1.y"
1481264790Sbapt	{
1482264790Sbapt		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1483264790Sbapt	}
1484264790Sbaptbreak;
1485264790Sbaptcase 25:
1486264790Sbapt  if (!yytrial)
1487264790Sbapt#line 154 "btyacc_calc1.y"
1488264790Sbapt	{
1489264790Sbapt		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
1490264790Sbapt		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1491264790Sbapt	}
1492264790Sbaptbreak;
1493264790Sbaptcase 26:
1494264790Sbapt  if (!yytrial)
1495264790Sbapt#line 159 "btyacc_calc1.y"
1496264790Sbapt	{
1497264790Sbapt		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
1498264790Sbapt		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1499264790Sbapt	}
1500264790Sbaptbreak;
1501264790Sbaptcase 27:
1502264790Sbapt  if (!yytrial)
1503264790Sbapt#line 164 "btyacc_calc1.y"
1504264790Sbapt	{
1505264790Sbapt		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
1506264790Sbapt		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
1507264790Sbapt	}
1508264790Sbaptbreak;
1509264790Sbaptcase 28:
1510264790Sbapt  if (!yytrial)
1511264790Sbapt#line 169 "btyacc_calc1.y"
1512264790Sbapt	{
1513264790Sbapt		yyval.vval = yystack.l_mark[-1].vval;
1514264790Sbapt	}
1515264790Sbaptbreak;
1516272955Srodrigc#line 1517 "btyacc_calc1.tab.c"
1517264790Sbapt    default:
1518264790Sbapt        break;
1519264790Sbapt    }
1520264790Sbapt    yystack.s_mark -= yym;
1521264790Sbapt    yystate = *yystack.s_mark;
1522264790Sbapt    yystack.l_mark -= yym;
1523264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1524264790Sbapt    yystack.p_mark -= yym;
1525264790Sbapt#endif
1526264790Sbapt    yym = yylhs[yyn];
1527264790Sbapt    if (yystate == 0 && yym == 0)
1528264790Sbapt    {
1529264790Sbapt#if YYDEBUG
1530264790Sbapt        if (yydebug)
1531264790Sbapt        {
1532264790Sbapt            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1533264790Sbapt#ifdef YYSTYPE_TOSTRING
1534264790Sbapt#if YYBTYACC
1535264790Sbapt            if (!yytrial)
1536264790Sbapt#endif /* YYBTYACC */
1537264790Sbapt                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1538264790Sbapt#endif
1539264790Sbapt            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1540264790Sbapt        }
1541264790Sbapt#endif
1542264790Sbapt        yystate = YYFINAL;
1543264790Sbapt        *++yystack.s_mark = YYFINAL;
1544264790Sbapt        *++yystack.l_mark = yyval;
1545264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1546264790Sbapt        *++yystack.p_mark = yyloc;
1547264790Sbapt#endif
1548264790Sbapt        if (yychar < 0)
1549264790Sbapt        {
1550264790Sbapt#if YYBTYACC
1551264790Sbapt            do {
1552264790Sbapt            if (yylvp < yylve)
1553264790Sbapt            {
1554264790Sbapt                /* we're currently re-reading tokens */
1555264790Sbapt                yylval = *yylvp++;
1556264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1557264790Sbapt                yylloc = *yylpp++;
1558264790Sbapt#endif
1559264790Sbapt                yychar = *yylexp++;
1560264790Sbapt                break;
1561264790Sbapt            }
1562264790Sbapt            if (yyps->save)
1563264790Sbapt            {
1564264790Sbapt                /* in trial mode; save scanner results for future parse attempts */
1565264790Sbapt                if (yylvp == yylvlim)
1566264790Sbapt                {   /* Enlarge lexical value queue */
1567272955Srodrigc                    size_t p = (size_t) (yylvp - yylvals);
1568272955Srodrigc                    size_t s = (size_t) (yylvlim - yylvals);
1569264790Sbapt
1570264790Sbapt                    s += YYLVQUEUEGROWTH;
1571264790Sbapt                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
1572264790Sbapt                        goto yyenomem;
1573264790Sbapt                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1574264790Sbapt                        goto yyenomem;
1575264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1576264790Sbapt                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1577264790Sbapt                        goto yyenomem;
1578264790Sbapt#endif
1579264790Sbapt                    yylvp   = yylve = yylvals + p;
1580264790Sbapt                    yylvlim = yylvals + s;
1581264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1582264790Sbapt                    yylpp   = yylpe = yylpsns + p;
1583264790Sbapt                    yylplim = yylpsns + s;
1584264790Sbapt#endif
1585264790Sbapt                    yylexp  = yylexemes + p;
1586264790Sbapt                }
1587264790Sbapt                *yylexp = (short) YYLEX;
1588264790Sbapt                *yylvp++ = yylval;
1589264790Sbapt                yylve++;
1590264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1591264790Sbapt                *yylpp++ = yylloc;
1592264790Sbapt                yylpe++;
1593264790Sbapt#endif
1594264790Sbapt                yychar = *yylexp++;
1595264790Sbapt                break;
1596264790Sbapt            }
1597264790Sbapt            /* normal operation, no conflict encountered */
1598264790Sbapt#endif /* YYBTYACC */
1599264790Sbapt            yychar = YYLEX;
1600264790Sbapt#if YYBTYACC
1601264790Sbapt            } while (0);
1602264790Sbapt#endif /* YYBTYACC */
1603264790Sbapt            if (yychar < 0) yychar = YYEOF;
1604264790Sbapt            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1605264790Sbapt#if YYDEBUG
1606264790Sbapt            if (yydebug)
1607264790Sbapt            {
1608264790Sbapt                yys = yyname[YYTRANSLATE(yychar)];
1609264790Sbapt                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
1610264790Sbapt                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1611264790Sbapt            }
1612264790Sbapt#endif
1613264790Sbapt        }
1614264790Sbapt        if (yychar == YYEOF) goto yyaccept;
1615264790Sbapt        goto yyloop;
1616264790Sbapt    }
1617264790Sbapt    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1618264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1619264790Sbapt        yystate = yytable[yyn];
1620264790Sbapt    else
1621264790Sbapt        yystate = yydgoto[yym];
1622264790Sbapt#if YYDEBUG
1623264790Sbapt    if (yydebug)
1624264790Sbapt    {
1625264790Sbapt        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1626264790Sbapt#ifdef YYSTYPE_TOSTRING
1627264790Sbapt#if YYBTYACC
1628264790Sbapt        if (!yytrial)
1629264790Sbapt#endif /* YYBTYACC */
1630264790Sbapt            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1631264790Sbapt#endif
1632264790Sbapt        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1633264790Sbapt    }
1634264790Sbapt#endif
1635264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1636264790Sbapt    *++yystack.s_mark = (short) yystate;
1637264790Sbapt    *++yystack.l_mark = yyval;
1638264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1639264790Sbapt    *++yystack.p_mark = yyloc;
1640264790Sbapt#endif
1641264790Sbapt    goto yyloop;
1642264790Sbapt#if YYBTYACC
1643264790Sbapt
1644264790Sbapt    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1645264790Sbaptyyvalid:
1646264790Sbapt    if (yypath) YYABORT;
1647264790Sbapt    while (yyps->save)
1648264790Sbapt    {
1649264790Sbapt        YYParseState *save = yyps->save;
1650264790Sbapt        yyps->save = save->save;
1651264790Sbapt        save->save = yypath;
1652264790Sbapt        yypath = save;
1653264790Sbapt    }
1654264790Sbapt#if YYDEBUG
1655264790Sbapt    if (yydebug)
1656264790Sbapt        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1657264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1658264790Sbapt#endif
1659264790Sbapt    if (yyerrctx)
1660264790Sbapt    {
1661264790Sbapt        yyFreeState(yyerrctx);
1662264790Sbapt        yyerrctx = NULL;
1663264790Sbapt    }
1664264790Sbapt    yylvp          = yylvals + yypath->lexeme;
1665264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1666264790Sbapt    yylpp          = yylpsns + yypath->lexeme;
1667264790Sbapt#endif
1668264790Sbapt    yylexp         = yylexemes + yypath->lexeme;
1669264790Sbapt    yychar         = YYEMPTY;
1670264790Sbapt    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1671272955Srodrigc    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1672264790Sbapt    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1673272955Srodrigc    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1674264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1675264790Sbapt    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1676272955Srodrigc    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1677264790Sbapt#endif
1678264790Sbapt    yystate        = yypath->state;
1679264790Sbapt    goto yyloop;
1680264790Sbapt#endif /* YYBTYACC */
1681264790Sbapt
1682264790Sbaptyyoverflow:
1683264790Sbapt    YYERROR_CALL("yacc stack overflow");
1684264790Sbapt#if YYBTYACC
1685264790Sbapt    goto yyabort_nomem;
1686264790Sbaptyyenomem:
1687264790Sbapt    YYERROR_CALL("memory exhausted");
1688264790Sbaptyyabort_nomem:
1689264790Sbapt#endif /* YYBTYACC */
1690264790Sbapt    yyresult = 2;
1691264790Sbapt    goto yyreturn;
1692264790Sbapt
1693264790Sbaptyyabort:
1694264790Sbapt    yyresult = 1;
1695264790Sbapt    goto yyreturn;
1696264790Sbapt
1697264790Sbaptyyaccept:
1698264790Sbapt#if YYBTYACC
1699264790Sbapt    if (yyps->save) goto yyvalid;
1700264790Sbapt#endif /* YYBTYACC */
1701264790Sbapt    yyresult = 0;
1702264790Sbapt
1703264790Sbaptyyreturn:
1704264790Sbapt#if defined(YYDESTRUCT_CALL)
1705264790Sbapt    if (yychar != YYEOF && yychar != YYEMPTY)
1706264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1707264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1708264790Sbapt#else
1709264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1710264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1711264790Sbapt
1712264790Sbapt    {
1713264790Sbapt        YYSTYPE *pv;
1714264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1715264790Sbapt        YYLTYPE *pp;
1716264790Sbapt
1717264790Sbapt        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1718264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1719264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1720264790Sbapt#else
1721264790Sbapt        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1722264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1723264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1724264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1725264790Sbapt    }
1726264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1727264790Sbapt
1728264790Sbapt#if YYBTYACC
1729264790Sbapt    if (yyerrctx)
1730264790Sbapt    {
1731264790Sbapt        yyFreeState(yyerrctx);
1732264790Sbapt        yyerrctx = NULL;
1733264790Sbapt    }
1734264790Sbapt    while (yyps)
1735264790Sbapt    {
1736264790Sbapt        YYParseState *save = yyps;
1737264790Sbapt        yyps = save->save;
1738264790Sbapt        save->save = NULL;
1739264790Sbapt        yyFreeState(save);
1740264790Sbapt    }
1741264790Sbapt    while (yypath)
1742264790Sbapt    {
1743264790Sbapt        YYParseState *save = yypath;
1744264790Sbapt        yypath = save->save;
1745264790Sbapt        save->save = NULL;
1746264790Sbapt        yyFreeState(save);
1747264790Sbapt    }
1748264790Sbapt#endif /* YYBTYACC */
1749264790Sbapt    yyfreestack(&yystack);
1750264790Sbapt    return (yyresult);
1751264790Sbapt}
1752