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