varsyntax_calc1.tab.c revision 264790
1260684Skaiw/* original parser id follows */
2260684Skaiw/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3260684Skaiw/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4260684Skaiw
5260684Skaiw#define YYBYACC 1
6260684Skaiw#define YYMAJOR 1
7260684Skaiw#define YYMINOR 9
8260684Skaiw#define YYCHECK "yyyymmdd"
9260684Skaiw
10260684Skaiw#define YYEMPTY        (-1)
11260684Skaiw#define yyclearin      (yychar = YYEMPTY)
12260684Skaiw#define yyerrok        (yyerrflag = 0)
13260684Skaiw#define YYRECOVERING() (yyerrflag != 0)
14260684Skaiw#define YYENOMEM       (-2)
15260684Skaiw#define YYEOF          0
16260684Skaiw#ident "check variant syntax features"
17260684Skaiw#undef YYBTYACC
18260684Skaiw#define YYBTYACC 0
19260684Skaiw#define YYDEBUGSTR YYPREFIX "debug"
20260684Skaiw
21260684Skaiw#ifndef yyparse
22260684Skaiw#define yyparse    varsyntax_calc1_parse
23260684Skaiw#endif /* yyparse */
24260684Skaiw
25260684Skaiw#ifndef yylex
26260684Skaiw#define yylex      varsyntax_calc1_lex
27260684Skaiw#endif /* yylex */
28260684Skaiw
29276371Semaste#ifndef yyerror
30260684Skaiw#define yyerror    varsyntax_calc1_error
31260684Skaiw#endif /* yyerror */
32260684Skaiw
33260684Skaiw#ifndef yychar
34260684Skaiw#define yychar     varsyntax_calc1_char
35260684Skaiw#endif /* yychar */
36260684Skaiw
37260684Skaiw#ifndef yyval
38260684Skaiw#define yyval      varsyntax_calc1_val
39260684Skaiw#endif /* yyval */
40260684Skaiw
41260684Skaiw#ifndef yylval
42260684Skaiw#define yylval     varsyntax_calc1_lval
43260684Skaiw#endif /* yylval */
44260684Skaiw
45260684Skaiw#ifndef yydebug
46260684Skaiw#define yydebug    varsyntax_calc1_debug
47260684Skaiw#endif /* yydebug */
48260684Skaiw
49260684Skaiw#ifndef yynerrs
50260684Skaiw#define yynerrs    varsyntax_calc1_nerrs
51260684Skaiw#endif /* yynerrs */
52260684Skaiw
53260684Skaiw#ifndef yyerrflag
54260684Skaiw#define yyerrflag  varsyntax_calc1_errflag
55260684Skaiw#endif /* yyerrflag */
56260684Skaiw
57260684Skaiw#ifndef yylhs
58260684Skaiw#define yylhs      varsyntax_calc1_lhs
59260684Skaiw#endif /* yylhs */
60260684Skaiw
61260684Skaiw#ifndef yylen
62260684Skaiw#define yylen      varsyntax_calc1_len
63260684Skaiw#endif /* yylen */
64260684Skaiw
65260684Skaiw#ifndef yydefred
66260684Skaiw#define yydefred   varsyntax_calc1_defred
67260684Skaiw#endif /* yydefred */
68260684Skaiw
69260684Skaiw#ifndef yystos
70260684Skaiw#define yystos     varsyntax_calc1_stos
71260684Skaiw#endif /* yystos */
72260684Skaiw
73260684Skaiw#ifndef yydgoto
74260684Skaiw#define yydgoto    varsyntax_calc1_dgoto
75260684Skaiw#endif /* yydgoto */
76260684Skaiw
77260684Skaiw#ifndef yysindex
78260684Skaiw#define yysindex   varsyntax_calc1_sindex
79260684Skaiw#endif /* yysindex */
80260684Skaiw
81260684Skaiw#ifndef yyrindex
82260684Skaiw#define yyrindex   varsyntax_calc1_rindex
83260684Skaiw#endif /* yyrindex */
84260684Skaiw
85260684Skaiw#ifndef yygindex
86260684Skaiw#define yygindex   varsyntax_calc1_gindex
87260684Skaiw#endif /* yygindex */
88260684Skaiw
89260684Skaiw#ifndef yytable
90276371Semaste#define yytable    varsyntax_calc1_table
91260684Skaiw#endif /* yytable */
92260684Skaiw
93260684Skaiw#ifndef yycheck
94260684Skaiw#define yycheck    varsyntax_calc1_check
95260684Skaiw#endif /* yycheck */
96260684Skaiw
97260684Skaiw#ifndef yyname
98260684Skaiw#define yyname     varsyntax_calc1_name
99260684Skaiw#endif /* yyname */
100260684Skaiw
101260684Skaiw#ifndef yyrule
102260684Skaiw#define yyrule     varsyntax_calc1_rule
103260684Skaiw#endif /* yyrule */
104260684Skaiw
105260684Skaiw#if YYBTYACC
106260684Skaiw
107260684Skaiw#ifndef yycindex
108260684Skaiw#define yycindex   varsyntax_calc1_cindex
109260684Skaiw#endif /* yycindex */
110260684Skaiw
111260684Skaiw#ifndef yyctable
112260684Skaiw#define yyctable   varsyntax_calc1_ctable
113260684Skaiw#endif /* yyctable */
114260684Skaiw
115260684Skaiw#endif /* YYBTYACC */
116260684Skaiw
117260684Skaiw#define YYPREFIX "varsyntax_calc1_"
118260684Skaiw
119260684Skaiw#define YYPURE 0
120260684Skaiw
121260684Skaiw#line 3 "varsyntax_calc1.y"
122260684Skaiw
123260684Skaiw/* http://dinosaur.compilertools.net/yacc/index.html * /*/
124260684Skaiw
125260684Skaiw#include <stdlib.h>
126260684Skaiw#include <stdio.h>
127260684Skaiw#include <ctype.h>
128260684Skaiw#include <math.h>
129260684Skaiw
130260684Skaiwtypedef struct interval
131260684Skaiw{
132260684Skaiw    double lo, hi;
133260684Skaiw}
134260684SkaiwINTERVAL;
135260684Skaiw
136260684SkaiwINTERVAL vmul(double, double, INTERVAL);
137260684SkaiwINTERVAL vdiv(double, double, INTERVAL);
138260684Skaiw
139260684Skaiwextern int yylex(void);
140260684Skaiwstatic void yyerror(const char *s);
141260684Skaiw
142260684Skaiwint dcheck(INTERVAL);
143260684Skaiw
144260684Skaiwdouble dreg[26];
145260684SkaiwINTERVAL vreg[26];
146260684Skaiw
147260684Skaiw#line 32 "varsyntax_calc1.y"
148260684Skaiw#ifdef YYSTYPE
149260684Skaiw#undef  YYSTYPE_IS_DECLARED
150260684Skaiw#define YYSTYPE_IS_DECLARED 1
151260684Skaiw#endif
152260684Skaiw#ifndef YYSTYPE_IS_DECLARED
153260684Skaiw#define YYSTYPE_IS_DECLARED 1
154260684Skaiwtypedef union
155260684Skaiw{
156260684Skaiw	int ival;	/* dreg & vreg array index values*/
157260684Skaiw	double dval;	/* floating point values*/
158260684Skaiw	INTERVAL vval;	/* interval values*/
159260684Skaiw} YYSTYPE;
160260684Skaiw#endif /* !YYSTYPE_IS_DECLARED */
161260684Skaiw#line 162 "varsyntax_calc1.tab.c"
162260684Skaiw
163260684Skaiw/* compatibility with bison */
164260684Skaiw#ifdef YYPARSE_PARAM
165260684Skaiw/* compatibility with FreeBSD */
166260684Skaiw# ifdef YYPARSE_PARAM_TYPE
167260684Skaiw#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
168260684Skaiw# else
169260684Skaiw#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
170260684Skaiw# endif
171260684Skaiw#else
172260684Skaiw# define YYPARSE_DECL() yyparse(void)
173260684Skaiw#endif
174260684Skaiw
175260684Skaiw/* Parameters sent to lex. */
176260684Skaiw#ifdef YYLEX_PARAM
177260684Skaiw# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
178260684Skaiw# define YYLEX yylex(YYLEX_PARAM)
179260684Skaiw#else
180260684Skaiw# define YYLEX_DECL() yylex(void)
181260684Skaiw# define YYLEX yylex()
182260684Skaiw#endif
183260684Skaiw
184260684Skaiw/* Parameters sent to yyerror. */
185260684Skaiw#ifndef YYERROR_DECL
186260684Skaiw#define YYERROR_DECL() yyerror(const char *s)
187260684Skaiw#endif
188260684Skaiw#ifndef YYERROR_CALL
189260684Skaiw#define YYERROR_CALL(msg) yyerror(msg)
190260684Skaiw#endif
191260684Skaiw
192260684Skaiwextern int YYPARSE_DECL();
193260684Skaiw
194260684Skaiw#define DREG 257
195260684Skaiw#define VREG 258
196260684Skaiw#define CONST 259
197260684Skaiw#define UMINUS 260
198260684Skaiw#define YYERRCODE 256
199260684Skaiwtypedef short YYINT;
200260684Skaiwstatic const YYINT varsyntax_calc1_lhs[] = {             -1,
201260684Skaiw    3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
202260684Skaiw    1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
203260684Skaiw    2,    2,    2,    2,    2,    2,    2,    2,
204260684Skaiw};
205260684Skaiwstatic const YYINT varsyntax_calc1_len[] = {              2,
206260684Skaiw    0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
207260684Skaiw    3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
208260684Skaiw    3,    3,    3,    3,    3,    3,    2,    3,
209260684Skaiw};
210260684Skaiwstatic const YYINT varsyntax_calc1_defred[] = {           0,
211260684Skaiw    0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
212276371Semaste    0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
213260684Skaiw    0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
214260684Skaiw    0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
215260684Skaiw   12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
216260684Skaiw    0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
217260684Skaiw   13,   17,
218260684Skaiw};
219260684Skaiwstatic const YYINT varsyntax_calc1_stos[] = {             0,
220260684Skaiw  256,  257,  258,  259,   45,   40,  262,  263,  264,   10,
221260684Skaiw   61,   61,  257,  258,  263,  264,  263,  264,   43,   45,
222260684Skaiw   42,   47,   10,   43,   45,   42,   47,   10,   45,   40,
223260684Skaiw  263,  263,  264,   41,   44,   41,  263,  264,  263,  264,
224260684Skaiw  263,  264,  263,  264,  264,  264,  264,  264,  263,  263,
225260684Skaiw   43,   45,   42,   47,   10,   10,  263,  263,  263,  263,
226260684Skaiw  263,   41,
227260684Skaiw};
228260684Skaiwstatic const YYINT varsyntax_calc1_dgoto[] = {            7,
229260684Skaiw   32,    9,    0,
230260684Skaiw};
231260684Skaiwstatic const YYINT varsyntax_calc1_sindex[] = {         -40,
232260684Skaiw   -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
233260684Skaiw  -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
234260684Skaiw  -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
235260684Skaiw   25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
236260684Skaiw    0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
237260684Skaiw  -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
238260684Skaiw    0,    0,
239260684Skaiw};
240260684Skaiwstatic const YYINT varsyntax_calc1_rindex[] = {           0,
241260684Skaiw    0,   38,   44,    0,    0,    0,    0,    0,    0,    0,
242260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
243260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
244260684Skaiw    0,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
245260684Skaiw    0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
246260684Skaiw    0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
247260684Skaiw    0,    0,
248260684Skaiw};
249260684Skaiw#if YYBTYACC
250260684Skaiwstatic const YYINT varsyntax_calc1_cindex[] = {           0,
251260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
252260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
253260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
254260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
255260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257260684Skaiw    0,    0,
258260684Skaiw};
259260684Skaiw#endif
260260684Skaiwstatic const YYINT varsyntax_calc1_gindex[] = {           0,
261260684Skaiw    4,  124,    0,
262260684Skaiw};
263260684Skaiw#define YYTABLESIZE 225
264260684Skaiwstatic const YYINT varsyntax_calc1_table[] = {            6,
265260684Skaiw   16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
266260684Skaiw   29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
267260684Skaiw    0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
268260684Skaiw   21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
269260684Skaiw   56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
270260684Skaiw    0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
271260684Skaiw   10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
272260684Skaiw   22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
273260684Skaiw    9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
274260684Skaiw   18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
275260684Skaiw   11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
276260684Skaiw   53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
277260684Skaiw   10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
278260684Skaiw   36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
279260684Skaiw    0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
280260684Skaiw   48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
281260684Skaiw   51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
282260684Skaiw    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
283260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
284260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
285260684Skaiw    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
286260684Skaiw    0,    0,    0,    0,    0,    1,    2,    3,    4,   13,
287260684Skaiw   14,    4,   13,    0,    4,
288260684Skaiw};
289260684Skaiwstatic const YYINT varsyntax_calc1_check[] = {           40,
290260684Skaiw   10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
291260684Skaiw   45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
292260684Skaiw   -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
293260684Skaiw   42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
294260684Skaiw   10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
295260684Skaiw   -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
296260684Skaiw   10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
297260684Skaiw   10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
298260684Skaiw   43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
299260684Skaiw   47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
300260684Skaiw   45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
301260684Skaiw   42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
302260684Skaiw   43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
303260684Skaiw   41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
304260684Skaiw   -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
305260684Skaiw   27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
306260684Skaiw   43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
307260684Skaiw   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
308260684Skaiw   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
309260684Skaiw   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
310260684Skaiw   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
311260684Skaiw   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
312260684Skaiw  258,  259,  257,   -1,  259,
313260684Skaiw};
314260684Skaiw#define YYFINAL 7
315260684Skaiw#ifndef YYDEBUG
316260684Skaiw#define YYDEBUG 0
317260684Skaiw#endif
318260684Skaiw#define YYMAXTOKEN 260
319260684Skaiw#define YYUNDFTOKEN 266
320260684Skaiw#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
321260684Skaiw#if YYDEBUG
322260684Skaiwstatic const char *const varsyntax_calc1_name[] = {
323260684Skaiw
324260684Skaiw"$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,
325260684Skaiw0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,
326260684Skaiw0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
327260684Skaiw0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
328260684Skaiw0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
329260684Skaiw0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
330260684Skaiw0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
331260684Skaiw"error","DREG","VREG","CONST","UMINUS","$accept","line","dexp","vexp","lines",
332260684Skaiw"illegal-symbol",
333260684Skaiw};
334260684Skaiwstatic const char *const varsyntax_calc1_rule[] = {
335260684Skaiw"$accept : line",
336260684Skaiw"lines :",
337260684Skaiw"lines : lines line",
338260684Skaiw"line : dexp '\\n'",
339260684Skaiw"line : vexp '\\n'",
340260684Skaiw"line : DREG '=' dexp '\\n'",
341260684Skaiw"line : VREG '=' vexp '\\n'",
342260684Skaiw"line : error '\\n'",
343260684Skaiw"dexp : CONST",
344260684Skaiw"dexp : DREG",
345260684Skaiw"dexp : dexp '+' dexp",
346260684Skaiw"dexp : dexp '-' dexp",
347260684Skaiw"dexp : dexp '*' dexp",
348260684Skaiw"dexp : dexp '/' dexp",
349260684Skaiw"dexp : '-' dexp",
350260684Skaiw"dexp : '(' dexp ')'",
351260684Skaiw"vexp : dexp",
352260684Skaiw"vexp : '(' dexp ',' dexp ')'",
353260684Skaiw"vexp : VREG",
354260684Skaiw"vexp : vexp '+' vexp",
355260684Skaiw"vexp : dexp '+' vexp",
356260684Skaiw"vexp : vexp '-' vexp",
357260684Skaiw"vexp : dexp '-' vexp",
358260684Skaiw"vexp : vexp '*' vexp",
359260684Skaiw"vexp : dexp '*' vexp",
360260684Skaiw"vexp : vexp '/' vexp",
361260684Skaiw"vexp : dexp '/' vexp",
362260684Skaiw"vexp : '-' vexp",
363260684Skaiw"vexp : '(' vexp ')'",
364260684Skaiw
365260684Skaiw};
366260684Skaiw#endif
367260684Skaiw
368260684Skaiwint      yydebug;
369260684Skaiwint      yynerrs;
370260684Skaiw
371260684Skaiwint      yyerrflag;
372260684Skaiwint      yychar;
373260684SkaiwYYSTYPE  yyval;
374260684SkaiwYYSTYPE  yylval;
375260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
376260684SkaiwYYLTYPE  yyloc; /* position returned by actions */
377260684SkaiwYYLTYPE  yylloc; /* position from the lexer */
378260684Skaiw#endif
379260684Skaiw
380260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
381260684Skaiw#ifndef YYLLOC_DEFAULT
382260684Skaiw#define YYLLOC_DEFAULT(loc, rhs, n) \
383260684Skaiwdo \
384260684Skaiw{ \
385260684Skaiw    if (n == 0) \
386260684Skaiw    { \
387260684Skaiw        (loc).first_line   = ((rhs)[-1]).last_line; \
388260684Skaiw        (loc).first_column = ((rhs)[-1]).last_column; \
389260684Skaiw        (loc).last_line    = ((rhs)[-1]).last_line; \
390260684Skaiw        (loc).last_column  = ((rhs)[-1]).last_column; \
391260684Skaiw    } \
392260684Skaiw    else \
393260684Skaiw    { \
394260684Skaiw        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
395260684Skaiw        (loc).first_column = ((rhs)[ 0 ]).first_column; \
396260684Skaiw        (loc).last_line    = ((rhs)[n-1]).last_line; \
397260684Skaiw        (loc).last_column  = ((rhs)[n-1]).last_column; \
398260684Skaiw    } \
399260684Skaiw} while (0)
400260684Skaiw#endif /* YYLLOC_DEFAULT */
401260684Skaiw#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
402260684Skaiw#if YYBTYACC
403260684Skaiw
404260684Skaiw#ifndef YYLVQUEUEGROWTH
405260684Skaiw#define YYLVQUEUEGROWTH 32
406260684Skaiw#endif
407260684Skaiw#endif /* YYBTYACC */
408260684Skaiw
409260684Skaiw/* define the initial stack-sizes */
410260684Skaiw#ifdef YYSTACKSIZE
411260684Skaiw#undef YYMAXDEPTH
412260684Skaiw#define YYMAXDEPTH  YYSTACKSIZE
413260684Skaiw#else
414260684Skaiw#ifdef YYMAXDEPTH
415260684Skaiw#define YYSTACKSIZE YYMAXDEPTH
416260684Skaiw#else
417260684Skaiw#define YYSTACKSIZE 10000
418260684Skaiw#define YYMAXDEPTH  10000
419260684Skaiw#endif
420260684Skaiw#endif
421260684Skaiw
422260684Skaiw#ifndef YYINITSTACKSIZE
423260684Skaiw#define YYINITSTACKSIZE 200
424260684Skaiw#endif
425260684Skaiw
426260684Skaiwtypedef struct {
427260684Skaiw    unsigned stacksize;
428260684Skaiw    short    *s_base;
429260684Skaiw    short    *s_mark;
430260684Skaiw    short    *s_last;
431260684Skaiw    YYSTYPE  *l_base;
432260684Skaiw    YYSTYPE  *l_mark;
433260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
434260684Skaiw    YYLTYPE  *p_base;
435260684Skaiw    YYLTYPE  *p_mark;
436260684Skaiw#endif
437260684Skaiw} YYSTACKDATA;
438260684Skaiw#if YYBTYACC
439260684Skaiw
440260684Skaiwstruct YYParseState_s
441260684Skaiw{
442260684Skaiw    struct YYParseState_s *save;    /* Previously saved parser state */
443260684Skaiw    YYSTACKDATA            yystack; /* saved parser stack */
444260684Skaiw    int                    state;   /* saved parser state */
445260684Skaiw    int                    errflag; /* saved error recovery status */
446260684Skaiw    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
447260684Skaiw    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
448260684Skaiw};
449260684Skaiwtypedef struct YYParseState_s YYParseState;
450260684Skaiw#endif /* YYBTYACC */
451260684Skaiw/* variables for the parser stack */
452260684Skaiwstatic YYSTACKDATA yystack;
453260684Skaiw#if YYBTYACC
454260684Skaiw
455260684Skaiw/* Current parser state */
456260684Skaiwstatic YYParseState *yyps = 0;
457260684Skaiw
458260684Skaiw/* yypath != NULL: do the full parse, starting at *yypath parser state. */
459260684Skaiwstatic YYParseState *yypath = 0;
460260684Skaiw
461260684Skaiw/* Base of the lexical value queue */
462260684Skaiwstatic YYSTYPE *yylvals = 0;
463260684Skaiw
464260684Skaiw/* Current position at lexical value queue */
465260684Skaiwstatic YYSTYPE *yylvp = 0;
466260684Skaiw
467260684Skaiw/* End position of lexical value queue */
468260684Skaiwstatic YYSTYPE *yylve = 0;
469260684Skaiw
470260684Skaiw/* The last allocated position at the lexical value queue */
471260684Skaiwstatic YYSTYPE *yylvlim = 0;
472260684Skaiw
473260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
474260684Skaiw/* Base of the lexical position queue */
475260684Skaiwstatic YYLTYPE *yylpsns = 0;
476276371Semaste
477260684Skaiw/* Current position at lexical position queue */
478260684Skaiwstatic YYLTYPE *yylpp = 0;
479260684Skaiw
480260684Skaiw/* End position of lexical position queue */
481260684Skaiwstatic YYLTYPE *yylpe = 0;
482260684Skaiw
483260684Skaiw/* The last allocated position at the lexical position queue */
484260684Skaiwstatic YYLTYPE *yylplim = 0;
485260684Skaiw#endif
486260684Skaiw
487260684Skaiw/* Current position at lexical token queue */
488260684Skaiwstatic short  *yylexp = 0;
489260684Skaiw
490260684Skaiwstatic short  *yylexemes = 0;
491260684Skaiw#endif /* YYBTYACC */
492260684Skaiw#line 178 "varsyntax_calc1.y"
493260684Skaiw	/* beginning of subroutines section */
494260684Skaiw
495260684Skaiw#define BSZ 50			/* buffer size for floating point numbers */
496260684Skaiw
497260684Skaiw	/* lexical analysis */
498260684Skaiw
499260684Skaiwstatic void
500260684Skaiwyyerror(const char *s)
501260684Skaiw{
502260684Skaiw    fprintf(stderr, "%s\n", s);
503260684Skaiw}
504260684Skaiw
505260684Skaiwint
506260684Skaiwyylex(void)
507260684Skaiw{
508260684Skaiw    int c;
509260684Skaiw
510260684Skaiw    while ((c = getchar()) == ' ')
511260684Skaiw    {				/* skip over blanks */
512260684Skaiw    }
513260684Skaiw
514260684Skaiw    if (isupper(c))
515260684Skaiw    {
516260684Skaiw	yylval.ival = c - 'A';
517260684Skaiw	return (VREG);
518260684Skaiw    }
519260684Skaiw    if (islower(c))
520260684Skaiw    {
521260684Skaiw	yylval.ival = c - 'a';
522260684Skaiw	return (DREG);
523260684Skaiw    }
524260684Skaiw
525260684Skaiw    if (isdigit(c) || c == '.')
526260684Skaiw    {
527260684Skaiw	/* gobble up digits, points, exponents */
528260684Skaiw	char buf[BSZ + 1], *cp = buf;
529260684Skaiw	int dot = 0, expr = 0;
530260684Skaiw
531260684Skaiw	for (; (cp - buf) < BSZ; ++cp, c = getchar())
532260684Skaiw	{
533260684Skaiw
534260684Skaiw	    *cp = (char) c;
535260684Skaiw	    if (isdigit(c))
536260684Skaiw		continue;
537260684Skaiw	    if (c == '.')
538260684Skaiw	    {
539260684Skaiw		if (dot++ || expr)
540260684Skaiw		    return ('.');	/* will cause syntax error */
541260684Skaiw		continue;
542260684Skaiw	    }
543260684Skaiw
544260684Skaiw	    if (c == 'e')
545260684Skaiw	    {
546260684Skaiw		if (expr++)
547260684Skaiw		    return ('e');	/*  will  cause  syntax  error  */
548260684Skaiw		continue;
549260684Skaiw	    }
550260684Skaiw
551260684Skaiw	    /*  end  of  number  */
552260684Skaiw	    break;
553260684Skaiw	}
554260684Skaiw	*cp = '\0';
555260684Skaiw
556260684Skaiw	if ((cp - buf) >= BSZ)
557260684Skaiw	    printf("constant  too  long:  truncated\n");
558260684Skaiw	else
559260684Skaiw	    ungetc(c, stdin);	/*  push  back  last  char  read  */
560260684Skaiw	yylval.dval = atof(buf);
561260684Skaiw	return (CONST);
562260684Skaiw    }
563260684Skaiw    return (c);
564260684Skaiw}
565260684Skaiw
566260684Skaiwstatic INTERVAL
567260684Skaiwhilo(double a, double b, double c, double d)
568260684Skaiw{
569260684Skaiw    /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
570260684Skaiw    /*  used  by  *,  /  routines  */
571260684Skaiw    INTERVAL v;
572260684Skaiw
573260684Skaiw    if (a > b)
574260684Skaiw    {
575260684Skaiw	v.hi = a;
576260684Skaiw	v.lo = b;
577260684Skaiw    }
578260684Skaiw    else
579260684Skaiw    {
580260684Skaiw	v.hi = b;
581260684Skaiw	v.lo = a;
582260684Skaiw    }
583260684Skaiw
584260684Skaiw    if (c > d)
585260684Skaiw    {
586260684Skaiw	if (c > v.hi)
587260684Skaiw	    v.hi = c;
588260684Skaiw	if (d < v.lo)
589260684Skaiw	    v.lo = d;
590260684Skaiw    }
591260684Skaiw    else
592260684Skaiw    {
593260684Skaiw	if (d > v.hi)
594260684Skaiw	    v.hi = d;
595260684Skaiw	if (c < v.lo)
596260684Skaiw	    v.lo = c;
597260684Skaiw    }
598260684Skaiw    return (v);
599260684Skaiw}
600260684Skaiw
601260684SkaiwINTERVAL
602260684Skaiwvmul(double a, double b, INTERVAL v)
603260684Skaiw{
604260684Skaiw    return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
605260684Skaiw}
606260684Skaiw
607260684Skaiwint
608260684Skaiwdcheck(INTERVAL v)
609260684Skaiw{
610260684Skaiw    if (v.hi >= 0. && v.lo <= 0.)
611260684Skaiw    {
612260684Skaiw	printf("divisor  interval  contains  0.\n");
613260684Skaiw	return (1);
614260684Skaiw    }
615260684Skaiw    return (0);
616260684Skaiw}
617260684Skaiw
618260684SkaiwINTERVAL
619260684Skaiwvdiv(double a, double b, INTERVAL v)
620260684Skaiw{
621260684Skaiw    return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
622260684Skaiw}
623260684Skaiw#line 624 "varsyntax_calc1.tab.c"
624260684Skaiw
625260684Skaiw/* For use in generated program */
626260684Skaiw#define yydepth (int)(yystack.s_mark - yystack.s_base)
627260684Skaiw#if YYBTYACC
628260684Skaiw#define yytrial (yyps->save)
629260684Skaiw#endif /* YYBTYACC */
630260684Skaiw
631260684Skaiw#if YYDEBUG
632260684Skaiw#include <stdio.h>		/* needed for printf */
633260684Skaiw#endif
634260684Skaiw
635260684Skaiw#include <stdlib.h>	/* needed for malloc, etc */
636260684Skaiw#include <string.h>	/* needed for memset */
637260684Skaiw
638260684Skaiw/* allocate initial stack or double stack size, up to YYMAXDEPTH */
639260684Skaiwstatic int yygrowstack(YYSTACKDATA *data)
640260684Skaiw{
641260684Skaiw    int i;
642260684Skaiw    unsigned newsize;
643260684Skaiw    short *newss;
644260684Skaiw    YYSTYPE *newvs;
645260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
646260684Skaiw    YYLTYPE *newps;
647260684Skaiw#endif
648260684Skaiw
649260684Skaiw    if ((newsize = data->stacksize) == 0)
650260684Skaiw        newsize = YYINITSTACKSIZE;
651260684Skaiw    else if (newsize >= YYMAXDEPTH)
652260684Skaiw        return YYENOMEM;
653260684Skaiw    else if ((newsize *= 2) > YYMAXDEPTH)
654260684Skaiw        newsize = YYMAXDEPTH;
655260684Skaiw
656260684Skaiw    i = (int) (data->s_mark - data->s_base);
657260684Skaiw    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
658260684Skaiw    if (newss == 0)
659260684Skaiw        return YYENOMEM;
660260684Skaiw
661260684Skaiw    data->s_base = newss;
662260684Skaiw    data->s_mark = newss + i;
663260684Skaiw
664260684Skaiw    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
665260684Skaiw    if (newvs == 0)
666260684Skaiw        return YYENOMEM;
667260684Skaiw
668260684Skaiw    data->l_base = newvs;
669260684Skaiw    data->l_mark = newvs + i;
670260684Skaiw
671260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
672260684Skaiw    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
673260684Skaiw    if (newps == 0)
674260684Skaiw        return YYENOMEM;
675260684Skaiw
676260684Skaiw    data->p_base = newps;
677260684Skaiw    data->p_mark = newps + i;
678260684Skaiw#endif
679260684Skaiw
680260684Skaiw    data->stacksize = newsize;
681260684Skaiw    data->s_last = data->s_base + newsize - 1;
682260684Skaiw
683260684Skaiw#if YYDEBUG
684260684Skaiw    if (yydebug)
685260684Skaiw        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
686260684Skaiw#endif
687260684Skaiw    return 0;
688260684Skaiw}
689260684Skaiw
690260684Skaiw#if YYPURE || defined(YY_NO_LEAKS)
691260684Skaiwstatic void yyfreestack(YYSTACKDATA *data)
692260684Skaiw{
693260684Skaiw    free(data->s_base);
694260684Skaiw    free(data->l_base);
695260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
696260684Skaiw    free(data->p_base);
697260684Skaiw#endif
698260684Skaiw    memset(data, 0, sizeof(*data));
699260684Skaiw}
700260684Skaiw#else
701260684Skaiw#define yyfreestack(data) /* nothing */
702260684Skaiw#endif /* YYPURE || defined(YY_NO_LEAKS) */
703260684Skaiw#if YYBTYACC
704260684Skaiw
705260684Skaiwstatic YYParseState *
706260684SkaiwyyNewState(unsigned size)
707260684Skaiw{
708260684Skaiw    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
709260684Skaiw    if (p == NULL) return NULL;
710260684Skaiw
711260684Skaiw    p->yystack.stacksize = size;
712260684Skaiw    if (size == 0)
713260684Skaiw    {
714260684Skaiw        p->yystack.s_base = NULL;
715260684Skaiw        p->yystack.l_base = NULL;
716260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
717260684Skaiw        p->yystack.p_base = NULL;
718260684Skaiw#endif
719260684Skaiw        return p;
720260684Skaiw    }
721260684Skaiw    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
722260684Skaiw    if (p->yystack.s_base == NULL) return NULL;
723260684Skaiw    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
724260684Skaiw    if (p->yystack.l_base == NULL) return NULL;
725260684Skaiw    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
726260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
727260684Skaiw    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
728260684Skaiw    if (p->yystack.p_base == NULL) return NULL;
729260684Skaiw    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
730260684Skaiw#endif
731260684Skaiw
732260684Skaiw    return p;
733260684Skaiw}
734260684Skaiw
735260684Skaiwstatic void
736260684SkaiwyyFreeState(YYParseState *p)
737260684Skaiw{
738260684Skaiw    yyfreestack(&p->yystack);
739260684Skaiw    free(p);
740260684Skaiw}
741260684Skaiw#endif /* YYBTYACC */
742260684Skaiw
743260684Skaiw#define YYABORT  goto yyabort
744260684Skaiw#define YYREJECT goto yyabort
745260684Skaiw#define YYACCEPT goto yyaccept
746260684Skaiw#define YYERROR  goto yyerrlab
747260684Skaiw#if YYBTYACC
748260684Skaiw#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
749260684Skaiw#define YYVALID_NESTED do { if (yyps->save && \
750260684Skaiw                                yyps->save->save == 0) goto yyvalid; } while(0)
751260684Skaiw#endif /* YYBTYACC */
752260684Skaiw
753260684Skaiwint
754260684SkaiwYYPARSE_DECL()
755260684Skaiw{
756260684Skaiw    int yym, yyn, yystate, yyresult;
757260684Skaiw#if YYBTYACC
758260684Skaiw    int yynewerrflag;
759260684Skaiw    YYParseState *yyerrctx = NULL;
760260684Skaiw#endif /* YYBTYACC */
761260684Skaiw#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
762260684Skaiw    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
763260684Skaiw#endif
764260684Skaiw#if YYDEBUG
765260684Skaiw    const char *yys;
766260684Skaiw
767260684Skaiw    if ((yys = getenv("YYDEBUG")) != 0)
768260684Skaiw    {
769260684Skaiw        yyn = *yys;
770260684Skaiw        if (yyn >= '0' && yyn <= '9')
771260684Skaiw            yydebug = yyn - '0';
772260684Skaiw    }
773260684Skaiw    if (yydebug)
774260684Skaiw        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
775260684Skaiw#endif
776
777#if YYBTYACC
778    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
779    yyps->save = 0;
780#endif /* YYBTYACC */
781    yynerrs = 0;
782    yyerrflag = 0;
783    yychar = YYEMPTY;
784    yystate = 0;
785
786#if YYPURE
787    memset(&yystack, 0, sizeof(yystack));
788#endif
789
790    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
791    yystack.s_mark = yystack.s_base;
792    yystack.l_mark = yystack.l_base;
793#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
794    yystack.p_mark = yystack.p_base;
795#endif
796    yystate = 0;
797    *yystack.s_mark = 0;
798
799yyloop:
800    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
801    if (yychar < 0)
802    {
803#if YYBTYACC
804        do {
805        if (yylvp < yylve)
806        {
807            /* we're currently re-reading tokens */
808            yylval = *yylvp++;
809#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
810            yylloc = *yylpp++;
811#endif
812            yychar = *yylexp++;
813            break;
814        }
815        if (yyps->save)
816        {
817            /* in trial mode; save scanner results for future parse attempts */
818            if (yylvp == yylvlim)
819            {   /* Enlarge lexical value queue */
820                int p = yylvp - yylvals;
821                int s = yylvlim - yylvals;
822
823                s += YYLVQUEUEGROWTH;
824                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
825                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
826#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
827                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
828#endif
829                yylvp   = yylve = yylvals + p;
830                yylvlim = yylvals + s;
831#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
832                yylpp   = yylpe = yylpsns + p;
833                yylplim = yylpsns + s;
834#endif
835                yylexp  = yylexemes + p;
836            }
837            *yylexp = (short) YYLEX;
838            *yylvp++ = yylval;
839            yylve++;
840#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
841            *yylpp++ = yylloc;
842            yylpe++;
843#endif
844            yychar = *yylexp++;
845            break;
846        }
847        /* normal operation, no conflict encountered */
848#endif /* YYBTYACC */
849        yychar = YYLEX;
850#if YYBTYACC
851        } while (0);
852#endif /* YYBTYACC */
853        if (yychar < 0) yychar = YYEOF;
854        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
855#if YYDEBUG
856        if (yydebug)
857        {
858            yys = yyname[YYTRANSLATE(yychar)];
859            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
860                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
861#ifdef YYSTYPE_TOSTRING
862#if YYBTYACC
863            if (!yytrial)
864#endif /* YYBTYACC */
865                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
866#endif
867            fputc('\n', stderr);
868        }
869#endif
870    }
871#if YYBTYACC
872
873    /* Do we have a conflict? */
874    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
875        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
876    {
877        YYINT ctry;
878
879        if (yypath)
880        {
881            YYParseState *save;
882#if YYDEBUG
883            if (yydebug)
884                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
885                                YYDEBUGSTR, yydepth, yystate);
886#endif
887            /* Switch to the next conflict context */
888            save = yypath;
889            yypath = save->save;
890            save->save = NULL;
891            ctry = save->ctry;
892            if (save->state != yystate) YYABORT;
893            yyFreeState(save);
894
895        }
896        else
897        {
898
899            /* Unresolved conflict - start/continue trial parse */
900            YYParseState *save;
901#if YYDEBUG
902            if (yydebug)
903            {
904                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
905                if (yyps->save)
906                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
907                else
908                    fputs("Starting trial parse.\n", stderr);
909            }
910#endif
911            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
912            if (save == NULL) goto yyenomem;
913            save->save            = yyps->save;
914            save->state           = yystate;
915            save->errflag         = yyerrflag;
916            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
917            memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
918            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
919            memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
920#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
921            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
922            memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
923#endif
924            ctry                  = yytable[yyn];
925            if (yyctable[ctry] == -1)
926            {
927#if YYDEBUG
928                if (yydebug && yychar >= YYEOF)
929                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
930#endif
931                ctry++;
932            }
933            save->ctry = ctry;
934            if (yyps->save == NULL)
935            {
936                /* If this is a first conflict in the stack, start saving lexemes */
937                if (!yylexemes)
938                {
939                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
940                    if (yylexemes == NULL) goto yyenomem;
941                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
942                    if (yylvals == NULL) goto yyenomem;
943                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
944#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
945                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
946                    if (yylpsns == NULL) goto yyenomem;
947                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
948#endif
949                }
950                if (yylvp == yylve)
951                {
952                    yylvp  = yylve = yylvals;
953#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
954                    yylpp  = yylpe = yylpsns;
955#endif
956                    yylexp = yylexemes;
957                    if (yychar >= YYEOF)
958                    {
959                        *yylve++ = yylval;
960#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
961                        *yylpe++ = yylloc;
962#endif
963                        *yylexp  = (short) yychar;
964                        yychar   = YYEMPTY;
965                    }
966                }
967            }
968            if (yychar >= YYEOF)
969            {
970                yylvp--;
971#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
972                yylpp--;
973#endif
974                yylexp--;
975                yychar = YYEMPTY;
976            }
977            save->lexeme = yylvp - yylvals;
978            yyps->save   = save;
979        }
980        if (yytable[yyn] == ctry)
981        {
982#if YYDEBUG
983            if (yydebug)
984                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
985                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
986#endif
987            if (yychar < 0)
988            {
989                yylvp++;
990#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
991                yylpp++;
992#endif
993                yylexp++;
994            }
995            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
996                goto yyoverflow;
997            yystate = yyctable[ctry];
998            *++yystack.s_mark = (short) yystate;
999            *++yystack.l_mark = yylval;
1000#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1001            *++yystack.p_mark = yylloc;
1002#endif
1003            yychar  = YYEMPTY;
1004            if (yyerrflag > 0) --yyerrflag;
1005            goto yyloop;
1006        }
1007        else
1008        {
1009            yyn = yyctable[ctry];
1010            goto yyreduce;
1011        }
1012    } /* End of code dealing with conflicts */
1013#endif /* YYBTYACC */
1014    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1015            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1016    {
1017#if YYDEBUG
1018        if (yydebug)
1019            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1020                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1021#endif
1022        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1023        yystate = yytable[yyn];
1024        *++yystack.s_mark = yytable[yyn];
1025        *++yystack.l_mark = yylval;
1026#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1027        *++yystack.p_mark = yylloc;
1028#endif
1029        yychar = YYEMPTY;
1030        if (yyerrflag > 0)  --yyerrflag;
1031        goto yyloop;
1032    }
1033    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1034            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1035    {
1036        yyn = yytable[yyn];
1037        goto yyreduce;
1038    }
1039    if (yyerrflag != 0) goto yyinrecovery;
1040#if YYBTYACC
1041
1042    yynewerrflag = 1;
1043    goto yyerrhandler;
1044    goto yyerrlab;
1045
1046yyerrlab:
1047    yynewerrflag = 0;
1048yyerrhandler:
1049    while (yyps->save)
1050    {
1051        int ctry;
1052        YYParseState *save = yyps->save;
1053#if YYDEBUG
1054        if (yydebug)
1055            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1056                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1057                    (int)(yylvp - yylvals - yyps->save->lexeme));
1058#endif
1059        /* Memorize most forward-looking error state in case it's really an error. */
1060        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1061        {
1062            /* Free old saved error context state */
1063            if (yyerrctx) yyFreeState(yyerrctx);
1064            /* Create and fill out new saved error context state */
1065            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1066            if (yyerrctx == NULL) goto yyenomem;
1067            yyerrctx->save           = yyps->save;
1068            yyerrctx->state          = yystate;
1069            yyerrctx->errflag        = yyerrflag;
1070            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1071            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1072            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1073            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1074#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1075            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1076            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1077#endif
1078            yyerrctx->lexeme         = yylvp - yylvals;
1079        }
1080        yylvp          = yylvals   + save->lexeme;
1081#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1082        yylpp          = yylpsns   + save->lexeme;
1083#endif
1084        yylexp         = yylexemes + save->lexeme;
1085        yychar         = YYEMPTY;
1086        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1087        memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1088        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1089        memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1090#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1091        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1092        memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1093#endif
1094        ctry           = ++save->ctry;
1095        yystate        = save->state;
1096        /* We tried shift, try reduce now */
1097        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1098        yyps->save     = save->save;
1099        save->save     = NULL;
1100        yyFreeState(save);
1101
1102        /* Nothing left on the stack -- error */
1103        if (!yyps->save)
1104        {
1105#if YYDEBUG
1106            if (yydebug)
1107                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1108                                YYPREFIX, yydepth);
1109#endif
1110            /* Restore state as it was in the most forward-advanced error */
1111            yylvp          = yylvals   + yyerrctx->lexeme;
1112#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1113            yylpp          = yylpsns   + yyerrctx->lexeme;
1114#endif
1115            yylexp         = yylexemes + yyerrctx->lexeme;
1116            yychar         = yylexp[-1];
1117            yylval         = yylvp[-1];
1118#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1119            yylloc         = yylpp[-1];
1120#endif
1121            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1122            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1123            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1124            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1125#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1126            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1127            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1128#endif
1129            yystate        = yyerrctx->state;
1130            yyFreeState(yyerrctx);
1131            yyerrctx       = NULL;
1132        }
1133        yynewerrflag = 1;
1134    }
1135    if (yynewerrflag == 0) goto yyinrecovery;
1136#endif /* YYBTYACC */
1137
1138    YYERROR_CALL("syntax error");
1139#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1140    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1141#endif
1142
1143#if !YYBTYACC
1144    goto yyerrlab;
1145yyerrlab:
1146#endif
1147    ++yynerrs;
1148
1149yyinrecovery:
1150    if (yyerrflag < 3)
1151    {
1152        yyerrflag = 3;
1153        for (;;)
1154        {
1155            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1156                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1157            {
1158#if YYDEBUG
1159                if (yydebug)
1160                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1161                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1162#endif
1163                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1164                yystate = yytable[yyn];
1165                *++yystack.s_mark = yytable[yyn];
1166                *++yystack.l_mark = yylval;
1167#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1168                /* lookahead position is error end position */
1169                yyerror_loc_range[1] = yylloc;
1170                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1171                *++yystack.p_mark = yyloc;
1172#endif
1173                goto yyloop;
1174            }
1175            else
1176            {
1177#if YYDEBUG
1178                if (yydebug)
1179                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1180                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1181#endif
1182                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1183#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1184                /* the current TOS position is the error start position */
1185                yyerror_loc_range[0] = *yystack.p_mark;
1186#endif
1187#if defined(YYDESTRUCT_CALL)
1188#if YYBTYACC
1189                if (!yytrial)
1190#endif /* YYBTYACC */
1191#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1192                    YYDESTRUCT_CALL("error: discarding state",
1193                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1194#else
1195                    YYDESTRUCT_CALL("error: discarding state",
1196                                    yystos[*yystack.s_mark], yystack.l_mark);
1197#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1198#endif /* defined(YYDESTRUCT_CALL) */
1199                --yystack.s_mark;
1200                --yystack.l_mark;
1201#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1202                --yystack.p_mark;
1203#endif
1204            }
1205        }
1206    }
1207    else
1208    {
1209        if (yychar == YYEOF) goto yyabort;
1210#if YYDEBUG
1211        if (yydebug)
1212        {
1213            yys = yyname[YYTRANSLATE(yychar)];
1214            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1215                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1216        }
1217#endif
1218#if defined(YYDESTRUCT_CALL)
1219#if YYBTYACC
1220        if (!yytrial)
1221#endif /* YYBTYACC */
1222#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1223            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1224#else
1225            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1226#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1227#endif /* defined(YYDESTRUCT_CALL) */
1228        yychar = YYEMPTY;
1229        goto yyloop;
1230    }
1231
1232yyreduce:
1233    yym = yylen[yyn];
1234#if YYDEBUG
1235    if (yydebug)
1236    {
1237        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1238                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1239#ifdef YYSTYPE_TOSTRING
1240#if YYBTYACC
1241        if (!yytrial)
1242#endif /* YYBTYACC */
1243            if (yym > 0)
1244            {
1245                int i;
1246                fputc('<', stderr);
1247                for (i = yym; i > 0; i--)
1248                {
1249                    if (i != yym) fputs(", ", stderr);
1250                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1251                                           yystack.l_mark[1-i]), stderr);
1252                }
1253                fputc('>', stderr);
1254            }
1255#endif
1256        fputc('\n', stderr);
1257    }
1258#endif
1259    if (yym > 0)
1260        yyval = yystack.l_mark[1-yym];
1261    else
1262        memset(&yyval, 0, sizeof yyval);
1263#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1264
1265    /* Perform position reduction */
1266    memset(&yyloc, 0, sizeof(yyloc));
1267#if YYBTYACC
1268    if (!yytrial)
1269#endif /* YYBTYACC */
1270    {
1271        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1272        /* just in case YYERROR is invoked within the action, save
1273           the start of the rhs as the error start position */
1274        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1275    }
1276#endif
1277
1278    switch (yyn)
1279    {
1280case 3:
1281#line 59 "varsyntax_calc1.y"
1282	{
1283		(void) printf("%15.8f\n", yystack.l_mark[-1].dval);
1284	}
1285break;
1286case 4:
1287#line 63 "varsyntax_calc1.y"
1288	{
1289		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.l_mark[-1].vval.hi);
1290	}
1291break;
1292case 5:
1293#line 67 "varsyntax_calc1.y"
1294	{
1295		dreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].dval;
1296	}
1297break;
1298case 6:
1299#line 71 "varsyntax_calc1.y"
1300	{
1301		vreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].vval;
1302	}
1303break;
1304case 7:
1305#line 75 "varsyntax_calc1.y"
1306	{
1307		yyerrok;
1308	}
1309break;
1310case 9:
1311#line 82 "varsyntax_calc1.y"
1312	{
1313		yyval.dval = dreg[yystack.l_mark[0].ival]; /* $$ & $1 are sufficient here*/
1314	}
1315break;
1316case 10:
1317#line 86 "varsyntax_calc1.y"
1318	{
1319		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
1320	}
1321break;
1322case 11:
1323#line 90 "varsyntax_calc1.y"
1324	{
1325		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
1326	}
1327break;
1328case 12:
1329#line 94 "varsyntax_calc1.y"
1330	{
1331		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
1332	}
1333break;
1334case 13:
1335#line 98 "varsyntax_calc1.y"
1336	{
1337		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
1338	}
1339break;
1340case 14:
1341#line 102 "varsyntax_calc1.y"
1342	{
1343		yyval.dval = -yystack.l_mark[0].dval;
1344	}
1345break;
1346case 15:
1347#line 106 "varsyntax_calc1.y"
1348	{
1349		yyval.dval = yystack.l_mark[-1].dval;
1350	}
1351break;
1352case 16:
1353#line 112 "varsyntax_calc1.y"
1354	{
1355		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
1356	}
1357break;
1358case 17:
1359#line 116 "varsyntax_calc1.y"
1360	{
1361		yyval.vval.lo = yystack.l_mark[-3].dval;
1362		yyval.vval.hi = yystack.l_mark[-1].dval;
1363		if ( yyval.vval.lo > yyval.vval.hi )
1364		{
1365			(void) printf("interval out of order\n");
1366			YYERROR;
1367		}
1368	}
1369break;
1370case 18:
1371#line 126 "varsyntax_calc1.y"
1372	{
1373		yyval.vval = vreg[yystack.l_mark[0].ival];
1374	}
1375break;
1376case 19:
1377#line 130 "varsyntax_calc1.y"
1378	{
1379		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
1380		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
1381	}
1382break;
1383case 20:
1384#line 135 "varsyntax_calc1.y"
1385	{
1386		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
1387		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
1388	}
1389break;
1390case 21:
1391#line 140 "varsyntax_calc1.y"
1392	{
1393		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
1394		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
1395	}
1396break;
1397case 22:
1398#line 145 "varsyntax_calc1.y"
1399	{
1400		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
1401		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
1402	}
1403break;
1404case 23:
1405#line 150 "varsyntax_calc1.y"
1406	{
1407		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1408	}
1409break;
1410case 24:
1411#line 154 "varsyntax_calc1.y"
1412	{
1413		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1414	}
1415break;
1416case 25:
1417#line 158 "varsyntax_calc1.y"
1418	{
1419		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
1420		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1421	}
1422break;
1423case 26:
1424#line 163 "varsyntax_calc1.y"
1425	{
1426		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
1427		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1428	}
1429break;
1430case 27:
1431#line 168 "varsyntax_calc1.y"
1432	{
1433		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
1434		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
1435	}
1436break;
1437case 28:
1438#line 173 "varsyntax_calc1.y"
1439	{
1440		yyval.vval = yystack.l_mark[-1].vval;
1441	}
1442break;
1443#line 1444 "varsyntax_calc1.tab.c"
1444    default:
1445        break;
1446    }
1447    yystack.s_mark -= yym;
1448    yystate = *yystack.s_mark;
1449    yystack.l_mark -= yym;
1450#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1451    yystack.p_mark -= yym;
1452#endif
1453    yym = yylhs[yyn];
1454    if (yystate == 0 && yym == 0)
1455    {
1456#if YYDEBUG
1457        if (yydebug)
1458        {
1459            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1460#ifdef YYSTYPE_TOSTRING
1461#if YYBTYACC
1462            if (!yytrial)
1463#endif /* YYBTYACC */
1464                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1465#endif
1466            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1467        }
1468#endif
1469        yystate = YYFINAL;
1470        *++yystack.s_mark = YYFINAL;
1471        *++yystack.l_mark = yyval;
1472#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1473        *++yystack.p_mark = yyloc;
1474#endif
1475        if (yychar < 0)
1476        {
1477#if YYBTYACC
1478            do {
1479            if (yylvp < yylve)
1480            {
1481                /* we're currently re-reading tokens */
1482                yylval = *yylvp++;
1483#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1484                yylloc = *yylpp++;
1485#endif
1486                yychar = *yylexp++;
1487                break;
1488            }
1489            if (yyps->save)
1490            {
1491                /* in trial mode; save scanner results for future parse attempts */
1492                if (yylvp == yylvlim)
1493                {   /* Enlarge lexical value queue */
1494                    int p = yylvp - yylvals;
1495                    int s = yylvlim - yylvals;
1496
1497                    s += YYLVQUEUEGROWTH;
1498                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
1499                        goto yyenomem;
1500                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1501                        goto yyenomem;
1502#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1503                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1504                        goto yyenomem;
1505#endif
1506                    yylvp   = yylve = yylvals + p;
1507                    yylvlim = yylvals + s;
1508#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1509                    yylpp   = yylpe = yylpsns + p;
1510                    yylplim = yylpsns + s;
1511#endif
1512                    yylexp  = yylexemes + p;
1513                }
1514                *yylexp = (short) YYLEX;
1515                *yylvp++ = yylval;
1516                yylve++;
1517#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1518                *yylpp++ = yylloc;
1519                yylpe++;
1520#endif
1521                yychar = *yylexp++;
1522                break;
1523            }
1524            /* normal operation, no conflict encountered */
1525#endif /* YYBTYACC */
1526            yychar = YYLEX;
1527#if YYBTYACC
1528            } while (0);
1529#endif /* YYBTYACC */
1530            if (yychar < 0) yychar = YYEOF;
1531            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1532#if YYDEBUG
1533            if (yydebug)
1534            {
1535                yys = yyname[YYTRANSLATE(yychar)];
1536                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
1537                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1538            }
1539#endif
1540        }
1541        if (yychar == YYEOF) goto yyaccept;
1542        goto yyloop;
1543    }
1544    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1545            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1546        yystate = yytable[yyn];
1547    else
1548        yystate = yydgoto[yym];
1549#if YYDEBUG
1550    if (yydebug)
1551    {
1552        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1553#ifdef YYSTYPE_TOSTRING
1554#if YYBTYACC
1555        if (!yytrial)
1556#endif /* YYBTYACC */
1557            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1558#endif
1559        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1560    }
1561#endif
1562    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1563    *++yystack.s_mark = (short) yystate;
1564    *++yystack.l_mark = yyval;
1565#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1566    *++yystack.p_mark = yyloc;
1567#endif
1568    goto yyloop;
1569#if YYBTYACC
1570
1571    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1572yyvalid:
1573    if (yypath) YYABORT;
1574    while (yyps->save)
1575    {
1576        YYParseState *save = yyps->save;
1577        yyps->save = save->save;
1578        save->save = yypath;
1579        yypath = save;
1580    }
1581#if YYDEBUG
1582    if (yydebug)
1583        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1584                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1585#endif
1586    if (yyerrctx)
1587    {
1588        yyFreeState(yyerrctx);
1589        yyerrctx = NULL;
1590    }
1591    yylvp          = yylvals + yypath->lexeme;
1592#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1593    yylpp          = yylpsns + yypath->lexeme;
1594#endif
1595    yylexp         = yylexemes + yypath->lexeme;
1596    yychar         = YYEMPTY;
1597    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1598    memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1599    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1600    memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1601#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1602    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1603    memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1604#endif
1605    yystate        = yypath->state;
1606    goto yyloop;
1607#endif /* YYBTYACC */
1608
1609yyoverflow:
1610    YYERROR_CALL("yacc stack overflow");
1611#if YYBTYACC
1612    goto yyabort_nomem;
1613yyenomem:
1614    YYERROR_CALL("memory exhausted");
1615yyabort_nomem:
1616#endif /* YYBTYACC */
1617    yyresult = 2;
1618    goto yyreturn;
1619
1620yyabort:
1621    yyresult = 1;
1622    goto yyreturn;
1623
1624yyaccept:
1625#if YYBTYACC
1626    if (yyps->save) goto yyvalid;
1627#endif /* YYBTYACC */
1628    yyresult = 0;
1629
1630yyreturn:
1631#if defined(YYDESTRUCT_CALL)
1632    if (yychar != YYEOF && yychar != YYEMPTY)
1633#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1634        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1635#else
1636        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1637#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1638
1639    {
1640        YYSTYPE *pv;
1641#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1642        YYLTYPE *pp;
1643
1644        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1645             YYDESTRUCT_CALL("cleanup: discarding state",
1646                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1647#else
1648        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1649             YYDESTRUCT_CALL("cleanup: discarding state",
1650                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1651#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1652    }
1653#endif /* defined(YYDESTRUCT_CALL) */
1654
1655#if YYBTYACC
1656    if (yyerrctx)
1657    {
1658        yyFreeState(yyerrctx);
1659        yyerrctx = NULL;
1660    }
1661    while (yyps)
1662    {
1663        YYParseState *save = yyps;
1664        yyps = save->save;
1665        save->save = NULL;
1666        yyFreeState(save);
1667    }
1668    while (yypath)
1669    {
1670        YYParseState *save = yypath;
1671        yypath = save->save;
1672        save->save = NULL;
1673        yyFreeState(save);
1674    }
1675#endif /* YYBTYACC */
1676    yyfreestack(&yystack);
1677    return (yyresult);
1678}
1679