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