xref: /freebsd/contrib/byacc/test/btyacc/calc_code_all.tab.c (revision 59c8e88e72633afbc47a4ace0d2170d00d51f7dc)
1 /* original parser id follows */
2 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4 
5 #define YYBYACC 1
6 #define YYMAJOR 2
7 #define YYMINOR 0
8 #define YYCHECK "yyyymmdd"
9 
10 #define YYEMPTY        (-1)
11 #define yyclearin      (yychar = YYEMPTY)
12 #define yyerrok        (yyerrflag = 0)
13 #define YYRECOVERING() (yyerrflag != 0)
14 #define YYENOMEM       (-2)
15 #define YYEOF          0
16 
17 /* %code "top" block start */
18 #line 5 "calc_code_all.y"
19 /* CODE-TOP */
20 /* %code "top" block end */
21 #line 22 "calc_code_all.tab.c"
22 #undef YYBTYACC
23 #define YYBTYACC 0
24 #define YYDEBUGSTR YYPREFIX "debug"
25 
26 #ifndef yyparse
27 #define yyparse    calc_code_all_parse
28 #endif /* yyparse */
29 
30 #ifndef yylex
31 #define yylex      calc_code_all_lex
32 #endif /* yylex */
33 
34 #ifndef yyerror
35 #define yyerror    calc_code_all_error
36 #endif /* yyerror */
37 
38 #ifndef yychar
39 #define yychar     calc_code_all_char
40 #endif /* yychar */
41 
42 #ifndef yyval
43 #define yyval      calc_code_all_val
44 #endif /* yyval */
45 
46 #ifndef yylval
47 #define yylval     calc_code_all_lval
48 #endif /* yylval */
49 
50 #ifndef yydebug
51 #define yydebug    calc_code_all_debug
52 #endif /* yydebug */
53 
54 #ifndef yynerrs
55 #define yynerrs    calc_code_all_nerrs
56 #endif /* yynerrs */
57 
58 #ifndef yyerrflag
59 #define yyerrflag  calc_code_all_errflag
60 #endif /* yyerrflag */
61 
62 #ifndef yylhs
63 #define yylhs      calc_code_all_lhs
64 #endif /* yylhs */
65 
66 #ifndef yylen
67 #define yylen      calc_code_all_len
68 #endif /* yylen */
69 
70 #ifndef yydefred
71 #define yydefred   calc_code_all_defred
72 #endif /* yydefred */
73 
74 #ifndef yystos
75 #define yystos     calc_code_all_stos
76 #endif /* yystos */
77 
78 #ifndef yydgoto
79 #define yydgoto    calc_code_all_dgoto
80 #endif /* yydgoto */
81 
82 #ifndef yysindex
83 #define yysindex   calc_code_all_sindex
84 #endif /* yysindex */
85 
86 #ifndef yyrindex
87 #define yyrindex   calc_code_all_rindex
88 #endif /* yyrindex */
89 
90 #ifndef yygindex
91 #define yygindex   calc_code_all_gindex
92 #endif /* yygindex */
93 
94 #ifndef yytable
95 #define yytable    calc_code_all_table
96 #endif /* yytable */
97 
98 #ifndef yycheck
99 #define yycheck    calc_code_all_check
100 #endif /* yycheck */
101 
102 #ifndef yyname
103 #define yyname     calc_code_all_name
104 #endif /* yyname */
105 
106 #ifndef yyrule
107 #define yyrule     calc_code_all_rule
108 #endif /* yyrule */
109 
110 #if YYBTYACC
111 
112 #ifndef yycindex
113 #define yycindex   calc_code_all_cindex
114 #endif /* yycindex */
115 
116 #ifndef yyctable
117 #define yyctable   calc_code_all_ctable
118 #endif /* yyctable */
119 
120 #endif /* YYBTYACC */
121 
122 #define YYPREFIX "calc_code_all_"
123 
124 #define YYPURE 0
125 
126 #line 9 "calc_code_all.y"
127 # include <stdio.h>
128 # include <ctype.h>
129 
130 int regs[26];
131 int base;
132 
133 extern int yylex(void);
134 static void yyerror(const char *s);
135 
136 #line 137 "calc_code_all.tab.c"
137 
138 #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
139 /* Default: YYSTYPE is the semantic value type. */
140 typedef int YYSTYPE;
141 # define YYSTYPE_IS_DECLARED 1
142 #endif
143 
144 /* compatibility with bison */
145 #ifdef YYPARSE_PARAM
146 /* compatibility with FreeBSD */
147 # ifdef YYPARSE_PARAM_TYPE
148 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
149 # else
150 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
151 # endif
152 #else
153 # define YYPARSE_DECL() yyparse(void)
154 #endif
155 
156 /* Parameters sent to lex. */
157 #ifdef YYLEX_PARAM
158 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
159 # define YYLEX yylex(YYLEX_PARAM)
160 #else
161 # define YYLEX_DECL() yylex(void)
162 # define YYLEX yylex()
163 #endif
164 
165 /* Parameters sent to yyerror. */
166 #ifndef YYERROR_DECL
167 #define YYERROR_DECL() yyerror(const char *s)
168 #endif
169 #ifndef YYERROR_CALL
170 #define YYERROR_CALL(msg) yyerror(msg)
171 #endif
172 
173 extern int YYPARSE_DECL();
174 
175 #define DIGIT 257
176 #define LETTER 258
177 #define UMINUS 259
178 #define YYERRCODE 256
179 typedef int YYINT;
180 static const YYINT calc_code_all_lhs[] = {               -1,
181     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
182     2,    2,    2,    2,    2,    2,    3,    3,
183 };
184 static const YYINT calc_code_all_len[] = {                2,
185     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
186     3,    3,    3,    2,    1,    1,    1,    2,
187 };
188 static const YYINT calc_code_all_defred[] = {             1,
189     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
190     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
191     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
192    10,   11,
193 };
194 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
195 static const YYINT calc_code_all_stos[] = {               0,
196   261,  256,  257,  258,   45,   40,  262,  263,  264,   10,
197    61,  258,  263,  263,   10,  124,   38,   43,   45,   42,
198    47,   37,  257,  263,   41,  263,  263,  263,  263,  263,
199   263,  263,
200 };
201 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
202 static const YYINT calc_code_all_dgoto[] = {              1,
203     7,    8,    9,
204 };
205 static const YYINT calc_code_all_sindex[] = {             0,
206   -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
207   -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
208   -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
209     0,    0,
210 };
211 static const YYINT calc_code_all_rindex[] = {             0,
212     0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
213     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
214     0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
215     0,    0,
216 };
217 #if YYBTYACC
218 static const YYINT calc_code_all_cindex[] = {             0,
219     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
220     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
221     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
222     0,    0,
223 };
224 #endif
225 static const YYINT calc_code_all_gindex[] = {             0,
226     0,   65,    0,
227 };
228 #define YYTABLESIZE 220
229 static const YYINT calc_code_all_table[] = {              6,
230    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
231    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
232     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
233     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
234     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
235     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
236     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
237    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
238    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
239     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
240     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
241     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
242     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
243     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
244     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
246     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
247     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
248     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
249     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
250     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
251     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
252 };
253 static const YYINT calc_code_all_check[] = {             40,
254    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
255    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
256    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
257    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
258    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
259    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
260    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
261     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
262    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
263    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
264    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
265    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
266    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
267    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
268    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
269    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
270    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
271    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
272    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
273    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
274    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
275    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
276 };
277 #if YYBTYACC
278 static const YYINT calc_code_all_ctable[] = {            -1,
279    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
280    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
281    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
282    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
283    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
284    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
285    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
286    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
287    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
288    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
289    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
290    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
291    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
292    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
293    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
294    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
295    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
296    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
297    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
298    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
299    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
300    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
301 };
302 #endif
303 #define YYFINAL 1
304 #ifndef YYDEBUG
305 #define YYDEBUG 0
306 #endif
307 #define YYMAXTOKEN 259
308 #define YYUNDFTOKEN 265
309 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
310 #if YYDEBUG
311 static const char *const calc_code_all_name[] = {
312 
313 "$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,
314 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
315 0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
316 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0,
317 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
318 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
319 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
320 0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",
321 "illegal-symbol",
322 };
323 static const char *const calc_code_all_rule[] = {
324 "$accept : list",
325 "list :",
326 "list : list stat '\\n'",
327 "list : list error '\\n'",
328 "stat : expr",
329 "stat : LETTER '=' expr",
330 "expr : '(' expr ')'",
331 "expr : expr '+' expr",
332 "expr : expr '-' expr",
333 "expr : expr '*' expr",
334 "expr : expr '/' expr",
335 "expr : expr '%' expr",
336 "expr : expr '&' expr",
337 "expr : expr '|' expr",
338 "expr : '-' expr",
339 "expr : LETTER",
340 "expr : number",
341 "number : DIGIT",
342 "number : number DIGIT",
343 
344 };
345 #endif
346 
347 #if YYDEBUG
348 int      yydebug;
349 #endif
350 
351 int      yyerrflag;
352 int      yychar;
353 YYSTYPE  yyval;
354 YYSTYPE  yylval;
355 int      yynerrs;
356 
357 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
358 YYLTYPE  yyloc; /* position returned by actions */
359 YYLTYPE  yylloc; /* position from the lexer */
360 #endif
361 
362 /* %code "requires" block start */
363 #line 3 "calc_code_all.y"
364 /* CODE-REQUIRES */
365 /* %code "requires" block end */
366 #line 367 "calc_code_all.tab.c"
367 
368 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
369 #ifndef YYLLOC_DEFAULT
370 #define YYLLOC_DEFAULT(loc, rhs, n) \
371 do \
372 { \
373     if (n == 0) \
374     { \
375         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
376         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
377         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
378         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
379     } \
380     else \
381     { \
382         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
383         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
384         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
385         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
386     } \
387 } while (0)
388 #endif /* YYLLOC_DEFAULT */
389 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
390 #if YYBTYACC
391 
392 #ifndef YYLVQUEUEGROWTH
393 #define YYLVQUEUEGROWTH 32
394 #endif
395 #endif /* YYBTYACC */
396 
397 /* define the initial stack-sizes */
398 #ifdef YYSTACKSIZE
399 #undef YYMAXDEPTH
400 #define YYMAXDEPTH  YYSTACKSIZE
401 #else
402 #ifdef YYMAXDEPTH
403 #define YYSTACKSIZE YYMAXDEPTH
404 #else
405 #define YYSTACKSIZE 10000
406 #define YYMAXDEPTH  10000
407 #endif
408 #endif
409 
410 #ifndef YYINITSTACKSIZE
411 #define YYINITSTACKSIZE 200
412 #endif
413 
414 typedef struct {
415     unsigned stacksize;
416     YYINT    *s_base;
417     YYINT    *s_mark;
418     YYINT    *s_last;
419     YYSTYPE  *l_base;
420     YYSTYPE  *l_mark;
421 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
422     YYLTYPE  *p_base;
423     YYLTYPE  *p_mark;
424 #endif
425 } YYSTACKDATA;
426 #if YYBTYACC
427 
428 struct YYParseState_s
429 {
430     struct YYParseState_s *save;    /* Previously saved parser state */
431     YYSTACKDATA            yystack; /* saved parser stack */
432     int                    state;   /* saved parser state */
433     int                    errflag; /* saved error recovery status */
434     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
435     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
436 };
437 typedef struct YYParseState_s YYParseState;
438 #endif /* YYBTYACC */
439 /* variables for the parser stack */
440 static YYSTACKDATA yystack;
441 #if YYBTYACC
442 
443 /* Current parser state */
444 static YYParseState *yyps = 0;
445 
446 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
447 static YYParseState *yypath = 0;
448 
449 /* Base of the lexical value queue */
450 static YYSTYPE *yylvals = 0;
451 
452 /* Current position at lexical value queue */
453 static YYSTYPE *yylvp = 0;
454 
455 /* End position of lexical value queue */
456 static YYSTYPE *yylve = 0;
457 
458 /* The last allocated position at the lexical value queue */
459 static YYSTYPE *yylvlim = 0;
460 
461 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
462 /* Base of the lexical position queue */
463 static YYLTYPE *yylpsns = 0;
464 
465 /* Current position at lexical position queue */
466 static YYLTYPE *yylpp = 0;
467 
468 /* End position of lexical position queue */
469 static YYLTYPE *yylpe = 0;
470 
471 /* The last allocated position at the lexical position queue */
472 static YYLTYPE *yylplim = 0;
473 #endif
474 
475 /* Current position at lexical token queue */
476 static YYINT  *yylexp = 0;
477 
478 static YYINT  *yylexemes = 0;
479 #endif /* YYBTYACC */
480 
481 /* %code "provides" block start */
482 #line 4 "calc_code_all.y"
483 /* CODE-PROVIDES */
484 #line 6 "calc_code_all.y"
485 /* CODE-PROVIDES2 */
486 /* %code "provides" block end */
487 #line 488 "calc_code_all.tab.c"
488 
489 /* %code "" block start */
490 #line 1 "calc_code_all.y"
491 /* CODE-DEFAULT2 */
492 #line 2 "calc_code_all.y"
493 /* CODE-DEFAULT */
494 /* %code "" block end */
495 #line 496 "calc_code_all.tab.c"
496 #line 73 "calc_code_all.y"
497  /* start of programs */
498 
499 int
500 main (void)
501 {
502     while(!feof(stdin)) {
503 	yyparse();
504     }
505     return 0;
506 }
507 
508 static void
509 yyerror(const char *s)
510 {
511     fprintf(stderr, "%s\n", s);
512 }
513 
514 int
515 yylex(void)
516 {
517 	/* lexical analysis routine */
518 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
519 	/* return DIGIT for a digit, yylval = 0 through 9 */
520 	/* all other characters are returned immediately */
521 
522     int c;
523 
524     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
525 
526     /* c is now nonblank */
527 
528     if( islower( c )) {
529 	yylval = c - 'a';
530 	return ( LETTER );
531     }
532     if( isdigit( c )) {
533 	yylval = c - '0';
534 	return ( DIGIT );
535     }
536     return( c );
537 }
538 #line 539 "calc_code_all.tab.c"
539 
540 /* For use in generated program */
541 #define yydepth (int)(yystack.s_mark - yystack.s_base)
542 #if YYBTYACC
543 #define yytrial (yyps->save)
544 #endif /* YYBTYACC */
545 
546 #if YYDEBUG
547 #include <stdio.h>	/* needed for printf */
548 #endif
549 
550 #include <stdlib.h>	/* needed for malloc, etc */
551 #include <string.h>	/* needed for memset */
552 
553 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
554 static int yygrowstack(YYSTACKDATA *data)
555 {
556     int i;
557     unsigned newsize;
558     YYINT *newss;
559     YYSTYPE *newvs;
560 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
561     YYLTYPE *newps;
562 #endif
563 
564     if ((newsize = data->stacksize) == 0)
565         newsize = YYINITSTACKSIZE;
566     else if (newsize >= YYMAXDEPTH)
567         return YYENOMEM;
568     else if ((newsize *= 2) > YYMAXDEPTH)
569         newsize = YYMAXDEPTH;
570 
571     i = (int) (data->s_mark - data->s_base);
572     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
573     if (newss == NULL)
574         return YYENOMEM;
575 
576     data->s_base = newss;
577     data->s_mark = newss + i;
578 
579     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
580     if (newvs == NULL)
581         return YYENOMEM;
582 
583     data->l_base = newvs;
584     data->l_mark = newvs + i;
585 
586 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
587     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
588     if (newps == NULL)
589         return YYENOMEM;
590 
591     data->p_base = newps;
592     data->p_mark = newps + i;
593 #endif
594 
595     data->stacksize = newsize;
596     data->s_last = data->s_base + newsize - 1;
597 
598 #if YYDEBUG
599     if (yydebug)
600         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
601 #endif
602     return 0;
603 }
604 
605 #if YYPURE || defined(YY_NO_LEAKS)
606 static void yyfreestack(YYSTACKDATA *data)
607 {
608     free(data->s_base);
609     free(data->l_base);
610 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
611     free(data->p_base);
612 #endif
613     memset(data, 0, sizeof(*data));
614 }
615 #else
616 #define yyfreestack(data) /* nothing */
617 #endif /* YYPURE || defined(YY_NO_LEAKS) */
618 #if YYBTYACC
619 
620 static YYParseState *
621 yyNewState(unsigned size)
622 {
623     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
624     if (p == NULL) return NULL;
625 
626     p->yystack.stacksize = size;
627     if (size == 0)
628     {
629         p->yystack.s_base = NULL;
630         p->yystack.l_base = NULL;
631 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
632         p->yystack.p_base = NULL;
633 #endif
634         return p;
635     }
636     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
637     if (p->yystack.s_base == NULL) return NULL;
638     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
639     if (p->yystack.l_base == NULL) return NULL;
640     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
641 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
642     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
643     if (p->yystack.p_base == NULL) return NULL;
644     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
645 #endif
646 
647     return p;
648 }
649 
650 static void
651 yyFreeState(YYParseState *p)
652 {
653     yyfreestack(&p->yystack);
654     free(p);
655 }
656 #endif /* YYBTYACC */
657 
658 #define YYABORT  goto yyabort
659 #define YYREJECT goto yyabort
660 #define YYACCEPT goto yyaccept
661 #define YYERROR  goto yyerrlab
662 #if YYBTYACC
663 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
664 #define YYVALID_NESTED do { if (yyps->save && \
665                                 yyps->save->save == 0) goto yyvalid; } while(0)
666 #endif /* YYBTYACC */
667 
668 int
669 YYPARSE_DECL()
670 {
671     int yym, yyn, yystate, yyresult;
672 #if YYBTYACC
673     int yynewerrflag;
674     YYParseState *yyerrctx = NULL;
675 #endif /* YYBTYACC */
676 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
677     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
678 #endif
679 #if YYDEBUG
680     const char *yys;
681 
682     if ((yys = getenv("YYDEBUG")) != NULL)
683     {
684         yyn = *yys;
685         if (yyn >= '0' && yyn <= '9')
686             yydebug = yyn - '0';
687     }
688     if (yydebug)
689         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
690 #endif
691 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
692     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
693 #endif
694 
695 #if YYBTYACC
696     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
697     yyps->save = 0;
698 #endif /* YYBTYACC */
699     yym = 0;
700     /* yyn is set below */
701     yynerrs = 0;
702     yyerrflag = 0;
703     yychar = YYEMPTY;
704     yystate = 0;
705 
706 #if YYPURE
707     memset(&yystack, 0, sizeof(yystack));
708 #endif
709 
710     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
711     yystack.s_mark = yystack.s_base;
712     yystack.l_mark = yystack.l_base;
713 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
714     yystack.p_mark = yystack.p_base;
715 #endif
716     yystate = 0;
717     *yystack.s_mark = 0;
718 
719 yyloop:
720     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
721     if (yychar < 0)
722     {
723 #if YYBTYACC
724         do {
725         if (yylvp < yylve)
726         {
727             /* we're currently re-reading tokens */
728             yylval = *yylvp++;
729 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
730             yylloc = *yylpp++;
731 #endif
732             yychar = *yylexp++;
733             break;
734         }
735         if (yyps->save)
736         {
737             /* in trial mode; save scanner results for future parse attempts */
738             if (yylvp == yylvlim)
739             {   /* Enlarge lexical value queue */
740                 size_t p = (size_t) (yylvp - yylvals);
741                 size_t s = (size_t) (yylvlim - yylvals);
742 
743                 s += YYLVQUEUEGROWTH;
744                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
745                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
746 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
747                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
748 #endif
749                 yylvp   = yylve = yylvals + p;
750                 yylvlim = yylvals + s;
751 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
752                 yylpp   = yylpe = yylpsns + p;
753                 yylplim = yylpsns + s;
754 #endif
755                 yylexp  = yylexemes + p;
756             }
757             *yylexp = (YYINT) YYLEX;
758             *yylvp++ = yylval;
759             yylve++;
760 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
761             *yylpp++ = yylloc;
762             yylpe++;
763 #endif
764             yychar = *yylexp++;
765             break;
766         }
767         /* normal operation, no conflict encountered */
768 #endif /* YYBTYACC */
769         yychar = YYLEX;
770 #if YYBTYACC
771         } while (0);
772 #endif /* YYBTYACC */
773         if (yychar < 0) yychar = YYEOF;
774 #if YYDEBUG
775         if (yydebug)
776         {
777             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
778             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
779                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
780 #ifdef YYSTYPE_TOSTRING
781 #if YYBTYACC
782             if (!yytrial)
783 #endif /* YYBTYACC */
784                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
785 #endif
786             fputc('\n', stderr);
787         }
788 #endif
789     }
790 #if YYBTYACC
791 
792     /* Do we have a conflict? */
793     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
794         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
795     {
796         YYINT ctry;
797 
798         if (yypath)
799         {
800             YYParseState *save;
801 #if YYDEBUG
802             if (yydebug)
803                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
804                                 YYDEBUGSTR, yydepth, yystate);
805 #endif
806             /* Switch to the next conflict context */
807             save = yypath;
808             yypath = save->save;
809             save->save = NULL;
810             ctry = save->ctry;
811             if (save->state != yystate) YYABORT;
812             yyFreeState(save);
813 
814         }
815         else
816         {
817 
818             /* Unresolved conflict - start/continue trial parse */
819             YYParseState *save;
820 #if YYDEBUG
821             if (yydebug)
822             {
823                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
824                 if (yyps->save)
825                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
826                 else
827                     fputs("Starting trial parse.\n", stderr);
828             }
829 #endif
830             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
831             if (save == NULL) goto yyenomem;
832             save->save            = yyps->save;
833             save->state           = yystate;
834             save->errflag         = yyerrflag;
835             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
836             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
837             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
838             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
839 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
840             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
841             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
842 #endif
843             ctry                  = yytable[yyn];
844             if (yyctable[ctry] == -1)
845             {
846 #if YYDEBUG
847                 if (yydebug && yychar >= YYEOF)
848                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
849 #endif
850                 ctry++;
851             }
852             save->ctry = ctry;
853             if (yyps->save == NULL)
854             {
855                 /* If this is a first conflict in the stack, start saving lexemes */
856                 if (!yylexemes)
857                 {
858                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
859                     if (yylexemes == NULL) goto yyenomem;
860                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
861                     if (yylvals == NULL) goto yyenomem;
862                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
863 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
864                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
865                     if (yylpsns == NULL) goto yyenomem;
866                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
867 #endif
868                 }
869                 if (yylvp == yylve)
870                 {
871                     yylvp  = yylve = yylvals;
872 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
873                     yylpp  = yylpe = yylpsns;
874 #endif
875                     yylexp = yylexemes;
876                     if (yychar >= YYEOF)
877                     {
878                         *yylve++ = yylval;
879 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
880                         *yylpe++ = yylloc;
881 #endif
882                         *yylexp  = (YYINT) yychar;
883                         yychar   = YYEMPTY;
884                     }
885                 }
886             }
887             if (yychar >= YYEOF)
888             {
889                 yylvp--;
890 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
891                 yylpp--;
892 #endif
893                 yylexp--;
894                 yychar = YYEMPTY;
895             }
896             save->lexeme = (int) (yylvp - yylvals);
897             yyps->save   = save;
898         }
899         if (yytable[yyn] == ctry)
900         {
901 #if YYDEBUG
902             if (yydebug)
903                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
904                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
905 #endif
906             if (yychar < 0)
907             {
908                 yylvp++;
909 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
910                 yylpp++;
911 #endif
912                 yylexp++;
913             }
914             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
915                 goto yyoverflow;
916             yystate = yyctable[ctry];
917             *++yystack.s_mark = (YYINT) yystate;
918             *++yystack.l_mark = yylval;
919 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
920             *++yystack.p_mark = yylloc;
921 #endif
922             yychar  = YYEMPTY;
923             if (yyerrflag > 0) --yyerrflag;
924             goto yyloop;
925         }
926         else
927         {
928             yyn = yyctable[ctry];
929             goto yyreduce;
930         }
931     } /* End of code dealing with conflicts */
932 #endif /* YYBTYACC */
933     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
934             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
935     {
936 #if YYDEBUG
937         if (yydebug)
938             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
939                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
940 #endif
941         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
942         yystate = yytable[yyn];
943         *++yystack.s_mark = yytable[yyn];
944         *++yystack.l_mark = yylval;
945 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
946         *++yystack.p_mark = yylloc;
947 #endif
948         yychar = YYEMPTY;
949         if (yyerrflag > 0)  --yyerrflag;
950         goto yyloop;
951     }
952     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
953             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
954     {
955         yyn = yytable[yyn];
956         goto yyreduce;
957     }
958     if (yyerrflag != 0) goto yyinrecovery;
959 #if YYBTYACC
960 
961     yynewerrflag = 1;
962     goto yyerrhandler;
963     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
964 
965 yyerrlab:
966     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
967      * before looking for error recovery */
968     yystack.s_mark -= yym;
969     yystate = *yystack.s_mark;
970     yystack.l_mark -= yym;
971 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
972     yystack.p_mark -= yym;
973 #endif
974 
975     yynewerrflag = 0;
976 yyerrhandler:
977     while (yyps->save)
978     {
979         int ctry;
980         YYParseState *save = yyps->save;
981 #if YYDEBUG
982         if (yydebug)
983             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
984                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
985                     (int)(yylvp - yylvals - yyps->save->lexeme));
986 #endif
987         /* Memorize most forward-looking error state in case it's really an error. */
988         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
989         {
990             /* Free old saved error context state */
991             if (yyerrctx) yyFreeState(yyerrctx);
992             /* Create and fill out new saved error context state */
993             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
994             if (yyerrctx == NULL) goto yyenomem;
995             yyerrctx->save           = yyps->save;
996             yyerrctx->state          = yystate;
997             yyerrctx->errflag        = yyerrflag;
998             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
999             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1000             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1001             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1002 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1003             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1004             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1005 #endif
1006             yyerrctx->lexeme         = (int) (yylvp - yylvals);
1007         }
1008         yylvp          = yylvals   + save->lexeme;
1009 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1010         yylpp          = yylpsns   + save->lexeme;
1011 #endif
1012         yylexp         = yylexemes + save->lexeme;
1013         yychar         = YYEMPTY;
1014         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1015         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1016         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1017         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1018 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1019         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1020         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1021 #endif
1022         ctry           = ++save->ctry;
1023         yystate        = save->state;
1024         /* We tried shift, try reduce now */
1025         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1026         yyps->save     = save->save;
1027         save->save     = NULL;
1028         yyFreeState(save);
1029 
1030         /* Nothing left on the stack -- error */
1031         if (!yyps->save)
1032         {
1033 #if YYDEBUG
1034             if (yydebug)
1035                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1036                                 YYPREFIX, yydepth);
1037 #endif
1038             /* Restore state as it was in the most forward-advanced error */
1039             yylvp          = yylvals   + yyerrctx->lexeme;
1040 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1041             yylpp          = yylpsns   + yyerrctx->lexeme;
1042 #endif
1043             yylexp         = yylexemes + yyerrctx->lexeme;
1044             yychar         = yylexp[-1];
1045             yylval         = yylvp[-1];
1046 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1047             yylloc         = yylpp[-1];
1048 #endif
1049             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1050             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1051             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1052             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1053 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1054             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1055             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1056 #endif
1057             yystate        = yyerrctx->state;
1058             yyFreeState(yyerrctx);
1059             yyerrctx       = NULL;
1060         }
1061         yynewerrflag = 1;
1062     }
1063     if (yynewerrflag == 0) goto yyinrecovery;
1064 #endif /* YYBTYACC */
1065 
1066     YYERROR_CALL("syntax error");
1067 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1068     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
1069 #endif
1070 
1071 #if !YYBTYACC
1072     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1073 yyerrlab:
1074 #endif
1075     ++yynerrs;
1076 
1077 yyinrecovery:
1078     if (yyerrflag < 3)
1079     {
1080         yyerrflag = 3;
1081         for (;;)
1082         {
1083             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1084                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1085             {
1086 #if YYDEBUG
1087                 if (yydebug)
1088                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1089                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1090 #endif
1091                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1092                 yystate = yytable[yyn];
1093                 *++yystack.s_mark = yytable[yyn];
1094                 *++yystack.l_mark = yylval;
1095 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1096                 /* lookahead position is error end position */
1097                 yyerror_loc_range[2] = yylloc;
1098                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1099                 *++yystack.p_mark = yyloc;
1100 #endif
1101                 goto yyloop;
1102             }
1103             else
1104             {
1105 #if YYDEBUG
1106                 if (yydebug)
1107                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1108                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
1109 #endif
1110                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1111 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1112                 /* the current TOS position is the error start position */
1113                 yyerror_loc_range[1] = *yystack.p_mark;
1114 #endif
1115 #if defined(YYDESTRUCT_CALL)
1116 #if YYBTYACC
1117                 if (!yytrial)
1118 #endif /* YYBTYACC */
1119 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1120                     YYDESTRUCT_CALL("error: discarding state",
1121                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1122 #else
1123                     YYDESTRUCT_CALL("error: discarding state",
1124                                     yystos[*yystack.s_mark], yystack.l_mark);
1125 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1126 #endif /* defined(YYDESTRUCT_CALL) */
1127                 --yystack.s_mark;
1128                 --yystack.l_mark;
1129 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1130                 --yystack.p_mark;
1131 #endif
1132             }
1133         }
1134     }
1135     else
1136     {
1137         if (yychar == YYEOF) goto yyabort;
1138 #if YYDEBUG
1139         if (yydebug)
1140         {
1141             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1142             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1143                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
1144         }
1145 #endif
1146 #if defined(YYDESTRUCT_CALL)
1147 #if YYBTYACC
1148         if (!yytrial)
1149 #endif /* YYBTYACC */
1150 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1151             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1152 #else
1153             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1154 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1155 #endif /* defined(YYDESTRUCT_CALL) */
1156         yychar = YYEMPTY;
1157         goto yyloop;
1158     }
1159 
1160 yyreduce:
1161     yym = yylen[yyn];
1162 #if YYDEBUG
1163     if (yydebug)
1164     {
1165         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1166                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1167 #ifdef YYSTYPE_TOSTRING
1168 #if YYBTYACC
1169         if (!yytrial)
1170 #endif /* YYBTYACC */
1171             if (yym > 0)
1172             {
1173                 int i;
1174                 fputc('<', stderr);
1175                 for (i = yym; i > 0; i--)
1176                 {
1177                     if (i != yym) fputs(", ", stderr);
1178                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1179                                            yystack.l_mark[1-i]), stderr);
1180                 }
1181                 fputc('>', stderr);
1182             }
1183 #endif
1184         fputc('\n', stderr);
1185     }
1186 #endif
1187     if (yym > 0)
1188         yyval = yystack.l_mark[1-yym];
1189     else
1190         memset(&yyval, 0, sizeof yyval);
1191 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1192 
1193     /* Perform position reduction */
1194     memset(&yyloc, 0, sizeof(yyloc));
1195 #if YYBTYACC
1196     if (!yytrial)
1197 #endif /* YYBTYACC */
1198     {
1199         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
1200         /* just in case YYERROR is invoked within the action, save
1201            the start of the rhs as the error start position */
1202         yyerror_loc_range[1] = yystack.p_mark[1-yym];
1203     }
1204 #endif
1205 
1206     switch (yyn)
1207     {
1208 case 3:
1209 #line 35 "calc_code_all.y"
1210 	{  yyerrok ; }
1211 #line 1212 "calc_code_all.tab.c"
1212 break;
1213 case 4:
1214 #line 39 "calc_code_all.y"
1215 	{  printf("%d\n",yystack.l_mark[0]);}
1216 #line 1217 "calc_code_all.tab.c"
1217 break;
1218 case 5:
1219 #line 41 "calc_code_all.y"
1220 	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
1221 #line 1222 "calc_code_all.tab.c"
1222 break;
1223 case 6:
1224 #line 45 "calc_code_all.y"
1225 	{  yyval = yystack.l_mark[-1]; }
1226 #line 1227 "calc_code_all.tab.c"
1227 break;
1228 case 7:
1229 #line 47 "calc_code_all.y"
1230 	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
1231 #line 1232 "calc_code_all.tab.c"
1232 break;
1233 case 8:
1234 #line 49 "calc_code_all.y"
1235 	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
1236 #line 1237 "calc_code_all.tab.c"
1237 break;
1238 case 9:
1239 #line 51 "calc_code_all.y"
1240 	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
1241 #line 1242 "calc_code_all.tab.c"
1242 break;
1243 case 10:
1244 #line 53 "calc_code_all.y"
1245 	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
1246 #line 1247 "calc_code_all.tab.c"
1247 break;
1248 case 11:
1249 #line 55 "calc_code_all.y"
1250 	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
1251 #line 1252 "calc_code_all.tab.c"
1252 break;
1253 case 12:
1254 #line 57 "calc_code_all.y"
1255 	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
1256 #line 1257 "calc_code_all.tab.c"
1257 break;
1258 case 13:
1259 #line 59 "calc_code_all.y"
1260 	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
1261 #line 1262 "calc_code_all.tab.c"
1262 break;
1263 case 14:
1264 #line 61 "calc_code_all.y"
1265 	{  yyval = - yystack.l_mark[0]; }
1266 #line 1267 "calc_code_all.tab.c"
1267 break;
1268 case 15:
1269 #line 63 "calc_code_all.y"
1270 	{  yyval = regs[yystack.l_mark[0]]; }
1271 #line 1272 "calc_code_all.tab.c"
1272 break;
1273 case 17:
1274 #line 68 "calc_code_all.y"
1275 	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
1276 #line 1277 "calc_code_all.tab.c"
1277 break;
1278 case 18:
1279 #line 70 "calc_code_all.y"
1280 	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
1281 #line 1282 "calc_code_all.tab.c"
1282 break;
1283 #line 1284 "calc_code_all.tab.c"
1284     default:
1285         break;
1286     }
1287     yystack.s_mark -= yym;
1288     yystate = *yystack.s_mark;
1289     yystack.l_mark -= yym;
1290 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1291     yystack.p_mark -= yym;
1292 #endif
1293     yym = yylhs[yyn];
1294     if (yystate == 0 && yym == 0)
1295     {
1296 #if YYDEBUG
1297         if (yydebug)
1298         {
1299             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1300 #ifdef YYSTYPE_TOSTRING
1301 #if YYBTYACC
1302             if (!yytrial)
1303 #endif /* YYBTYACC */
1304                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1305 #endif
1306             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1307         }
1308 #endif
1309         yystate = YYFINAL;
1310         *++yystack.s_mark = YYFINAL;
1311         *++yystack.l_mark = yyval;
1312 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1313         *++yystack.p_mark = yyloc;
1314 #endif
1315         if (yychar < 0)
1316         {
1317 #if YYBTYACC
1318             do {
1319             if (yylvp < yylve)
1320             {
1321                 /* we're currently re-reading tokens */
1322                 yylval = *yylvp++;
1323 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1324                 yylloc = *yylpp++;
1325 #endif
1326                 yychar = *yylexp++;
1327                 break;
1328             }
1329             if (yyps->save)
1330             {
1331                 /* in trial mode; save scanner results for future parse attempts */
1332                 if (yylvp == yylvlim)
1333                 {   /* Enlarge lexical value queue */
1334                     size_t p = (size_t) (yylvp - yylvals);
1335                     size_t s = (size_t) (yylvlim - yylvals);
1336 
1337                     s += YYLVQUEUEGROWTH;
1338                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1339                         goto yyenomem;
1340                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1341                         goto yyenomem;
1342 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1343                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1344                         goto yyenomem;
1345 #endif
1346                     yylvp   = yylve = yylvals + p;
1347                     yylvlim = yylvals + s;
1348 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1349                     yylpp   = yylpe = yylpsns + p;
1350                     yylplim = yylpsns + s;
1351 #endif
1352                     yylexp  = yylexemes + p;
1353                 }
1354                 *yylexp = (YYINT) YYLEX;
1355                 *yylvp++ = yylval;
1356                 yylve++;
1357 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1358                 *yylpp++ = yylloc;
1359                 yylpe++;
1360 #endif
1361                 yychar = *yylexp++;
1362                 break;
1363             }
1364             /* normal operation, no conflict encountered */
1365 #endif /* YYBTYACC */
1366             yychar = YYLEX;
1367 #if YYBTYACC
1368             } while (0);
1369 #endif /* YYBTYACC */
1370             if (yychar < 0) yychar = YYEOF;
1371 #if YYDEBUG
1372             if (yydebug)
1373             {
1374                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1375                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1376                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1377             }
1378 #endif
1379         }
1380         if (yychar == YYEOF) goto yyaccept;
1381         goto yyloop;
1382     }
1383     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1384             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1385         yystate = yytable[yyn];
1386     else
1387         yystate = yydgoto[yym];
1388 #if YYDEBUG
1389     if (yydebug)
1390     {
1391         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1392 #ifdef YYSTYPE_TOSTRING
1393 #if YYBTYACC
1394         if (!yytrial)
1395 #endif /* YYBTYACC */
1396             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1397 #endif
1398         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1399     }
1400 #endif
1401     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1402     *++yystack.s_mark = (YYINT) yystate;
1403     *++yystack.l_mark = yyval;
1404 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1405     *++yystack.p_mark = yyloc;
1406 #endif
1407     goto yyloop;
1408 #if YYBTYACC
1409 
1410     /* Reduction declares that this path is valid. Set yypath and do a full parse */
1411 yyvalid:
1412     if (yypath) YYABORT;
1413     while (yyps->save)
1414     {
1415         YYParseState *save = yyps->save;
1416         yyps->save = save->save;
1417         save->save = yypath;
1418         yypath = save;
1419     }
1420 #if YYDEBUG
1421     if (yydebug)
1422         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1423                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1424 #endif
1425     if (yyerrctx)
1426     {
1427         yyFreeState(yyerrctx);
1428         yyerrctx = NULL;
1429     }
1430     yylvp          = yylvals + yypath->lexeme;
1431 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1432     yylpp          = yylpsns + yypath->lexeme;
1433 #endif
1434     yylexp         = yylexemes + yypath->lexeme;
1435     yychar         = YYEMPTY;
1436     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1437     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1438     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1439     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1440 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1441     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1442     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1443 #endif
1444     yystate        = yypath->state;
1445     goto yyloop;
1446 #endif /* YYBTYACC */
1447 
1448 yyoverflow:
1449     YYERROR_CALL("yacc stack overflow");
1450 #if YYBTYACC
1451     goto yyabort_nomem;
1452 yyenomem:
1453     YYERROR_CALL("memory exhausted");
1454 yyabort_nomem:
1455 #endif /* YYBTYACC */
1456     yyresult = 2;
1457     goto yyreturn;
1458 
1459 yyabort:
1460     yyresult = 1;
1461     goto yyreturn;
1462 
1463 yyaccept:
1464 #if YYBTYACC
1465     if (yyps->save) goto yyvalid;
1466 #endif /* YYBTYACC */
1467     yyresult = 0;
1468 
1469 yyreturn:
1470 #if defined(YYDESTRUCT_CALL)
1471     if (yychar != YYEOF && yychar != YYEMPTY)
1472 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1473         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1474 #else
1475         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1476 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1477 
1478     {
1479         YYSTYPE *pv;
1480 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1481         YYLTYPE *pp;
1482 
1483         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1484              YYDESTRUCT_CALL("cleanup: discarding state",
1485                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1486 #else
1487         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1488              YYDESTRUCT_CALL("cleanup: discarding state",
1489                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1490 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1491     }
1492 #endif /* defined(YYDESTRUCT_CALL) */
1493 
1494 #if YYBTYACC
1495     if (yyerrctx)
1496     {
1497         yyFreeState(yyerrctx);
1498         yyerrctx = NULL;
1499     }
1500     while (yyps)
1501     {
1502         YYParseState *save = yyps;
1503         yyps = save->save;
1504         save->save = NULL;
1505         yyFreeState(save);
1506     }
1507     while (yypath)
1508     {
1509         YYParseState *save = yypath;
1510         yypath = save->save;
1511         save->save = NULL;
1512         yyFreeState(save);
1513     }
1514 #endif /* YYBTYACC */
1515     yyfreestack(&yystack);
1516     return (yyresult);
1517 }
1518