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    quote_calc3_parse
22264790Sbapt#endif /* yyparse */
23264790Sbapt
24264790Sbapt#ifndef yylex
25264790Sbapt#define yylex      quote_calc3_lex
26264790Sbapt#endif /* yylex */
27264790Sbapt
28264790Sbapt#ifndef yyerror
29264790Sbapt#define yyerror    quote_calc3_error
30264790Sbapt#endif /* yyerror */
31264790Sbapt
32264790Sbapt#ifndef yychar
33264790Sbapt#define yychar     quote_calc3_char
34264790Sbapt#endif /* yychar */
35264790Sbapt
36264790Sbapt#ifndef yyval
37264790Sbapt#define yyval      quote_calc3_val
38264790Sbapt#endif /* yyval */
39264790Sbapt
40264790Sbapt#ifndef yylval
41264790Sbapt#define yylval     quote_calc3_lval
42264790Sbapt#endif /* yylval */
43264790Sbapt
44264790Sbapt#ifndef yydebug
45264790Sbapt#define yydebug    quote_calc3_debug
46264790Sbapt#endif /* yydebug */
47264790Sbapt
48264790Sbapt#ifndef yynerrs
49264790Sbapt#define yynerrs    quote_calc3_nerrs
50264790Sbapt#endif /* yynerrs */
51264790Sbapt
52264790Sbapt#ifndef yyerrflag
53264790Sbapt#define yyerrflag  quote_calc3_errflag
54264790Sbapt#endif /* yyerrflag */
55264790Sbapt
56264790Sbapt#ifndef yylhs
57264790Sbapt#define yylhs      quote_calc3_lhs
58264790Sbapt#endif /* yylhs */
59264790Sbapt
60264790Sbapt#ifndef yylen
61264790Sbapt#define yylen      quote_calc3_len
62264790Sbapt#endif /* yylen */
63264790Sbapt
64264790Sbapt#ifndef yydefred
65264790Sbapt#define yydefred   quote_calc3_defred
66264790Sbapt#endif /* yydefred */
67264790Sbapt
68264790Sbapt#ifndef yystos
69264790Sbapt#define yystos     quote_calc3_stos
70264790Sbapt#endif /* yystos */
71264790Sbapt
72264790Sbapt#ifndef yydgoto
73264790Sbapt#define yydgoto    quote_calc3_dgoto
74264790Sbapt#endif /* yydgoto */
75264790Sbapt
76264790Sbapt#ifndef yysindex
77264790Sbapt#define yysindex   quote_calc3_sindex
78264790Sbapt#endif /* yysindex */
79264790Sbapt
80264790Sbapt#ifndef yyrindex
81264790Sbapt#define yyrindex   quote_calc3_rindex
82264790Sbapt#endif /* yyrindex */
83264790Sbapt
84264790Sbapt#ifndef yygindex
85264790Sbapt#define yygindex   quote_calc3_gindex
86264790Sbapt#endif /* yygindex */
87264790Sbapt
88264790Sbapt#ifndef yytable
89264790Sbapt#define yytable    quote_calc3_table
90264790Sbapt#endif /* yytable */
91264790Sbapt
92264790Sbapt#ifndef yycheck
93264790Sbapt#define yycheck    quote_calc3_check
94264790Sbapt#endif /* yycheck */
95264790Sbapt
96264790Sbapt#ifndef yyname
97264790Sbapt#define yyname     quote_calc3_name
98264790Sbapt#endif /* yyname */
99264790Sbapt
100264790Sbapt#ifndef yyrule
101264790Sbapt#define yyrule     quote_calc3_rule
102264790Sbapt#endif /* yyrule */
103264790Sbapt
104264790Sbapt#if YYBTYACC
105264790Sbapt
106264790Sbapt#ifndef yycindex
107264790Sbapt#define yycindex   quote_calc3_cindex
108264790Sbapt#endif /* yycindex */
109264790Sbapt
110264790Sbapt#ifndef yyctable
111264790Sbapt#define yyctable   quote_calc3_ctable
112264790Sbapt#endif /* yyctable */
113264790Sbapt
114264790Sbapt#endif /* YYBTYACC */
115264790Sbapt
116264790Sbapt#define YYPREFIX "quote_calc3_"
117264790Sbapt
118264790Sbapt#define YYPURE 0
119264790Sbapt
120264790Sbapt#line 2 "quote_calc3.y"
121264790Sbapt# include <stdio.h>
122264790Sbapt# include <ctype.h>
123264790Sbapt
124264790Sbaptint regs[26];
125264790Sbaptint base;
126264790Sbapt
127264790Sbaptint yylex(void);
128264790Sbaptstatic void yyerror(const char *s);
129264790Sbapt
130264790Sbapt#line 131 "quote_calc3-s.tab.c"
131264790Sbapt
132264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
133264790Sbapt/* Default: YYSTYPE is the semantic value type. */
134264790Sbapttypedef int YYSTYPE;
135264790Sbapt# define YYSTYPE_IS_DECLARED 1
136264790Sbapt#endif
137264790Sbapt
138264790Sbapt/* compatibility with bison */
139264790Sbapt#ifdef YYPARSE_PARAM
140264790Sbapt/* compatibility with FreeBSD */
141264790Sbapt# ifdef YYPARSE_PARAM_TYPE
142264790Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
143264790Sbapt# else
144264790Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
145264790Sbapt# endif
146264790Sbapt#else
147264790Sbapt# define YYPARSE_DECL() yyparse(void)
148264790Sbapt#endif
149264790Sbapt
150264790Sbapt/* Parameters sent to lex. */
151264790Sbapt#ifdef YYLEX_PARAM
152264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
153264790Sbapt# define YYLEX yylex(YYLEX_PARAM)
154264790Sbapt#else
155264790Sbapt# define YYLEX_DECL() yylex(void)
156264790Sbapt# define YYLEX yylex()
157264790Sbapt#endif
158264790Sbapt
159264790Sbapt/* Parameters sent to yyerror. */
160264790Sbapt#ifndef YYERROR_DECL
161264790Sbapt#define YYERROR_DECL() yyerror(const char *s)
162264790Sbapt#endif
163264790Sbapt#ifndef YYERROR_CALL
164264790Sbapt#define YYERROR_CALL(msg) yyerror(msg)
165264790Sbapt#endif
166264790Sbapt
167264790Sbaptextern int YYPARSE_DECL();
168264790Sbapt
169264790Sbapt#define OP_ADD 257
170264790Sbapt#define OP_SUB 259
171264790Sbapt#define OP_MUL 261
172264790Sbapt#define OP_DIV 263
173264790Sbapt#define OP_MOD 265
174264790Sbapt#define OP_AND 267
175264790Sbapt#define DIGIT 269
176264790Sbapt#define LETTER 270
177264790Sbapt#define UMINUS 271
178264790Sbapt#define YYERRCODE 256
179264790Sbapttypedef short YYINT;
180264790Sbaptstatic const YYINT quote_calc3_lhs[] = {                 -1,
181264790Sbapt    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
182264790Sbapt    2,    2,    2,    2,    2,    2,    3,    3,
183264790Sbapt};
184264790Sbaptstatic const YYINT quote_calc3_len[] = {                  2,
185264790Sbapt    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
186264790Sbapt    3,    3,    3,    2,    1,    1,    1,    2,
187264790Sbapt};
188264790Sbaptstatic const YYINT quote_calc3_defred[] = {               1,
189264790Sbapt    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
190264790Sbapt   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
191264790Sbapt    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
192264790Sbapt    0,    0,
193264790Sbapt};
194319297Sdelphij#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
195264790Sbaptstatic const YYINT quote_calc3_stos[] = {                 0,
196264790Sbapt  273,  256,  259,  269,  270,   40,  274,  275,  276,   10,
197264790Sbapt  270,  275,   61,  275,   10,  257,  259,  261,  263,  265,
198264790Sbapt  267,  124,  269,  275,   41,  275,  275,  275,  275,  275,
199264790Sbapt  275,  275,
200264790Sbapt};
201319297Sdelphij#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
202264790Sbaptstatic const YYINT quote_calc3_dgoto[] = {                1,
203264790Sbapt    7,    8,    9,
204264790Sbapt};
205264790Sbaptstatic const YYINT quote_calc3_sindex[] = {               0,
206264790Sbapt  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
207264790Sbapt    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
208264790Sbapt  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
209264790Sbapt -121, -243,
210264790Sbapt};
211264790Sbaptstatic const YYINT quote_calc3_rindex[] = {               0,
212264790Sbapt    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
213264790Sbapt    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
214264790Sbapt    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
215264790Sbapt    3,   -4,
216264790Sbapt};
217264790Sbapt#if YYBTYACC
218264790Sbaptstatic const YYINT quote_calc3_cindex[] = {               0,
219264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
220264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
221264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
222264790Sbapt    0,    0,
223264790Sbapt};
224264790Sbapt#endif
225264790Sbaptstatic const YYINT quote_calc3_gindex[] = {               0,
226264790Sbapt    0,   42,    0,
227264790Sbapt};
228264790Sbapt#define YYTABLESIZE 258
229264790Sbaptstatic const YYINT quote_calc3_table[] = {               16,
230264790Sbapt   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
231264790Sbapt   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
232264790Sbapt   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
233264790Sbapt   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
234264790Sbapt    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
235264790Sbapt    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
236264790Sbapt   29,   30,   31,   32,    0,    0,    0,    0,    0,    0,
237264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
238264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
239264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
240264790Sbapt    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
241264790Sbapt    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
242264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
243264790Sbapt    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
244264790Sbapt    0,   19,    0,   20,    0,   21,    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,    0,    0,    0,    0,    0,
248264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
249264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
250264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
251264790Sbapt    0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
252264790Sbapt    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
253264790Sbapt    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
254264790Sbapt   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
255264790Sbapt   16,   15,   16,   15,   16,   15,   16,   15,
256264790Sbapt};
257264790Sbaptstatic const YYINT quote_calc3_check[] = {               10,
258264790Sbapt   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
259264790Sbapt   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
260264790Sbapt  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
261264790Sbapt   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
262264790Sbapt   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
263264790Sbapt   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
264264790Sbapt   19,   20,   21,   22,   -1,   -1,   -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,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
269264790Sbapt   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
270264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
271264790Sbapt   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
272264790Sbapt   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
273264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
274264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
275264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
276264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
277264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
278264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
279264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
280264790Sbapt  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
281264790Sbapt  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
282264790Sbapt  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
283264790Sbapt  261,  261,  263,  263,  265,  265,  267,  267,
284264790Sbapt};
285272655Sbapt#if YYBTYACC
286272655Sbaptstatic const YYINT quote_calc3_ctable[] = {              -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,   -1,
297272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
298272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
299272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
300272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
301272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
302272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
303272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
304272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
305272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
307272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
308272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
309272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
310272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
311272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
312272655Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,
313272655Sbapt};
314272655Sbapt#endif
315264790Sbapt#define YYFINAL 1
316264790Sbapt#ifndef YYDEBUG
317264790Sbapt#define YYDEBUG 0
318264790Sbapt#endif
319264790Sbapt#define YYMAXTOKEN 271
320264790Sbapt#define YYUNDFTOKEN 277
321264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
322264790Sbapt#if YYDEBUG
323264790Sbaptstatic const char *const quote_calc3_name[] = {
324264790Sbapt
325264790Sbapt"$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,
326264790Sbapt0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
327264790Sbapt0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
328264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0,
329264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
330264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
331264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
332264790Sbapt0,0,"error","OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MUL",
333264790Sbapt"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"",
334264790Sbapt"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS","$accept","list","stat",
335264790Sbapt"expr","number","illegal-symbol",
336264790Sbapt};
337264790Sbaptstatic const char *const quote_calc3_rule[] = {
338264790Sbapt"$accept : list",
339264790Sbapt"list :",
340264790Sbapt"list : list stat '\\n'",
341264790Sbapt"list : list error '\\n'",
342264790Sbapt"stat : expr",
343264790Sbapt"stat : LETTER '=' expr",
344264790Sbapt"expr : '(' expr ')'",
345264790Sbapt"expr : expr OP_ADD expr",
346264790Sbapt"expr : expr OP_SUB expr",
347264790Sbapt"expr : expr OP_MUL expr",
348264790Sbapt"expr : expr OP_DIV expr",
349264790Sbapt"expr : expr OP_MOD expr",
350264790Sbapt"expr : expr OP_AND expr",
351264790Sbapt"expr : expr '|' expr",
352264790Sbapt"expr : OP_SUB expr",
353264790Sbapt"expr : LETTER",
354264790Sbapt"expr : number",
355264790Sbapt"number : DIGIT",
356264790Sbapt"number : number DIGIT",
357264790Sbapt
358264790Sbapt};
359264790Sbapt#endif
360264790Sbapt
361264790Sbaptint      yydebug;
362264790Sbaptint      yynerrs;
363264790Sbapt
364264790Sbaptint      yyerrflag;
365264790Sbaptint      yychar;
366264790SbaptYYSTYPE  yyval;
367264790SbaptYYSTYPE  yylval;
368264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
369264790SbaptYYLTYPE  yyloc; /* position returned by actions */
370264790SbaptYYLTYPE  yylloc; /* position from the lexer */
371264790Sbapt#endif
372264790Sbapt
373264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
374264790Sbapt#ifndef YYLLOC_DEFAULT
375264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \
376264790Sbaptdo \
377264790Sbapt{ \
378264790Sbapt    if (n == 0) \
379264790Sbapt    { \
380264790Sbapt        (loc).first_line   = ((rhs)[-1]).last_line; \
381264790Sbapt        (loc).first_column = ((rhs)[-1]).last_column; \
382264790Sbapt        (loc).last_line    = ((rhs)[-1]).last_line; \
383264790Sbapt        (loc).last_column  = ((rhs)[-1]).last_column; \
384264790Sbapt    } \
385264790Sbapt    else \
386264790Sbapt    { \
387264790Sbapt        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
388264790Sbapt        (loc).first_column = ((rhs)[ 0 ]).first_column; \
389264790Sbapt        (loc).last_line    = ((rhs)[n-1]).last_line; \
390264790Sbapt        (loc).last_column  = ((rhs)[n-1]).last_column; \
391264790Sbapt    } \
392264790Sbapt} while (0)
393264790Sbapt#endif /* YYLLOC_DEFAULT */
394264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
395264790Sbapt#if YYBTYACC
396264790Sbapt
397264790Sbapt#ifndef YYLVQUEUEGROWTH
398264790Sbapt#define YYLVQUEUEGROWTH 32
399264790Sbapt#endif
400264790Sbapt#endif /* YYBTYACC */
401264790Sbapt
402264790Sbapt/* define the initial stack-sizes */
403264790Sbapt#ifdef YYSTACKSIZE
404264790Sbapt#undef YYMAXDEPTH
405264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
406264790Sbapt#else
407264790Sbapt#ifdef YYMAXDEPTH
408264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
409264790Sbapt#else
410264790Sbapt#define YYSTACKSIZE 10000
411264790Sbapt#define YYMAXDEPTH  10000
412264790Sbapt#endif
413264790Sbapt#endif
414264790Sbapt
415264790Sbapt#ifndef YYINITSTACKSIZE
416264790Sbapt#define YYINITSTACKSIZE 200
417264790Sbapt#endif
418264790Sbapt
419264790Sbapttypedef struct {
420264790Sbapt    unsigned stacksize;
421319297Sdelphij    YYINT    *s_base;
422319297Sdelphij    YYINT    *s_mark;
423319297Sdelphij    YYINT    *s_last;
424264790Sbapt    YYSTYPE  *l_base;
425264790Sbapt    YYSTYPE  *l_mark;
426264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
427264790Sbapt    YYLTYPE  *p_base;
428264790Sbapt    YYLTYPE  *p_mark;
429264790Sbapt#endif
430264790Sbapt} YYSTACKDATA;
431264790Sbapt#if YYBTYACC
432264790Sbapt
433264790Sbaptstruct YYParseState_s
434264790Sbapt{
435264790Sbapt    struct YYParseState_s *save;    /* Previously saved parser state */
436264790Sbapt    YYSTACKDATA            yystack; /* saved parser stack */
437264790Sbapt    int                    state;   /* saved parser state */
438264790Sbapt    int                    errflag; /* saved error recovery status */
439264790Sbapt    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
440264790Sbapt    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
441264790Sbapt};
442264790Sbapttypedef struct YYParseState_s YYParseState;
443264790Sbapt#endif /* YYBTYACC */
444264790Sbapt/* variables for the parser stack */
445264790Sbaptstatic YYSTACKDATA yystack;
446264790Sbapt#if YYBTYACC
447264790Sbapt
448264790Sbapt/* Current parser state */
449264790Sbaptstatic YYParseState *yyps = 0;
450264790Sbapt
451264790Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */
452264790Sbaptstatic YYParseState *yypath = 0;
453264790Sbapt
454264790Sbapt/* Base of the lexical value queue */
455264790Sbaptstatic YYSTYPE *yylvals = 0;
456264790Sbapt
457264790Sbapt/* Current position at lexical value queue */
458264790Sbaptstatic YYSTYPE *yylvp = 0;
459264790Sbapt
460264790Sbapt/* End position of lexical value queue */
461264790Sbaptstatic YYSTYPE *yylve = 0;
462264790Sbapt
463264790Sbapt/* The last allocated position at the lexical value queue */
464264790Sbaptstatic YYSTYPE *yylvlim = 0;
465264790Sbapt
466264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
467264790Sbapt/* Base of the lexical position queue */
468264790Sbaptstatic YYLTYPE *yylpsns = 0;
469264790Sbapt
470264790Sbapt/* Current position at lexical position queue */
471264790Sbaptstatic YYLTYPE *yylpp = 0;
472264790Sbapt
473264790Sbapt/* End position of lexical position queue */
474264790Sbaptstatic YYLTYPE *yylpe = 0;
475264790Sbapt
476264790Sbapt/* The last allocated position at the lexical position queue */
477264790Sbaptstatic YYLTYPE *yylplim = 0;
478264790Sbapt#endif
479264790Sbapt
480264790Sbapt/* Current position at lexical token queue */
481319297Sdelphijstatic YYINT  *yylexp = 0;
482264790Sbapt
483319297Sdelphijstatic YYINT  *yylexemes = 0;
484264790Sbapt#endif /* YYBTYACC */
485264790Sbapt#line 73 "quote_calc3.y"
486264790Sbapt /* start of programs */
487264790Sbapt
488264790Sbaptint
489264790Sbaptmain (void)
490264790Sbapt{
491264790Sbapt    while(!feof(stdin)) {
492264790Sbapt	yyparse();
493264790Sbapt    }
494264790Sbapt    return 0;
495264790Sbapt}
496264790Sbapt
497264790Sbaptstatic void
498264790Sbaptyyerror(const char *s)
499264790Sbapt{
500264790Sbapt    fprintf(stderr, "%s\n", s);
501264790Sbapt}
502264790Sbapt
503264790Sbaptint
504264790Sbaptyylex(void) {
505264790Sbapt	/* lexical analysis routine */
506264790Sbapt	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
507264790Sbapt	/* return DIGIT for a digit, yylval = 0 through 9 */
508264790Sbapt	/* all other characters are returned immediately */
509264790Sbapt
510264790Sbapt    int c;
511264790Sbapt
512264790Sbapt    while( (c=getchar()) == ' ' )   { /* skip blanks */ }
513264790Sbapt
514264790Sbapt    /* c is now nonblank */
515264790Sbapt
516264790Sbapt    if( islower( c )) {
517264790Sbapt	yylval = c - 'a';
518264790Sbapt	return ( LETTER );
519264790Sbapt    }
520264790Sbapt    if( isdigit( c )) {
521264790Sbapt	yylval = c - '0';
522264790Sbapt	return ( DIGIT );
523264790Sbapt    }
524264790Sbapt    return( c );
525264790Sbapt}
526319297Sdelphij#line 527 "quote_calc3-s.tab.c"
527264790Sbapt
528264790Sbapt/* For use in generated program */
529264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base)
530264790Sbapt#if YYBTYACC
531264790Sbapt#define yytrial (yyps->save)
532264790Sbapt#endif /* YYBTYACC */
533264790Sbapt
534264790Sbapt#if YYDEBUG
535319297Sdelphij#include <stdio.h>	/* needed for printf */
536264790Sbapt#endif
537264790Sbapt
538319297Sdelphij#include <stdlib.h>	/* needed for malloc, etc */
539319297Sdelphij#include <string.h>	/* needed for memset */
540264790Sbapt
541264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
542264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
543264790Sbapt{
544264790Sbapt    int i;
545264790Sbapt    unsigned newsize;
546319297Sdelphij    YYINT *newss;
547264790Sbapt    YYSTYPE *newvs;
548264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
549264790Sbapt    YYLTYPE *newps;
550264790Sbapt#endif
551264790Sbapt
552264790Sbapt    if ((newsize = data->stacksize) == 0)
553264790Sbapt        newsize = YYINITSTACKSIZE;
554264790Sbapt    else if (newsize >= YYMAXDEPTH)
555264790Sbapt        return YYENOMEM;
556264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
557264790Sbapt        newsize = YYMAXDEPTH;
558264790Sbapt
559264790Sbapt    i = (int) (data->s_mark - data->s_base);
560319297Sdelphij    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
561264790Sbapt    if (newss == 0)
562264790Sbapt        return YYENOMEM;
563264790Sbapt
564264790Sbapt    data->s_base = newss;
565264790Sbapt    data->s_mark = newss + i;
566264790Sbapt
567264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
568264790Sbapt    if (newvs == 0)
569264790Sbapt        return YYENOMEM;
570264790Sbapt
571264790Sbapt    data->l_base = newvs;
572264790Sbapt    data->l_mark = newvs + i;
573264790Sbapt
574264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
575264790Sbapt    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
576264790Sbapt    if (newps == 0)
577264790Sbapt        return YYENOMEM;
578264790Sbapt
579264790Sbapt    data->p_base = newps;
580264790Sbapt    data->p_mark = newps + i;
581264790Sbapt#endif
582264790Sbapt
583264790Sbapt    data->stacksize = newsize;
584264790Sbapt    data->s_last = data->s_base + newsize - 1;
585264790Sbapt
586264790Sbapt#if YYDEBUG
587264790Sbapt    if (yydebug)
588264790Sbapt        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
589264790Sbapt#endif
590264790Sbapt    return 0;
591264790Sbapt}
592264790Sbapt
593264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
594264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
595264790Sbapt{
596264790Sbapt    free(data->s_base);
597264790Sbapt    free(data->l_base);
598264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
599264790Sbapt    free(data->p_base);
600264790Sbapt#endif
601264790Sbapt    memset(data, 0, sizeof(*data));
602264790Sbapt}
603264790Sbapt#else
604264790Sbapt#define yyfreestack(data) /* nothing */
605264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */
606264790Sbapt#if YYBTYACC
607264790Sbapt
608264790Sbaptstatic YYParseState *
609264790SbaptyyNewState(unsigned size)
610264790Sbapt{
611264790Sbapt    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
612264790Sbapt    if (p == NULL) return NULL;
613264790Sbapt
614264790Sbapt    p->yystack.stacksize = size;
615264790Sbapt    if (size == 0)
616264790Sbapt    {
617264790Sbapt        p->yystack.s_base = NULL;
618264790Sbapt        p->yystack.l_base = NULL;
619264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
620264790Sbapt        p->yystack.p_base = NULL;
621264790Sbapt#endif
622264790Sbapt        return p;
623264790Sbapt    }
624319297Sdelphij    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
625264790Sbapt    if (p->yystack.s_base == NULL) return NULL;
626264790Sbapt    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
627264790Sbapt    if (p->yystack.l_base == NULL) return NULL;
628264790Sbapt    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
629264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
630264790Sbapt    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
631264790Sbapt    if (p->yystack.p_base == NULL) return NULL;
632264790Sbapt    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
633264790Sbapt#endif
634264790Sbapt
635264790Sbapt    return p;
636264790Sbapt}
637264790Sbapt
638264790Sbaptstatic void
639264790SbaptyyFreeState(YYParseState *p)
640264790Sbapt{
641264790Sbapt    yyfreestack(&p->yystack);
642264790Sbapt    free(p);
643264790Sbapt}
644264790Sbapt#endif /* YYBTYACC */
645264790Sbapt
646264790Sbapt#define YYABORT  goto yyabort
647264790Sbapt#define YYREJECT goto yyabort
648264790Sbapt#define YYACCEPT goto yyaccept
649264790Sbapt#define YYERROR  goto yyerrlab
650264790Sbapt#if YYBTYACC
651264790Sbapt#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
652264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \
653264790Sbapt                                yyps->save->save == 0) goto yyvalid; } while(0)
654264790Sbapt#endif /* YYBTYACC */
655264790Sbapt
656264790Sbaptint
657264790SbaptYYPARSE_DECL()
658264790Sbapt{
659264790Sbapt    int yym, yyn, yystate, yyresult;
660264790Sbapt#if YYBTYACC
661264790Sbapt    int yynewerrflag;
662264790Sbapt    YYParseState *yyerrctx = NULL;
663264790Sbapt#endif /* YYBTYACC */
664264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
665264790Sbapt    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
666264790Sbapt#endif
667264790Sbapt#if YYDEBUG
668264790Sbapt    const char *yys;
669264790Sbapt
670264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
671264790Sbapt    {
672264790Sbapt        yyn = *yys;
673264790Sbapt        if (yyn >= '0' && yyn <= '9')
674264790Sbapt            yydebug = yyn - '0';
675264790Sbapt    }
676264790Sbapt    if (yydebug)
677264790Sbapt        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
678264790Sbapt#endif
679264790Sbapt
680264790Sbapt#if YYBTYACC
681264790Sbapt    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
682264790Sbapt    yyps->save = 0;
683264790Sbapt#endif /* YYBTYACC */
684319297Sdelphij    yym = 0;
685319297Sdelphij    yyn = 0;
686264790Sbapt    yynerrs = 0;
687264790Sbapt    yyerrflag = 0;
688264790Sbapt    yychar = YYEMPTY;
689264790Sbapt    yystate = 0;
690264790Sbapt
691264790Sbapt#if YYPURE
692264790Sbapt    memset(&yystack, 0, sizeof(yystack));
693264790Sbapt#endif
694264790Sbapt
695264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
696264790Sbapt    yystack.s_mark = yystack.s_base;
697264790Sbapt    yystack.l_mark = yystack.l_base;
698264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
699264790Sbapt    yystack.p_mark = yystack.p_base;
700264790Sbapt#endif
701264790Sbapt    yystate = 0;
702264790Sbapt    *yystack.s_mark = 0;
703264790Sbapt
704264790Sbaptyyloop:
705264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
706264790Sbapt    if (yychar < 0)
707264790Sbapt    {
708264790Sbapt#if YYBTYACC
709264790Sbapt        do {
710264790Sbapt        if (yylvp < yylve)
711264790Sbapt        {
712264790Sbapt            /* we're currently re-reading tokens */
713264790Sbapt            yylval = *yylvp++;
714264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
715264790Sbapt            yylloc = *yylpp++;
716264790Sbapt#endif
717264790Sbapt            yychar = *yylexp++;
718264790Sbapt            break;
719264790Sbapt        }
720264790Sbapt        if (yyps->save)
721264790Sbapt        {
722264790Sbapt            /* in trial mode; save scanner results for future parse attempts */
723264790Sbapt            if (yylvp == yylvlim)
724264790Sbapt            {   /* Enlarge lexical value queue */
725272655Sbapt                size_t p = (size_t) (yylvp - yylvals);
726272655Sbapt                size_t s = (size_t) (yylvlim - yylvals);
727264790Sbapt
728264790Sbapt                s += YYLVQUEUEGROWTH;
729319297Sdelphij                if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
730319297Sdelphij                if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
731264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
732319297Sdelphij                if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
733264790Sbapt#endif
734264790Sbapt                yylvp   = yylve = yylvals + p;
735264790Sbapt                yylvlim = yylvals + s;
736264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
737264790Sbapt                yylpp   = yylpe = yylpsns + p;
738264790Sbapt                yylplim = yylpsns + s;
739264790Sbapt#endif
740264790Sbapt                yylexp  = yylexemes + p;
741264790Sbapt            }
742319297Sdelphij            *yylexp = (YYINT) YYLEX;
743264790Sbapt            *yylvp++ = yylval;
744264790Sbapt            yylve++;
745264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
746264790Sbapt            *yylpp++ = yylloc;
747264790Sbapt            yylpe++;
748264790Sbapt#endif
749264790Sbapt            yychar = *yylexp++;
750264790Sbapt            break;
751264790Sbapt        }
752264790Sbapt        /* normal operation, no conflict encountered */
753264790Sbapt#endif /* YYBTYACC */
754264790Sbapt        yychar = YYLEX;
755264790Sbapt#if YYBTYACC
756264790Sbapt        } while (0);
757264790Sbapt#endif /* YYBTYACC */
758264790Sbapt        if (yychar < 0) yychar = YYEOF;
759264790Sbapt#if YYDEBUG
760264790Sbapt        if (yydebug)
761264790Sbapt        {
762319297Sdelphij            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
763264790Sbapt            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
764264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
765264790Sbapt#ifdef YYSTYPE_TOSTRING
766264790Sbapt#if YYBTYACC
767264790Sbapt            if (!yytrial)
768264790Sbapt#endif /* YYBTYACC */
769264790Sbapt                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
770264790Sbapt#endif
771264790Sbapt            fputc('\n', stderr);
772264790Sbapt        }
773264790Sbapt#endif
774264790Sbapt    }
775264790Sbapt#if YYBTYACC
776264790Sbapt
777264790Sbapt    /* Do we have a conflict? */
778264790Sbapt    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
779264790Sbapt        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
780264790Sbapt    {
781264790Sbapt        YYINT ctry;
782264790Sbapt
783264790Sbapt        if (yypath)
784264790Sbapt        {
785264790Sbapt            YYParseState *save;
786264790Sbapt#if YYDEBUG
787264790Sbapt            if (yydebug)
788264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
789264790Sbapt                                YYDEBUGSTR, yydepth, yystate);
790264790Sbapt#endif
791264790Sbapt            /* Switch to the next conflict context */
792264790Sbapt            save = yypath;
793264790Sbapt            yypath = save->save;
794264790Sbapt            save->save = NULL;
795264790Sbapt            ctry = save->ctry;
796264790Sbapt            if (save->state != yystate) YYABORT;
797264790Sbapt            yyFreeState(save);
798264790Sbapt
799264790Sbapt        }
800264790Sbapt        else
801264790Sbapt        {
802264790Sbapt
803264790Sbapt            /* Unresolved conflict - start/continue trial parse */
804264790Sbapt            YYParseState *save;
805264790Sbapt#if YYDEBUG
806264790Sbapt            if (yydebug)
807264790Sbapt            {
808264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
809264790Sbapt                if (yyps->save)
810264790Sbapt                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
811264790Sbapt                else
812264790Sbapt                    fputs("Starting trial parse.\n", stderr);
813264790Sbapt            }
814264790Sbapt#endif
815264790Sbapt            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
816264790Sbapt            if (save == NULL) goto yyenomem;
817264790Sbapt            save->save            = yyps->save;
818264790Sbapt            save->state           = yystate;
819264790Sbapt            save->errflag         = yyerrflag;
820264790Sbapt            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
821319297Sdelphij            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
822264790Sbapt            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
823272655Sbapt            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
824264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
825264790Sbapt            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
826272655Sbapt            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
827264790Sbapt#endif
828264790Sbapt            ctry                  = yytable[yyn];
829264790Sbapt            if (yyctable[ctry] == -1)
830264790Sbapt            {
831264790Sbapt#if YYDEBUG
832264790Sbapt                if (yydebug && yychar >= YYEOF)
833264790Sbapt                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
834264790Sbapt#endif
835264790Sbapt                ctry++;
836264790Sbapt            }
837264790Sbapt            save->ctry = ctry;
838264790Sbapt            if (yyps->save == NULL)
839264790Sbapt            {
840264790Sbapt                /* If this is a first conflict in the stack, start saving lexemes */
841264790Sbapt                if (!yylexemes)
842264790Sbapt                {
843319297Sdelphij                    yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
844264790Sbapt                    if (yylexemes == NULL) goto yyenomem;
845264790Sbapt                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
846264790Sbapt                    if (yylvals == NULL) goto yyenomem;
847264790Sbapt                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
848264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
849264790Sbapt                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
850264790Sbapt                    if (yylpsns == NULL) goto yyenomem;
851264790Sbapt                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
852264790Sbapt#endif
853264790Sbapt                }
854264790Sbapt                if (yylvp == yylve)
855264790Sbapt                {
856264790Sbapt                    yylvp  = yylve = yylvals;
857264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
858264790Sbapt                    yylpp  = yylpe = yylpsns;
859264790Sbapt#endif
860264790Sbapt                    yylexp = yylexemes;
861264790Sbapt                    if (yychar >= YYEOF)
862264790Sbapt                    {
863264790Sbapt                        *yylve++ = yylval;
864264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
865264790Sbapt                        *yylpe++ = yylloc;
866264790Sbapt#endif
867319297Sdelphij                        *yylexp  = (YYINT) yychar;
868264790Sbapt                        yychar   = YYEMPTY;
869264790Sbapt                    }
870264790Sbapt                }
871264790Sbapt            }
872264790Sbapt            if (yychar >= YYEOF)
873264790Sbapt            {
874264790Sbapt                yylvp--;
875264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
876264790Sbapt                yylpp--;
877264790Sbapt#endif
878264790Sbapt                yylexp--;
879264790Sbapt                yychar = YYEMPTY;
880264790Sbapt            }
881272655Sbapt            save->lexeme = (int) (yylvp - yylvals);
882264790Sbapt            yyps->save   = save;
883264790Sbapt        }
884264790Sbapt        if (yytable[yyn] == ctry)
885264790Sbapt        {
886264790Sbapt#if YYDEBUG
887264790Sbapt            if (yydebug)
888264790Sbapt                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
889264790Sbapt                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
890264790Sbapt#endif
891264790Sbapt            if (yychar < 0)
892264790Sbapt            {
893264790Sbapt                yylvp++;
894264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
895264790Sbapt                yylpp++;
896264790Sbapt#endif
897264790Sbapt                yylexp++;
898264790Sbapt            }
899264790Sbapt            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
900264790Sbapt                goto yyoverflow;
901264790Sbapt            yystate = yyctable[ctry];
902319297Sdelphij            *++yystack.s_mark = (YYINT) yystate;
903264790Sbapt            *++yystack.l_mark = yylval;
904264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
905264790Sbapt            *++yystack.p_mark = yylloc;
906264790Sbapt#endif
907264790Sbapt            yychar  = YYEMPTY;
908264790Sbapt            if (yyerrflag > 0) --yyerrflag;
909264790Sbapt            goto yyloop;
910264790Sbapt        }
911264790Sbapt        else
912264790Sbapt        {
913264790Sbapt            yyn = yyctable[ctry];
914264790Sbapt            goto yyreduce;
915264790Sbapt        }
916264790Sbapt    } /* End of code dealing with conflicts */
917264790Sbapt#endif /* YYBTYACC */
918264790Sbapt    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
919264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
920264790Sbapt    {
921264790Sbapt#if YYDEBUG
922264790Sbapt        if (yydebug)
923264790Sbapt            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
924264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
925264790Sbapt#endif
926264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
927264790Sbapt        yystate = yytable[yyn];
928264790Sbapt        *++yystack.s_mark = yytable[yyn];
929264790Sbapt        *++yystack.l_mark = yylval;
930264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
931264790Sbapt        *++yystack.p_mark = yylloc;
932264790Sbapt#endif
933264790Sbapt        yychar = YYEMPTY;
934264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
935264790Sbapt        goto yyloop;
936264790Sbapt    }
937264790Sbapt    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
938264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
939264790Sbapt    {
940264790Sbapt        yyn = yytable[yyn];
941264790Sbapt        goto yyreduce;
942264790Sbapt    }
943264790Sbapt    if (yyerrflag != 0) goto yyinrecovery;
944264790Sbapt#if YYBTYACC
945264790Sbapt
946264790Sbapt    yynewerrflag = 1;
947264790Sbapt    goto yyerrhandler;
948319297Sdelphij    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
949264790Sbapt
950264790Sbaptyyerrlab:
951319297Sdelphij    /* explicit YYERROR from an action -- pop the rhs of the rule reduced
952319297Sdelphij     * before looking for error recovery */
953319297Sdelphij    yystack.s_mark -= yym;
954319297Sdelphij    yystate = *yystack.s_mark;
955319297Sdelphij    yystack.l_mark -= yym;
956319297Sdelphij#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
957319297Sdelphij    yystack.p_mark -= yym;
958319297Sdelphij#endif
959319297Sdelphij
960264790Sbapt    yynewerrflag = 0;
961264790Sbaptyyerrhandler:
962264790Sbapt    while (yyps->save)
963264790Sbapt    {
964264790Sbapt        int ctry;
965264790Sbapt        YYParseState *save = yyps->save;
966264790Sbapt#if YYDEBUG
967264790Sbapt        if (yydebug)
968264790Sbapt            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
969264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
970264790Sbapt                    (int)(yylvp - yylvals - yyps->save->lexeme));
971264790Sbapt#endif
972264790Sbapt        /* Memorize most forward-looking error state in case it's really an error. */
973264790Sbapt        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
974264790Sbapt        {
975264790Sbapt            /* Free old saved error context state */
976264790Sbapt            if (yyerrctx) yyFreeState(yyerrctx);
977264790Sbapt            /* Create and fill out new saved error context state */
978264790Sbapt            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
979264790Sbapt            if (yyerrctx == NULL) goto yyenomem;
980264790Sbapt            yyerrctx->save           = yyps->save;
981264790Sbapt            yyerrctx->state          = yystate;
982264790Sbapt            yyerrctx->errflag        = yyerrflag;
983264790Sbapt            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
984319297Sdelphij            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
985264790Sbapt            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
986272655Sbapt            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
987264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
988264790Sbapt            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
989272655Sbapt            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
990264790Sbapt#endif
991272655Sbapt            yyerrctx->lexeme         = (int) (yylvp - yylvals);
992264790Sbapt        }
993264790Sbapt        yylvp          = yylvals   + save->lexeme;
994264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
995264790Sbapt        yylpp          = yylpsns   + save->lexeme;
996264790Sbapt#endif
997264790Sbapt        yylexp         = yylexemes + save->lexeme;
998264790Sbapt        yychar         = YYEMPTY;
999264790Sbapt        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1000319297Sdelphij        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1001264790Sbapt        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1002272655Sbapt        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1003264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1004264790Sbapt        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1005272655Sbapt        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1006264790Sbapt#endif
1007264790Sbapt        ctry           = ++save->ctry;
1008264790Sbapt        yystate        = save->state;
1009264790Sbapt        /* We tried shift, try reduce now */
1010264790Sbapt        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1011264790Sbapt        yyps->save     = save->save;
1012264790Sbapt        save->save     = NULL;
1013264790Sbapt        yyFreeState(save);
1014264790Sbapt
1015264790Sbapt        /* Nothing left on the stack -- error */
1016264790Sbapt        if (!yyps->save)
1017264790Sbapt        {
1018264790Sbapt#if YYDEBUG
1019264790Sbapt            if (yydebug)
1020264790Sbapt                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1021264790Sbapt                                YYPREFIX, yydepth);
1022264790Sbapt#endif
1023264790Sbapt            /* Restore state as it was in the most forward-advanced error */
1024264790Sbapt            yylvp          = yylvals   + yyerrctx->lexeme;
1025264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1026264790Sbapt            yylpp          = yylpsns   + yyerrctx->lexeme;
1027264790Sbapt#endif
1028264790Sbapt            yylexp         = yylexemes + yyerrctx->lexeme;
1029264790Sbapt            yychar         = yylexp[-1];
1030264790Sbapt            yylval         = yylvp[-1];
1031264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1032264790Sbapt            yylloc         = yylpp[-1];
1033264790Sbapt#endif
1034264790Sbapt            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1035319297Sdelphij            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1036264790Sbapt            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1037272655Sbapt            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1038264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1039264790Sbapt            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1040272655Sbapt            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1041264790Sbapt#endif
1042264790Sbapt            yystate        = yyerrctx->state;
1043264790Sbapt            yyFreeState(yyerrctx);
1044264790Sbapt            yyerrctx       = NULL;
1045264790Sbapt        }
1046264790Sbapt        yynewerrflag = 1;
1047264790Sbapt    }
1048264790Sbapt    if (yynewerrflag == 0) goto yyinrecovery;
1049264790Sbapt#endif /* YYBTYACC */
1050264790Sbapt
1051264790Sbapt    YYERROR_CALL("syntax error");
1052264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1053264790Sbapt    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1054264790Sbapt#endif
1055264790Sbapt
1056264790Sbapt#if !YYBTYACC
1057319297Sdelphij    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1058264790Sbaptyyerrlab:
1059264790Sbapt#endif
1060264790Sbapt    ++yynerrs;
1061264790Sbapt
1062264790Sbaptyyinrecovery:
1063264790Sbapt    if (yyerrflag < 3)
1064264790Sbapt    {
1065264790Sbapt        yyerrflag = 3;
1066264790Sbapt        for (;;)
1067264790Sbapt        {
1068264790Sbapt            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1069264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1070264790Sbapt            {
1071264790Sbapt#if YYDEBUG
1072264790Sbapt                if (yydebug)
1073264790Sbapt                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1074264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1075264790Sbapt#endif
1076264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1077264790Sbapt                yystate = yytable[yyn];
1078264790Sbapt                *++yystack.s_mark = yytable[yyn];
1079264790Sbapt                *++yystack.l_mark = yylval;
1080264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1081264790Sbapt                /* lookahead position is error end position */
1082264790Sbapt                yyerror_loc_range[1] = yylloc;
1083264790Sbapt                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1084264790Sbapt                *++yystack.p_mark = yyloc;
1085264790Sbapt#endif
1086264790Sbapt                goto yyloop;
1087264790Sbapt            }
1088264790Sbapt            else
1089264790Sbapt            {
1090264790Sbapt#if YYDEBUG
1091264790Sbapt                if (yydebug)
1092264790Sbapt                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1093264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1094264790Sbapt#endif
1095264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1096264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1097264790Sbapt                /* the current TOS position is the error start position */
1098264790Sbapt                yyerror_loc_range[0] = *yystack.p_mark;
1099264790Sbapt#endif
1100264790Sbapt#if defined(YYDESTRUCT_CALL)
1101264790Sbapt#if YYBTYACC
1102264790Sbapt                if (!yytrial)
1103264790Sbapt#endif /* YYBTYACC */
1104264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1105264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1106264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1107264790Sbapt#else
1108264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1109264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark);
1110264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1111264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1112264790Sbapt                --yystack.s_mark;
1113264790Sbapt                --yystack.l_mark;
1114264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1115264790Sbapt                --yystack.p_mark;
1116264790Sbapt#endif
1117264790Sbapt            }
1118264790Sbapt        }
1119264790Sbapt    }
1120264790Sbapt    else
1121264790Sbapt    {
1122264790Sbapt        if (yychar == YYEOF) goto yyabort;
1123264790Sbapt#if YYDEBUG
1124264790Sbapt        if (yydebug)
1125264790Sbapt        {
1126319297Sdelphij            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1127264790Sbapt            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1128264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1129264790Sbapt        }
1130264790Sbapt#endif
1131264790Sbapt#if defined(YYDESTRUCT_CALL)
1132264790Sbapt#if YYBTYACC
1133264790Sbapt        if (!yytrial)
1134264790Sbapt#endif /* YYBTYACC */
1135264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1136264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1137264790Sbapt#else
1138264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1139264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1140264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1141264790Sbapt        yychar = YYEMPTY;
1142264790Sbapt        goto yyloop;
1143264790Sbapt    }
1144264790Sbapt
1145264790Sbaptyyreduce:
1146264790Sbapt    yym = yylen[yyn];
1147264790Sbapt#if YYDEBUG
1148264790Sbapt    if (yydebug)
1149264790Sbapt    {
1150264790Sbapt        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1151264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1152264790Sbapt#ifdef YYSTYPE_TOSTRING
1153264790Sbapt#if YYBTYACC
1154264790Sbapt        if (!yytrial)
1155264790Sbapt#endif /* YYBTYACC */
1156264790Sbapt            if (yym > 0)
1157264790Sbapt            {
1158264790Sbapt                int i;
1159264790Sbapt                fputc('<', stderr);
1160264790Sbapt                for (i = yym; i > 0; i--)
1161264790Sbapt                {
1162264790Sbapt                    if (i != yym) fputs(", ", stderr);
1163264790Sbapt                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1164264790Sbapt                                           yystack.l_mark[1-i]), stderr);
1165264790Sbapt                }
1166264790Sbapt                fputc('>', stderr);
1167264790Sbapt            }
1168264790Sbapt#endif
1169264790Sbapt        fputc('\n', stderr);
1170264790Sbapt    }
1171264790Sbapt#endif
1172264790Sbapt    if (yym > 0)
1173264790Sbapt        yyval = yystack.l_mark[1-yym];
1174264790Sbapt    else
1175264790Sbapt        memset(&yyval, 0, sizeof yyval);
1176264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1177264790Sbapt
1178264790Sbapt    /* Perform position reduction */
1179264790Sbapt    memset(&yyloc, 0, sizeof(yyloc));
1180264790Sbapt#if YYBTYACC
1181264790Sbapt    if (!yytrial)
1182264790Sbapt#endif /* YYBTYACC */
1183264790Sbapt    {
1184264790Sbapt        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1185264790Sbapt        /* just in case YYERROR is invoked within the action, save
1186264790Sbapt           the start of the rhs as the error start position */
1187264790Sbapt        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1188264790Sbapt    }
1189264790Sbapt#endif
1190264790Sbapt
1191264790Sbapt    switch (yyn)
1192264790Sbapt    {
1193264790Sbaptcase 3:
1194264790Sbapt#line 35 "quote_calc3.y"
1195264790Sbapt	{  yyerrok ; }
1196264790Sbaptbreak;
1197264790Sbaptcase 4:
1198264790Sbapt#line 39 "quote_calc3.y"
1199264790Sbapt	{  printf("%d\n",yystack.l_mark[0]);}
1200264790Sbaptbreak;
1201264790Sbaptcase 5:
1202264790Sbapt#line 41 "quote_calc3.y"
1203264790Sbapt	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
1204264790Sbaptbreak;
1205264790Sbaptcase 6:
1206264790Sbapt#line 45 "quote_calc3.y"
1207264790Sbapt	{  yyval = yystack.l_mark[-1]; }
1208264790Sbaptbreak;
1209264790Sbaptcase 7:
1210264790Sbapt#line 47 "quote_calc3.y"
1211264790Sbapt	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
1212264790Sbaptbreak;
1213264790Sbaptcase 8:
1214264790Sbapt#line 49 "quote_calc3.y"
1215264790Sbapt	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
1216264790Sbaptbreak;
1217264790Sbaptcase 9:
1218264790Sbapt#line 51 "quote_calc3.y"
1219264790Sbapt	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
1220264790Sbaptbreak;
1221264790Sbaptcase 10:
1222264790Sbapt#line 53 "quote_calc3.y"
1223264790Sbapt	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
1224264790Sbaptbreak;
1225264790Sbaptcase 11:
1226264790Sbapt#line 55 "quote_calc3.y"
1227264790Sbapt	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
1228264790Sbaptbreak;
1229264790Sbaptcase 12:
1230264790Sbapt#line 57 "quote_calc3.y"
1231264790Sbapt	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
1232264790Sbaptbreak;
1233264790Sbaptcase 13:
1234264790Sbapt#line 59 "quote_calc3.y"
1235264790Sbapt	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
1236264790Sbaptbreak;
1237264790Sbaptcase 14:
1238264790Sbapt#line 61 "quote_calc3.y"
1239264790Sbapt	{  yyval = - yystack.l_mark[0]; }
1240264790Sbaptbreak;
1241264790Sbaptcase 15:
1242264790Sbapt#line 63 "quote_calc3.y"
1243264790Sbapt	{  yyval = regs[yystack.l_mark[0]]; }
1244264790Sbaptbreak;
1245264790Sbaptcase 17:
1246264790Sbapt#line 68 "quote_calc3.y"
1247264790Sbapt	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
1248264790Sbaptbreak;
1249264790Sbaptcase 18:
1250264790Sbapt#line 70 "quote_calc3.y"
1251264790Sbapt	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
1252264790Sbaptbreak;
1253319297Sdelphij#line 1254 "quote_calc3-s.tab.c"
1254264790Sbapt    default:
1255264790Sbapt        break;
1256264790Sbapt    }
1257264790Sbapt    yystack.s_mark -= yym;
1258264790Sbapt    yystate = *yystack.s_mark;
1259264790Sbapt    yystack.l_mark -= yym;
1260264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1261264790Sbapt    yystack.p_mark -= yym;
1262264790Sbapt#endif
1263264790Sbapt    yym = yylhs[yyn];
1264264790Sbapt    if (yystate == 0 && yym == 0)
1265264790Sbapt    {
1266264790Sbapt#if YYDEBUG
1267264790Sbapt        if (yydebug)
1268264790Sbapt        {
1269264790Sbapt            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1270264790Sbapt#ifdef YYSTYPE_TOSTRING
1271264790Sbapt#if YYBTYACC
1272264790Sbapt            if (!yytrial)
1273264790Sbapt#endif /* YYBTYACC */
1274264790Sbapt                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1275264790Sbapt#endif
1276264790Sbapt            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1277264790Sbapt        }
1278264790Sbapt#endif
1279264790Sbapt        yystate = YYFINAL;
1280264790Sbapt        *++yystack.s_mark = YYFINAL;
1281264790Sbapt        *++yystack.l_mark = yyval;
1282264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1283264790Sbapt        *++yystack.p_mark = yyloc;
1284264790Sbapt#endif
1285264790Sbapt        if (yychar < 0)
1286264790Sbapt        {
1287264790Sbapt#if YYBTYACC
1288264790Sbapt            do {
1289264790Sbapt            if (yylvp < yylve)
1290264790Sbapt            {
1291264790Sbapt                /* we're currently re-reading tokens */
1292264790Sbapt                yylval = *yylvp++;
1293264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1294264790Sbapt                yylloc = *yylpp++;
1295264790Sbapt#endif
1296264790Sbapt                yychar = *yylexp++;
1297264790Sbapt                break;
1298264790Sbapt            }
1299264790Sbapt            if (yyps->save)
1300264790Sbapt            {
1301264790Sbapt                /* in trial mode; save scanner results for future parse attempts */
1302264790Sbapt                if (yylvp == yylvlim)
1303264790Sbapt                {   /* Enlarge lexical value queue */
1304272655Sbapt                    size_t p = (size_t) (yylvp - yylvals);
1305272655Sbapt                    size_t s = (size_t) (yylvlim - yylvals);
1306264790Sbapt
1307264790Sbapt                    s += YYLVQUEUEGROWTH;
1308319297Sdelphij                    if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1309264790Sbapt                        goto yyenomem;
1310319297Sdelphij                    if ((yylvals   = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1311264790Sbapt                        goto yyenomem;
1312264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1313319297Sdelphij                    if ((yylpsns   = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1314264790Sbapt                        goto yyenomem;
1315264790Sbapt#endif
1316264790Sbapt                    yylvp   = yylve = yylvals + p;
1317264790Sbapt                    yylvlim = yylvals + s;
1318264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1319264790Sbapt                    yylpp   = yylpe = yylpsns + p;
1320264790Sbapt                    yylplim = yylpsns + s;
1321264790Sbapt#endif
1322264790Sbapt                    yylexp  = yylexemes + p;
1323264790Sbapt                }
1324319297Sdelphij                *yylexp = (YYINT) YYLEX;
1325264790Sbapt                *yylvp++ = yylval;
1326264790Sbapt                yylve++;
1327264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1328264790Sbapt                *yylpp++ = yylloc;
1329264790Sbapt                yylpe++;
1330264790Sbapt#endif
1331264790Sbapt                yychar = *yylexp++;
1332264790Sbapt                break;
1333264790Sbapt            }
1334264790Sbapt            /* normal operation, no conflict encountered */
1335264790Sbapt#endif /* YYBTYACC */
1336264790Sbapt            yychar = YYLEX;
1337264790Sbapt#if YYBTYACC
1338264790Sbapt            } while (0);
1339264790Sbapt#endif /* YYBTYACC */
1340264790Sbapt            if (yychar < 0) yychar = YYEOF;
1341264790Sbapt#if YYDEBUG
1342264790Sbapt            if (yydebug)
1343264790Sbapt            {
1344319297Sdelphij                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1345319297Sdelphij                fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1346264790Sbapt                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1347264790Sbapt            }
1348264790Sbapt#endif
1349264790Sbapt        }
1350264790Sbapt        if (yychar == YYEOF) goto yyaccept;
1351264790Sbapt        goto yyloop;
1352264790Sbapt    }
1353264790Sbapt    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1354264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1355264790Sbapt        yystate = yytable[yyn];
1356264790Sbapt    else
1357264790Sbapt        yystate = yydgoto[yym];
1358264790Sbapt#if YYDEBUG
1359264790Sbapt    if (yydebug)
1360264790Sbapt    {
1361264790Sbapt        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1362264790Sbapt#ifdef YYSTYPE_TOSTRING
1363264790Sbapt#if YYBTYACC
1364264790Sbapt        if (!yytrial)
1365264790Sbapt#endif /* YYBTYACC */
1366264790Sbapt            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1367264790Sbapt#endif
1368264790Sbapt        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1369264790Sbapt    }
1370264790Sbapt#endif
1371264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1372319297Sdelphij    *++yystack.s_mark = (YYINT) yystate;
1373264790Sbapt    *++yystack.l_mark = yyval;
1374264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1375264790Sbapt    *++yystack.p_mark = yyloc;
1376264790Sbapt#endif
1377264790Sbapt    goto yyloop;
1378264790Sbapt#if YYBTYACC
1379264790Sbapt
1380264790Sbapt    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1381264790Sbaptyyvalid:
1382264790Sbapt    if (yypath) YYABORT;
1383264790Sbapt    while (yyps->save)
1384264790Sbapt    {
1385264790Sbapt        YYParseState *save = yyps->save;
1386264790Sbapt        yyps->save = save->save;
1387264790Sbapt        save->save = yypath;
1388264790Sbapt        yypath = save;
1389264790Sbapt    }
1390264790Sbapt#if YYDEBUG
1391264790Sbapt    if (yydebug)
1392264790Sbapt        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1393264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1394264790Sbapt#endif
1395264790Sbapt    if (yyerrctx)
1396264790Sbapt    {
1397264790Sbapt        yyFreeState(yyerrctx);
1398264790Sbapt        yyerrctx = NULL;
1399264790Sbapt    }
1400264790Sbapt    yylvp          = yylvals + yypath->lexeme;
1401264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1402264790Sbapt    yylpp          = yylpsns + yypath->lexeme;
1403264790Sbapt#endif
1404264790Sbapt    yylexp         = yylexemes + yypath->lexeme;
1405264790Sbapt    yychar         = YYEMPTY;
1406264790Sbapt    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1407319297Sdelphij    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1408264790Sbapt    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1409272655Sbapt    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1410264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1411264790Sbapt    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1412272655Sbapt    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1413264790Sbapt#endif
1414264790Sbapt    yystate        = yypath->state;
1415264790Sbapt    goto yyloop;
1416264790Sbapt#endif /* YYBTYACC */
1417264790Sbapt
1418264790Sbaptyyoverflow:
1419264790Sbapt    YYERROR_CALL("yacc stack overflow");
1420264790Sbapt#if YYBTYACC
1421264790Sbapt    goto yyabort_nomem;
1422264790Sbaptyyenomem:
1423264790Sbapt    YYERROR_CALL("memory exhausted");
1424264790Sbaptyyabort_nomem:
1425264790Sbapt#endif /* YYBTYACC */
1426264790Sbapt    yyresult = 2;
1427264790Sbapt    goto yyreturn;
1428264790Sbapt
1429264790Sbaptyyabort:
1430264790Sbapt    yyresult = 1;
1431264790Sbapt    goto yyreturn;
1432264790Sbapt
1433264790Sbaptyyaccept:
1434264790Sbapt#if YYBTYACC
1435264790Sbapt    if (yyps->save) goto yyvalid;
1436264790Sbapt#endif /* YYBTYACC */
1437264790Sbapt    yyresult = 0;
1438264790Sbapt
1439264790Sbaptyyreturn:
1440264790Sbapt#if defined(YYDESTRUCT_CALL)
1441264790Sbapt    if (yychar != YYEOF && yychar != YYEMPTY)
1442264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1443264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1444264790Sbapt#else
1445264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1446264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1447264790Sbapt
1448264790Sbapt    {
1449264790Sbapt        YYSTYPE *pv;
1450264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1451264790Sbapt        YYLTYPE *pp;
1452264790Sbapt
1453264790Sbapt        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1454264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1455264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1456264790Sbapt#else
1457264790Sbapt        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1458264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1459264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1460264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1461264790Sbapt    }
1462264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1463264790Sbapt
1464264790Sbapt#if YYBTYACC
1465264790Sbapt    if (yyerrctx)
1466264790Sbapt    {
1467264790Sbapt        yyFreeState(yyerrctx);
1468264790Sbapt        yyerrctx = NULL;
1469264790Sbapt    }
1470264790Sbapt    while (yyps)
1471264790Sbapt    {
1472264790Sbapt        YYParseState *save = yyps;
1473264790Sbapt        yyps = save->save;
1474264790Sbapt        save->save = NULL;
1475264790Sbapt        yyFreeState(save);
1476264790Sbapt    }
1477264790Sbapt    while (yypath)
1478264790Sbapt    {
1479264790Sbapt        YYParseState *save = yypath;
1480264790Sbapt        yypath = save->save;
1481264790Sbapt        save->save = NULL;
1482264790Sbapt        yyFreeState(save);
1483264790Sbapt    }
1484264790Sbapt#endif /* YYBTYACC */
1485264790Sbapt    yyfreestack(&yystack);
1486264790Sbapt    return (yyresult);
1487264790Sbapt}
1488