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