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