1264790Sbapt/* original parser id follows */
2264790Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3319297Sdelphij/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4264790Sbapt
5264790Sbapt#define YYBYACC 1
6264790Sbapt#define YYMAJOR 1
7264790Sbapt#define YYMINOR 9
8264790Sbapt#define YYCHECK "yyyymmdd"
9264790Sbapt
10264790Sbapt#define YYEMPTY        (-1)
11264790Sbapt#define yyclearin      (yychar = YYEMPTY)
12264790Sbapt#define yyerrok        (yyerrflag = 0)
13264790Sbapt#define YYRECOVERING() (yyerrflag != 0)
14264790Sbapt#define YYENOMEM       (-2)
15264790Sbapt#define YYEOF          0
16264790Sbapt#undef YYBTYACC
17264790Sbapt#define YYBTYACC 0
18264790Sbapt#define YYDEBUGSTR YYPREFIX "debug"
19264790Sbapt
20264790Sbapt#ifndef yyparse
21264790Sbapt#define yyparse    calc2_parse
22264790Sbapt#endif /* yyparse */
23264790Sbapt
24264790Sbapt#ifndef yylex
25264790Sbapt#define yylex      calc2_lex
26264790Sbapt#endif /* yylex */
27264790Sbapt
28264790Sbapt#ifndef yyerror
29264790Sbapt#define yyerror    calc2_error
30264790Sbapt#endif /* yyerror */
31264790Sbapt
32264790Sbapt#ifndef yychar
33264790Sbapt#define yychar     calc2_char
34264790Sbapt#endif /* yychar */
35264790Sbapt
36264790Sbapt#ifndef yyval
37264790Sbapt#define yyval      calc2_val
38264790Sbapt#endif /* yyval */
39264790Sbapt
40264790Sbapt#ifndef yylval
41264790Sbapt#define yylval     calc2_lval
42264790Sbapt#endif /* yylval */
43264790Sbapt
44264790Sbapt#ifndef yydebug
45264790Sbapt#define yydebug    calc2_debug
46264790Sbapt#endif /* yydebug */
47264790Sbapt
48264790Sbapt#ifndef yynerrs
49264790Sbapt#define yynerrs    calc2_nerrs
50264790Sbapt#endif /* yynerrs */
51264790Sbapt
52264790Sbapt#ifndef yyerrflag
53264790Sbapt#define yyerrflag  calc2_errflag
54264790Sbapt#endif /* yyerrflag */
55264790Sbapt
56264790Sbapt#ifndef yylhs
57264790Sbapt#define yylhs      calc2_lhs
58264790Sbapt#endif /* yylhs */
59264790Sbapt
60264790Sbapt#ifndef yylen
61264790Sbapt#define yylen      calc2_len
62264790Sbapt#endif /* yylen */
63264790Sbapt
64264790Sbapt#ifndef yydefred
65264790Sbapt#define yydefred   calc2_defred
66264790Sbapt#endif /* yydefred */
67264790Sbapt
68264790Sbapt#ifndef yystos
69264790Sbapt#define yystos     calc2_stos
70264790Sbapt#endif /* yystos */
71264790Sbapt
72264790Sbapt#ifndef yydgoto
73264790Sbapt#define yydgoto    calc2_dgoto
74264790Sbapt#endif /* yydgoto */
75264790Sbapt
76264790Sbapt#ifndef yysindex
77264790Sbapt#define yysindex   calc2_sindex
78264790Sbapt#endif /* yysindex */
79264790Sbapt
80264790Sbapt#ifndef yyrindex
81264790Sbapt#define yyrindex   calc2_rindex
82264790Sbapt#endif /* yyrindex */
83264790Sbapt
84264790Sbapt#ifndef yygindex
85264790Sbapt#define yygindex   calc2_gindex
86264790Sbapt#endif /* yygindex */
87264790Sbapt
88264790Sbapt#ifndef yytable
89264790Sbapt#define yytable    calc2_table
90264790Sbapt#endif /* yytable */
91264790Sbapt
92264790Sbapt#ifndef yycheck
93264790Sbapt#define yycheck    calc2_check
94264790Sbapt#endif /* yycheck */
95264790Sbapt
96264790Sbapt#ifndef yyname
97264790Sbapt#define yyname     calc2_name
98264790Sbapt#endif /* yyname */
99264790Sbapt
100264790Sbapt#ifndef yyrule
101264790Sbapt#define yyrule     calc2_rule
102264790Sbapt#endif /* yyrule */
103264790Sbapt
104264790Sbapt#if YYBTYACC
105264790Sbapt
106264790Sbapt#ifndef yycindex
107264790Sbapt#define yycindex   calc2_cindex
108264790Sbapt#endif /* yycindex */
109264790Sbapt
110264790Sbapt#ifndef yyctable
111264790Sbapt#define yyctable   calc2_ctable
112264790Sbapt#endif /* yyctable */
113264790Sbapt
114264790Sbapt#endif /* YYBTYACC */
115264790Sbapt
116264790Sbapt#define YYPREFIX "calc2_"
117264790Sbapt
118264790Sbapt#define YYPURE 0
119264790Sbapt
120264790Sbapt#line 7 "calc2.y"
121264790Sbapt# include <stdio.h>
122264790Sbapt# include <ctype.h>
123264790Sbapt
124264790Sbapt#ifdef YYBISON
125264790Sbapt#define YYLEX_PARAM base
126264790Sbapt#define YYLEX_DECL() yylex(int *YYLEX_PARAM)
127264790Sbapt#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
128264790Sbaptint YYLEX_DECL();
129264790Sbaptstatic void YYERROR_DECL();
130264790Sbapt#endif
131264790Sbapt
132264790Sbapt#line 133 "calc2.tab.c"
133264790Sbapt
134264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
135264790Sbapt/* Default: YYSTYPE is the semantic value type. */
136264790Sbapttypedef int YYSTYPE;
137264790Sbapt# define YYSTYPE_IS_DECLARED 1
138264790Sbapt#endif
139264790Sbapt
140264790Sbapt/* compatibility with bison */
141264790Sbapt#ifdef YYPARSE_PARAM
142264790Sbapt/* compatibility with FreeBSD */
143264790Sbapt# ifdef YYPARSE_PARAM_TYPE
144264790Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
145264790Sbapt# else
146264790Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
147264790Sbapt# endif
148264790Sbapt#else
149272655Sbapt# define YYPARSE_DECL() yyparse(int regs[26], int *base)
150264790Sbapt#endif
151264790Sbapt
152264790Sbapt/* Parameters sent to lex. */
153264790Sbapt#ifdef YYLEX_PARAM
154264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
155264790Sbapt# define YYLEX yylex(YYLEX_PARAM)
156264790Sbapt#else
157272655Sbapt# define YYLEX_DECL() yylex(int *base)
158264790Sbapt# define YYLEX yylex(base)
159264790Sbapt#endif
160264790Sbapt
161264790Sbapt/* Parameters sent to yyerror. */
162264790Sbapt#ifndef YYERROR_DECL
163272655Sbapt#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
164264790Sbapt#endif
165264790Sbapt#ifndef YYERROR_CALL
166264790Sbapt#define YYERROR_CALL(msg) yyerror(regs, base, msg)
167264790Sbapt#endif
168264790Sbapt
169264790Sbaptextern int YYPARSE_DECL();
170264790Sbapt
171264790Sbapt#define DIGIT 257
172264790Sbapt#define LETTER 258
173264790Sbapt#define UMINUS 259
174264790Sbapt#define YYERRCODE 256
175264790Sbapttypedef short YYINT;
176264790Sbaptstatic const YYINT calc2_lhs[] = {                       -1,
177264790Sbapt    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
178264790Sbapt    2,    2,    2,    2,    2,    2,    3,    3,
179264790Sbapt};
180264790Sbaptstatic const YYINT calc2_len[] = {                        2,
181264790Sbapt    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
182264790Sbapt    3,    3,    3,    2,    1,    1,    1,    2,
183264790Sbapt};
184264790Sbaptstatic const YYINT calc2_defred[] = {                     1,
185264790Sbapt    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
186264790Sbapt    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
187264790Sbapt    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
188264790Sbapt   10,   11,
189264790Sbapt};
190319297Sdelphij#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
191264790Sbaptstatic const YYINT calc2_stos[] = {                       0,
192264790Sbapt  261,  256,  257,  258,   45,   40,  262,  263,  264,   10,
193264790Sbapt   61,  258,  263,  263,   10,  124,   38,   43,   45,   42,
194264790Sbapt   47,   37,  257,  263,   41,  263,  263,  263,  263,  263,
195264790Sbapt  263,  263,
196264790Sbapt};
197319297Sdelphij#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
198264790Sbaptstatic const YYINT calc2_dgoto[] = {                      1,
199264790Sbapt    7,    8,    9,
200264790Sbapt};
201264790Sbaptstatic const YYINT calc2_sindex[] = {                     0,
202264790Sbapt  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
203264790Sbapt  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
204264790Sbapt  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
205264790Sbapt    0,    0,
206264790Sbapt};
207264790Sbaptstatic const YYINT calc2_rindex[] = {                     0,
208264790Sbapt    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
209264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
210264790Sbapt    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
211264790Sbapt    0,    0,
212264790Sbapt};
213264790Sbapt#if YYBTYACC
214264790Sbaptstatic const YYINT calc2_cindex[] = {                     0,
215264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
216264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
217264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
218264790Sbapt    0,    0,
219264790Sbapt};
220264790Sbapt#endif
221264790Sbaptstatic const YYINT calc2_gindex[] = {                     0,
222264790Sbapt    0,   65,    0,
223264790Sbapt};
224264790Sbapt#define YYTABLESIZE 220
225264790Sbaptstatic const YYINT calc2_table[] = {                      6,
226264790Sbapt   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
227264790Sbapt   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
228264790Sbapt    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
229264790Sbapt    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
230264790Sbapt    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
231264790Sbapt    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
232264790Sbapt    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
233264790Sbapt   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
234264790Sbapt   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
235264790Sbapt    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
236264790Sbapt    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
237264790Sbapt    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
238264790Sbapt    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
239264790Sbapt    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
240264790Sbapt    0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
241264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
242264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
243264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
244264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
245264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
246264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
247264790Sbapt    0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
248264790Sbapt};
249264790Sbaptstatic const YYINT calc2_check[] = {                     40,
250264790Sbapt   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
251264790Sbapt   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
252264790Sbapt   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
253264790Sbapt   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
254264790Sbapt   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
255264790Sbapt   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
256264790Sbapt   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
257264790Sbapt    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
258264790Sbapt   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
259264790Sbapt   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
260264790Sbapt   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
261264790Sbapt   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
262264790Sbapt   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
263264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
264264790Sbapt   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
265264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
266264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
267264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
268264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
269264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
270264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
271264790Sbapt   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
272264790Sbapt};
273272655Sbapt#if YYBTYACC
274272655Sbaptstatic const YYINT calc2_ctable[] = {                    -1,
275272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
276272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
277272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
278272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
279272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
280272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
281272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
282272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
283272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
284272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
285272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
286272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
287272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
288272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
289272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
290272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
291272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
292272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
293272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
294272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
295272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
296272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
297272655Sbapt};
298272655Sbapt#endif
299264790Sbapt#define YYFINAL 1
300264790Sbapt#ifndef YYDEBUG
301264790Sbapt#define YYDEBUG 0
302264790Sbapt#endif
303264790Sbapt#define YYMAXTOKEN 259
304264790Sbapt#define YYUNDFTOKEN 265
305264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
306264790Sbapt#if YYDEBUG
307264790Sbaptstatic const char *const calc2_name[] = {
308264790Sbapt
309264790Sbapt"$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,
310264790Sbapt0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
311264790Sbapt0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
312264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0,
313264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
314264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
315264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
316264790Sbapt0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",
317264790Sbapt"illegal-symbol",
318264790Sbapt};
319264790Sbaptstatic const char *const calc2_rule[] = {
320264790Sbapt"$accept : list",
321264790Sbapt"list :",
322264790Sbapt"list : list stat '\\n'",
323264790Sbapt"list : list error '\\n'",
324264790Sbapt"stat : expr",
325264790Sbapt"stat : LETTER '=' expr",
326264790Sbapt"expr : '(' expr ')'",
327264790Sbapt"expr : expr '+' expr",
328264790Sbapt"expr : expr '-' expr",
329264790Sbapt"expr : expr '*' expr",
330264790Sbapt"expr : expr '/' expr",
331264790Sbapt"expr : expr '%' expr",
332264790Sbapt"expr : expr '&' expr",
333264790Sbapt"expr : expr '|' expr",
334264790Sbapt"expr : '-' expr",
335264790Sbapt"expr : LETTER",
336264790Sbapt"expr : number",
337264790Sbapt"number : DIGIT",
338264790Sbapt"number : number DIGIT",
339264790Sbapt
340264790Sbapt};
341264790Sbapt#endif
342264790Sbapt
343264790Sbaptint      yydebug;
344264790Sbaptint      yynerrs;
345264790Sbapt
346264790Sbaptint      yyerrflag;
347264790Sbaptint      yychar;
348264790SbaptYYSTYPE  yyval;
349264790SbaptYYSTYPE  yylval;
350264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
351264790SbaptYYLTYPE  yyloc; /* position returned by actions */
352264790SbaptYYLTYPE  yylloc; /* position from the lexer */
353264790Sbapt#endif
354264790Sbapt
355264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
356264790Sbapt#ifndef YYLLOC_DEFAULT
357264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \
358264790Sbaptdo \
359264790Sbapt{ \
360264790Sbapt    if (n == 0) \
361264790Sbapt    { \
362264790Sbapt        (loc).first_line   = ((rhs)[-1]).last_line; \
363264790Sbapt        (loc).first_column = ((rhs)[-1]).last_column; \
364264790Sbapt        (loc).last_line    = ((rhs)[-1]).last_line; \
365264790Sbapt        (loc).last_column  = ((rhs)[-1]).last_column; \
366264790Sbapt    } \
367264790Sbapt    else \
368264790Sbapt    { \
369264790Sbapt        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
370264790Sbapt        (loc).first_column = ((rhs)[ 0 ]).first_column; \
371264790Sbapt        (loc).last_line    = ((rhs)[n-1]).last_line; \
372264790Sbapt        (loc).last_column  = ((rhs)[n-1]).last_column; \
373264790Sbapt    } \
374264790Sbapt} while (0)
375264790Sbapt#endif /* YYLLOC_DEFAULT */
376264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
377264790Sbapt#if YYBTYACC
378264790Sbapt
379264790Sbapt#ifndef YYLVQUEUEGROWTH
380264790Sbapt#define YYLVQUEUEGROWTH 32
381264790Sbapt#endif
382264790Sbapt#endif /* YYBTYACC */
383264790Sbapt
384264790Sbapt/* define the initial stack-sizes */
385264790Sbapt#ifdef YYSTACKSIZE
386264790Sbapt#undef YYMAXDEPTH
387264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
388264790Sbapt#else
389264790Sbapt#ifdef YYMAXDEPTH
390264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
391264790Sbapt#else
392264790Sbapt#define YYSTACKSIZE 10000
393264790Sbapt#define YYMAXDEPTH  10000
394264790Sbapt#endif
395264790Sbapt#endif
396264790Sbapt
397264790Sbapt#ifndef YYINITSTACKSIZE
398264790Sbapt#define YYINITSTACKSIZE 200
399264790Sbapt#endif
400264790Sbapt
401264790Sbapttypedef struct {
402264790Sbapt    unsigned stacksize;
403319297Sdelphij    YYINT    *s_base;
404319297Sdelphij    YYINT    *s_mark;
405319297Sdelphij    YYINT    *s_last;
406264790Sbapt    YYSTYPE  *l_base;
407264790Sbapt    YYSTYPE  *l_mark;
408264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
409264790Sbapt    YYLTYPE  *p_base;
410264790Sbapt    YYLTYPE  *p_mark;
411264790Sbapt#endif
412264790Sbapt} YYSTACKDATA;
413264790Sbapt#if YYBTYACC
414264790Sbapt
415264790Sbaptstruct YYParseState_s
416264790Sbapt{
417264790Sbapt    struct YYParseState_s *save;    /* Previously saved parser state */
418264790Sbapt    YYSTACKDATA            yystack; /* saved parser stack */
419264790Sbapt    int                    state;   /* saved parser state */
420264790Sbapt    int                    errflag; /* saved error recovery status */
421264790Sbapt    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
422264790Sbapt    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
423264790Sbapt};
424264790Sbapttypedef struct YYParseState_s YYParseState;
425264790Sbapt#endif /* YYBTYACC */
426264790Sbapt/* variables for the parser stack */
427264790Sbaptstatic YYSTACKDATA yystack;
428264790Sbapt#if YYBTYACC
429264790Sbapt
430264790Sbapt/* Current parser state */
431264790Sbaptstatic YYParseState *yyps = 0;
432264790Sbapt
433264790Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */
434264790Sbaptstatic YYParseState *yypath = 0;
435264790Sbapt
436264790Sbapt/* Base of the lexical value queue */
437264790Sbaptstatic YYSTYPE *yylvals = 0;
438264790Sbapt
439264790Sbapt/* Current position at lexical value queue */
440264790Sbaptstatic YYSTYPE *yylvp = 0;
441264790Sbapt
442264790Sbapt/* End position of lexical value queue */
443264790Sbaptstatic YYSTYPE *yylve = 0;
444264790Sbapt
445264790Sbapt/* The last allocated position at the lexical value queue */
446264790Sbaptstatic YYSTYPE *yylvlim = 0;
447264790Sbapt
448264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
449264790Sbapt/* Base of the lexical position queue */
450264790Sbaptstatic YYLTYPE *yylpsns = 0;
451264790Sbapt
452264790Sbapt/* Current position at lexical position queue */
453264790Sbaptstatic YYLTYPE *yylpp = 0;
454264790Sbapt
455264790Sbapt/* End position of lexical position queue */
456264790Sbaptstatic YYLTYPE *yylpe = 0;
457264790Sbapt
458264790Sbapt/* The last allocated position at the lexical position queue */
459264790Sbaptstatic YYLTYPE *yylplim = 0;
460264790Sbapt#endif
461264790Sbapt
462264790Sbapt/* Current position at lexical token queue */
463319297Sdelphijstatic YYINT  *yylexp = 0;
464264790Sbapt
465319297Sdelphijstatic YYINT  *yylexemes = 0;
466264790Sbapt#endif /* YYBTYACC */
467264790Sbapt#line 73 "calc2.y"
468264790Sbapt /* start of programs */
469264790Sbapt
470264790Sbapt#ifdef YYBYACC
471264790Sbaptextern int YYLEX_DECL();
472264790Sbapt#endif
473264790Sbapt
474264790Sbaptint
475264790Sbaptmain (void)
476264790Sbapt{
477264790Sbapt    int regs[26];
478264790Sbapt    int base = 10;
479264790Sbapt
480264790Sbapt    while(!feof(stdin)) {
481264790Sbapt	yyparse(regs, &base);
482264790Sbapt    }
483264790Sbapt    return 0;
484264790Sbapt}
485264790Sbapt
486264790Sbapt#define UNUSED(x) ((void)(x))
487264790Sbapt
488264790Sbaptstatic void
489264790SbaptYYERROR_DECL()
490264790Sbapt{
491264790Sbapt    UNUSED(regs); /* %parse-param regs is not actually used here */
492264790Sbapt    UNUSED(base); /* %parse-param base is not actually used here */
493264790Sbapt    fprintf(stderr, "%s\n", s);
494264790Sbapt}
495264790Sbapt
496264790Sbaptint
497264790SbaptYYLEX_DECL()
498264790Sbapt{
499264790Sbapt	/* lexical analysis routine */
500264790Sbapt	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
501264790Sbapt	/* return DIGIT for a digit, yylval = 0 through 9 */
502264790Sbapt	/* all other characters are returned immediately */
503264790Sbapt
504264790Sbapt    int c;
505264790Sbapt
506264790Sbapt    while( (c=getchar()) == ' ' )   { /* skip blanks */ }
507264790Sbapt
508264790Sbapt    /* c is now nonblank */
509264790Sbapt
510264790Sbapt    if( islower( c )) {
511264790Sbapt	yylval = c - 'a';
512264790Sbapt	return ( LETTER );
513264790Sbapt    }
514264790Sbapt    if( isdigit( c )) {
515264790Sbapt	yylval = (c - '0') % (*base);
516264790Sbapt	return ( DIGIT );
517264790Sbapt    }
518264790Sbapt    return( c );
519264790Sbapt}
520319297Sdelphij#line 521 "calc2.tab.c"
521264790Sbapt
522264790Sbapt/* For use in generated program */
523264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base)
524264790Sbapt#if YYBTYACC
525264790Sbapt#define yytrial (yyps->save)
526264790Sbapt#endif /* YYBTYACC */
527264790Sbapt
528264790Sbapt#if YYDEBUG
529319297Sdelphij#include <stdio.h>	/* needed for printf */
530264790Sbapt#endif
531264790Sbapt
532319297Sdelphij#include <stdlib.h>	/* needed for malloc, etc */
533319297Sdelphij#include <string.h>	/* needed for memset */
534264790Sbapt
535264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
536264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
537264790Sbapt{
538264790Sbapt    int i;
539264790Sbapt    unsigned newsize;
540319297Sdelphij    YYINT *newss;
541264790Sbapt    YYSTYPE *newvs;
542264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
543264790Sbapt    YYLTYPE *newps;
544264790Sbapt#endif
545264790Sbapt
546264790Sbapt    if ((newsize = data->stacksize) == 0)
547264790Sbapt        newsize = YYINITSTACKSIZE;
548264790Sbapt    else if (newsize >= YYMAXDEPTH)
549264790Sbapt        return YYENOMEM;
550264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
551264790Sbapt        newsize = YYMAXDEPTH;
552264790Sbapt
553264790Sbapt    i = (int) (data->s_mark - data->s_base);
554319297Sdelphij    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
555264790Sbapt    if (newss == 0)
556264790Sbapt        return YYENOMEM;
557264790Sbapt
558264790Sbapt    data->s_base = newss;
559264790Sbapt    data->s_mark = newss + i;
560264790Sbapt
561264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
562264790Sbapt    if (newvs == 0)
563264790Sbapt        return YYENOMEM;
564264790Sbapt
565264790Sbapt    data->l_base = newvs;
566264790Sbapt    data->l_mark = newvs + i;
567264790Sbapt
568264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
569264790Sbapt    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
570264790Sbapt    if (newps == 0)
571264790Sbapt        return YYENOMEM;
572264790Sbapt
573264790Sbapt    data->p_base = newps;
574264790Sbapt    data->p_mark = newps + i;
575264790Sbapt#endif
576264790Sbapt
577264790Sbapt    data->stacksize = newsize;
578264790Sbapt    data->s_last = data->s_base + newsize - 1;
579264790Sbapt
580264790Sbapt#if YYDEBUG
581264790Sbapt    if (yydebug)
582264790Sbapt        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
583264790Sbapt#endif
584264790Sbapt    return 0;
585264790Sbapt}
586264790Sbapt
587264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
588264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
589264790Sbapt{
590264790Sbapt    free(data->s_base);
591264790Sbapt    free(data->l_base);
592264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
593264790Sbapt    free(data->p_base);
594264790Sbapt#endif
595264790Sbapt    memset(data, 0, sizeof(*data));
596264790Sbapt}
597264790Sbapt#else
598264790Sbapt#define yyfreestack(data) /* nothing */
599264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */
600264790Sbapt#if YYBTYACC
601264790Sbapt
602264790Sbaptstatic YYParseState *
603264790SbaptyyNewState(unsigned size)
604264790Sbapt{
605264790Sbapt    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
606264790Sbapt    if (p == NULL) return NULL;
607264790Sbapt
608264790Sbapt    p->yystack.stacksize = size;
609264790Sbapt    if (size == 0)
610264790Sbapt    {
611264790Sbapt        p->yystack.s_base = NULL;
612264790Sbapt        p->yystack.l_base = NULL;
613264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
614264790Sbapt        p->yystack.p_base = NULL;
615264790Sbapt#endif
616264790Sbapt        return p;
617264790Sbapt    }
618319297Sdelphij    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
619264790Sbapt    if (p->yystack.s_base == NULL) return NULL;
620264790Sbapt    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
621264790Sbapt    if (p->yystack.l_base == NULL) return NULL;
622264790Sbapt    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
623264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
624264790Sbapt    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
625264790Sbapt    if (p->yystack.p_base == NULL) return NULL;
626264790Sbapt    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
627264790Sbapt#endif
628264790Sbapt
629264790Sbapt    return p;
630264790Sbapt}
631264790Sbapt
632264790Sbaptstatic void
633264790SbaptyyFreeState(YYParseState *p)
634264790Sbapt{
635264790Sbapt    yyfreestack(&p->yystack);
636264790Sbapt    free(p);
637264790Sbapt}
638264790Sbapt#endif /* YYBTYACC */
639264790Sbapt
640264790Sbapt#define YYABORT  goto yyabort
641264790Sbapt#define YYREJECT goto yyabort
642264790Sbapt#define YYACCEPT goto yyaccept
643264790Sbapt#define YYERROR  goto yyerrlab
644264790Sbapt#if YYBTYACC
645264790Sbapt#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
646264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \
647264790Sbapt                                yyps->save->save == 0) goto yyvalid; } while(0)
648264790Sbapt#endif /* YYBTYACC */
649264790Sbapt
650264790Sbaptint
651264790SbaptYYPARSE_DECL()
652264790Sbapt{
653264790Sbapt    int yym, yyn, yystate, yyresult;
654264790Sbapt#if YYBTYACC
655264790Sbapt    int yynewerrflag;
656264790Sbapt    YYParseState *yyerrctx = NULL;
657264790Sbapt#endif /* YYBTYACC */
658264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
659264790Sbapt    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
660264790Sbapt#endif
661264790Sbapt#if YYDEBUG
662264790Sbapt    const char *yys;
663264790Sbapt
664264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
665264790Sbapt    {
666264790Sbapt        yyn = *yys;
667264790Sbapt        if (yyn >= '0' && yyn <= '9')
668264790Sbapt            yydebug = yyn - '0';
669264790Sbapt    }
670264790Sbapt    if (yydebug)
671264790Sbapt        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
672264790Sbapt#endif
673264790Sbapt
674264790Sbapt#if YYBTYACC
675264790Sbapt    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
676264790Sbapt    yyps->save = 0;
677264790Sbapt#endif /* YYBTYACC */
678319297Sdelphij    yym = 0;
679319297Sdelphij    yyn = 0;
680264790Sbapt    yynerrs = 0;
681264790Sbapt    yyerrflag = 0;
682264790Sbapt    yychar = YYEMPTY;
683264790Sbapt    yystate = 0;
684264790Sbapt
685264790Sbapt#if YYPURE
686264790Sbapt    memset(&yystack, 0, sizeof(yystack));
687264790Sbapt#endif
688264790Sbapt
689264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
690264790Sbapt    yystack.s_mark = yystack.s_base;
691264790Sbapt    yystack.l_mark = yystack.l_base;
692264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
693264790Sbapt    yystack.p_mark = yystack.p_base;
694264790Sbapt#endif
695264790Sbapt    yystate = 0;
696264790Sbapt    *yystack.s_mark = 0;
697264790Sbapt
698264790Sbaptyyloop:
699264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
700264790Sbapt    if (yychar < 0)
701264790Sbapt    {
702264790Sbapt#if YYBTYACC
703264790Sbapt        do {
704264790Sbapt        if (yylvp < yylve)
705264790Sbapt        {
706264790Sbapt            /* we're currently re-reading tokens */
707264790Sbapt            yylval = *yylvp++;
708264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
709264790Sbapt            yylloc = *yylpp++;
710264790Sbapt#endif
711264790Sbapt            yychar = *yylexp++;
712264790Sbapt            break;
713264790Sbapt        }
714264790Sbapt        if (yyps->save)
715264790Sbapt        {
716264790Sbapt            /* in trial mode; save scanner results for future parse attempts */
717264790Sbapt            if (yylvp == yylvlim)
718264790Sbapt            {   /* Enlarge lexical value queue */
719272655Sbapt                size_t p = (size_t) (yylvp - yylvals);
720272655Sbapt                size_t s = (size_t) (yylvlim - yylvals);
721264790Sbapt
722264790Sbapt                s += YYLVQUEUEGROWTH;
723319297Sdelphij                if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
724319297Sdelphij                if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
725264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
726319297Sdelphij                if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
727264790Sbapt#endif
728264790Sbapt                yylvp   = yylve = yylvals + p;
729264790Sbapt                yylvlim = yylvals + s;
730264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
731264790Sbapt                yylpp   = yylpe = yylpsns + p;
732264790Sbapt                yylplim = yylpsns + s;
733264790Sbapt#endif
734264790Sbapt                yylexp  = yylexemes + p;
735264790Sbapt            }
736319297Sdelphij            *yylexp = (YYINT) YYLEX;
737264790Sbapt            *yylvp++ = yylval;
738264790Sbapt            yylve++;
739264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
740264790Sbapt            *yylpp++ = yylloc;
741264790Sbapt            yylpe++;
742264790Sbapt#endif
743264790Sbapt            yychar = *yylexp++;
744264790Sbapt            break;
745264790Sbapt        }
746264790Sbapt        /* normal operation, no conflict encountered */
747264790Sbapt#endif /* YYBTYACC */
748264790Sbapt        yychar = YYLEX;
749264790Sbapt#if YYBTYACC
750264790Sbapt        } while (0);
751264790Sbapt#endif /* YYBTYACC */
752264790Sbapt        if (yychar < 0) yychar = YYEOF;
753264790Sbapt#if YYDEBUG
754264790Sbapt        if (yydebug)
755264790Sbapt        {
756319297Sdelphij            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
757264790Sbapt            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
758264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
759264790Sbapt#ifdef YYSTYPE_TOSTRING
760264790Sbapt#if YYBTYACC
761264790Sbapt            if (!yytrial)
762264790Sbapt#endif /* YYBTYACC */
763264790Sbapt                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
764264790Sbapt#endif
765264790Sbapt            fputc('\n', stderr);
766264790Sbapt        }
767264790Sbapt#endif
768264790Sbapt    }
769264790Sbapt#if YYBTYACC
770264790Sbapt
771264790Sbapt    /* Do we have a conflict? */
772264790Sbapt    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
773264790Sbapt        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
774264790Sbapt    {
775264790Sbapt        YYINT ctry;
776264790Sbapt
777264790Sbapt        if (yypath)
778264790Sbapt        {
779264790Sbapt            YYParseState *save;
780264790Sbapt#if YYDEBUG
781264790Sbapt            if (yydebug)
782264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
783264790Sbapt                                YYDEBUGSTR, yydepth, yystate);
784264790Sbapt#endif
785264790Sbapt            /* Switch to the next conflict context */
786264790Sbapt            save = yypath;
787264790Sbapt            yypath = save->save;
788264790Sbapt            save->save = NULL;
789264790Sbapt            ctry = save->ctry;
790264790Sbapt            if (save->state != yystate) YYABORT;
791264790Sbapt            yyFreeState(save);
792264790Sbapt
793264790Sbapt        }
794264790Sbapt        else
795264790Sbapt        {
796264790Sbapt
797264790Sbapt            /* Unresolved conflict - start/continue trial parse */
798264790Sbapt            YYParseState *save;
799264790Sbapt#if YYDEBUG
800264790Sbapt            if (yydebug)
801264790Sbapt            {
802264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
803264790Sbapt                if (yyps->save)
804264790Sbapt                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
805264790Sbapt                else
806264790Sbapt                    fputs("Starting trial parse.\n", stderr);
807264790Sbapt            }
808264790Sbapt#endif
809264790Sbapt            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
810264790Sbapt            if (save == NULL) goto yyenomem;
811264790Sbapt            save->save            = yyps->save;
812264790Sbapt            save->state           = yystate;
813264790Sbapt            save->errflag         = yyerrflag;
814264790Sbapt            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
815319297Sdelphij            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
816264790Sbapt            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
817272655Sbapt            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
818264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
819264790Sbapt            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
820272655Sbapt            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
821264790Sbapt#endif
822264790Sbapt            ctry                  = yytable[yyn];
823264790Sbapt            if (yyctable[ctry] == -1)
824264790Sbapt            {
825264790Sbapt#if YYDEBUG
826264790Sbapt                if (yydebug && yychar >= YYEOF)
827264790Sbapt                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
828264790Sbapt#endif
829264790Sbapt                ctry++;
830264790Sbapt            }
831264790Sbapt            save->ctry = ctry;
832264790Sbapt            if (yyps->save == NULL)
833264790Sbapt            {
834264790Sbapt                /* If this is a first conflict in the stack, start saving lexemes */
835264790Sbapt                if (!yylexemes)
836264790Sbapt                {
837319297Sdelphij                    yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
838264790Sbapt                    if (yylexemes == NULL) goto yyenomem;
839264790Sbapt                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
840264790Sbapt                    if (yylvals == NULL) goto yyenomem;
841264790Sbapt                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
842264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
843264790Sbapt                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
844264790Sbapt                    if (yylpsns == NULL) goto yyenomem;
845264790Sbapt                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
846264790Sbapt#endif
847264790Sbapt                }
848264790Sbapt                if (yylvp == yylve)
849264790Sbapt                {
850264790Sbapt                    yylvp  = yylve = yylvals;
851264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
852264790Sbapt                    yylpp  = yylpe = yylpsns;
853264790Sbapt#endif
854264790Sbapt                    yylexp = yylexemes;
855264790Sbapt                    if (yychar >= YYEOF)
856264790Sbapt                    {
857264790Sbapt                        *yylve++ = yylval;
858264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
859264790Sbapt                        *yylpe++ = yylloc;
860264790Sbapt#endif
861319297Sdelphij                        *yylexp  = (YYINT) yychar;
862264790Sbapt                        yychar   = YYEMPTY;
863264790Sbapt                    }
864264790Sbapt                }
865264790Sbapt            }
866264790Sbapt            if (yychar >= YYEOF)
867264790Sbapt            {
868264790Sbapt                yylvp--;
869264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
870264790Sbapt                yylpp--;
871264790Sbapt#endif
872264790Sbapt                yylexp--;
873264790Sbapt                yychar = YYEMPTY;
874264790Sbapt            }
875272655Sbapt            save->lexeme = (int) (yylvp - yylvals);
876264790Sbapt            yyps->save   = save;
877264790Sbapt        }
878264790Sbapt        if (yytable[yyn] == ctry)
879264790Sbapt        {
880264790Sbapt#if YYDEBUG
881264790Sbapt            if (yydebug)
882264790Sbapt                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
883264790Sbapt                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
884264790Sbapt#endif
885264790Sbapt            if (yychar < 0)
886264790Sbapt            {
887264790Sbapt                yylvp++;
888264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
889264790Sbapt                yylpp++;
890264790Sbapt#endif
891264790Sbapt                yylexp++;
892264790Sbapt            }
893264790Sbapt            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
894264790Sbapt                goto yyoverflow;
895264790Sbapt            yystate = yyctable[ctry];
896319297Sdelphij            *++yystack.s_mark = (YYINT) yystate;
897264790Sbapt            *++yystack.l_mark = yylval;
898264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
899264790Sbapt            *++yystack.p_mark = yylloc;
900264790Sbapt#endif
901264790Sbapt            yychar  = YYEMPTY;
902264790Sbapt            if (yyerrflag > 0) --yyerrflag;
903264790Sbapt            goto yyloop;
904264790Sbapt        }
905264790Sbapt        else
906264790Sbapt        {
907264790Sbapt            yyn = yyctable[ctry];
908264790Sbapt            goto yyreduce;
909264790Sbapt        }
910264790Sbapt    } /* End of code dealing with conflicts */
911264790Sbapt#endif /* YYBTYACC */
912264790Sbapt    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
913264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
914264790Sbapt    {
915264790Sbapt#if YYDEBUG
916264790Sbapt        if (yydebug)
917264790Sbapt            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
918264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
919264790Sbapt#endif
920264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
921264790Sbapt        yystate = yytable[yyn];
922264790Sbapt        *++yystack.s_mark = yytable[yyn];
923264790Sbapt        *++yystack.l_mark = yylval;
924264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
925264790Sbapt        *++yystack.p_mark = yylloc;
926264790Sbapt#endif
927264790Sbapt        yychar = YYEMPTY;
928264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
929264790Sbapt        goto yyloop;
930264790Sbapt    }
931264790Sbapt    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
932264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
933264790Sbapt    {
934264790Sbapt        yyn = yytable[yyn];
935264790Sbapt        goto yyreduce;
936264790Sbapt    }
937264790Sbapt    if (yyerrflag != 0) goto yyinrecovery;
938264790Sbapt#if YYBTYACC
939264790Sbapt
940264790Sbapt    yynewerrflag = 1;
941264790Sbapt    goto yyerrhandler;
942319297Sdelphij    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
943264790Sbapt
944264790Sbaptyyerrlab:
945319297Sdelphij    /* explicit YYERROR from an action -- pop the rhs of the rule reduced
946319297Sdelphij     * before looking for error recovery */
947319297Sdelphij    yystack.s_mark -= yym;
948319297Sdelphij    yystate = *yystack.s_mark;
949319297Sdelphij    yystack.l_mark -= yym;
950319297Sdelphij#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
951319297Sdelphij    yystack.p_mark -= yym;
952319297Sdelphij#endif
953319297Sdelphij
954264790Sbapt    yynewerrflag = 0;
955264790Sbaptyyerrhandler:
956264790Sbapt    while (yyps->save)
957264790Sbapt    {
958264790Sbapt        int ctry;
959264790Sbapt        YYParseState *save = yyps->save;
960264790Sbapt#if YYDEBUG
961264790Sbapt        if (yydebug)
962264790Sbapt            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
963264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
964264790Sbapt                    (int)(yylvp - yylvals - yyps->save->lexeme));
965264790Sbapt#endif
966264790Sbapt        /* Memorize most forward-looking error state in case it's really an error. */
967264790Sbapt        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
968264790Sbapt        {
969264790Sbapt            /* Free old saved error context state */
970264790Sbapt            if (yyerrctx) yyFreeState(yyerrctx);
971264790Sbapt            /* Create and fill out new saved error context state */
972264790Sbapt            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
973264790Sbapt            if (yyerrctx == NULL) goto yyenomem;
974264790Sbapt            yyerrctx->save           = yyps->save;
975264790Sbapt            yyerrctx->state          = yystate;
976264790Sbapt            yyerrctx->errflag        = yyerrflag;
977264790Sbapt            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
978319297Sdelphij            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
979264790Sbapt            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
980272655Sbapt            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
981264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
982264790Sbapt            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
983272655Sbapt            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
984264790Sbapt#endif
985272655Sbapt            yyerrctx->lexeme         = (int) (yylvp - yylvals);
986264790Sbapt        }
987264790Sbapt        yylvp          = yylvals   + save->lexeme;
988264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
989264790Sbapt        yylpp          = yylpsns   + save->lexeme;
990264790Sbapt#endif
991264790Sbapt        yylexp         = yylexemes + save->lexeme;
992264790Sbapt        yychar         = YYEMPTY;
993264790Sbapt        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
994319297Sdelphij        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
995264790Sbapt        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
996272655Sbapt        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
997264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
998264790Sbapt        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
999272655Sbapt        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1000264790Sbapt#endif
1001264790Sbapt        ctry           = ++save->ctry;
1002264790Sbapt        yystate        = save->state;
1003264790Sbapt        /* We tried shift, try reduce now */
1004264790Sbapt        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1005264790Sbapt        yyps->save     = save->save;
1006264790Sbapt        save->save     = NULL;
1007264790Sbapt        yyFreeState(save);
1008264790Sbapt
1009264790Sbapt        /* Nothing left on the stack -- error */
1010264790Sbapt        if (!yyps->save)
1011264790Sbapt        {
1012264790Sbapt#if YYDEBUG
1013264790Sbapt            if (yydebug)
1014264790Sbapt                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1015264790Sbapt                                YYPREFIX, yydepth);
1016264790Sbapt#endif
1017264790Sbapt            /* Restore state as it was in the most forward-advanced error */
1018264790Sbapt            yylvp          = yylvals   + yyerrctx->lexeme;
1019264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1020264790Sbapt            yylpp          = yylpsns   + yyerrctx->lexeme;
1021264790Sbapt#endif
1022264790Sbapt            yylexp         = yylexemes + yyerrctx->lexeme;
1023264790Sbapt            yychar         = yylexp[-1];
1024264790Sbapt            yylval         = yylvp[-1];
1025264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1026264790Sbapt            yylloc         = yylpp[-1];
1027264790Sbapt#endif
1028264790Sbapt            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1029319297Sdelphij            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1030264790Sbapt            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1031272655Sbapt            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1032264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1033264790Sbapt            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1034272655Sbapt            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1035264790Sbapt#endif
1036264790Sbapt            yystate        = yyerrctx->state;
1037264790Sbapt            yyFreeState(yyerrctx);
1038264790Sbapt            yyerrctx       = NULL;
1039264790Sbapt        }
1040264790Sbapt        yynewerrflag = 1;
1041264790Sbapt    }
1042264790Sbapt    if (yynewerrflag == 0) goto yyinrecovery;
1043264790Sbapt#endif /* YYBTYACC */
1044264790Sbapt
1045264790Sbapt    YYERROR_CALL("syntax error");
1046264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1047264790Sbapt    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1048264790Sbapt#endif
1049264790Sbapt
1050264790Sbapt#if !YYBTYACC
1051319297Sdelphij    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1052264790Sbaptyyerrlab:
1053264790Sbapt#endif
1054264790Sbapt    ++yynerrs;
1055264790Sbapt
1056264790Sbaptyyinrecovery:
1057264790Sbapt    if (yyerrflag < 3)
1058264790Sbapt    {
1059264790Sbapt        yyerrflag = 3;
1060264790Sbapt        for (;;)
1061264790Sbapt        {
1062264790Sbapt            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1063264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1064264790Sbapt            {
1065264790Sbapt#if YYDEBUG
1066264790Sbapt                if (yydebug)
1067264790Sbapt                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1068264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1069264790Sbapt#endif
1070264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1071264790Sbapt                yystate = yytable[yyn];
1072264790Sbapt                *++yystack.s_mark = yytable[yyn];
1073264790Sbapt                *++yystack.l_mark = yylval;
1074264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1075264790Sbapt                /* lookahead position is error end position */
1076264790Sbapt                yyerror_loc_range[1] = yylloc;
1077264790Sbapt                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1078264790Sbapt                *++yystack.p_mark = yyloc;
1079264790Sbapt#endif
1080264790Sbapt                goto yyloop;
1081264790Sbapt            }
1082264790Sbapt            else
1083264790Sbapt            {
1084264790Sbapt#if YYDEBUG
1085264790Sbapt                if (yydebug)
1086264790Sbapt                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1087264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1088264790Sbapt#endif
1089264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1090264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1091264790Sbapt                /* the current TOS position is the error start position */
1092264790Sbapt                yyerror_loc_range[0] = *yystack.p_mark;
1093264790Sbapt#endif
1094264790Sbapt#if defined(YYDESTRUCT_CALL)
1095264790Sbapt#if YYBTYACC
1096264790Sbapt                if (!yytrial)
1097264790Sbapt#endif /* YYBTYACC */
1098264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1099264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1100264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1101264790Sbapt#else
1102264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1103264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark);
1104264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1105264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1106264790Sbapt                --yystack.s_mark;
1107264790Sbapt                --yystack.l_mark;
1108264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1109264790Sbapt                --yystack.p_mark;
1110264790Sbapt#endif
1111264790Sbapt            }
1112264790Sbapt        }
1113264790Sbapt    }
1114264790Sbapt    else
1115264790Sbapt    {
1116264790Sbapt        if (yychar == YYEOF) goto yyabort;
1117264790Sbapt#if YYDEBUG
1118264790Sbapt        if (yydebug)
1119264790Sbapt        {
1120319297Sdelphij            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1121264790Sbapt            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1122264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1123264790Sbapt        }
1124264790Sbapt#endif
1125264790Sbapt#if defined(YYDESTRUCT_CALL)
1126264790Sbapt#if YYBTYACC
1127264790Sbapt        if (!yytrial)
1128264790Sbapt#endif /* YYBTYACC */
1129264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1130264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1131264790Sbapt#else
1132264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1133264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1134264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1135264790Sbapt        yychar = YYEMPTY;
1136264790Sbapt        goto yyloop;
1137264790Sbapt    }
1138264790Sbapt
1139264790Sbaptyyreduce:
1140264790Sbapt    yym = yylen[yyn];
1141264790Sbapt#if YYDEBUG
1142264790Sbapt    if (yydebug)
1143264790Sbapt    {
1144264790Sbapt        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1145264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1146264790Sbapt#ifdef YYSTYPE_TOSTRING
1147264790Sbapt#if YYBTYACC
1148264790Sbapt        if (!yytrial)
1149264790Sbapt#endif /* YYBTYACC */
1150264790Sbapt            if (yym > 0)
1151264790Sbapt            {
1152264790Sbapt                int i;
1153264790Sbapt                fputc('<', stderr);
1154264790Sbapt                for (i = yym; i > 0; i--)
1155264790Sbapt                {
1156264790Sbapt                    if (i != yym) fputs(", ", stderr);
1157264790Sbapt                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1158264790Sbapt                                           yystack.l_mark[1-i]), stderr);
1159264790Sbapt                }
1160264790Sbapt                fputc('>', stderr);
1161264790Sbapt            }
1162264790Sbapt#endif
1163264790Sbapt        fputc('\n', stderr);
1164264790Sbapt    }
1165264790Sbapt#endif
1166264790Sbapt    if (yym > 0)
1167264790Sbapt        yyval = yystack.l_mark[1-yym];
1168264790Sbapt    else
1169264790Sbapt        memset(&yyval, 0, sizeof yyval);
1170264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1171264790Sbapt
1172264790Sbapt    /* Perform position reduction */
1173264790Sbapt    memset(&yyloc, 0, sizeof(yyloc));
1174264790Sbapt#if YYBTYACC
1175264790Sbapt    if (!yytrial)
1176264790Sbapt#endif /* YYBTYACC */
1177264790Sbapt    {
1178264790Sbapt        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1179264790Sbapt        /* just in case YYERROR is invoked within the action, save
1180264790Sbapt           the start of the rhs as the error start position */
1181264790Sbapt        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1182264790Sbapt    }
1183264790Sbapt#endif
1184264790Sbapt
1185264790Sbapt    switch (yyn)
1186264790Sbapt    {
1187264790Sbaptcase 3:
1188264790Sbapt#line 35 "calc2.y"
1189264790Sbapt	{  yyerrok ; }
1190264790Sbaptbreak;
1191264790Sbaptcase 4:
1192264790Sbapt#line 39 "calc2.y"
1193264790Sbapt	{  printf("%d\n",yystack.l_mark[0]);}
1194264790Sbaptbreak;
1195264790Sbaptcase 5:
1196264790Sbapt#line 41 "calc2.y"
1197264790Sbapt	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
1198264790Sbaptbreak;
1199264790Sbaptcase 6:
1200264790Sbapt#line 45 "calc2.y"
1201264790Sbapt	{  yyval = yystack.l_mark[-1]; }
1202264790Sbaptbreak;
1203264790Sbaptcase 7:
1204264790Sbapt#line 47 "calc2.y"
1205264790Sbapt	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
1206264790Sbaptbreak;
1207264790Sbaptcase 8:
1208264790Sbapt#line 49 "calc2.y"
1209264790Sbapt	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
1210264790Sbaptbreak;
1211264790Sbaptcase 9:
1212264790Sbapt#line 51 "calc2.y"
1213264790Sbapt	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
1214264790Sbaptbreak;
1215264790Sbaptcase 10:
1216264790Sbapt#line 53 "calc2.y"
1217264790Sbapt	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
1218264790Sbaptbreak;
1219264790Sbaptcase 11:
1220264790Sbapt#line 55 "calc2.y"
1221264790Sbapt	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
1222264790Sbaptbreak;
1223264790Sbaptcase 12:
1224264790Sbapt#line 57 "calc2.y"
1225264790Sbapt	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
1226264790Sbaptbreak;
1227264790Sbaptcase 13:
1228264790Sbapt#line 59 "calc2.y"
1229264790Sbapt	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
1230264790Sbaptbreak;
1231264790Sbaptcase 14:
1232264790Sbapt#line 61 "calc2.y"
1233264790Sbapt	{  yyval = - yystack.l_mark[0]; }
1234264790Sbaptbreak;
1235264790Sbaptcase 15:
1236264790Sbapt#line 63 "calc2.y"
1237264790Sbapt	{  yyval = regs[yystack.l_mark[0]]; }
1238264790Sbaptbreak;
1239264790Sbaptcase 17:
1240264790Sbapt#line 68 "calc2.y"
1241264790Sbapt	{  yyval = yystack.l_mark[0]; (*base) = (yystack.l_mark[0]==0) ? 8 : 10; }
1242264790Sbaptbreak;
1243264790Sbaptcase 18:
1244264790Sbapt#line 70 "calc2.y"
1245264790Sbapt	{  yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; }
1246264790Sbaptbreak;
1247319297Sdelphij#line 1248 "calc2.tab.c"
1248264790Sbapt    default:
1249264790Sbapt        break;
1250264790Sbapt    }
1251264790Sbapt    yystack.s_mark -= yym;
1252264790Sbapt    yystate = *yystack.s_mark;
1253264790Sbapt    yystack.l_mark -= yym;
1254264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1255264790Sbapt    yystack.p_mark -= yym;
1256264790Sbapt#endif
1257264790Sbapt    yym = yylhs[yyn];
1258264790Sbapt    if (yystate == 0 && yym == 0)
1259264790Sbapt    {
1260264790Sbapt#if YYDEBUG
1261264790Sbapt        if (yydebug)
1262264790Sbapt        {
1263264790Sbapt            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1264264790Sbapt#ifdef YYSTYPE_TOSTRING
1265264790Sbapt#if YYBTYACC
1266264790Sbapt            if (!yytrial)
1267264790Sbapt#endif /* YYBTYACC */
1268264790Sbapt                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1269264790Sbapt#endif
1270264790Sbapt            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1271264790Sbapt        }
1272264790Sbapt#endif
1273264790Sbapt        yystate = YYFINAL;
1274264790Sbapt        *++yystack.s_mark = YYFINAL;
1275264790Sbapt        *++yystack.l_mark = yyval;
1276264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1277264790Sbapt        *++yystack.p_mark = yyloc;
1278264790Sbapt#endif
1279264790Sbapt        if (yychar < 0)
1280264790Sbapt        {
1281264790Sbapt#if YYBTYACC
1282264790Sbapt            do {
1283264790Sbapt            if (yylvp < yylve)
1284264790Sbapt            {
1285264790Sbapt                /* we're currently re-reading tokens */
1286264790Sbapt                yylval = *yylvp++;
1287264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1288264790Sbapt                yylloc = *yylpp++;
1289264790Sbapt#endif
1290264790Sbapt                yychar = *yylexp++;
1291264790Sbapt                break;
1292264790Sbapt            }
1293264790Sbapt            if (yyps->save)
1294264790Sbapt            {
1295264790Sbapt                /* in trial mode; save scanner results for future parse attempts */
1296264790Sbapt                if (yylvp == yylvlim)
1297264790Sbapt                {   /* Enlarge lexical value queue */
1298272655Sbapt                    size_t p = (size_t) (yylvp - yylvals);
1299272655Sbapt                    size_t s = (size_t) (yylvlim - yylvals);
1300264790Sbapt
1301264790Sbapt                    s += YYLVQUEUEGROWTH;
1302319297Sdelphij                    if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1303264790Sbapt                        goto yyenomem;
1304319297Sdelphij                    if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1305264790Sbapt                        goto yyenomem;
1306264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1307319297Sdelphij                    if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1308264790Sbapt                        goto yyenomem;
1309264790Sbapt#endif
1310264790Sbapt                    yylvp   = yylve = yylvals + p;
1311264790Sbapt                    yylvlim = yylvals + s;
1312264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1313264790Sbapt                    yylpp   = yylpe = yylpsns + p;
1314264790Sbapt                    yylplim = yylpsns + s;
1315264790Sbapt#endif
1316264790Sbapt                    yylexp  = yylexemes + p;
1317264790Sbapt                }
1318319297Sdelphij                *yylexp = (YYINT) YYLEX;
1319264790Sbapt                *yylvp++ = yylval;
1320264790Sbapt                yylve++;
1321264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1322264790Sbapt                *yylpp++ = yylloc;
1323264790Sbapt                yylpe++;
1324264790Sbapt#endif
1325264790Sbapt                yychar = *yylexp++;
1326264790Sbapt                break;
1327264790Sbapt            }
1328264790Sbapt            /* normal operation, no conflict encountered */
1329264790Sbapt#endif /* YYBTYACC */
1330264790Sbapt            yychar = YYLEX;
1331264790Sbapt#if YYBTYACC
1332264790Sbapt            } while (0);
1333264790Sbapt#endif /* YYBTYACC */
1334264790Sbapt            if (yychar < 0) yychar = YYEOF;
1335264790Sbapt#if YYDEBUG
1336264790Sbapt            if (yydebug)
1337264790Sbapt            {
1338319297Sdelphij                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1339319297Sdelphij                fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1340264790Sbapt                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1341264790Sbapt            }
1342264790Sbapt#endif
1343264790Sbapt        }
1344264790Sbapt        if (yychar == YYEOF) goto yyaccept;
1345264790Sbapt        goto yyloop;
1346264790Sbapt    }
1347264790Sbapt    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1348264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1349264790Sbapt        yystate = yytable[yyn];
1350264790Sbapt    else
1351264790Sbapt        yystate = yydgoto[yym];
1352264790Sbapt#if YYDEBUG
1353264790Sbapt    if (yydebug)
1354264790Sbapt    {
1355264790Sbapt        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1356264790Sbapt#ifdef YYSTYPE_TOSTRING
1357264790Sbapt#if YYBTYACC
1358264790Sbapt        if (!yytrial)
1359264790Sbapt#endif /* YYBTYACC */
1360264790Sbapt            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1361264790Sbapt#endif
1362264790Sbapt        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1363264790Sbapt    }
1364264790Sbapt#endif
1365264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1366319297Sdelphij    *++yystack.s_mark = (YYINT) yystate;
1367264790Sbapt    *++yystack.l_mark = yyval;
1368264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1369264790Sbapt    *++yystack.p_mark = yyloc;
1370264790Sbapt#endif
1371264790Sbapt    goto yyloop;
1372264790Sbapt#if YYBTYACC
1373264790Sbapt
1374264790Sbapt    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1375264790Sbaptyyvalid:
1376264790Sbapt    if (yypath) YYABORT;
1377264790Sbapt    while (yyps->save)
1378264790Sbapt    {
1379264790Sbapt        YYParseState *save = yyps->save;
1380264790Sbapt        yyps->save = save->save;
1381264790Sbapt        save->save = yypath;
1382264790Sbapt        yypath = save;
1383264790Sbapt    }
1384264790Sbapt#if YYDEBUG
1385264790Sbapt    if (yydebug)
1386264790Sbapt        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1387264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1388264790Sbapt#endif
1389264790Sbapt    if (yyerrctx)
1390264790Sbapt    {
1391264790Sbapt        yyFreeState(yyerrctx);
1392264790Sbapt        yyerrctx = NULL;
1393264790Sbapt    }
1394264790Sbapt    yylvp          = yylvals + yypath->lexeme;
1395264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1396264790Sbapt    yylpp          = yylpsns + yypath->lexeme;
1397264790Sbapt#endif
1398264790Sbapt    yylexp         = yylexemes + yypath->lexeme;
1399264790Sbapt    yychar         = YYEMPTY;
1400264790Sbapt    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1401319297Sdelphij    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1402264790Sbapt    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1403272655Sbapt    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1404264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1405264790Sbapt    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1406272655Sbapt    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1407264790Sbapt#endif
1408264790Sbapt    yystate        = yypath->state;
1409264790Sbapt    goto yyloop;
1410264790Sbapt#endif /* YYBTYACC */
1411264790Sbapt
1412264790Sbaptyyoverflow:
1413264790Sbapt    YYERROR_CALL("yacc stack overflow");
1414264790Sbapt#if YYBTYACC
1415264790Sbapt    goto yyabort_nomem;
1416264790Sbaptyyenomem:
1417264790Sbapt    YYERROR_CALL("memory exhausted");
1418264790Sbaptyyabort_nomem:
1419264790Sbapt#endif /* YYBTYACC */
1420264790Sbapt    yyresult = 2;
1421264790Sbapt    goto yyreturn;
1422264790Sbapt
1423264790Sbaptyyabort:
1424264790Sbapt    yyresult = 1;
1425264790Sbapt    goto yyreturn;
1426264790Sbapt
1427264790Sbaptyyaccept:
1428264790Sbapt#if YYBTYACC
1429264790Sbapt    if (yyps->save) goto yyvalid;
1430264790Sbapt#endif /* YYBTYACC */
1431264790Sbapt    yyresult = 0;
1432264790Sbapt
1433264790Sbaptyyreturn:
1434264790Sbapt#if defined(YYDESTRUCT_CALL)
1435264790Sbapt    if (yychar != YYEOF && yychar != YYEMPTY)
1436264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1437264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1438264790Sbapt#else
1439264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1440264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1441264790Sbapt
1442264790Sbapt    {
1443264790Sbapt        YYSTYPE *pv;
1444264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1445264790Sbapt        YYLTYPE *pp;
1446264790Sbapt
1447264790Sbapt        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1448264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1449264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1450264790Sbapt#else
1451264790Sbapt        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1452264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1453264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1454264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1455264790Sbapt    }
1456264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1457264790Sbapt
1458264790Sbapt#if YYBTYACC
1459264790Sbapt    if (yyerrctx)
1460264790Sbapt    {
1461264790Sbapt        yyFreeState(yyerrctx);
1462264790Sbapt        yyerrctx = NULL;
1463264790Sbapt    }
1464264790Sbapt    while (yyps)
1465264790Sbapt    {
1466264790Sbapt        YYParseState *save = yyps;
1467264790Sbapt        yyps = save->save;
1468264790Sbapt        save->save = NULL;
1469264790Sbapt        yyFreeState(save);
1470264790Sbapt    }
1471264790Sbapt    while (yypath)
1472264790Sbapt    {
1473264790Sbapt        YYParseState *save = yypath;
1474264790Sbapt        yypath = save->save;
1475264790Sbapt        save->save = NULL;
1476264790Sbapt        yyFreeState(save);
1477264790Sbapt    }
1478264790Sbapt#endif /* YYBTYACC */
1479264790Sbapt    yyfreestack(&yystack);
1480264790Sbapt    return (yyresult);
1481264790Sbapt}
1482