1264790Sbapt/* original parser id follows */
2264790Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3272955Srodrigc/* (use YYMAJOR/YYMINOR for ifdefs dependent of 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_calc_parse
22264790Sbapt#endif /* yyparse */
23264790Sbapt
24264790Sbapt#ifndef yylex
25264790Sbapt#define yylex      quote_calc_lex
26264790Sbapt#endif /* yylex */
27264790Sbapt
28264790Sbapt#ifndef yyerror
29264790Sbapt#define yyerror    quote_calc_error
30264790Sbapt#endif /* yyerror */
31264790Sbapt
32264790Sbapt#ifndef yychar
33264790Sbapt#define yychar     quote_calc_char
34264790Sbapt#endif /* yychar */
35264790Sbapt
36264790Sbapt#ifndef yyval
37264790Sbapt#define yyval      quote_calc_val
38264790Sbapt#endif /* yyval */
39264790Sbapt
40264790Sbapt#ifndef yylval
41264790Sbapt#define yylval     quote_calc_lval
42264790Sbapt#endif /* yylval */
43264790Sbapt
44264790Sbapt#ifndef yydebug
45264790Sbapt#define yydebug    quote_calc_debug
46264790Sbapt#endif /* yydebug */
47264790Sbapt
48264790Sbapt#ifndef yynerrs
49264790Sbapt#define yynerrs    quote_calc_nerrs
50264790Sbapt#endif /* yynerrs */
51264790Sbapt
52264790Sbapt#ifndef yyerrflag
53264790Sbapt#define yyerrflag  quote_calc_errflag
54264790Sbapt#endif /* yyerrflag */
55264790Sbapt
56264790Sbapt#ifndef yylhs
57264790Sbapt#define yylhs      quote_calc_lhs
58264790Sbapt#endif /* yylhs */
59264790Sbapt
60264790Sbapt#ifndef yylen
61264790Sbapt#define yylen      quote_calc_len
62264790Sbapt#endif /* yylen */
63264790Sbapt
64264790Sbapt#ifndef yydefred
65264790Sbapt#define yydefred   quote_calc_defred
66264790Sbapt#endif /* yydefred */
67264790Sbapt
68264790Sbapt#ifndef yystos
69264790Sbapt#define yystos     quote_calc_stos
70264790Sbapt#endif /* yystos */
71264790Sbapt
72264790Sbapt#ifndef yydgoto
73264790Sbapt#define yydgoto    quote_calc_dgoto
74264790Sbapt#endif /* yydgoto */
75264790Sbapt
76264790Sbapt#ifndef yysindex
77264790Sbapt#define yysindex   quote_calc_sindex
78264790Sbapt#endif /* yysindex */
79264790Sbapt
80264790Sbapt#ifndef yyrindex
81264790Sbapt#define yyrindex   quote_calc_rindex
82264790Sbapt#endif /* yyrindex */
83264790Sbapt
84264790Sbapt#ifndef yygindex
85264790Sbapt#define yygindex   quote_calc_gindex
86264790Sbapt#endif /* yygindex */
87264790Sbapt
88264790Sbapt#ifndef yytable
89264790Sbapt#define yytable    quote_calc_table
90264790Sbapt#endif /* yytable */
91264790Sbapt
92264790Sbapt#ifndef yycheck
93264790Sbapt#define yycheck    quote_calc_check
94264790Sbapt#endif /* yycheck */
95264790Sbapt
96264790Sbapt#ifndef yyname
97264790Sbapt#define yyname     quote_calc_name
98264790Sbapt#endif /* yyname */
99264790Sbapt
100264790Sbapt#ifndef yyrule
101264790Sbapt#define yyrule     quote_calc_rule
102264790Sbapt#endif /* yyrule */
103264790Sbapt
104264790Sbapt#if YYBTYACC
105264790Sbapt
106264790Sbapt#ifndef yycindex
107264790Sbapt#define yycindex   quote_calc_cindex
108264790Sbapt#endif /* yycindex */
109264790Sbapt
110264790Sbapt#ifndef yyctable
111264790Sbapt#define yyctable   quote_calc_ctable
112264790Sbapt#endif /* yyctable */
113264790Sbapt
114264790Sbapt#endif /* YYBTYACC */
115264790Sbapt
116264790Sbapt#define YYPREFIX "quote_calc_"
117264790Sbapt
118264790Sbapt#define YYPURE 0
119264790Sbapt
120264790Sbapt#line 2 "quote_calc.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_calc-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_calc_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_calc_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_calc_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};
194264790Sbaptstatic const YYINT quote_calc_stos[] = {                  0,
195264790Sbapt  273,  256,  259,  269,  270,   40,  274,  275,  276,   10,
196264790Sbapt  270,  275,   61,  275,   10,  257,  259,  261,  263,  265,
197264790Sbapt  267,  124,  269,  275,   41,  275,  275,  275,  275,  275,
198264790Sbapt  275,  275,
199264790Sbapt};
200264790Sbaptstatic const YYINT quote_calc_dgoto[] = {                 1,
201264790Sbapt    7,    8,    9,
202264790Sbapt};
203264790Sbaptstatic const YYINT quote_calc_sindex[] = {                0,
204264790Sbapt  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
205264790Sbapt    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
206264790Sbapt  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
207264790Sbapt -121, -243,
208264790Sbapt};
209264790Sbaptstatic const YYINT quote_calc_rindex[] = {                0,
210264790Sbapt    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
211264790Sbapt    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
212264790Sbapt    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
213264790Sbapt    3,   -4,
214264790Sbapt};
215264790Sbapt#if YYBTYACC
216264790Sbaptstatic const YYINT quote_calc_cindex[] = {                0,
217264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
218264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
219264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
220264790Sbapt    0,    0,
221264790Sbapt};
222264790Sbapt#endif
223264790Sbaptstatic const YYINT quote_calc_gindex[] = {                0,
224264790Sbapt    0,   42,    0,
225264790Sbapt};
226264790Sbapt#define YYTABLESIZE 258
227264790Sbaptstatic const YYINT quote_calc_table[] = {                16,
228264790Sbapt   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
229264790Sbapt   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
230264790Sbapt   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
231264790Sbapt   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
232264790Sbapt    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
233264790Sbapt    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
234264790Sbapt   29,   30,   31,   32,    0,    0,    0,    0,    0,    0,
235264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
236264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
237264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
238264790Sbapt    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
239264790Sbapt    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
240264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
241264790Sbapt    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
242264790Sbapt    0,   19,    0,   20,    0,   21,    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,    0,    0,    0,    0,    0,
248264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
249264790Sbapt    0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
250264790Sbapt    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
251264790Sbapt    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
252264790Sbapt   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
253264790Sbapt   16,   15,   16,   15,   16,   15,   16,   15,
254264790Sbapt};
255264790Sbaptstatic const YYINT quote_calc_check[] = {                10,
256264790Sbapt   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
257264790Sbapt   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
258264790Sbapt  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
259264790Sbapt   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
260264790Sbapt   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
261264790Sbapt   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
262264790Sbapt   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
263264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
264264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
265264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
266264790Sbapt   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
267264790Sbapt   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
268264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
269264790Sbapt   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
270264790Sbapt   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
271264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
272264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -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,  256,   -1,   -1,
278264790Sbapt  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
279264790Sbapt  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
280264790Sbapt  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
281264790Sbapt  261,  261,  263,  263,  265,  265,  267,  267,
282264790Sbapt};
283272955Srodrigc#if YYBTYACC
284272955Srodrigcstatic const YYINT quote_calc_ctable[] = {               -1,
285272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
286272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
287272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
288272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
289272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
290272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
291272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
292272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
293272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
294272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
295272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
296272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
297272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
298272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
299272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
300272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
301272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
302272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
303272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
304272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
305272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
307272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
308272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
309272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
310272955Srodrigc   -1,   -1,   -1,   -1,   -1,   -1,   -1,
311272955Srodrigc};
312272955Srodrigc#endif
313264790Sbapt#define YYFINAL 1
314264790Sbapt#ifndef YYDEBUG
315264790Sbapt#define YYDEBUG 0
316264790Sbapt#endif
317264790Sbapt#define YYMAXTOKEN 271
318264790Sbapt#define YYUNDFTOKEN 277
319264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
320264790Sbapt#if YYDEBUG
321264790Sbaptstatic const char *const quote_calc_name[] = {
322264790Sbapt
323264790Sbapt"$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,
324264790Sbapt0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
325264790Sbapt0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,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,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,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,"error","OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_DIV",
331264790Sbapt"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS",
332264790Sbapt"$accept","list","stat","expr","number","illegal-symbol",
333264790Sbapt};
334264790Sbaptstatic const char *const quote_calc_rule[] = {
335264790Sbapt"$accept : list",
336264790Sbapt"list :",
337264790Sbapt"list : list stat '\\n'",
338264790Sbapt"list : list error '\\n'",
339264790Sbapt"stat : expr",
340264790Sbapt"stat : LETTER '=' expr",
341264790Sbapt"expr : '(' expr ')'",
342264790Sbapt"expr : expr OP_ADD expr",
343264790Sbapt"expr : expr OP_SUB expr",
344264790Sbapt"expr : expr OP_MUL expr",
345264790Sbapt"expr : expr OP_DIV expr",
346264790Sbapt"expr : expr OP_MOD expr",
347264790Sbapt"expr : expr OP_AND expr",
348264790Sbapt"expr : expr '|' expr",
349264790Sbapt"expr : OP_SUB expr",
350264790Sbapt"expr : LETTER",
351264790Sbapt"expr : number",
352264790Sbapt"number : DIGIT",
353264790Sbapt"number : number DIGIT",
354264790Sbapt
355264790Sbapt};
356264790Sbapt#endif
357264790Sbapt
358264790Sbaptint      yydebug;
359264790Sbaptint      yynerrs;
360264790Sbapt
361264790Sbaptint      yyerrflag;
362264790Sbaptint      yychar;
363264790SbaptYYSTYPE  yyval;
364264790SbaptYYSTYPE  yylval;
365264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
366264790SbaptYYLTYPE  yyloc; /* position returned by actions */
367264790SbaptYYLTYPE  yylloc; /* position from the lexer */
368264790Sbapt#endif
369264790Sbapt
370264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
371264790Sbapt#ifndef YYLLOC_DEFAULT
372264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \
373264790Sbaptdo \
374264790Sbapt{ \
375264790Sbapt    if (n == 0) \
376264790Sbapt    { \
377264790Sbapt        (loc).first_line   = ((rhs)[-1]).last_line; \
378264790Sbapt        (loc).first_column = ((rhs)[-1]).last_column; \
379264790Sbapt        (loc).last_line    = ((rhs)[-1]).last_line; \
380264790Sbapt        (loc).last_column  = ((rhs)[-1]).last_column; \
381264790Sbapt    } \
382264790Sbapt    else \
383264790Sbapt    { \
384264790Sbapt        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
385264790Sbapt        (loc).first_column = ((rhs)[ 0 ]).first_column; \
386264790Sbapt        (loc).last_line    = ((rhs)[n-1]).last_line; \
387264790Sbapt        (loc).last_column  = ((rhs)[n-1]).last_column; \
388264790Sbapt    } \
389264790Sbapt} while (0)
390264790Sbapt#endif /* YYLLOC_DEFAULT */
391264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
392264790Sbapt#if YYBTYACC
393264790Sbapt
394264790Sbapt#ifndef YYLVQUEUEGROWTH
395264790Sbapt#define YYLVQUEUEGROWTH 32
396264790Sbapt#endif
397264790Sbapt#endif /* YYBTYACC */
398264790Sbapt
399264790Sbapt/* define the initial stack-sizes */
400264790Sbapt#ifdef YYSTACKSIZE
401264790Sbapt#undef YYMAXDEPTH
402264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
403264790Sbapt#else
404264790Sbapt#ifdef YYMAXDEPTH
405264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
406264790Sbapt#else
407264790Sbapt#define YYSTACKSIZE 10000
408264790Sbapt#define YYMAXDEPTH  10000
409264790Sbapt#endif
410264790Sbapt#endif
411264790Sbapt
412264790Sbapt#ifndef YYINITSTACKSIZE
413264790Sbapt#define YYINITSTACKSIZE 200
414264790Sbapt#endif
415264790Sbapt
416264790Sbapttypedef struct {
417264790Sbapt    unsigned stacksize;
418264790Sbapt    short    *s_base;
419264790Sbapt    short    *s_mark;
420264790Sbapt    short    *s_last;
421264790Sbapt    YYSTYPE  *l_base;
422264790Sbapt    YYSTYPE  *l_mark;
423264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
424264790Sbapt    YYLTYPE  *p_base;
425264790Sbapt    YYLTYPE  *p_mark;
426264790Sbapt#endif
427264790Sbapt} YYSTACKDATA;
428264790Sbapt#if YYBTYACC
429264790Sbapt
430264790Sbaptstruct YYParseState_s
431264790Sbapt{
432264790Sbapt    struct YYParseState_s *save;    /* Previously saved parser state */
433264790Sbapt    YYSTACKDATA            yystack; /* saved parser stack */
434264790Sbapt    int                    state;   /* saved parser state */
435264790Sbapt    int                    errflag; /* saved error recovery status */
436264790Sbapt    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
437264790Sbapt    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
438264790Sbapt};
439264790Sbapttypedef struct YYParseState_s YYParseState;
440264790Sbapt#endif /* YYBTYACC */
441264790Sbapt/* variables for the parser stack */
442264790Sbaptstatic YYSTACKDATA yystack;
443264790Sbapt#if YYBTYACC
444264790Sbapt
445264790Sbapt/* Current parser state */
446264790Sbaptstatic YYParseState *yyps = 0;
447264790Sbapt
448264790Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */
449264790Sbaptstatic YYParseState *yypath = 0;
450264790Sbapt
451264790Sbapt/* Base of the lexical value queue */
452264790Sbaptstatic YYSTYPE *yylvals = 0;
453264790Sbapt
454264790Sbapt/* Current position at lexical value queue */
455264790Sbaptstatic YYSTYPE *yylvp = 0;
456264790Sbapt
457264790Sbapt/* End position of lexical value queue */
458264790Sbaptstatic YYSTYPE *yylve = 0;
459264790Sbapt
460264790Sbapt/* The last allocated position at the lexical value queue */
461264790Sbaptstatic YYSTYPE *yylvlim = 0;
462264790Sbapt
463264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
464264790Sbapt/* Base of the lexical position queue */
465264790Sbaptstatic YYLTYPE *yylpsns = 0;
466264790Sbapt
467264790Sbapt/* Current position at lexical position queue */
468264790Sbaptstatic YYLTYPE *yylpp = 0;
469264790Sbapt
470264790Sbapt/* End position of lexical position queue */
471264790Sbaptstatic YYLTYPE *yylpe = 0;
472264790Sbapt
473264790Sbapt/* The last allocated position at the lexical position queue */
474264790Sbaptstatic YYLTYPE *yylplim = 0;
475264790Sbapt#endif
476264790Sbapt
477264790Sbapt/* Current position at lexical token queue */
478264790Sbaptstatic short  *yylexp = 0;
479264790Sbapt
480264790Sbaptstatic short  *yylexemes = 0;
481264790Sbapt#endif /* YYBTYACC */
482264790Sbapt#line 73 "quote_calc.y"
483264790Sbapt /* start of programs */
484264790Sbapt
485264790Sbaptint
486264790Sbaptmain (void)
487264790Sbapt{
488264790Sbapt    while(!feof(stdin)) {
489264790Sbapt	yyparse();
490264790Sbapt    }
491264790Sbapt    return 0;
492264790Sbapt}
493264790Sbapt
494264790Sbaptstatic void
495264790Sbaptyyerror(const char *s)
496264790Sbapt{
497264790Sbapt    fprintf(stderr, "%s\n", s);
498264790Sbapt}
499264790Sbapt
500264790Sbaptint
501264790Sbaptyylex(void) {
502264790Sbapt	/* lexical analysis routine */
503264790Sbapt	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
504264790Sbapt	/* return DIGIT for a digit, yylval = 0 through 9 */
505264790Sbapt	/* all other characters are returned immediately */
506264790Sbapt
507264790Sbapt    int c;
508264790Sbapt
509264790Sbapt    while( (c=getchar()) == ' ' )   { /* skip blanks */ }
510264790Sbapt
511264790Sbapt    /* c is now nonblank */
512264790Sbapt
513264790Sbapt    if( islower( c )) {
514264790Sbapt	yylval = c - 'a';
515264790Sbapt	return ( LETTER );
516264790Sbapt    }
517264790Sbapt    if( isdigit( c )) {
518264790Sbapt	yylval = c - '0';
519264790Sbapt	return ( DIGIT );
520264790Sbapt    }
521264790Sbapt    return( c );
522264790Sbapt}
523272955Srodrigc#line 524 "quote_calc-s.tab.c"
524264790Sbapt
525264790Sbapt/* For use in generated program */
526264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base)
527264790Sbapt#if YYBTYACC
528264790Sbapt#define yytrial (yyps->save)
529264790Sbapt#endif /* YYBTYACC */
530264790Sbapt
531264790Sbapt#if YYDEBUG
532272955Srodrigc#include <stdio.h>         /* needed for printf */
533264790Sbapt#endif
534264790Sbapt
535272955Srodrigc#include <stdlib.h>        /* needed for malloc, etc */
536272955Srodrigc#include <string.h>        /* needed for memset */
537264790Sbapt
538264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
539264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
540264790Sbapt{
541264790Sbapt    int i;
542264790Sbapt    unsigned newsize;
543264790Sbapt    short *newss;
544264790Sbapt    YYSTYPE *newvs;
545264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
546264790Sbapt    YYLTYPE *newps;
547264790Sbapt#endif
548264790Sbapt
549264790Sbapt    if ((newsize = data->stacksize) == 0)
550264790Sbapt        newsize = YYINITSTACKSIZE;
551264790Sbapt    else if (newsize >= YYMAXDEPTH)
552264790Sbapt        return YYENOMEM;
553264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
554264790Sbapt        newsize = YYMAXDEPTH;
555264790Sbapt
556264790Sbapt    i = (int) (data->s_mark - data->s_base);
557264790Sbapt    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
558264790Sbapt    if (newss == 0)
559264790Sbapt        return YYENOMEM;
560264790Sbapt
561264790Sbapt    data->s_base = newss;
562264790Sbapt    data->s_mark = newss + i;
563264790Sbapt
564264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
565264790Sbapt    if (newvs == 0)
566264790Sbapt        return YYENOMEM;
567264790Sbapt
568264790Sbapt    data->l_base = newvs;
569264790Sbapt    data->l_mark = newvs + i;
570264790Sbapt
571264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
572264790Sbapt    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
573264790Sbapt    if (newps == 0)
574264790Sbapt        return YYENOMEM;
575264790Sbapt
576264790Sbapt    data->p_base = newps;
577264790Sbapt    data->p_mark = newps + i;
578264790Sbapt#endif
579264790Sbapt
580264790Sbapt    data->stacksize = newsize;
581264790Sbapt    data->s_last = data->s_base + newsize - 1;
582264790Sbapt
583264790Sbapt#if YYDEBUG
584264790Sbapt    if (yydebug)
585264790Sbapt        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
586264790Sbapt#endif
587264790Sbapt    return 0;
588264790Sbapt}
589264790Sbapt
590264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
591264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
592264790Sbapt{
593264790Sbapt    free(data->s_base);
594264790Sbapt    free(data->l_base);
595264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
596264790Sbapt    free(data->p_base);
597264790Sbapt#endif
598264790Sbapt    memset(data, 0, sizeof(*data));
599264790Sbapt}
600264790Sbapt#else
601264790Sbapt#define yyfreestack(data) /* nothing */
602264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */
603264790Sbapt#if YYBTYACC
604264790Sbapt
605264790Sbaptstatic YYParseState *
606264790SbaptyyNewState(unsigned size)
607264790Sbapt{
608264790Sbapt    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
609264790Sbapt    if (p == NULL) return NULL;
610264790Sbapt
611264790Sbapt    p->yystack.stacksize = size;
612264790Sbapt    if (size == 0)
613264790Sbapt    {
614264790Sbapt        p->yystack.s_base = NULL;
615264790Sbapt        p->yystack.l_base = NULL;
616264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
617264790Sbapt        p->yystack.p_base = NULL;
618264790Sbapt#endif
619264790Sbapt        return p;
620264790Sbapt    }
621264790Sbapt    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
622264790Sbapt    if (p->yystack.s_base == NULL) return NULL;
623264790Sbapt    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
624264790Sbapt    if (p->yystack.l_base == NULL) return NULL;
625264790Sbapt    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
626264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
627264790Sbapt    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
628264790Sbapt    if (p->yystack.p_base == NULL) return NULL;
629264790Sbapt    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
630264790Sbapt#endif
631264790Sbapt
632264790Sbapt    return p;
633264790Sbapt}
634264790Sbapt
635264790Sbaptstatic void
636264790SbaptyyFreeState(YYParseState *p)
637264790Sbapt{
638264790Sbapt    yyfreestack(&p->yystack);
639264790Sbapt    free(p);
640264790Sbapt}
641264790Sbapt#endif /* YYBTYACC */
642264790Sbapt
643264790Sbapt#define YYABORT  goto yyabort
644264790Sbapt#define YYREJECT goto yyabort
645264790Sbapt#define YYACCEPT goto yyaccept
646264790Sbapt#define YYERROR  goto yyerrlab
647264790Sbapt#if YYBTYACC
648264790Sbapt#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
649264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \
650264790Sbapt                                yyps->save->save == 0) goto yyvalid; } while(0)
651264790Sbapt#endif /* YYBTYACC */
652264790Sbapt
653264790Sbaptint
654264790SbaptYYPARSE_DECL()
655264790Sbapt{
656264790Sbapt    int yym, yyn, yystate, yyresult;
657264790Sbapt#if YYBTYACC
658264790Sbapt    int yynewerrflag;
659264790Sbapt    YYParseState *yyerrctx = NULL;
660264790Sbapt#endif /* YYBTYACC */
661264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
662264790Sbapt    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
663264790Sbapt#endif
664264790Sbapt#if YYDEBUG
665264790Sbapt    const char *yys;
666264790Sbapt
667264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
668264790Sbapt    {
669264790Sbapt        yyn = *yys;
670264790Sbapt        if (yyn >= '0' && yyn <= '9')
671264790Sbapt            yydebug = yyn - '0';
672264790Sbapt    }
673264790Sbapt    if (yydebug)
674264790Sbapt        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
675264790Sbapt#endif
676264790Sbapt
677264790Sbapt#if YYBTYACC
678264790Sbapt    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
679264790Sbapt    yyps->save = 0;
680264790Sbapt#endif /* YYBTYACC */
681264790Sbapt    yynerrs = 0;
682264790Sbapt    yyerrflag = 0;
683264790Sbapt    yychar = YYEMPTY;
684264790Sbapt    yystate = 0;
685264790Sbapt
686264790Sbapt#if YYPURE
687264790Sbapt    memset(&yystack, 0, sizeof(yystack));
688264790Sbapt#endif
689264790Sbapt
690264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
691264790Sbapt    yystack.s_mark = yystack.s_base;
692264790Sbapt    yystack.l_mark = yystack.l_base;
693264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
694264790Sbapt    yystack.p_mark = yystack.p_base;
695264790Sbapt#endif
696264790Sbapt    yystate = 0;
697264790Sbapt    *yystack.s_mark = 0;
698264790Sbapt
699264790Sbaptyyloop:
700264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
701264790Sbapt    if (yychar < 0)
702264790Sbapt    {
703264790Sbapt#if YYBTYACC
704264790Sbapt        do {
705264790Sbapt        if (yylvp < yylve)
706264790Sbapt        {
707264790Sbapt            /* we're currently re-reading tokens */
708264790Sbapt            yylval = *yylvp++;
709264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
710264790Sbapt            yylloc = *yylpp++;
711264790Sbapt#endif
712264790Sbapt            yychar = *yylexp++;
713264790Sbapt            break;
714264790Sbapt        }
715264790Sbapt        if (yyps->save)
716264790Sbapt        {
717264790Sbapt            /* in trial mode; save scanner results for future parse attempts */
718264790Sbapt            if (yylvp == yylvlim)
719264790Sbapt            {   /* Enlarge lexical value queue */
720272955Srodrigc                size_t p = (size_t) (yylvp - yylvals);
721272955Srodrigc                size_t s = (size_t) (yylvlim - yylvals);
722264790Sbapt
723264790Sbapt                s += YYLVQUEUEGROWTH;
724264790Sbapt                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
725264790Sbapt                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
726264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
727264790Sbapt                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
728264790Sbapt#endif
729264790Sbapt                yylvp   = yylve = yylvals + p;
730264790Sbapt                yylvlim = yylvals + s;
731264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
732264790Sbapt                yylpp   = yylpe = yylpsns + p;
733264790Sbapt                yylplim = yylpsns + s;
734264790Sbapt#endif
735264790Sbapt                yylexp  = yylexemes + p;
736264790Sbapt            }
737264790Sbapt            *yylexp = (short) YYLEX;
738264790Sbapt            *yylvp++ = yylval;
739264790Sbapt            yylve++;
740264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
741264790Sbapt            *yylpp++ = yylloc;
742264790Sbapt            yylpe++;
743264790Sbapt#endif
744264790Sbapt            yychar = *yylexp++;
745264790Sbapt            break;
746264790Sbapt        }
747264790Sbapt        /* normal operation, no conflict encountered */
748264790Sbapt#endif /* YYBTYACC */
749264790Sbapt        yychar = YYLEX;
750264790Sbapt#if YYBTYACC
751264790Sbapt        } while (0);
752264790Sbapt#endif /* YYBTYACC */
753264790Sbapt        if (yychar < 0) yychar = YYEOF;
754264790Sbapt        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
755264790Sbapt#if YYDEBUG
756264790Sbapt        if (yydebug)
757264790Sbapt        {
758264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
759264790Sbapt            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
760264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
761264790Sbapt#ifdef YYSTYPE_TOSTRING
762264790Sbapt#if YYBTYACC
763264790Sbapt            if (!yytrial)
764264790Sbapt#endif /* YYBTYACC */
765264790Sbapt                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
766264790Sbapt#endif
767264790Sbapt            fputc('\n', stderr);
768264790Sbapt        }
769264790Sbapt#endif
770264790Sbapt    }
771264790Sbapt#if YYBTYACC
772264790Sbapt
773264790Sbapt    /* Do we have a conflict? */
774264790Sbapt    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
775264790Sbapt        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
776264790Sbapt    {
777264790Sbapt        YYINT ctry;
778264790Sbapt
779264790Sbapt        if (yypath)
780264790Sbapt        {
781264790Sbapt            YYParseState *save;
782264790Sbapt#if YYDEBUG
783264790Sbapt            if (yydebug)
784264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
785264790Sbapt                                YYDEBUGSTR, yydepth, yystate);
786264790Sbapt#endif
787264790Sbapt            /* Switch to the next conflict context */
788264790Sbapt            save = yypath;
789264790Sbapt            yypath = save->save;
790264790Sbapt            save->save = NULL;
791264790Sbapt            ctry = save->ctry;
792264790Sbapt            if (save->state != yystate) YYABORT;
793264790Sbapt            yyFreeState(save);
794264790Sbapt
795264790Sbapt        }
796264790Sbapt        else
797264790Sbapt        {
798264790Sbapt
799264790Sbapt            /* Unresolved conflict - start/continue trial parse */
800264790Sbapt            YYParseState *save;
801264790Sbapt#if YYDEBUG
802264790Sbapt            if (yydebug)
803264790Sbapt            {
804264790Sbapt                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
805264790Sbapt                if (yyps->save)
806264790Sbapt                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
807264790Sbapt                else
808264790Sbapt                    fputs("Starting trial parse.\n", stderr);
809264790Sbapt            }
810264790Sbapt#endif
811264790Sbapt            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
812264790Sbapt            if (save == NULL) goto yyenomem;
813264790Sbapt            save->save            = yyps->save;
814264790Sbapt            save->state           = yystate;
815264790Sbapt            save->errflag         = yyerrflag;
816264790Sbapt            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
817272955Srodrigc            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
818264790Sbapt            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
819272955Srodrigc            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
820264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
821264790Sbapt            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
822272955Srodrigc            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
823264790Sbapt#endif
824264790Sbapt            ctry                  = yytable[yyn];
825264790Sbapt            if (yyctable[ctry] == -1)
826264790Sbapt            {
827264790Sbapt#if YYDEBUG
828264790Sbapt                if (yydebug && yychar >= YYEOF)
829264790Sbapt                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
830264790Sbapt#endif
831264790Sbapt                ctry++;
832264790Sbapt            }
833264790Sbapt            save->ctry = ctry;
834264790Sbapt            if (yyps->save == NULL)
835264790Sbapt            {
836264790Sbapt                /* If this is a first conflict in the stack, start saving lexemes */
837264790Sbapt                if (!yylexemes)
838264790Sbapt                {
839264790Sbapt                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
840264790Sbapt                    if (yylexemes == NULL) goto yyenomem;
841264790Sbapt                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
842264790Sbapt                    if (yylvals == NULL) goto yyenomem;
843264790Sbapt                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
844264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
845264790Sbapt                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
846264790Sbapt                    if (yylpsns == NULL) goto yyenomem;
847264790Sbapt                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
848264790Sbapt#endif
849264790Sbapt                }
850264790Sbapt                if (yylvp == yylve)
851264790Sbapt                {
852264790Sbapt                    yylvp  = yylve = yylvals;
853264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
854264790Sbapt                    yylpp  = yylpe = yylpsns;
855264790Sbapt#endif
856264790Sbapt                    yylexp = yylexemes;
857264790Sbapt                    if (yychar >= YYEOF)
858264790Sbapt                    {
859264790Sbapt                        *yylve++ = yylval;
860264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
861264790Sbapt                        *yylpe++ = yylloc;
862264790Sbapt#endif
863264790Sbapt                        *yylexp  = (short) yychar;
864264790Sbapt                        yychar   = YYEMPTY;
865264790Sbapt                    }
866264790Sbapt                }
867264790Sbapt            }
868264790Sbapt            if (yychar >= YYEOF)
869264790Sbapt            {
870264790Sbapt                yylvp--;
871264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
872264790Sbapt                yylpp--;
873264790Sbapt#endif
874264790Sbapt                yylexp--;
875264790Sbapt                yychar = YYEMPTY;
876264790Sbapt            }
877272955Srodrigc            save->lexeme = (int) (yylvp - yylvals);
878264790Sbapt            yyps->save   = save;
879264790Sbapt        }
880264790Sbapt        if (yytable[yyn] == ctry)
881264790Sbapt        {
882264790Sbapt#if YYDEBUG
883264790Sbapt            if (yydebug)
884264790Sbapt                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
885264790Sbapt                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
886264790Sbapt#endif
887264790Sbapt            if (yychar < 0)
888264790Sbapt            {
889264790Sbapt                yylvp++;
890264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
891264790Sbapt                yylpp++;
892264790Sbapt#endif
893264790Sbapt                yylexp++;
894264790Sbapt            }
895264790Sbapt            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
896264790Sbapt                goto yyoverflow;
897264790Sbapt            yystate = yyctable[ctry];
898264790Sbapt            *++yystack.s_mark = (short) yystate;
899264790Sbapt            *++yystack.l_mark = yylval;
900264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
901264790Sbapt            *++yystack.p_mark = yylloc;
902264790Sbapt#endif
903264790Sbapt            yychar  = YYEMPTY;
904264790Sbapt            if (yyerrflag > 0) --yyerrflag;
905264790Sbapt            goto yyloop;
906264790Sbapt        }
907264790Sbapt        else
908264790Sbapt        {
909264790Sbapt            yyn = yyctable[ctry];
910264790Sbapt            goto yyreduce;
911264790Sbapt        }
912264790Sbapt    } /* End of code dealing with conflicts */
913264790Sbapt#endif /* YYBTYACC */
914264790Sbapt    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
915264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
916264790Sbapt    {
917264790Sbapt#if YYDEBUG
918264790Sbapt        if (yydebug)
919264790Sbapt            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
920264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
921264790Sbapt#endif
922264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
923264790Sbapt        yystate = yytable[yyn];
924264790Sbapt        *++yystack.s_mark = yytable[yyn];
925264790Sbapt        *++yystack.l_mark = yylval;
926264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
927264790Sbapt        *++yystack.p_mark = yylloc;
928264790Sbapt#endif
929264790Sbapt        yychar = YYEMPTY;
930264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
931264790Sbapt        goto yyloop;
932264790Sbapt    }
933264790Sbapt    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
934264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
935264790Sbapt    {
936264790Sbapt        yyn = yytable[yyn];
937264790Sbapt        goto yyreduce;
938264790Sbapt    }
939264790Sbapt    if (yyerrflag != 0) goto yyinrecovery;
940264790Sbapt#if YYBTYACC
941264790Sbapt
942264790Sbapt    yynewerrflag = 1;
943264790Sbapt    goto yyerrhandler;
944264790Sbapt    goto yyerrlab;
945264790Sbapt
946264790Sbaptyyerrlab:
947264790Sbapt    yynewerrflag = 0;
948264790Sbaptyyerrhandler:
949264790Sbapt    while (yyps->save)
950264790Sbapt    {
951264790Sbapt        int ctry;
952264790Sbapt        YYParseState *save = yyps->save;
953264790Sbapt#if YYDEBUG
954264790Sbapt        if (yydebug)
955264790Sbapt            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
956264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
957264790Sbapt                    (int)(yylvp - yylvals - yyps->save->lexeme));
958264790Sbapt#endif
959264790Sbapt        /* Memorize most forward-looking error state in case it's really an error. */
960264790Sbapt        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
961264790Sbapt        {
962264790Sbapt            /* Free old saved error context state */
963264790Sbapt            if (yyerrctx) yyFreeState(yyerrctx);
964264790Sbapt            /* Create and fill out new saved error context state */
965264790Sbapt            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
966264790Sbapt            if (yyerrctx == NULL) goto yyenomem;
967264790Sbapt            yyerrctx->save           = yyps->save;
968264790Sbapt            yyerrctx->state          = yystate;
969264790Sbapt            yyerrctx->errflag        = yyerrflag;
970264790Sbapt            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
971272955Srodrigc            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
972264790Sbapt            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
973272955Srodrigc            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
974264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
975264790Sbapt            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
976272955Srodrigc            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
977264790Sbapt#endif
978272955Srodrigc            yyerrctx->lexeme         = (int) (yylvp - yylvals);
979264790Sbapt        }
980264790Sbapt        yylvp          = yylvals   + save->lexeme;
981264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
982264790Sbapt        yylpp          = yylpsns   + save->lexeme;
983264790Sbapt#endif
984264790Sbapt        yylexp         = yylexemes + save->lexeme;
985264790Sbapt        yychar         = YYEMPTY;
986264790Sbapt        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
987272955Srodrigc        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
988264790Sbapt        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
989272955Srodrigc        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
990264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
991264790Sbapt        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
992272955Srodrigc        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
993264790Sbapt#endif
994264790Sbapt        ctry           = ++save->ctry;
995264790Sbapt        yystate        = save->state;
996264790Sbapt        /* We tried shift, try reduce now */
997264790Sbapt        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
998264790Sbapt        yyps->save     = save->save;
999264790Sbapt        save->save     = NULL;
1000264790Sbapt        yyFreeState(save);
1001264790Sbapt
1002264790Sbapt        /* Nothing left on the stack -- error */
1003264790Sbapt        if (!yyps->save)
1004264790Sbapt        {
1005264790Sbapt#if YYDEBUG
1006264790Sbapt            if (yydebug)
1007264790Sbapt                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1008264790Sbapt                                YYPREFIX, yydepth);
1009264790Sbapt#endif
1010264790Sbapt            /* Restore state as it was in the most forward-advanced error */
1011264790Sbapt            yylvp          = yylvals   + yyerrctx->lexeme;
1012264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1013264790Sbapt            yylpp          = yylpsns   + yyerrctx->lexeme;
1014264790Sbapt#endif
1015264790Sbapt            yylexp         = yylexemes + yyerrctx->lexeme;
1016264790Sbapt            yychar         = yylexp[-1];
1017264790Sbapt            yylval         = yylvp[-1];
1018264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1019264790Sbapt            yylloc         = yylpp[-1];
1020264790Sbapt#endif
1021264790Sbapt            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1022272955Srodrigc            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1023264790Sbapt            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1024272955Srodrigc            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1025264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1026264790Sbapt            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1027272955Srodrigc            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1028264790Sbapt#endif
1029264790Sbapt            yystate        = yyerrctx->state;
1030264790Sbapt            yyFreeState(yyerrctx);
1031264790Sbapt            yyerrctx       = NULL;
1032264790Sbapt        }
1033264790Sbapt        yynewerrflag = 1;
1034264790Sbapt    }
1035264790Sbapt    if (yynewerrflag == 0) goto yyinrecovery;
1036264790Sbapt#endif /* YYBTYACC */
1037264790Sbapt
1038264790Sbapt    YYERROR_CALL("syntax error");
1039264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1040264790Sbapt    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1041264790Sbapt#endif
1042264790Sbapt
1043264790Sbapt#if !YYBTYACC
1044264790Sbapt    goto yyerrlab;
1045264790Sbaptyyerrlab:
1046264790Sbapt#endif
1047264790Sbapt    ++yynerrs;
1048264790Sbapt
1049264790Sbaptyyinrecovery:
1050264790Sbapt    if (yyerrflag < 3)
1051264790Sbapt    {
1052264790Sbapt        yyerrflag = 3;
1053264790Sbapt        for (;;)
1054264790Sbapt        {
1055264790Sbapt            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1056264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1057264790Sbapt            {
1058264790Sbapt#if YYDEBUG
1059264790Sbapt                if (yydebug)
1060264790Sbapt                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1061264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1062264790Sbapt#endif
1063264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1064264790Sbapt                yystate = yytable[yyn];
1065264790Sbapt                *++yystack.s_mark = yytable[yyn];
1066264790Sbapt                *++yystack.l_mark = yylval;
1067264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1068264790Sbapt                /* lookahead position is error end position */
1069264790Sbapt                yyerror_loc_range[1] = yylloc;
1070264790Sbapt                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1071264790Sbapt                *++yystack.p_mark = yyloc;
1072264790Sbapt#endif
1073264790Sbapt                goto yyloop;
1074264790Sbapt            }
1075264790Sbapt            else
1076264790Sbapt            {
1077264790Sbapt#if YYDEBUG
1078264790Sbapt                if (yydebug)
1079264790Sbapt                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1080264790Sbapt                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
1081264790Sbapt#endif
1082264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1083264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1084264790Sbapt                /* the current TOS position is the error start position */
1085264790Sbapt                yyerror_loc_range[0] = *yystack.p_mark;
1086264790Sbapt#endif
1087264790Sbapt#if defined(YYDESTRUCT_CALL)
1088264790Sbapt#if YYBTYACC
1089264790Sbapt                if (!yytrial)
1090264790Sbapt#endif /* YYBTYACC */
1091264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1092264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1093264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1094264790Sbapt#else
1095264790Sbapt                    YYDESTRUCT_CALL("error: discarding state",
1096264790Sbapt                                    yystos[*yystack.s_mark], yystack.l_mark);
1097264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1098264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1099264790Sbapt                --yystack.s_mark;
1100264790Sbapt                --yystack.l_mark;
1101264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1102264790Sbapt                --yystack.p_mark;
1103264790Sbapt#endif
1104264790Sbapt            }
1105264790Sbapt        }
1106264790Sbapt    }
1107264790Sbapt    else
1108264790Sbapt    {
1109264790Sbapt        if (yychar == YYEOF) goto yyabort;
1110264790Sbapt#if YYDEBUG
1111264790Sbapt        if (yydebug)
1112264790Sbapt        {
1113264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
1114264790Sbapt            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1115264790Sbapt                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
1116264790Sbapt        }
1117264790Sbapt#endif
1118264790Sbapt#if defined(YYDESTRUCT_CALL)
1119264790Sbapt#if YYBTYACC
1120264790Sbapt        if (!yytrial)
1121264790Sbapt#endif /* YYBTYACC */
1122264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1123264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1124264790Sbapt#else
1125264790Sbapt            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1126264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1127264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1128264790Sbapt        yychar = YYEMPTY;
1129264790Sbapt        goto yyloop;
1130264790Sbapt    }
1131264790Sbapt
1132264790Sbaptyyreduce:
1133264790Sbapt    yym = yylen[yyn];
1134264790Sbapt#if YYDEBUG
1135264790Sbapt    if (yydebug)
1136264790Sbapt    {
1137264790Sbapt        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1138264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1139264790Sbapt#ifdef YYSTYPE_TOSTRING
1140264790Sbapt#if YYBTYACC
1141264790Sbapt        if (!yytrial)
1142264790Sbapt#endif /* YYBTYACC */
1143264790Sbapt            if (yym > 0)
1144264790Sbapt            {
1145264790Sbapt                int i;
1146264790Sbapt                fputc('<', stderr);
1147264790Sbapt                for (i = yym; i > 0; i--)
1148264790Sbapt                {
1149264790Sbapt                    if (i != yym) fputs(", ", stderr);
1150264790Sbapt                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1151264790Sbapt                                           yystack.l_mark[1-i]), stderr);
1152264790Sbapt                }
1153264790Sbapt                fputc('>', stderr);
1154264790Sbapt            }
1155264790Sbapt#endif
1156264790Sbapt        fputc('\n', stderr);
1157264790Sbapt    }
1158264790Sbapt#endif
1159264790Sbapt    if (yym > 0)
1160264790Sbapt        yyval = yystack.l_mark[1-yym];
1161264790Sbapt    else
1162264790Sbapt        memset(&yyval, 0, sizeof yyval);
1163264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1164264790Sbapt
1165264790Sbapt    /* Perform position reduction */
1166264790Sbapt    memset(&yyloc, 0, sizeof(yyloc));
1167264790Sbapt#if YYBTYACC
1168264790Sbapt    if (!yytrial)
1169264790Sbapt#endif /* YYBTYACC */
1170264790Sbapt    {
1171264790Sbapt        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1172264790Sbapt        /* just in case YYERROR is invoked within the action, save
1173264790Sbapt           the start of the rhs as the error start position */
1174264790Sbapt        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1175264790Sbapt    }
1176264790Sbapt#endif
1177264790Sbapt
1178264790Sbapt    switch (yyn)
1179264790Sbapt    {
1180264790Sbaptcase 3:
1181264790Sbapt#line 35 "quote_calc.y"
1182264790Sbapt	{  yyerrok ; }
1183264790Sbaptbreak;
1184264790Sbaptcase 4:
1185264790Sbapt#line 39 "quote_calc.y"
1186264790Sbapt	{  printf("%d\n",yystack.l_mark[0]);}
1187264790Sbaptbreak;
1188264790Sbaptcase 5:
1189264790Sbapt#line 41 "quote_calc.y"
1190264790Sbapt	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
1191264790Sbaptbreak;
1192264790Sbaptcase 6:
1193264790Sbapt#line 45 "quote_calc.y"
1194264790Sbapt	{  yyval = yystack.l_mark[-1]; }
1195264790Sbaptbreak;
1196264790Sbaptcase 7:
1197264790Sbapt#line 47 "quote_calc.y"
1198264790Sbapt	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
1199264790Sbaptbreak;
1200264790Sbaptcase 8:
1201264790Sbapt#line 49 "quote_calc.y"
1202264790Sbapt	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
1203264790Sbaptbreak;
1204264790Sbaptcase 9:
1205264790Sbapt#line 51 "quote_calc.y"
1206264790Sbapt	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
1207264790Sbaptbreak;
1208264790Sbaptcase 10:
1209264790Sbapt#line 53 "quote_calc.y"
1210264790Sbapt	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
1211264790Sbaptbreak;
1212264790Sbaptcase 11:
1213264790Sbapt#line 55 "quote_calc.y"
1214264790Sbapt	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
1215264790Sbaptbreak;
1216264790Sbaptcase 12:
1217264790Sbapt#line 57 "quote_calc.y"
1218264790Sbapt	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
1219264790Sbaptbreak;
1220264790Sbaptcase 13:
1221264790Sbapt#line 59 "quote_calc.y"
1222264790Sbapt	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
1223264790Sbaptbreak;
1224264790Sbaptcase 14:
1225264790Sbapt#line 61 "quote_calc.y"
1226264790Sbapt	{  yyval = - yystack.l_mark[0]; }
1227264790Sbaptbreak;
1228264790Sbaptcase 15:
1229264790Sbapt#line 63 "quote_calc.y"
1230264790Sbapt	{  yyval = regs[yystack.l_mark[0]]; }
1231264790Sbaptbreak;
1232264790Sbaptcase 17:
1233264790Sbapt#line 68 "quote_calc.y"
1234264790Sbapt	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
1235264790Sbaptbreak;
1236264790Sbaptcase 18:
1237264790Sbapt#line 70 "quote_calc.y"
1238264790Sbapt	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
1239264790Sbaptbreak;
1240272955Srodrigc#line 1241 "quote_calc-s.tab.c"
1241264790Sbapt    default:
1242264790Sbapt        break;
1243264790Sbapt    }
1244264790Sbapt    yystack.s_mark -= yym;
1245264790Sbapt    yystate = *yystack.s_mark;
1246264790Sbapt    yystack.l_mark -= yym;
1247264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1248264790Sbapt    yystack.p_mark -= yym;
1249264790Sbapt#endif
1250264790Sbapt    yym = yylhs[yyn];
1251264790Sbapt    if (yystate == 0 && yym == 0)
1252264790Sbapt    {
1253264790Sbapt#if YYDEBUG
1254264790Sbapt        if (yydebug)
1255264790Sbapt        {
1256264790Sbapt            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1257264790Sbapt#ifdef YYSTYPE_TOSTRING
1258264790Sbapt#if YYBTYACC
1259264790Sbapt            if (!yytrial)
1260264790Sbapt#endif /* YYBTYACC */
1261264790Sbapt                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1262264790Sbapt#endif
1263264790Sbapt            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1264264790Sbapt        }
1265264790Sbapt#endif
1266264790Sbapt        yystate = YYFINAL;
1267264790Sbapt        *++yystack.s_mark = YYFINAL;
1268264790Sbapt        *++yystack.l_mark = yyval;
1269264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1270264790Sbapt        *++yystack.p_mark = yyloc;
1271264790Sbapt#endif
1272264790Sbapt        if (yychar < 0)
1273264790Sbapt        {
1274264790Sbapt#if YYBTYACC
1275264790Sbapt            do {
1276264790Sbapt            if (yylvp < yylve)
1277264790Sbapt            {
1278264790Sbapt                /* we're currently re-reading tokens */
1279264790Sbapt                yylval = *yylvp++;
1280264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1281264790Sbapt                yylloc = *yylpp++;
1282264790Sbapt#endif
1283264790Sbapt                yychar = *yylexp++;
1284264790Sbapt                break;
1285264790Sbapt            }
1286264790Sbapt            if (yyps->save)
1287264790Sbapt            {
1288264790Sbapt                /* in trial mode; save scanner results for future parse attempts */
1289264790Sbapt                if (yylvp == yylvlim)
1290264790Sbapt                {   /* Enlarge lexical value queue */
1291272955Srodrigc                    size_t p = (size_t) (yylvp - yylvals);
1292272955Srodrigc                    size_t s = (size_t) (yylvlim - yylvals);
1293264790Sbapt
1294264790Sbapt                    s += YYLVQUEUEGROWTH;
1295264790Sbapt                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
1296264790Sbapt                        goto yyenomem;
1297264790Sbapt                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1298264790Sbapt                        goto yyenomem;
1299264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1300264790Sbapt                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1301264790Sbapt                        goto yyenomem;
1302264790Sbapt#endif
1303264790Sbapt                    yylvp   = yylve = yylvals + p;
1304264790Sbapt                    yylvlim = yylvals + s;
1305264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1306264790Sbapt                    yylpp   = yylpe = yylpsns + p;
1307264790Sbapt                    yylplim = yylpsns + s;
1308264790Sbapt#endif
1309264790Sbapt                    yylexp  = yylexemes + p;
1310264790Sbapt                }
1311264790Sbapt                *yylexp = (short) YYLEX;
1312264790Sbapt                *yylvp++ = yylval;
1313264790Sbapt                yylve++;
1314264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1315264790Sbapt                *yylpp++ = yylloc;
1316264790Sbapt                yylpe++;
1317264790Sbapt#endif
1318264790Sbapt                yychar = *yylexp++;
1319264790Sbapt                break;
1320264790Sbapt            }
1321264790Sbapt            /* normal operation, no conflict encountered */
1322264790Sbapt#endif /* YYBTYACC */
1323264790Sbapt            yychar = YYLEX;
1324264790Sbapt#if YYBTYACC
1325264790Sbapt            } while (0);
1326264790Sbapt#endif /* YYBTYACC */
1327264790Sbapt            if (yychar < 0) yychar = YYEOF;
1328264790Sbapt            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1329264790Sbapt#if YYDEBUG
1330264790Sbapt            if (yydebug)
1331264790Sbapt            {
1332264790Sbapt                yys = yyname[YYTRANSLATE(yychar)];
1333264790Sbapt                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
1334264790Sbapt                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1335264790Sbapt            }
1336264790Sbapt#endif
1337264790Sbapt        }
1338264790Sbapt        if (yychar == YYEOF) goto yyaccept;
1339264790Sbapt        goto yyloop;
1340264790Sbapt    }
1341264790Sbapt    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1342264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1343264790Sbapt        yystate = yytable[yyn];
1344264790Sbapt    else
1345264790Sbapt        yystate = yydgoto[yym];
1346264790Sbapt#if YYDEBUG
1347264790Sbapt    if (yydebug)
1348264790Sbapt    {
1349264790Sbapt        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1350264790Sbapt#ifdef YYSTYPE_TOSTRING
1351264790Sbapt#if YYBTYACC
1352264790Sbapt        if (!yytrial)
1353264790Sbapt#endif /* YYBTYACC */
1354264790Sbapt            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1355264790Sbapt#endif
1356264790Sbapt        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1357264790Sbapt    }
1358264790Sbapt#endif
1359264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1360264790Sbapt    *++yystack.s_mark = (short) yystate;
1361264790Sbapt    *++yystack.l_mark = yyval;
1362264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1363264790Sbapt    *++yystack.p_mark = yyloc;
1364264790Sbapt#endif
1365264790Sbapt    goto yyloop;
1366264790Sbapt#if YYBTYACC
1367264790Sbapt
1368264790Sbapt    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1369264790Sbaptyyvalid:
1370264790Sbapt    if (yypath) YYABORT;
1371264790Sbapt    while (yyps->save)
1372264790Sbapt    {
1373264790Sbapt        YYParseState *save = yyps->save;
1374264790Sbapt        yyps->save = save->save;
1375264790Sbapt        save->save = yypath;
1376264790Sbapt        yypath = save;
1377264790Sbapt    }
1378264790Sbapt#if YYDEBUG
1379264790Sbapt    if (yydebug)
1380264790Sbapt        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1381264790Sbapt                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1382264790Sbapt#endif
1383264790Sbapt    if (yyerrctx)
1384264790Sbapt    {
1385264790Sbapt        yyFreeState(yyerrctx);
1386264790Sbapt        yyerrctx = NULL;
1387264790Sbapt    }
1388264790Sbapt    yylvp          = yylvals + yypath->lexeme;
1389264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1390264790Sbapt    yylpp          = yylpsns + yypath->lexeme;
1391264790Sbapt#endif
1392264790Sbapt    yylexp         = yylexemes + yypath->lexeme;
1393264790Sbapt    yychar         = YYEMPTY;
1394264790Sbapt    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1395272955Srodrigc    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1396264790Sbapt    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1397272955Srodrigc    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1398264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1399264790Sbapt    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1400272955Srodrigc    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1401264790Sbapt#endif
1402264790Sbapt    yystate        = yypath->state;
1403264790Sbapt    goto yyloop;
1404264790Sbapt#endif /* YYBTYACC */
1405264790Sbapt
1406264790Sbaptyyoverflow:
1407264790Sbapt    YYERROR_CALL("yacc stack overflow");
1408264790Sbapt#if YYBTYACC
1409264790Sbapt    goto yyabort_nomem;
1410264790Sbaptyyenomem:
1411264790Sbapt    YYERROR_CALL("memory exhausted");
1412264790Sbaptyyabort_nomem:
1413264790Sbapt#endif /* YYBTYACC */
1414264790Sbapt    yyresult = 2;
1415264790Sbapt    goto yyreturn;
1416264790Sbapt
1417264790Sbaptyyabort:
1418264790Sbapt    yyresult = 1;
1419264790Sbapt    goto yyreturn;
1420264790Sbapt
1421264790Sbaptyyaccept:
1422264790Sbapt#if YYBTYACC
1423264790Sbapt    if (yyps->save) goto yyvalid;
1424264790Sbapt#endif /* YYBTYACC */
1425264790Sbapt    yyresult = 0;
1426264790Sbapt
1427264790Sbaptyyreturn:
1428264790Sbapt#if defined(YYDESTRUCT_CALL)
1429264790Sbapt    if (yychar != YYEOF && yychar != YYEMPTY)
1430264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1431264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1432264790Sbapt#else
1433264790Sbapt        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1434264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1435264790Sbapt
1436264790Sbapt    {
1437264790Sbapt        YYSTYPE *pv;
1438264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1439264790Sbapt        YYLTYPE *pp;
1440264790Sbapt
1441264790Sbapt        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1442264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1443264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1444264790Sbapt#else
1445264790Sbapt        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1446264790Sbapt             YYDESTRUCT_CALL("cleanup: discarding state",
1447264790Sbapt                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1448264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1449264790Sbapt    }
1450264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */
1451264790Sbapt
1452264790Sbapt#if YYBTYACC
1453264790Sbapt    if (yyerrctx)
1454264790Sbapt    {
1455264790Sbapt        yyFreeState(yyerrctx);
1456264790Sbapt        yyerrctx = NULL;
1457264790Sbapt    }
1458264790Sbapt    while (yyps)
1459264790Sbapt    {
1460264790Sbapt        YYParseState *save = yyps;
1461264790Sbapt        yyps = save->save;
1462264790Sbapt        save->save = NULL;
1463264790Sbapt        yyFreeState(save);
1464264790Sbapt    }
1465264790Sbapt    while (yypath)
1466264790Sbapt    {
1467264790Sbapt        YYParseState *save = yypath;
1468264790Sbapt        yypath = save->save;
1469264790Sbapt        save->save = NULL;
1470264790Sbapt        yyFreeState(save);
1471264790Sbapt    }
1472264790Sbapt#endif /* YYBTYACC */
1473264790Sbapt    yyfreestack(&yystack);
1474264790Sbapt    return (yyresult);
1475264790Sbapt}
1476