xref: /netbsd-src/external/bsd/byacc/dist/test/btyacc/varsyntax_calc1.tab.c (revision 122b5006ee1bd67145794b4cde92f4fe4781a5ec)
1 /*	$NetBSD: varsyntax_calc1.tab.c,v 1.5 2021/02/20 22:57:57 christos Exp $	*/
2 
3 /* original parser id follows */
4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
6 
7 #define YYBYACC 1
8 #define YYMAJOR 2
9 #define YYMINOR 0
10 #define YYCHECK "yyyymmdd"
11 
12 #define YYEMPTY        (-1)
13 #define yyclearin      (yychar = YYEMPTY)
14 #define yyerrok        (yyerrflag = 0)
15 #define YYRECOVERING() (yyerrflag != 0)
16 #define YYENOMEM       (-2)
17 #define YYEOF          0
18 #ident "check variant syntax features"
19 #undef YYBTYACC
20 #define YYBTYACC 0
21 #define YYDEBUGSTR YYPREFIX "debug"
22 
23 #ifndef yyparse
24 #define yyparse    varsyntax_calc1_parse
25 #endif /* yyparse */
26 
27 #ifndef yylex
28 #define yylex      varsyntax_calc1_lex
29 #endif /* yylex */
30 
31 #ifndef yyerror
32 #define yyerror    varsyntax_calc1_error
33 #endif /* yyerror */
34 
35 #ifndef yychar
36 #define yychar     varsyntax_calc1_char
37 #endif /* yychar */
38 
39 #ifndef yyval
40 #define yyval      varsyntax_calc1_val
41 #endif /* yyval */
42 
43 #ifndef yylval
44 #define yylval     varsyntax_calc1_lval
45 #endif /* yylval */
46 
47 #ifndef yydebug
48 #define yydebug    varsyntax_calc1_debug
49 #endif /* yydebug */
50 
51 #ifndef yynerrs
52 #define yynerrs    varsyntax_calc1_nerrs
53 #endif /* yynerrs */
54 
55 #ifndef yyerrflag
56 #define yyerrflag  varsyntax_calc1_errflag
57 #endif /* yyerrflag */
58 
59 #ifndef yylhs
60 #define yylhs      varsyntax_calc1_lhs
61 #endif /* yylhs */
62 
63 #ifndef yylen
64 #define yylen      varsyntax_calc1_len
65 #endif /* yylen */
66 
67 #ifndef yydefred
68 #define yydefred   varsyntax_calc1_defred
69 #endif /* yydefred */
70 
71 #ifndef yystos
72 #define yystos     varsyntax_calc1_stos
73 #endif /* yystos */
74 
75 #ifndef yydgoto
76 #define yydgoto    varsyntax_calc1_dgoto
77 #endif /* yydgoto */
78 
79 #ifndef yysindex
80 #define yysindex   varsyntax_calc1_sindex
81 #endif /* yysindex */
82 
83 #ifndef yyrindex
84 #define yyrindex   varsyntax_calc1_rindex
85 #endif /* yyrindex */
86 
87 #ifndef yygindex
88 #define yygindex   varsyntax_calc1_gindex
89 #endif /* yygindex */
90 
91 #ifndef yytable
92 #define yytable    varsyntax_calc1_table
93 #endif /* yytable */
94 
95 #ifndef yycheck
96 #define yycheck    varsyntax_calc1_check
97 #endif /* yycheck */
98 
99 #ifndef yyname
100 #define yyname     varsyntax_calc1_name
101 #endif /* yyname */
102 
103 #ifndef yyrule
104 #define yyrule     varsyntax_calc1_rule
105 #endif /* yyrule */
106 
107 #if YYBTYACC
108 
109 #ifndef yycindex
110 #define yycindex   varsyntax_calc1_cindex
111 #endif /* yycindex */
112 
113 #ifndef yyctable
114 #define yyctable   varsyntax_calc1_ctable
115 #endif /* yyctable */
116 
117 #endif /* YYBTYACC */
118 
119 #define YYPREFIX "varsyntax_calc1_"
120 
121 #define YYPURE 0
122 
123 #line 3 "varsyntax_calc1.y"
124 
125 /* http://dinosaur.compilertools.net/yacc/index.html * /*/
126 
127 #include <stdlib.h>
128 #include <stdio.h>
129 #include <ctype.h>
130 #include <math.h>
131 
132 typedef struct interval
133 {
134     double lo, hi;
135 }
136 INTERVAL;
137 
138 INTERVAL vmul(double, double, INTERVAL);
139 INTERVAL vdiv(double, double, INTERVAL);
140 
141 extern int yylex(void);
142 static void yyerror(const char *s);
143 
144 int dcheck(INTERVAL);
145 
146 double dreg[26];
147 INTERVAL vreg[26];
148 
149 #ifdef YYSTYPE
150 #undef  YYSTYPE_IS_DECLARED
151 #define YYSTYPE_IS_DECLARED 1
152 #endif
153 #ifndef YYSTYPE_IS_DECLARED
154 #define YYSTYPE_IS_DECLARED 1
155 #line 32 "varsyntax_calc1.y"
156 typedef union
157 {
158 	int ival;	/* dreg & vreg array index values*/
159 	double dval;	/* floating point values*/
160 	INTERVAL vval;	/* interval values*/
161 } YYSTYPE;
162 #endif /* !YYSTYPE_IS_DECLARED */
163 #line 162 "varsyntax_calc1.tab.c"
164 
165 /* compatibility with bison */
166 #ifdef YYPARSE_PARAM
167 /* compatibility with FreeBSD */
168 # ifdef YYPARSE_PARAM_TYPE
169 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
170 # else
171 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
172 # endif
173 #else
174 # define YYPARSE_DECL() yyparse(void)
175 #endif
176 
177 /* Parameters sent to lex. */
178 #ifdef YYLEX_PARAM
179 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
180 # define YYLEX yylex(YYLEX_PARAM)
181 #else
182 # define YYLEX_DECL() yylex(void)
183 # define YYLEX yylex()
184 #endif
185 
186 /* Parameters sent to yyerror. */
187 #ifndef YYERROR_DECL
188 #define YYERROR_DECL() yyerror(const char *s)
189 #endif
190 #ifndef YYERROR_CALL
191 #define YYERROR_CALL(msg) yyerror(msg)
192 #endif
193 
194 extern int YYPARSE_DECL();
195 
196 #define DREG 257
197 #define VREG 258
198 #define CONST 259
199 #define UMINUS 260
200 #define YYERRCODE 256
201 typedef short YYINT;
202 static const YYINT varsyntax_calc1_lhs[] = {             -1,
203     3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
204     1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
205     2,    2,    2,    2,    2,    2,    2,    2,
206 };
207 static const YYINT varsyntax_calc1_len[] = {              2,
208     0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
209     3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
210     3,    3,    3,    3,    3,    3,    2,    3,
211 };
212 static const YYINT varsyntax_calc1_defred[] = {           0,
213     0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
214     0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
215     0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
216     0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
217    12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
218     0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
219    13,   17,
220 };
221 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
222 static const YYINT varsyntax_calc1_stos[] = {             0,
223   256,  257,  258,  259,   45,   40,  262,  263,  264,   10,
224    61,   61,  257,  258,  263,  264,  263,  264,   43,   45,
225    42,   47,   10,   43,   45,   42,   47,   10,   45,   40,
226   263,  263,  264,   41,   44,   41,  263,  264,  263,  264,
227   263,  264,  263,  264,  264,  264,  264,  264,  263,  263,
228    43,   45,   42,   47,   10,   10,  263,  263,  263,  263,
229   263,   41,
230 };
231 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
232 static const YYINT varsyntax_calc1_dgoto[] = {            7,
233    32,    9,    0,
234 };
235 static const YYINT varsyntax_calc1_sindex[] = {         -40,
236    -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
237   -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
238   -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
239    25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
240     0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
241   -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
242     0,    0,
243 };
244 static const YYINT varsyntax_calc1_rindex[] = {           0,
245     0,   38,   44,    0,    0,    0,    0,    0,    0,    0,
246     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
247     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
248     0,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
249     0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
250     0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
251     0,    0,
252 };
253 #if YYBTYACC
254 static const YYINT varsyntax_calc1_cindex[] = {           0,
255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
258     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
259     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
260     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
261     0,    0,
262 };
263 #endif
264 static const YYINT varsyntax_calc1_gindex[] = {           0,
265     4,  124,    0,
266 };
267 #define YYTABLESIZE 225
268 static const YYINT varsyntax_calc1_table[] = {            6,
269    16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
270    29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
271     0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
272    21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
273    56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
274     0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
275    10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
276    22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
277     9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
278    18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
279    11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
280    53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
281    10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
282    36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
283     0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
284    48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
285    51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
286     0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
287     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
288     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
289     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
290     0,    0,    0,    0,    0,    1,    2,    3,    4,   13,
291    14,    4,   13,    0,    4,
292 };
293 static const YYINT varsyntax_calc1_check[] = {           40,
294    10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
295    45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
296    -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
297    42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
298    10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
299    -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
300    10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
301    10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
302    43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
303    47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
304    45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
305    42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
306    43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
307    41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
308    -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
309    27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
310    43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
311    -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
312    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
313    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
314    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
315    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
316   258,  259,  257,   -1,  259,
317 };
318 #if YYBTYACC
319 static const YYINT varsyntax_calc1_ctable[] = {          -1,
320    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
321    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
322    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
323    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
324    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
325    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
326    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
327    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
328    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
329    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
330    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
331    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
332    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
333    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
334    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
335    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
336    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
337    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
338    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
339    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
340    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
341    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
342    -1,   -1,   -1,   -1,
343 };
344 #endif
345 #define YYFINAL 7
346 #ifndef YYDEBUG
347 #define YYDEBUG 0
348 #endif
349 #define YYMAXTOKEN 260
350 #define YYUNDFTOKEN 266
351 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
352 #if YYDEBUG
353 static const char *const varsyntax_calc1_name[] = {
354 
355 "$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,
356 0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,
357 0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
358 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
359 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
360 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
361 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
362 "error","DREG","VREG","CONST","UMINUS","$accept","line","dexp","vexp","lines",
363 "illegal-symbol",
364 };
365 static const char *const varsyntax_calc1_rule[] = {
366 "$accept : line",
367 "lines :",
368 "lines : lines line",
369 "line : dexp '\\n'",
370 "line : vexp '\\n'",
371 "line : DREG '=' dexp '\\n'",
372 "line : VREG '=' vexp '\\n'",
373 "line : error '\\n'",
374 "dexp : CONST",
375 "dexp : DREG",
376 "dexp : dexp '+' dexp",
377 "dexp : dexp '-' dexp",
378 "dexp : dexp '*' dexp",
379 "dexp : dexp '/' dexp",
380 "dexp : '-' dexp",
381 "dexp : '(' dexp ')'",
382 "vexp : dexp",
383 "vexp : '(' dexp ',' dexp ')'",
384 "vexp : VREG",
385 "vexp : vexp '+' vexp",
386 "vexp : dexp '+' vexp",
387 "vexp : vexp '-' vexp",
388 "vexp : dexp '-' vexp",
389 "vexp : vexp '*' vexp",
390 "vexp : dexp '*' vexp",
391 "vexp : vexp '/' vexp",
392 "vexp : dexp '/' vexp",
393 "vexp : '-' vexp",
394 "vexp : '(' vexp ')'",
395 
396 };
397 #endif
398 
399 #if YYDEBUG
400 int      yydebug;
401 #endif
402 
403 int      yyerrflag;
404 int      yychar;
405 YYSTYPE  yyval;
406 YYSTYPE  yylval;
407 int      yynerrs;
408 
409 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
410 YYLTYPE  yyloc; /* position returned by actions */
411 YYLTYPE  yylloc; /* position from the lexer */
412 #endif
413 
414 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
415 #ifndef YYLLOC_DEFAULT
416 #define YYLLOC_DEFAULT(loc, rhs, n) \
417 do \
418 { \
419     if (n == 0) \
420     { \
421         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
422         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
423         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
424         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
425     } \
426     else \
427     { \
428         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
429         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
430         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
431         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
432     } \
433 } while (0)
434 #endif /* YYLLOC_DEFAULT */
435 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
436 #if YYBTYACC
437 
438 #ifndef YYLVQUEUEGROWTH
439 #define YYLVQUEUEGROWTH 32
440 #endif
441 #endif /* YYBTYACC */
442 
443 /* define the initial stack-sizes */
444 #ifdef YYSTACKSIZE
445 #undef YYMAXDEPTH
446 #define YYMAXDEPTH  YYSTACKSIZE
447 #else
448 #ifdef YYMAXDEPTH
449 #define YYSTACKSIZE YYMAXDEPTH
450 #else
451 #define YYSTACKSIZE 10000
452 #define YYMAXDEPTH  10000
453 #endif
454 #endif
455 
456 #ifndef YYINITSTACKSIZE
457 #define YYINITSTACKSIZE 200
458 #endif
459 
460 typedef struct {
461     unsigned stacksize;
462     YYINT    *s_base;
463     YYINT    *s_mark;
464     YYINT    *s_last;
465     YYSTYPE  *l_base;
466     YYSTYPE  *l_mark;
467 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
468     YYLTYPE  *p_base;
469     YYLTYPE  *p_mark;
470 #endif
471 } YYSTACKDATA;
472 #if YYBTYACC
473 
474 struct YYParseState_s
475 {
476     struct YYParseState_s *save;    /* Previously saved parser state */
477     YYSTACKDATA            yystack; /* saved parser stack */
478     int                    state;   /* saved parser state */
479     int                    errflag; /* saved error recovery status */
480     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
481     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
482 };
483 typedef struct YYParseState_s YYParseState;
484 #endif /* YYBTYACC */
485 /* variables for the parser stack */
486 static YYSTACKDATA yystack;
487 #if YYBTYACC
488 
489 /* Current parser state */
490 static YYParseState *yyps = 0;
491 
492 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
493 static YYParseState *yypath = 0;
494 
495 /* Base of the lexical value queue */
496 static YYSTYPE *yylvals = 0;
497 
498 /* Current position at lexical value queue */
499 static YYSTYPE *yylvp = 0;
500 
501 /* End position of lexical value queue */
502 static YYSTYPE *yylve = 0;
503 
504 /* The last allocated position at the lexical value queue */
505 static YYSTYPE *yylvlim = 0;
506 
507 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
508 /* Base of the lexical position queue */
509 static YYLTYPE *yylpsns = 0;
510 
511 /* Current position at lexical position queue */
512 static YYLTYPE *yylpp = 0;
513 
514 /* End position of lexical position queue */
515 static YYLTYPE *yylpe = 0;
516 
517 /* The last allocated position at the lexical position queue */
518 static YYLTYPE *yylplim = 0;
519 #endif
520 
521 /* Current position at lexical token queue */
522 static YYINT  *yylexp = 0;
523 
524 static YYINT  *yylexemes = 0;
525 #endif /* YYBTYACC */
526 #line 178 "varsyntax_calc1.y"
527 	/* beginning of subroutines section */
528 
529 #define BSZ 50			/* buffer size for floating point numbers */
530 
531 	/* lexical analysis */
532 
533 static void
534 yyerror(const char *s)
535 {
536     fprintf(stderr, "%s\n", s);
537 }
538 
539 int
540 yylex(void)
541 {
542     int c;
543 
544     while ((c = getchar()) == ' ')
545     {				/* skip over blanks */
546     }
547 
548     if (isupper(c))
549     {
550 	yylval.ival = c - 'A';
551 	return (VREG);
552     }
553     if (islower(c))
554     {
555 	yylval.ival = c - 'a';
556 	return (DREG);
557     }
558 
559     if (isdigit(c) || c == '.')
560     {
561 	/* gobble up digits, points, exponents */
562 	char buf[BSZ + 1], *cp = buf;
563 	int dot = 0, expr = 0;
564 
565 	for (; (cp - buf) < BSZ; ++cp, c = getchar())
566 	{
567 
568 	    *cp = (char) c;
569 	    if (isdigit(c))
570 		continue;
571 	    if (c == '.')
572 	    {
573 		if (dot++ || expr)
574 		    return ('.');	/* will cause syntax error */
575 		continue;
576 	    }
577 
578 	    if (c == 'e')
579 	    {
580 		if (expr++)
581 		    return ('e');	/*  will  cause  syntax  error  */
582 		continue;
583 	    }
584 
585 	    /*  end  of  number  */
586 	    break;
587 	}
588 	*cp = '\0';
589 
590 	if ((cp - buf) >= BSZ)
591 	    printf("constant  too  long:  truncated\n");
592 	else
593 	    ungetc(c, stdin);	/*  push  back  last  char  read  */
594 	yylval.dval = atof(buf);
595 	return (CONST);
596     }
597     return (c);
598 }
599 
600 static INTERVAL
601 hilo(double a, double b, double c, double d)
602 {
603     /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
604     /*  used  by  *,  /  routines  */
605     INTERVAL v;
606 
607     if (a > b)
608     {
609 	v.hi = a;
610 	v.lo = b;
611     }
612     else
613     {
614 	v.hi = b;
615 	v.lo = a;
616     }
617 
618     if (c > d)
619     {
620 	if (c > v.hi)
621 	    v.hi = c;
622 	if (d < v.lo)
623 	    v.lo = d;
624     }
625     else
626     {
627 	if (d > v.hi)
628 	    v.hi = d;
629 	if (c < v.lo)
630 	    v.lo = c;
631     }
632     return (v);
633 }
634 
635 INTERVAL
636 vmul(double a, double b, INTERVAL v)
637 {
638     return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
639 }
640 
641 int
642 dcheck(INTERVAL v)
643 {
644     if (v.hi >= 0. && v.lo <= 0.)
645     {
646 	printf("divisor  interval  contains  0.\n");
647 	return (1);
648     }
649     return (0);
650 }
651 
652 INTERVAL
653 vdiv(double a, double b, INTERVAL v)
654 {
655     return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
656 }
657 #line 656 "varsyntax_calc1.tab.c"
658 
659 /* For use in generated program */
660 #define yydepth (int)(yystack.s_mark - yystack.s_base)
661 #if YYBTYACC
662 #define yytrial (yyps->save)
663 #endif /* YYBTYACC */
664 
665 #if YYDEBUG
666 #include <stdio.h>	/* needed for printf */
667 #endif
668 
669 #include <stdlib.h>	/* needed for malloc, etc */
670 #include <string.h>	/* needed for memset */
671 
672 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
673 static int yygrowstack(YYSTACKDATA *data)
674 {
675     int i;
676     unsigned newsize;
677     YYINT *newss;
678     YYSTYPE *newvs;
679 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
680     YYLTYPE *newps;
681 #endif
682 
683     if ((newsize = data->stacksize) == 0)
684         newsize = YYINITSTACKSIZE;
685     else if (newsize >= YYMAXDEPTH)
686         return YYENOMEM;
687     else if ((newsize *= 2) > YYMAXDEPTH)
688         newsize = YYMAXDEPTH;
689 
690     i = (int) (data->s_mark - data->s_base);
691     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
692     if (newss == 0)
693         return YYENOMEM;
694 
695     data->s_base = newss;
696     data->s_mark = newss + i;
697 
698     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
699     if (newvs == 0)
700         return YYENOMEM;
701 
702     data->l_base = newvs;
703     data->l_mark = newvs + i;
704 
705 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
706     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
707     if (newps == 0)
708         return YYENOMEM;
709 
710     data->p_base = newps;
711     data->p_mark = newps + i;
712 #endif
713 
714     data->stacksize = newsize;
715     data->s_last = data->s_base + newsize - 1;
716 
717 #if YYDEBUG
718     if (yydebug)
719         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
720 #endif
721     return 0;
722 }
723 
724 #if YYPURE || defined(YY_NO_LEAKS)
725 static void yyfreestack(YYSTACKDATA *data)
726 {
727     free(data->s_base);
728     free(data->l_base);
729 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
730     free(data->p_base);
731 #endif
732     memset(data, 0, sizeof(*data));
733 }
734 #else
735 #define yyfreestack(data) /* nothing */
736 #endif /* YYPURE || defined(YY_NO_LEAKS) */
737 #if YYBTYACC
738 
739 static YYParseState *
740 yyNewState(unsigned size)
741 {
742     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
743     if (p == NULL) return NULL;
744 
745     p->yystack.stacksize = size;
746     if (size == 0)
747     {
748         p->yystack.s_base = NULL;
749         p->yystack.l_base = NULL;
750 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
751         p->yystack.p_base = NULL;
752 #endif
753         return p;
754     }
755     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
756     if (p->yystack.s_base == NULL) return NULL;
757     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
758     if (p->yystack.l_base == NULL) return NULL;
759     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
760 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
761     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
762     if (p->yystack.p_base == NULL) return NULL;
763     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
764 #endif
765 
766     return p;
767 }
768 
769 static void
770 yyFreeState(YYParseState *p)
771 {
772     yyfreestack(&p->yystack);
773     free(p);
774 }
775 #endif /* YYBTYACC */
776 
777 #define YYABORT  goto yyabort
778 #define YYREJECT goto yyabort
779 #define YYACCEPT goto yyaccept
780 #define YYERROR  goto yyerrlab
781 #if YYBTYACC
782 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
783 #define YYVALID_NESTED do { if (yyps->save && \
784                                 yyps->save->save == 0) goto yyvalid; } while(0)
785 #endif /* YYBTYACC */
786 
787 int
788 YYPARSE_DECL()
789 {
790     int yym, yyn, yystate, yyresult;
791 #if YYBTYACC
792     int yynewerrflag;
793     YYParseState *yyerrctx = NULL;
794 #endif /* YYBTYACC */
795 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
796     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
797 #endif
798 #if YYDEBUG
799     const char *yys;
800 
801     if ((yys = getenv("YYDEBUG")) != 0)
802     {
803         yyn = *yys;
804         if (yyn >= '0' && yyn <= '9')
805             yydebug = yyn - '0';
806     }
807     if (yydebug)
808         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
809 #endif
810 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
811     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
812 #endif
813 
814 #if YYBTYACC
815     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
816     yyps->save = 0;
817 #endif /* YYBTYACC */
818     yym = 0;
819     yyn = 0;
820     yynerrs = 0;
821     yyerrflag = 0;
822     yychar = YYEMPTY;
823     yystate = 0;
824 
825 #if YYPURE
826     memset(&yystack, 0, sizeof(yystack));
827 #endif
828 
829     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
830     yystack.s_mark = yystack.s_base;
831     yystack.l_mark = yystack.l_base;
832 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
833     yystack.p_mark = yystack.p_base;
834 #endif
835     yystate = 0;
836     *yystack.s_mark = 0;
837 
838 yyloop:
839     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
840     if (yychar < 0)
841     {
842 #if YYBTYACC
843         do {
844         if (yylvp < yylve)
845         {
846             /* we're currently re-reading tokens */
847             yylval = *yylvp++;
848 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
849             yylloc = *yylpp++;
850 #endif
851             yychar = *yylexp++;
852             break;
853         }
854         if (yyps->save)
855         {
856             /* in trial mode; save scanner results for future parse attempts */
857             if (yylvp == yylvlim)
858             {   /* Enlarge lexical value queue */
859                 size_t p = (size_t) (yylvp - yylvals);
860                 size_t s = (size_t) (yylvlim - yylvals);
861 
862                 s += YYLVQUEUEGROWTH;
863                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
864                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
865 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
866                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
867 #endif
868                 yylvp   = yylve = yylvals + p;
869                 yylvlim = yylvals + s;
870 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
871                 yylpp   = yylpe = yylpsns + p;
872                 yylplim = yylpsns + s;
873 #endif
874                 yylexp  = yylexemes + p;
875             }
876             *yylexp = (YYINT) YYLEX;
877             *yylvp++ = yylval;
878             yylve++;
879 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
880             *yylpp++ = yylloc;
881             yylpe++;
882 #endif
883             yychar = *yylexp++;
884             break;
885         }
886         /* normal operation, no conflict encountered */
887 #endif /* YYBTYACC */
888         yychar = YYLEX;
889 #if YYBTYACC
890         } while (0);
891 #endif /* YYBTYACC */
892         if (yychar < 0) yychar = YYEOF;
893 #if YYDEBUG
894         if (yydebug)
895         {
896             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
897             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
898                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
899 #ifdef YYSTYPE_TOSTRING
900 #if YYBTYACC
901             if (!yytrial)
902 #endif /* YYBTYACC */
903                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
904 #endif
905             fputc('\n', stderr);
906         }
907 #endif
908     }
909 #if YYBTYACC
910 
911     /* Do we have a conflict? */
912     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
913         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
914     {
915         YYINT ctry;
916 
917         if (yypath)
918         {
919             YYParseState *save;
920 #if YYDEBUG
921             if (yydebug)
922                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
923                                 YYDEBUGSTR, yydepth, yystate);
924 #endif
925             /* Switch to the next conflict context */
926             save = yypath;
927             yypath = save->save;
928             save->save = NULL;
929             ctry = save->ctry;
930             if (save->state != yystate) YYABORT;
931             yyFreeState(save);
932 
933         }
934         else
935         {
936 
937             /* Unresolved conflict - start/continue trial parse */
938             YYParseState *save;
939 #if YYDEBUG
940             if (yydebug)
941             {
942                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
943                 if (yyps->save)
944                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
945                 else
946                     fputs("Starting trial parse.\n", stderr);
947             }
948 #endif
949             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
950             if (save == NULL) goto yyenomem;
951             save->save            = yyps->save;
952             save->state           = yystate;
953             save->errflag         = yyerrflag;
954             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
955             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
956             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
957             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
958 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
959             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
960             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
961 #endif
962             ctry                  = yytable[yyn];
963             if (yyctable[ctry] == -1)
964             {
965 #if YYDEBUG
966                 if (yydebug && yychar >= YYEOF)
967                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
968 #endif
969                 ctry++;
970             }
971             save->ctry = ctry;
972             if (yyps->save == NULL)
973             {
974                 /* If this is a first conflict in the stack, start saving lexemes */
975                 if (!yylexemes)
976                 {
977                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
978                     if (yylexemes == NULL) goto yyenomem;
979                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
980                     if (yylvals == NULL) goto yyenomem;
981                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
982 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
983                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
984                     if (yylpsns == NULL) goto yyenomem;
985                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
986 #endif
987                 }
988                 if (yylvp == yylve)
989                 {
990                     yylvp  = yylve = yylvals;
991 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
992                     yylpp  = yylpe = yylpsns;
993 #endif
994                     yylexp = yylexemes;
995                     if (yychar >= YYEOF)
996                     {
997                         *yylve++ = yylval;
998 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
999                         *yylpe++ = yylloc;
1000 #endif
1001                         *yylexp  = (YYINT) yychar;
1002                         yychar   = YYEMPTY;
1003                     }
1004                 }
1005             }
1006             if (yychar >= YYEOF)
1007             {
1008                 yylvp--;
1009 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1010                 yylpp--;
1011 #endif
1012                 yylexp--;
1013                 yychar = YYEMPTY;
1014             }
1015             save->lexeme = (int) (yylvp - yylvals);
1016             yyps->save   = save;
1017         }
1018         if (yytable[yyn] == ctry)
1019         {
1020 #if YYDEBUG
1021             if (yydebug)
1022                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1023                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1024 #endif
1025             if (yychar < 0)
1026             {
1027                 yylvp++;
1028 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1029                 yylpp++;
1030 #endif
1031                 yylexp++;
1032             }
1033             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1034                 goto yyoverflow;
1035             yystate = yyctable[ctry];
1036             *++yystack.s_mark = (YYINT) yystate;
1037             *++yystack.l_mark = yylval;
1038 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1039             *++yystack.p_mark = yylloc;
1040 #endif
1041             yychar  = YYEMPTY;
1042             if (yyerrflag > 0) --yyerrflag;
1043             goto yyloop;
1044         }
1045         else
1046         {
1047             yyn = yyctable[ctry];
1048             goto yyreduce;
1049         }
1050     } /* End of code dealing with conflicts */
1051 #endif /* YYBTYACC */
1052     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1053             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1054     {
1055 #if YYDEBUG
1056         if (yydebug)
1057             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1058                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1059 #endif
1060         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1061         yystate = yytable[yyn];
1062         *++yystack.s_mark = yytable[yyn];
1063         *++yystack.l_mark = yylval;
1064 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1065         *++yystack.p_mark = yylloc;
1066 #endif
1067         yychar = YYEMPTY;
1068         if (yyerrflag > 0)  --yyerrflag;
1069         goto yyloop;
1070     }
1071     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1072             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1073     {
1074         yyn = yytable[yyn];
1075         goto yyreduce;
1076     }
1077     if (yyerrflag != 0) goto yyinrecovery;
1078 #if YYBTYACC
1079 
1080     yynewerrflag = 1;
1081     goto yyerrhandler;
1082     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1083 
1084 yyerrlab:
1085     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
1086      * before looking for error recovery */
1087     yystack.s_mark -= yym;
1088     yystate = *yystack.s_mark;
1089     yystack.l_mark -= yym;
1090 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1091     yystack.p_mark -= yym;
1092 #endif
1093 
1094     yynewerrflag = 0;
1095 yyerrhandler:
1096     while (yyps->save)
1097     {
1098         int ctry;
1099         YYParseState *save = yyps->save;
1100 #if YYDEBUG
1101         if (yydebug)
1102             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1103                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1104                     (int)(yylvp - yylvals - yyps->save->lexeme));
1105 #endif
1106         /* Memorize most forward-looking error state in case it's really an error. */
1107         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1108         {
1109             /* Free old saved error context state */
1110             if (yyerrctx) yyFreeState(yyerrctx);
1111             /* Create and fill out new saved error context state */
1112             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1113             if (yyerrctx == NULL) goto yyenomem;
1114             yyerrctx->save           = yyps->save;
1115             yyerrctx->state          = yystate;
1116             yyerrctx->errflag        = yyerrflag;
1117             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1118             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1119             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1120             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1121 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1122             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1123             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1124 #endif
1125             yyerrctx->lexeme         = (int) (yylvp - yylvals);
1126         }
1127         yylvp          = yylvals   + save->lexeme;
1128 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1129         yylpp          = yylpsns   + save->lexeme;
1130 #endif
1131         yylexp         = yylexemes + save->lexeme;
1132         yychar         = YYEMPTY;
1133         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1134         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1135         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1136         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1137 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1138         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1139         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1140 #endif
1141         ctry           = ++save->ctry;
1142         yystate        = save->state;
1143         /* We tried shift, try reduce now */
1144         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1145         yyps->save     = save->save;
1146         save->save     = NULL;
1147         yyFreeState(save);
1148 
1149         /* Nothing left on the stack -- error */
1150         if (!yyps->save)
1151         {
1152 #if YYDEBUG
1153             if (yydebug)
1154                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1155                                 YYPREFIX, yydepth);
1156 #endif
1157             /* Restore state as it was in the most forward-advanced error */
1158             yylvp          = yylvals   + yyerrctx->lexeme;
1159 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1160             yylpp          = yylpsns   + yyerrctx->lexeme;
1161 #endif
1162             yylexp         = yylexemes + yyerrctx->lexeme;
1163             yychar         = yylexp[-1];
1164             yylval         = yylvp[-1];
1165 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1166             yylloc         = yylpp[-1];
1167 #endif
1168             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1169             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1170             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1171             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1172 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1173             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1174             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1175 #endif
1176             yystate        = yyerrctx->state;
1177             yyFreeState(yyerrctx);
1178             yyerrctx       = NULL;
1179         }
1180         yynewerrflag = 1;
1181     }
1182     if (yynewerrflag == 0) goto yyinrecovery;
1183 #endif /* YYBTYACC */
1184 
1185     YYERROR_CALL("syntax error");
1186 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1187     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
1188 #endif
1189 
1190 #if !YYBTYACC
1191     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1192 yyerrlab:
1193 #endif
1194     ++yynerrs;
1195 
1196 yyinrecovery:
1197     if (yyerrflag < 3)
1198     {
1199         yyerrflag = 3;
1200         for (;;)
1201         {
1202             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1203                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1204             {
1205 #if YYDEBUG
1206                 if (yydebug)
1207                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1208                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1209 #endif
1210                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1211                 yystate = yytable[yyn];
1212                 *++yystack.s_mark = yytable[yyn];
1213                 *++yystack.l_mark = yylval;
1214 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1215                 /* lookahead position is error end position */
1216                 yyerror_loc_range[2] = yylloc;
1217                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1218                 *++yystack.p_mark = yyloc;
1219 #endif
1220                 goto yyloop;
1221             }
1222             else
1223             {
1224 #if YYDEBUG
1225                 if (yydebug)
1226                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1227                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
1228 #endif
1229                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1230 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1231                 /* the current TOS position is the error start position */
1232                 yyerror_loc_range[1] = *yystack.p_mark;
1233 #endif
1234 #if defined(YYDESTRUCT_CALL)
1235 #if YYBTYACC
1236                 if (!yytrial)
1237 #endif /* YYBTYACC */
1238 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1239                     YYDESTRUCT_CALL("error: discarding state",
1240                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1241 #else
1242                     YYDESTRUCT_CALL("error: discarding state",
1243                                     yystos[*yystack.s_mark], yystack.l_mark);
1244 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1245 #endif /* defined(YYDESTRUCT_CALL) */
1246                 --yystack.s_mark;
1247                 --yystack.l_mark;
1248 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1249                 --yystack.p_mark;
1250 #endif
1251             }
1252         }
1253     }
1254     else
1255     {
1256         if (yychar == YYEOF) goto yyabort;
1257 #if YYDEBUG
1258         if (yydebug)
1259         {
1260             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1261             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1262                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
1263         }
1264 #endif
1265 #if defined(YYDESTRUCT_CALL)
1266 #if YYBTYACC
1267         if (!yytrial)
1268 #endif /* YYBTYACC */
1269 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1270             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1271 #else
1272             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1273 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1274 #endif /* defined(YYDESTRUCT_CALL) */
1275         yychar = YYEMPTY;
1276         goto yyloop;
1277     }
1278 
1279 yyreduce:
1280     yym = yylen[yyn];
1281 #if YYDEBUG
1282     if (yydebug)
1283     {
1284         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1285                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1286 #ifdef YYSTYPE_TOSTRING
1287 #if YYBTYACC
1288         if (!yytrial)
1289 #endif /* YYBTYACC */
1290             if (yym > 0)
1291             {
1292                 int i;
1293                 fputc('<', stderr);
1294                 for (i = yym; i > 0; i--)
1295                 {
1296                     if (i != yym) fputs(", ", stderr);
1297                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1298                                            yystack.l_mark[1-i]), stderr);
1299                 }
1300                 fputc('>', stderr);
1301             }
1302 #endif
1303         fputc('\n', stderr);
1304     }
1305 #endif
1306     if (yym > 0)
1307         yyval = yystack.l_mark[1-yym];
1308     else
1309         memset(&yyval, 0, sizeof yyval);
1310 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1311 
1312     /* Perform position reduction */
1313     memset(&yyloc, 0, sizeof(yyloc));
1314 #if YYBTYACC
1315     if (!yytrial)
1316 #endif /* YYBTYACC */
1317     {
1318         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
1319         /* just in case YYERROR is invoked within the action, save
1320            the start of the rhs as the error start position */
1321         yyerror_loc_range[1] = yystack.p_mark[1-yym];
1322     }
1323 #endif
1324 
1325     switch (yyn)
1326     {
1327 case 3:
1328 #line 59 "varsyntax_calc1.y"
1329 	{
1330 		(void) printf("%15.8f\n", yystack.l_mark[-1].dval);
1331 	}
1332 break;
1333 case 4:
1334 #line 63 "varsyntax_calc1.y"
1335 	{
1336 		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.l_mark[-1].vval.hi);
1337 	}
1338 break;
1339 case 5:
1340 #line 67 "varsyntax_calc1.y"
1341 	{
1342 		dreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].dval;
1343 	}
1344 break;
1345 case 6:
1346 #line 71 "varsyntax_calc1.y"
1347 	{
1348 		vreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].vval;
1349 	}
1350 break;
1351 case 7:
1352 #line 75 "varsyntax_calc1.y"
1353 	{
1354 		yyerrok;
1355 	}
1356 break;
1357 case 9:
1358 #line 82 "varsyntax_calc1.y"
1359 	{
1360 		yyval.dval = dreg[yystack.l_mark[0].ival]; /* $$ & $1 are sufficient here*/
1361 	}
1362 break;
1363 case 10:
1364 #line 86 "varsyntax_calc1.y"
1365 	{
1366 		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
1367 	}
1368 break;
1369 case 11:
1370 #line 90 "varsyntax_calc1.y"
1371 	{
1372 		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
1373 	}
1374 break;
1375 case 12:
1376 #line 94 "varsyntax_calc1.y"
1377 	{
1378 		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
1379 	}
1380 break;
1381 case 13:
1382 #line 98 "varsyntax_calc1.y"
1383 	{
1384 		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
1385 	}
1386 break;
1387 case 14:
1388 #line 102 "varsyntax_calc1.y"
1389 	{
1390 		yyval.dval = -yystack.l_mark[0].dval;
1391 	}
1392 break;
1393 case 15:
1394 #line 106 "varsyntax_calc1.y"
1395 	{
1396 		yyval.dval = yystack.l_mark[-1].dval;
1397 	}
1398 break;
1399 case 16:
1400 #line 112 "varsyntax_calc1.y"
1401 	{
1402 		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
1403 	}
1404 break;
1405 case 17:
1406 #line 116 "varsyntax_calc1.y"
1407 	{
1408 		yyval.vval.lo = yystack.l_mark[-3].dval;
1409 		yyval.vval.hi = yystack.l_mark[-1].dval;
1410 		if ( yyval.vval.lo > yyval.vval.hi )
1411 		{
1412 			(void) printf("interval out of order\n");
1413 			YYERROR;
1414 		}
1415 	}
1416 break;
1417 case 18:
1418 #line 126 "varsyntax_calc1.y"
1419 	{
1420 		yyval.vval = vreg[yystack.l_mark[0].ival];
1421 	}
1422 break;
1423 case 19:
1424 #line 130 "varsyntax_calc1.y"
1425 	{
1426 		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
1427 		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
1428 	}
1429 break;
1430 case 20:
1431 #line 135 "varsyntax_calc1.y"
1432 	{
1433 		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
1434 		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
1435 	}
1436 break;
1437 case 21:
1438 #line 140 "varsyntax_calc1.y"
1439 	{
1440 		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
1441 		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
1442 	}
1443 break;
1444 case 22:
1445 #line 145 "varsyntax_calc1.y"
1446 	{
1447 		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
1448 		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
1449 	}
1450 break;
1451 case 23:
1452 #line 150 "varsyntax_calc1.y"
1453 	{
1454 		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1455 	}
1456 break;
1457 case 24:
1458 #line 154 "varsyntax_calc1.y"
1459 	{
1460 		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1461 	}
1462 break;
1463 case 25:
1464 #line 158 "varsyntax_calc1.y"
1465 	{
1466 		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
1467 		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1468 	}
1469 break;
1470 case 26:
1471 #line 163 "varsyntax_calc1.y"
1472 	{
1473 		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
1474 		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1475 	}
1476 break;
1477 case 27:
1478 #line 168 "varsyntax_calc1.y"
1479 	{
1480 		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
1481 		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
1482 	}
1483 break;
1484 case 28:
1485 #line 173 "varsyntax_calc1.y"
1486 	{
1487 		yyval.vval = yystack.l_mark[-1].vval;
1488 	}
1489 break;
1490 #line 1489 "varsyntax_calc1.tab.c"
1491     default:
1492         break;
1493     }
1494     yystack.s_mark -= yym;
1495     yystate = *yystack.s_mark;
1496     yystack.l_mark -= yym;
1497 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1498     yystack.p_mark -= yym;
1499 #endif
1500     yym = yylhs[yyn];
1501     if (yystate == 0 && yym == 0)
1502     {
1503 #if YYDEBUG
1504         if (yydebug)
1505         {
1506             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1507 #ifdef YYSTYPE_TOSTRING
1508 #if YYBTYACC
1509             if (!yytrial)
1510 #endif /* YYBTYACC */
1511                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1512 #endif
1513             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1514         }
1515 #endif
1516         yystate = YYFINAL;
1517         *++yystack.s_mark = YYFINAL;
1518         *++yystack.l_mark = yyval;
1519 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1520         *++yystack.p_mark = yyloc;
1521 #endif
1522         if (yychar < 0)
1523         {
1524 #if YYBTYACC
1525             do {
1526             if (yylvp < yylve)
1527             {
1528                 /* we're currently re-reading tokens */
1529                 yylval = *yylvp++;
1530 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1531                 yylloc = *yylpp++;
1532 #endif
1533                 yychar = *yylexp++;
1534                 break;
1535             }
1536             if (yyps->save)
1537             {
1538                 /* in trial mode; save scanner results for future parse attempts */
1539                 if (yylvp == yylvlim)
1540                 {   /* Enlarge lexical value queue */
1541                     size_t p = (size_t) (yylvp - yylvals);
1542                     size_t s = (size_t) (yylvlim - yylvals);
1543 
1544                     s += YYLVQUEUEGROWTH;
1545                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1546                         goto yyenomem;
1547                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1548                         goto yyenomem;
1549 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1550                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1551                         goto yyenomem;
1552 #endif
1553                     yylvp   = yylve = yylvals + p;
1554                     yylvlim = yylvals + s;
1555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1556                     yylpp   = yylpe = yylpsns + p;
1557                     yylplim = yylpsns + s;
1558 #endif
1559                     yylexp  = yylexemes + p;
1560                 }
1561                 *yylexp = (YYINT) YYLEX;
1562                 *yylvp++ = yylval;
1563                 yylve++;
1564 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1565                 *yylpp++ = yylloc;
1566                 yylpe++;
1567 #endif
1568                 yychar = *yylexp++;
1569                 break;
1570             }
1571             /* normal operation, no conflict encountered */
1572 #endif /* YYBTYACC */
1573             yychar = YYLEX;
1574 #if YYBTYACC
1575             } while (0);
1576 #endif /* YYBTYACC */
1577             if (yychar < 0) yychar = YYEOF;
1578 #if YYDEBUG
1579             if (yydebug)
1580             {
1581                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1582                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1583                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1584             }
1585 #endif
1586         }
1587         if (yychar == YYEOF) goto yyaccept;
1588         goto yyloop;
1589     }
1590     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1591             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1592         yystate = yytable[yyn];
1593     else
1594         yystate = yydgoto[yym];
1595 #if YYDEBUG
1596     if (yydebug)
1597     {
1598         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1599 #ifdef YYSTYPE_TOSTRING
1600 #if YYBTYACC
1601         if (!yytrial)
1602 #endif /* YYBTYACC */
1603             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1604 #endif
1605         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1606     }
1607 #endif
1608     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1609     *++yystack.s_mark = (YYINT) yystate;
1610     *++yystack.l_mark = yyval;
1611 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1612     *++yystack.p_mark = yyloc;
1613 #endif
1614     goto yyloop;
1615 #if YYBTYACC
1616 
1617     /* Reduction declares that this path is valid. Set yypath and do a full parse */
1618 yyvalid:
1619     if (yypath) YYABORT;
1620     while (yyps->save)
1621     {
1622         YYParseState *save = yyps->save;
1623         yyps->save = save->save;
1624         save->save = yypath;
1625         yypath = save;
1626     }
1627 #if YYDEBUG
1628     if (yydebug)
1629         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1630                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1631 #endif
1632     if (yyerrctx)
1633     {
1634         yyFreeState(yyerrctx);
1635         yyerrctx = NULL;
1636     }
1637     yylvp          = yylvals + yypath->lexeme;
1638 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1639     yylpp          = yylpsns + yypath->lexeme;
1640 #endif
1641     yylexp         = yylexemes + yypath->lexeme;
1642     yychar         = YYEMPTY;
1643     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1644     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1645     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1646     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1647 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1648     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1649     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1650 #endif
1651     yystate        = yypath->state;
1652     goto yyloop;
1653 #endif /* YYBTYACC */
1654 
1655 yyoverflow:
1656     YYERROR_CALL("yacc stack overflow");
1657 #if YYBTYACC
1658     goto yyabort_nomem;
1659 yyenomem:
1660     YYERROR_CALL("memory exhausted");
1661 yyabort_nomem:
1662 #endif /* YYBTYACC */
1663     yyresult = 2;
1664     goto yyreturn;
1665 
1666 yyabort:
1667     yyresult = 1;
1668     goto yyreturn;
1669 
1670 yyaccept:
1671 #if YYBTYACC
1672     if (yyps->save) goto yyvalid;
1673 #endif /* YYBTYACC */
1674     yyresult = 0;
1675 
1676 yyreturn:
1677 #if defined(YYDESTRUCT_CALL)
1678     if (yychar != YYEOF && yychar != YYEMPTY)
1679 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1680         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1681 #else
1682         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1683 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1684 
1685     {
1686         YYSTYPE *pv;
1687 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1688         YYLTYPE *pp;
1689 
1690         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1691              YYDESTRUCT_CALL("cleanup: discarding state",
1692                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1693 #else
1694         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1695              YYDESTRUCT_CALL("cleanup: discarding state",
1696                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1697 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1698     }
1699 #endif /* defined(YYDESTRUCT_CALL) */
1700 
1701 #if YYBTYACC
1702     if (yyerrctx)
1703     {
1704         yyFreeState(yyerrctx);
1705         yyerrctx = NULL;
1706     }
1707     while (yyps)
1708     {
1709         YYParseState *save = yyps;
1710         yyps = save->save;
1711         save->save = NULL;
1712         yyFreeState(save);
1713     }
1714     while (yypath)
1715     {
1716         YYParseState *save = yypath;
1717         yypath = save->save;
1718         save->save = NULL;
1719         yyFreeState(save);
1720     }
1721 #endif /* YYBTYACC */
1722     yyfreestack(&yystack);
1723     return (yyresult);
1724 }
1725