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