1 /* original parser id follows */
2 /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
3 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
8 #define YYCHECK "yyyymmdd"
11 #define yyclearin (yychar = YYEMPTY)
12 #define yyerrok (yyerrflag = 0)
13 #define YYRECOVERING() (yyerrflag != 0)
18 #define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")
21 #define yyparse calc1_parse
25 #define yylex calc1_lex
29 #define yyerror calc1_error
33 #define yychar calc1_char
37 #define yyval calc1_val
41 #define yylval calc1_lval
45 #define yydebug calc1_debug
49 #define yynerrs calc1_nerrs
53 #define yyerrflag calc1_errflag
54 #endif /* yyerrflag */
57 #define yylhs calc1_lhs
61 #define yylen calc1_len
65 #define yydefred calc1_defred
69 #define yystos calc1_stos
73 #define yydgoto calc1_dgoto
77 #define yysindex calc1_sindex
81 #define yyrindex calc1_rindex
85 #define yygindex calc1_gindex
89 #define yytable calc1_table
93 #define yycheck calc1_check
97 #define yyname calc1_name
101 #define yyrule calc1_rule
107 #define yycindex calc1_cindex
108 #endif /* yycindex */
111 #define yyctable calc1_ctable
112 #endif /* yyctable */
114 #endif /* YYBTYACC */
116 #define YYPREFIX "calc1_"
120 #line 3 "btyacc_calc1.y"
122 /* http://dinosaur.compilertools.net/yacc/index.html */
129 typedef struct interval
135 INTERVAL vmul(double, double, INTERVAL);
136 INTERVAL vdiv(double, double, INTERVAL);
138 int dcheck(INTERVAL);
144 #undef YYSTYPE_IS_DECLARED
145 #define YYSTYPE_IS_DECLARED 1
147 #ifndef YYSTYPE_IS_DECLARED
148 #define YYSTYPE_IS_DECLARED 1
149 #line 29 "btyacc_calc1.y"
156 #endif /* !YYSTYPE_IS_DECLARED */
157 #line 158 "btyacc_calc1.tab.c"
159 /* compatibility with bison */
161 /* compatibility with FreeBSD */
162 # ifdef YYPARSE_PARAM_TYPE
163 # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
165 # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
168 # define YYPARSE_DECL() yyparse(void)
171 /* Parameters sent to lex. */
173 # ifdef YYLEX_PARAM_TYPE
174 # define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
176 # define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
178 # define YYLEX yylex(&yylval, YYLEX_PARAM)
180 # define YYLEX_DECL() yylex(YYSTYPE *yylval)
181 # define YYLEX yylex(&yylval)
184 /* Parameters sent to yyerror. */
186 #define YYERROR_DECL() yyerror(const char *s)
189 #define YYERROR_CALL(msg) yyerror(msg)
192 extern int YYPARSE_DECL();
198 #define YYERRCODE 256
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,
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,
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,
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,
227 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
228 static const YYINT calc1_dgoto[] = { 1,
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,
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,
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,
257 static const YYINT calc1_gindex[] = { 0,
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,
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,
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,
342 #define YYMAXTOKEN 260
343 #define YYUNDFTOKEN 266
344 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
346 static const char *const calc1_name[] = {
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",
358 static const char *const calc1_rule[] = {
361 "lines : lines line '\\n'",
362 "lines : lines error '\\n'",
365 "line : DREG '=' dexp",
366 "line : VREG '=' vexp",
369 "dexp : dexp '+' dexp",
370 "dexp : dexp '-' dexp",
371 "dexp : dexp '*' dexp",
372 "dexp : dexp '/' dexp",
374 "dexp : '(' dexp ')'",
376 "vexp : '(' dexp ',' dexp ')'",
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",
387 "vexp : '(' vexp ')'",
396 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
397 #ifndef YYLLOC_DEFAULT
398 #define YYLLOC_DEFAULT(loc, rhs, n) \
403 (loc).first_line = YYRHSLOC(rhs, 0).last_line; \
404 (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
405 (loc).last_line = YYRHSLOC(rhs, 0).last_line; \
406 (loc).last_column = YYRHSLOC(rhs, 0).last_column; \
410 (loc).first_line = YYRHSLOC(rhs, 1).first_line; \
411 (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
412 (loc).last_line = YYRHSLOC(rhs, n).last_line; \
413 (loc).last_column = YYRHSLOC(rhs, n).last_column; \
416 #endif /* YYLLOC_DEFAULT */
417 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
420 #ifndef YYLVQUEUEGROWTH
421 #define YYLVQUEUEGROWTH 32
423 #endif /* YYBTYACC */
425 /* define the initial stack-sizes */
428 #define YYMAXDEPTH YYSTACKSIZE
431 #define YYSTACKSIZE YYMAXDEPTH
433 #define YYSTACKSIZE 10000
434 #define YYMAXDEPTH 10000
438 #ifndef YYINITSTACKSIZE
439 #define YYINITSTACKSIZE 200
449 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
456 struct YYParseState_s
458 struct YYParseState_s *save; /* Previously saved parser state */
459 YYSTACKDATA yystack; /* saved parser stack */
460 int state; /* saved parser state */
461 int errflag; /* saved error recovery status */
462 int lexeme; /* saved index of the conflict lexeme in the lexical queue */
463 YYINT ctry; /* saved index in yyctable[] for this conflict */
465 typedef struct YYParseState_s YYParseState;
466 #endif /* YYBTYACC */
467 #line 174 "btyacc_calc1.y"
468 /* beginning of subroutines section */
473 while(!feof(stdin)) {
479 #define BSZ 50 /* buffer size for floating point numbers */
484 fprintf(stderr, "%s\n", s);
487 /* lexical analysis */
494 while ((c = getchar()) == ' ')
495 { /* skip over blanks */
501 (*yylval).ival = c - 'A';
503 yylval.ival = c - 'A';
510 (*yylval).ival = c - 'a';
512 yylval.ival = c - 'a';
517 if (isdigit(c) || c == '.')
519 /* gobble up digits, points, exponents */
520 char buf[BSZ + 1], *cp = buf;
521 int dot = 0, expr = 0;
523 for (; (cp - buf) < BSZ; ++cp, c = getchar())
532 return ('.'); /* will cause syntax error */
539 return ('e'); /* will cause syntax error */
548 if ((cp - buf) >= BSZ)
549 printf("constant too long: truncated\n");
551 ungetc(c, stdin); /* push back last char read */
553 (*yylval).dval = atof(buf);
555 yylval.dval = atof(buf);
563 hilo(double a, double b, double c, double d)
565 /* returns the smallest interval containing a, b, c, and d */
566 /* used by *, / routines */
598 vmul(double a, double b, INTERVAL v)
600 return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
606 if (v.hi >= 0. && v.lo <= 0.)
608 printf("divisor interval contains 0.\n");
615 vdiv(double a, double b, INTERVAL v)
617 return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
619 #line 620 "btyacc_calc1.tab.c"
621 /* For use in generated program */
622 #define yydepth (int)(yystack.s_mark - yystack.s_base)
624 #define yytrial (yyps->save)
625 #endif /* YYBTYACC */
628 #include <stdio.h> /* needed for printf */
631 #include <stdlib.h> /* needed for malloc, etc */
632 #include <string.h> /* needed for memset */
634 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
635 static int yygrowstack(YYSTACKDATA *data)
641 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
645 if ((newsize = data->stacksize) == 0)
646 newsize = YYINITSTACKSIZE;
647 else if (newsize >= YYMAXDEPTH)
649 else if ((newsize *= 2) > YYMAXDEPTH)
650 newsize = YYMAXDEPTH;
652 i = (int) (data->s_mark - data->s_base);
653 newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
657 data->s_base = newss;
658 data->s_mark = newss + i;
660 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
664 data->l_base = newvs;
665 data->l_mark = newvs + i;
667 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
668 newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
672 data->p_base = newps;
673 data->p_mark = newps + i;
676 data->stacksize = newsize;
677 data->s_last = data->s_base + newsize - 1;
681 fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
686 #if YYPURE || defined(YY_NO_LEAKS)
687 static void yyfreestack(YYSTACKDATA *data)
691 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
694 memset(data, 0, sizeof(*data));
697 #define yyfreestack(data) /* nothing */
698 #endif /* YYPURE || defined(YY_NO_LEAKS) */
701 static YYParseState *
702 yyNewState(unsigned size)
704 YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
705 if (p == NULL) return NULL;
707 p->yystack.stacksize = size;
710 p->yystack.s_base = NULL;
711 p->yystack.l_base = NULL;
712 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
713 p->yystack.p_base = NULL;
717 p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));
718 if (p->yystack.s_base == NULL) return NULL;
719 p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
720 if (p->yystack.l_base == NULL) return NULL;
721 memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
722 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
723 p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
724 if (p->yystack.p_base == NULL) return NULL;
725 memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
732 yyFreeState(YYParseState *p)
734 yyfreestack(&p->yystack);
737 #endif /* YYBTYACC */
739 #define YYABORT goto yyabort
740 #define YYREJECT goto yyabort
741 #define YYACCEPT goto yyaccept
742 #define YYERROR goto yyerrlab
744 #define YYVALID do { if (yyps->save) goto yyvalid; } while(0)
745 #define YYVALID_NESTED do { if (yyps->save && \
746 yyps->save->save == 0) goto yyvalid; } while(0)
747 #endif /* YYBTYACC */
758 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
759 YYLTYPE yyloc; /* position returned by actions */
760 YYLTYPE yylloc; /* position from the lexer */
763 /* variables for the parser stack */
767 /* Current parser state */
768 static YYParseState *yyps = 0;
770 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
771 static YYParseState *yypath = 0;
773 /* Base of the lexical value queue */
774 static YYSTYPE *yylvals = 0;
776 /* Current position at lexical value queue */
777 static YYSTYPE *yylvp = 0;
779 /* End position of lexical value queue */
780 static YYSTYPE *yylve = 0;
782 /* The last allocated position at the lexical value queue */
783 static YYSTYPE *yylvlim = 0;
785 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
786 /* Base of the lexical position queue */
787 static YYLTYPE *yylpsns = 0;
789 /* Current position at lexical position queue */
790 static YYLTYPE *yylpp = 0;
792 /* End position of lexical position queue */
793 static YYLTYPE *yylpe = 0;
795 /* The last allocated position at the lexical position queue */
796 static YYLTYPE *yylplim = 0;
799 /* Current position at lexical token queue */
800 static YYINT *yylexp = 0;
802 static YYINT *yylexemes = 0;
803 #endif /* YYBTYACC */
804 int yym, yyn, yystate, yyresult;
807 YYParseState *yyerrctx = NULL;
808 #endif /* YYBTYACC */
809 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
810 YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */
815 if ((yys = getenv("YYDEBUG")) != 0)
818 if (yyn >= '0' && yyn <= '9')
822 fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
824 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
825 memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
830 memset(&yyval, 0, sizeof(yyval));
831 memset(&yylval, 0, sizeof(yylval));
832 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
833 memset(&yyloc, 0, sizeof(yyloc));
834 memset(&yylloc, 0, sizeof(yylloc));
838 yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
840 #endif /* YYBTYACC */
849 memset(&yystack, 0, sizeof(yystack));
852 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
853 yystack.s_mark = yystack.s_base;
854 yystack.l_mark = yystack.l_base;
855 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
856 yystack.p_mark = yystack.p_base;
862 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
869 /* we're currently re-reading tokens */
871 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
879 /* in trial mode; save scanner results for future parse attempts */
880 if (yylvp == yylvlim)
881 { /* Enlarge lexical value queue */
882 size_t p = (size_t) (yylvp - yylvals);
883 size_t s = (size_t) (yylvlim - yylvals);
885 s += YYLVQUEUEGROWTH;
886 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
887 if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
888 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
889 if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
891 yylvp = yylve = yylvals + p;
892 yylvlim = yylvals + s;
893 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
894 yylpp = yylpe = yylpsns + p;
895 yylplim = yylpsns + s;
897 yylexp = yylexemes + p;
899 *yylexp = (YYINT) YYLEX;
902 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
909 /* normal operation, no conflict encountered */
910 #endif /* YYBTYACC */
914 #endif /* YYBTYACC */
915 if (yychar < 0) yychar = YYEOF;
919 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
920 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
921 YYDEBUGSTR, yydepth, yystate, yychar, yys);
922 #ifdef YYSTYPE_TOSTRING
925 #endif /* YYBTYACC */
926 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
934 /* Do we have a conflict? */
935 if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
936 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
945 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
946 YYDEBUGSTR, yydepth, yystate);
948 /* Switch to the next conflict context */
953 if (save->state != yystate) YYABORT;
960 /* Unresolved conflict - start/continue trial parse */
965 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
967 fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
969 fputs("Starting trial parse.\n", stderr);
972 save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
973 if (save == NULL) goto yyenomem;
974 save->save = yyps->save;
975 save->state = yystate;
976 save->errflag = yyerrflag;
977 save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
978 memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
979 save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
980 memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
981 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
982 save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
983 memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
986 if (yyctable[ctry] == -1)
989 if (yydebug && yychar >= YYEOF)
990 fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
995 if (yyps->save == NULL)
997 /* If this is a first conflict in the stack, start saving lexemes */
1000 yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
1001 if (yylexemes == NULL) goto yyenomem;
1002 yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
1003 if (yylvals == NULL) goto yyenomem;
1004 yylvlim = yylvals + YYLVQUEUEGROWTH;
1005 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1006 yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
1007 if (yylpsns == NULL) goto yyenomem;
1008 yylplim = yylpsns + YYLVQUEUEGROWTH;
1013 yylvp = yylve = yylvals;
1014 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1015 yylpp = yylpe = yylpsns;
1018 if (yychar >= YYEOF)
1021 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1024 *yylexp = (YYINT) yychar;
1029 if (yychar >= YYEOF)
1032 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1038 save->lexeme = (int) (yylvp - yylvals);
1041 if (yytable[yyn] == ctry)
1045 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1046 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1051 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1056 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1058 yystate = yyctable[ctry];
1059 *++yystack.s_mark = (YYINT) yystate;
1060 *++yystack.l_mark = yylval;
1061 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1062 *++yystack.p_mark = yylloc;
1065 if (yyerrflag > 0) --yyerrflag;
1070 yyn = yyctable[ctry];
1073 } /* End of code dealing with conflicts */
1074 #endif /* YYBTYACC */
1075 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1076 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1080 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1081 YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1083 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1084 yystate = yytable[yyn];
1085 *++yystack.s_mark = yytable[yyn];
1086 *++yystack.l_mark = yylval;
1087 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1088 *++yystack.p_mark = yylloc;
1091 if (yyerrflag > 0) --yyerrflag;
1094 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1095 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1100 if (yyerrflag != 0) goto yyinrecovery;
1105 goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1108 /* explicit YYERROR from an action -- pop the rhs of the rule reduced
1109 * before looking for error recovery */
1110 yystack.s_mark -= yym;
1111 yystate = *yystack.s_mark;
1112 yystack.l_mark -= yym;
1113 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1114 yystack.p_mark -= yym;
1122 YYParseState *save = yyps->save;
1125 fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1126 YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1127 (int)(yylvp - yylvals - yyps->save->lexeme));
1129 /* Memorize most forward-looking error state in case it's really an error. */
1130 if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1132 /* Free old saved error context state */
1133 if (yyerrctx) yyFreeState(yyerrctx);
1134 /* Create and fill out new saved error context state */
1135 yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1136 if (yyerrctx == NULL) goto yyenomem;
1137 yyerrctx->save = yyps->save;
1138 yyerrctx->state = yystate;
1139 yyerrctx->errflag = yyerrflag;
1140 yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1141 memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1142 yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1143 memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1144 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1145 yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1146 memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1148 yyerrctx->lexeme = (int) (yylvp - yylvals);
1150 yylvp = yylvals + save->lexeme;
1151 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1152 yylpp = yylpsns + save->lexeme;
1154 yylexp = yylexemes + save->lexeme;
1156 yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1157 memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1158 yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1159 memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1160 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1161 yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1162 memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1164 ctry = ++save->ctry;
1165 yystate = save->state;
1166 /* We tried shift, try reduce now */
1167 if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1168 yyps->save = save->save;
1172 /* Nothing left on the stack -- error */
1177 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1180 /* Restore state as it was in the most forward-advanced error */
1181 yylvp = yylvals + yyerrctx->lexeme;
1182 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1183 yylpp = yylpsns + yyerrctx->lexeme;
1185 yylexp = yylexemes + yyerrctx->lexeme;
1186 yychar = yylexp[-1];
1188 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1191 yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1192 memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1193 yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1194 memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1195 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1196 yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1197 memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1199 yystate = yyerrctx->state;
1200 yyFreeState(yyerrctx);
1205 if (yynewerrflag == 0) goto yyinrecovery;
1206 #endif /* YYBTYACC */
1208 YYERROR_CALL("syntax error");
1209 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1210 yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
1214 goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1225 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1226 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1230 fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1231 YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1233 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1234 yystate = yytable[yyn];
1235 *++yystack.s_mark = yytable[yyn];
1236 *++yystack.l_mark = yylval;
1237 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1238 /* lookahead position is error end position */
1239 yyerror_loc_range[2] = yylloc;
1240 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1241 *++yystack.p_mark = yyloc;
1249 fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1250 YYDEBUGSTR, yydepth, *yystack.s_mark);
1252 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1253 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1254 /* the current TOS position is the error start position */
1255 yyerror_loc_range[1] = *yystack.p_mark;
1257 #if defined(YYDESTRUCT_CALL)
1260 #endif /* YYBTYACC */
1261 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1262 YYDESTRUCT_CALL("error: discarding state",
1263 yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1265 YYDESTRUCT_CALL("error: discarding state",
1266 yystos[*yystack.s_mark], yystack.l_mark);
1267 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1268 #endif /* defined(YYDESTRUCT_CALL) */
1271 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1279 if (yychar == YYEOF) goto yyabort;
1283 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1284 fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1285 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1288 #if defined(YYDESTRUCT_CALL)
1291 #endif /* YYBTYACC */
1292 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1293 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1295 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1296 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1297 #endif /* defined(YYDESTRUCT_CALL) */
1307 fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1308 YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1309 #ifdef YYSTYPE_TOSTRING
1312 #endif /* YYBTYACC */
1317 for (i = yym; i > 0; i--)
1319 if (i != yym) fputs(", ", stderr);
1320 fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1321 yystack.l_mark[1-i]), stderr);
1326 fputc('\n', stderr);
1330 yyval = yystack.l_mark[1-yym];
1332 memset(&yyval, 0, sizeof yyval);
1333 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1335 /* Perform position reduction */
1336 memset(&yyloc, 0, sizeof(yyloc));
1339 #endif /* YYBTYACC */
1341 YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
1342 /* just in case YYERROR is invoked within the action, save
1343 the start of the rhs as the error start position */
1344 yyerror_loc_range[1] = yystack.p_mark[1-yym];
1351 #line 51 "btyacc_calc1.y"
1355 #line 52 "btyacc_calc1.y"
1356 {YYVALID;} if (!yytrial)
1357 #line 53 "btyacc_calc1.y"
1364 #line 59 "btyacc_calc1.y"
1366 (void) printf("%15.8f\n", yystack.l_mark[0].dval);
1371 #line 63 "btyacc_calc1.y"
1373 (void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[0].vval.lo, yystack.l_mark[0].vval.hi);
1378 #line 67 "btyacc_calc1.y"
1380 dreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].dval;
1385 #line 71 "btyacc_calc1.y"
1387 vreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].vval;
1392 #line 78 "btyacc_calc1.y"
1394 yyval.dval = dreg[yystack.l_mark[0].ival];
1399 #line 82 "btyacc_calc1.y"
1401 yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
1406 #line 86 "btyacc_calc1.y"
1408 yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
1413 #line 90 "btyacc_calc1.y"
1415 yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
1420 #line 94 "btyacc_calc1.y"
1422 yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
1427 #line 98 "btyacc_calc1.y"
1429 yyval.dval = -yystack.l_mark[0].dval;
1434 #line 102 "btyacc_calc1.y"
1436 yyval.dval = yystack.l_mark[-1].dval;
1441 #line 108 "btyacc_calc1.y"
1443 yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
1448 #line 112 "btyacc_calc1.y"
1450 yyval.vval.lo = yystack.l_mark[-3].dval;
1451 yyval.vval.hi = yystack.l_mark[-1].dval;
1452 if ( yyval.vval.lo > yyval.vval.hi )
1454 (void) printf("interval out of order\n");
1461 #line 122 "btyacc_calc1.y"
1463 yyval.vval = vreg[yystack.l_mark[0].ival];
1468 #line 126 "btyacc_calc1.y"
1470 yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
1471 yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
1476 #line 131 "btyacc_calc1.y"
1478 yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
1479 yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
1484 #line 136 "btyacc_calc1.y"
1486 yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
1487 yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
1492 #line 141 "btyacc_calc1.y"
1494 yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
1495 yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
1500 #line 146 "btyacc_calc1.y"
1502 yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1507 #line 150 "btyacc_calc1.y"
1509 yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1514 #line 154 "btyacc_calc1.y"
1516 if (dcheck(yystack.l_mark[0].vval)) YYERROR;
1517 yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
1522 #line 159 "btyacc_calc1.y"
1524 if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
1525 yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
1530 #line 164 "btyacc_calc1.y"
1532 yyval.vval.hi = -yystack.l_mark[0].vval.lo;
1533 yyval.vval.lo = -yystack.l_mark[0].vval.hi;
1538 #line 169 "btyacc_calc1.y"
1540 yyval.vval = yystack.l_mark[-1].vval;
1543 #line 1544 "btyacc_calc1.tab.c"
1547 yystack.s_mark -= yym;
1548 yystate = *yystack.s_mark;
1549 yystack.l_mark -= yym;
1550 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1551 yystack.p_mark -= yym;
1554 if (yystate == 0 && yym == 0)
1559 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1560 #ifdef YYSTYPE_TOSTRING
1563 #endif /* YYBTYACC */
1564 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1566 fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1570 *++yystack.s_mark = YYFINAL;
1571 *++yystack.l_mark = yyval;
1572 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1573 *++yystack.p_mark = yyloc;
1581 /* we're currently re-reading tokens */
1583 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1591 /* in trial mode; save scanner results for future parse attempts */
1592 if (yylvp == yylvlim)
1593 { /* Enlarge lexical value queue */
1594 size_t p = (size_t) (yylvp - yylvals);
1595 size_t s = (size_t) (yylvlim - yylvals);
1597 s += YYLVQUEUEGROWTH;
1598 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1600 if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1602 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1603 if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1606 yylvp = yylve = yylvals + p;
1607 yylvlim = yylvals + s;
1608 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1609 yylpp = yylpe = yylpsns + p;
1610 yylplim = yylpsns + s;
1612 yylexp = yylexemes + p;
1614 *yylexp = (YYINT) YYLEX;
1617 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1624 /* normal operation, no conflict encountered */
1625 #endif /* YYBTYACC */
1629 #endif /* YYBTYACC */
1630 if (yychar < 0) yychar = YYEOF;
1634 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1635 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1636 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1640 if (yychar == YYEOF) goto yyaccept;
1643 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1644 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1645 yystate = yytable[yyn];
1647 yystate = yydgoto[yym];
1651 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1652 #ifdef YYSTYPE_TOSTRING
1655 #endif /* YYBTYACC */
1656 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1658 fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1661 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1662 *++yystack.s_mark = (YYINT) yystate;
1663 *++yystack.l_mark = yyval;
1664 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1665 *++yystack.p_mark = yyloc;
1670 /* Reduction declares that this path is valid. Set yypath and do a full parse */
1672 if (yypath) YYABORT;
1675 YYParseState *save = yyps->save;
1676 yyps->save = save->save;
1677 save->save = yypath;
1682 fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1683 YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1687 yyFreeState(yyerrctx);
1690 yylvp = yylvals + yypath->lexeme;
1691 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1692 yylpp = yylpsns + yypath->lexeme;
1694 yylexp = yylexemes + yypath->lexeme;
1696 yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1697 memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1698 yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1699 memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1700 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1701 yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1702 memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1704 yystate = yypath->state;
1706 #endif /* YYBTYACC */
1709 YYERROR_CALL("yacc stack overflow");
1713 YYERROR_CALL("memory exhausted");
1715 #endif /* YYBTYACC */
1725 if (yyps->save) goto yyvalid;
1726 #endif /* YYBTYACC */
1730 #if defined(YYDESTRUCT_CALL)
1731 if (yychar != YYEOF && yychar != YYEMPTY)
1732 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1733 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1735 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1736 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1740 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1743 for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1744 YYDESTRUCT_CALL("cleanup: discarding state",
1745 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1747 for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1748 YYDESTRUCT_CALL("cleanup: discarding state",
1749 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1750 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1752 #endif /* defined(YYDESTRUCT_CALL) */
1757 yyFreeState(yyerrctx);
1762 YYParseState *save = yyps;
1769 YYParseState *save = yypath;
1770 yypath = save->save;
1774 #endif /* YYBTYACC */
1775 yyfreestack(&yystack);