1264790Sbapt/* original parser id follows */
2264790Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3264790Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4264790Sbapt
5264790Sbapt#define YYBYACC 1
6264790Sbapt#define YYMAJOR 1
7264790Sbapt#define YYMINOR 9
8264790Sbapt#define YYCHECK "yyyymmdd"
9264790Sbapt
10264790Sbapt#define YYEMPTY        (-1)
11264790Sbapt#define yyclearin      (yychar = YYEMPTY)
12264790Sbapt#define yyerrok        (yyerrflag = 0)
13264790Sbapt#define YYRECOVERING() (yyerrflag != 0)
14264790Sbapt#define YYENOMEM       (-2)
15264790Sbapt#define YYEOF          0
16264790Sbapt
17264790Sbapt#ifndef yyparse
18264790Sbapt#define yyparse    ok_syntax1_parse
19264790Sbapt#endif /* yyparse */
20264790Sbapt
21264790Sbapt#ifndef yylex
22264790Sbapt#define yylex      ok_syntax1_lex
23264790Sbapt#endif /* yylex */
24264790Sbapt
25264790Sbapt#ifndef yyerror
26264790Sbapt#define yyerror    ok_syntax1_error
27264790Sbapt#endif /* yyerror */
28264790Sbapt
29264790Sbapt#ifndef yychar
30264790Sbapt#define yychar     ok_syntax1_char
31264790Sbapt#endif /* yychar */
32264790Sbapt
33264790Sbapt#ifndef yyval
34264790Sbapt#define yyval      ok_syntax1_val
35264790Sbapt#endif /* yyval */
36264790Sbapt
37264790Sbapt#ifndef yylval
38264790Sbapt#define yylval     ok_syntax1_lval
39264790Sbapt#endif /* yylval */
40264790Sbapt
41264790Sbapt#ifndef yydebug
42264790Sbapt#define yydebug    ok_syntax1_debug
43264790Sbapt#endif /* yydebug */
44264790Sbapt
45264790Sbapt#ifndef yynerrs
46264790Sbapt#define yynerrs    ok_syntax1_nerrs
47264790Sbapt#endif /* yynerrs */
48264790Sbapt
49264790Sbapt#ifndef yyerrflag
50264790Sbapt#define yyerrflag  ok_syntax1_errflag
51264790Sbapt#endif /* yyerrflag */
52264790Sbapt
53264790Sbapt#ifndef yylhs
54264790Sbapt#define yylhs      ok_syntax1_lhs
55264790Sbapt#endif /* yylhs */
56264790Sbapt
57264790Sbapt#ifndef yylen
58264790Sbapt#define yylen      ok_syntax1_len
59264790Sbapt#endif /* yylen */
60264790Sbapt
61264790Sbapt#ifndef yydefred
62264790Sbapt#define yydefred   ok_syntax1_defred
63264790Sbapt#endif /* yydefred */
64264790Sbapt
65264790Sbapt#ifndef yydgoto
66264790Sbapt#define yydgoto    ok_syntax1_dgoto
67264790Sbapt#endif /* yydgoto */
68264790Sbapt
69264790Sbapt#ifndef yysindex
70264790Sbapt#define yysindex   ok_syntax1_sindex
71264790Sbapt#endif /* yysindex */
72264790Sbapt
73264790Sbapt#ifndef yyrindex
74264790Sbapt#define yyrindex   ok_syntax1_rindex
75264790Sbapt#endif /* yyrindex */
76264790Sbapt
77264790Sbapt#ifndef yygindex
78264790Sbapt#define yygindex   ok_syntax1_gindex
79264790Sbapt#endif /* yygindex */
80264790Sbapt
81264790Sbapt#ifndef yytable
82264790Sbapt#define yytable    ok_syntax1_table
83264790Sbapt#endif /* yytable */
84264790Sbapt
85264790Sbapt#ifndef yycheck
86264790Sbapt#define yycheck    ok_syntax1_check
87264790Sbapt#endif /* yycheck */
88264790Sbapt
89264790Sbapt#ifndef yyname
90264790Sbapt#define yyname     ok_syntax1_name
91264790Sbapt#endif /* yyname */
92264790Sbapt
93264790Sbapt#ifndef yyrule
94264790Sbapt#define yyrule     ok_syntax1_rule
95264790Sbapt#endif /* yyrule */
96264790Sbapt#define YYPREFIX "ok_syntax1_"
97264790Sbapt
98264790Sbapt#define YYPURE 1
99264790Sbapt
100264790Sbapt#line 9 "ok_syntax1.y"
101264790Sbapt# include <stdio.h>
102264790Sbapt# include <ctype.h>
103264790Sbapt
104264790Sbapt#ifdef YYBISON
105264790Sbapt#define YYSTYPE int
106264790Sbapt#define YYLEX_PARAM base
107264790Sbapt#define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)
108264790Sbapt#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
109264790Sbaptint YYLEX_DECL();
110264790Sbaptstatic void YYERROR_DECL();
111264790Sbapt#endif
112264790Sbapt
113264790Sbapt#line 43 "ok_syntax1.y"
114264790Sbapt#ifdef YYSTYPE
115264790Sbapt#undef  YYSTYPE_IS_DECLARED
116264790Sbapt#define YYSTYPE_IS_DECLARED 1
117264790Sbapt#endif
118264790Sbapt#ifndef YYSTYPE_IS_DECLARED
119264790Sbapt#define YYSTYPE_IS_DECLARED 1
120264790Sbapttypedef union
121264790Sbapt{
122264790Sbapt    char *	cval;
123264790Sbapt    int		ival;
124264790Sbapt    double	dval;
125264790Sbapt} YYSTYPE;
126264790Sbapt#endif /* !YYSTYPE_IS_DECLARED */
127264790Sbapt#line 128 "ok_syntax1.tab.c"
128264790Sbapt
129264790Sbapt/* compatibility with bison */
130264790Sbapt#ifdef YYPARSE_PARAM
131264790Sbapt/* compatibility with FreeBSD */
132264790Sbapt# ifdef YYPARSE_PARAM_TYPE
133264790Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
134264790Sbapt# else
135264790Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
136264790Sbapt# endif
137264790Sbapt#else
138264790Sbapt# define YYPARSE_DECL() yyparse(int  regs[26], int * base)
139264790Sbapt#endif
140264790Sbapt
141264790Sbapt/* Parameters sent to lex. */
142264790Sbapt#ifdef YYLEX_PARAM
143264790Sbapt# ifdef YYLEX_PARAM_TYPE
144264790Sbapt#  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
145264790Sbapt# else
146264790Sbapt#  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
147264790Sbapt# endif
148264790Sbapt# define YYLEX yylex(&yylval, YYLEX_PARAM)
149264790Sbapt#else
150264790Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval, int * base)
151264790Sbapt# define YYLEX yylex(&yylval, base)
152264790Sbapt#endif
153264790Sbapt
154264790Sbapt/* Parameters sent to yyerror. */
155264790Sbapt#ifndef YYERROR_DECL
156264790Sbapt#define YYERROR_DECL() yyerror(int  regs[26], int * base, const char *s)
157264790Sbapt#endif
158264790Sbapt#ifndef YYERROR_CALL
159264790Sbapt#define YYERROR_CALL(msg) yyerror(regs, base, msg)
160264790Sbapt#endif
161264790Sbapt
162264790Sbaptextern int YYPARSE_DECL();
163264790Sbapt
164264790Sbapt#define DIGIT 257
165264790Sbapt#define LETTER 258
166264790Sbapt#define OCT1 259
167264790Sbapt#define HEX1 260
168264790Sbapt#define HEX2 261
169264790Sbapt#define HEX3 262
170264790Sbapt#define STR1 263
171264790Sbapt#define STR2 265
172264790Sbapt#define BELL 266
173264790Sbapt#define BS 267
174264790Sbapt#define NL 268
175264790Sbapt#define LF 269
176264790Sbapt#define CR 270
177264790Sbapt#define TAB 271
178264790Sbapt#define VT 272
179264790Sbapt#define UMINUS 273
180264790Sbapt#define YYERRCODE 256
181264790Sbapttypedef short YYINT;
182264790Sbaptstatic const YYINT ok_syntax1_lhs[] = {                  -1,
183264790Sbapt    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
184264790Sbapt    2,    2,    2,    2,    2,    2,    3,    3,
185264790Sbapt};
186264790Sbaptstatic const YYINT ok_syntax1_len[] = {                   2,
187264790Sbapt    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
188264790Sbapt    3,    3,    3,    2,    1,    1,    1,    2,
189264790Sbapt};
190264790Sbaptstatic const YYINT ok_syntax1_defred[] = {                1,
191264790Sbapt    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
192264790Sbapt    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
193264790Sbapt    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
194264790Sbapt   10,   11,
195264790Sbapt};
196264790Sbaptstatic const YYINT ok_syntax1_dgoto[] = {                 1,
197264790Sbapt    7,    8,    9,
198264790Sbapt};
199264790Sbaptstatic const YYINT ok_syntax1_sindex[] = {                0,
200264790Sbapt  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
201264790Sbapt  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
202264790Sbapt  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
203264790Sbapt    0,    0,
204264790Sbapt};
205264790Sbaptstatic const YYINT ok_syntax1_rindex[] = {                0,
206264790Sbapt    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
207264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
208264790Sbapt    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
209264790Sbapt    0,    0,
210264790Sbapt};
211264790Sbaptstatic const YYINT ok_syntax1_gindex[] = {                0,
212264790Sbapt    0,   65,    0,
213264790Sbapt};
214264790Sbapt#define YYTABLESIZE 220
215264790Sbaptstatic const YYINT ok_syntax1_table[] = {                 6,
216264790Sbapt   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
217264790Sbapt   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
218264790Sbapt    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
219264790Sbapt    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
220264790Sbapt    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
221264790Sbapt    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
222264790Sbapt    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
223264790Sbapt   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
224264790Sbapt   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
225264790Sbapt    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
226264790Sbapt    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
227264790Sbapt    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
228264790Sbapt    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
229264790Sbapt    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
230264790Sbapt    0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
231264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
232264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
233264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
234264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
235264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
236264790Sbapt    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
237264790Sbapt    0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
238264790Sbapt};
239264790Sbaptstatic const YYINT ok_syntax1_check[] = {                40,
240264790Sbapt   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
241264790Sbapt   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
242264790Sbapt   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
243264790Sbapt   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
244264790Sbapt   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
245264790Sbapt   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
246264790Sbapt   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
247264790Sbapt    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
248264790Sbapt   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
249264790Sbapt   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
250264790Sbapt   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
251264790Sbapt   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
252264790Sbapt   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
253264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
254264790Sbapt   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
255264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
256264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
257264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
258264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
259264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
260264790Sbapt   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
261264790Sbapt   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
262264790Sbapt};
263264790Sbapt#define YYFINAL 1
264264790Sbapt#ifndef YYDEBUG
265264790Sbapt#define YYDEBUG 0
266264790Sbapt#endif
267264790Sbapt#define YYMAXTOKEN 273
268264790Sbapt#define YYUNDFTOKEN 279
269264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
270264790Sbapt#if YYDEBUG
271264790Sbaptstatic const char *const ok_syntax1_name[] = {
272264790Sbapt
273264790Sbapt"end-of-file",0,0,0,0,0,0,"'\\a'","'\\b'","'\\t'","'\\n'","'\\v'","'\\f'",
274264790Sbapt"'\\r'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'#'",0,"'%'","'&'",0,"'('",
275264790Sbapt"')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,"'@'",0,0,
276264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,
277264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,"'~'","'\\177'",0,0,0,0,0,0,0,0,0,
278264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
279264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
280264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
281264790Sbapt"'\\377'",0,"DIGIT","LETTER","OCT1","HEX1","HEX2","HEX3","STR1",
282264790Sbapt"\"\\177\\177\\\\\\n\"","STR2","BELL","BS","NL","LF","CR","TAB","VT","UMINUS",0,
283264790Sbapt0,0,0,0,"illegal-symbol",
284264790Sbapt};
285264790Sbaptstatic const char *const ok_syntax1_rule[] = {
286264790Sbapt"$accept : list",
287264790Sbapt"list :",
288264790Sbapt"list : list stat '\\n'",
289264790Sbapt"list : list error '\\n'",
290264790Sbapt"stat : expr",
291264790Sbapt"stat : LETTER '=' expr",
292264790Sbapt"expr : '(' expr ')'",
293264790Sbapt"expr : expr '+' expr",
294264790Sbapt"expr : expr '-' expr",
295264790Sbapt"expr : expr '*' expr",
296264790Sbapt"expr : expr '/' expr",
297264790Sbapt"expr : expr '%' expr",
298264790Sbapt"expr : expr '&' expr",
299264790Sbapt"expr : expr '|' expr",
300264790Sbapt"expr : '-' expr",
301264790Sbapt"expr : LETTER",
302264790Sbapt"expr : number",
303264790Sbapt"number : DIGIT",
304264790Sbapt"number : number DIGIT",
305264790Sbapt
306264790Sbapt};
307264790Sbapt#endif
308264790Sbapt
309264790Sbaptint      yydebug;
310264790Sbaptint      yynerrs;
311264790Sbapt
312264790Sbapt/* define the initial stack-sizes */
313264790Sbapt#ifdef YYSTACKSIZE
314264790Sbapt#undef YYMAXDEPTH
315264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
316264790Sbapt#else
317264790Sbapt#ifdef YYMAXDEPTH
318264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
319264790Sbapt#else
320264790Sbapt#define YYSTACKSIZE 10000
321264790Sbapt#define YYMAXDEPTH  10000
322264790Sbapt#endif
323264790Sbapt#endif
324264790Sbapt
325264790Sbapt#define YYINITSTACKSIZE 200
326264790Sbapt
327264790Sbapttypedef struct {
328264790Sbapt    unsigned stacksize;
329264790Sbapt    YYINT    *s_base;
330264790Sbapt    YYINT    *s_mark;
331264790Sbapt    YYINT    *s_last;
332264790Sbapt    YYSTYPE  *l_base;
333264790Sbapt    YYSTYPE  *l_mark;
334264790Sbapt} YYSTACKDATA;
335264790Sbapt#line 104 "ok_syntax1.y"
336264790Sbapt /* start of programs */
337264790Sbapt
338264790Sbapt#ifdef YYBYACC
339264790Sbaptextern int YYLEX_DECL();
340264790Sbapt#endif
341264790Sbapt
342264790Sbaptint
343264790Sbaptmain (void)
344264790Sbapt{
345264790Sbapt    int regs[26];
346264790Sbapt    int base = 10;
347264790Sbapt
348264790Sbapt    while(!feof(stdin)) {
349264790Sbapt	yyparse(regs, &base);
350264790Sbapt    }
351264790Sbapt    return 0;
352264790Sbapt}
353264790Sbapt
354264790Sbapt#define UNUSED(x) ((void)(x))
355264790Sbapt
356264790Sbaptstatic void
357264790SbaptYYERROR_DECL()
358264790Sbapt{
359264790Sbapt    UNUSED(regs); /* %parse-param regs is not actually used here */
360264790Sbapt    UNUSED(base); /* %parse-param base is not actually used here */
361264790Sbapt    fprintf(stderr, "%s\n", s);
362264790Sbapt}
363264790Sbapt
364264790Sbaptint
365264790SbaptYYLEX_DECL()
366264790Sbapt{
367264790Sbapt	/* lexical analysis routine */
368264790Sbapt	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
369264790Sbapt	/* return DIGIT for a digit, yylval = 0 through 9 */
370264790Sbapt	/* all other characters are returned immediately */
371264790Sbapt
372264790Sbapt    int c;
373264790Sbapt
374264790Sbapt    while( (c=getchar()) == ' ' )   { /* skip blanks */ }
375264790Sbapt
376264790Sbapt    /* c is now nonblank */
377264790Sbapt
378264790Sbapt    if( islower( c )) {
379264790Sbapt	yylval->ival = (c - 'a');
380264790Sbapt	return ( LETTER );
381264790Sbapt    }
382264790Sbapt    if( isdigit( c )) {
383264790Sbapt	yylval->ival = (c - '0') % (*base);
384264790Sbapt	return ( DIGIT );
385264790Sbapt    }
386264790Sbapt    return( c );
387264790Sbapt}
388264790Sbapt#line 389 "ok_syntax1.tab.c"
389264790Sbapt
390264790Sbapt#if YYDEBUG
391264790Sbapt#include <stdio.h>		/* needed for printf */
392264790Sbapt#endif
393264790Sbapt
394264790Sbapt#include <stdlib.h>	/* needed for malloc, etc */
395264790Sbapt#include <string.h>	/* needed for memset */
396264790Sbapt
397264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
398264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
399264790Sbapt{
400264790Sbapt    int i;
401264790Sbapt    unsigned newsize;
402264790Sbapt    YYINT *newss;
403264790Sbapt    YYSTYPE *newvs;
404264790Sbapt
405264790Sbapt    if ((newsize = data->stacksize) == 0)
406264790Sbapt        newsize = YYINITSTACKSIZE;
407264790Sbapt    else if (newsize >= YYMAXDEPTH)
408264790Sbapt        return YYENOMEM;
409264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
410264790Sbapt        newsize = YYMAXDEPTH;
411264790Sbapt
412264790Sbapt    i = (int) (data->s_mark - data->s_base);
413264790Sbapt    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
414264790Sbapt    if (newss == 0)
415264790Sbapt        return YYENOMEM;
416264790Sbapt
417264790Sbapt    data->s_base = newss;
418264790Sbapt    data->s_mark = newss + i;
419264790Sbapt
420264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
421264790Sbapt    if (newvs == 0)
422264790Sbapt        return YYENOMEM;
423264790Sbapt
424264790Sbapt    data->l_base = newvs;
425264790Sbapt    data->l_mark = newvs + i;
426264790Sbapt
427264790Sbapt    data->stacksize = newsize;
428264790Sbapt    data->s_last = data->s_base + newsize - 1;
429264790Sbapt    return 0;
430264790Sbapt}
431264790Sbapt
432264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
433264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
434264790Sbapt{
435264790Sbapt    free(data->s_base);
436264790Sbapt    free(data->l_base);
437264790Sbapt    memset(data, 0, sizeof(*data));
438264790Sbapt}
439264790Sbapt#else
440264790Sbapt#define yyfreestack(data) /* nothing */
441264790Sbapt#endif
442264790Sbapt
443264790Sbapt#define YYABORT  goto yyabort
444264790Sbapt#define YYREJECT goto yyabort
445264790Sbapt#define YYACCEPT goto yyaccept
446264790Sbapt#define YYERROR  goto yyerrlab
447264790Sbapt
448264790Sbaptint
449264790SbaptYYPARSE_DECL()
450264790Sbapt{
451264790Sbapt    int      yyerrflag;
452264790Sbapt    int      yychar;
453264790Sbapt    YYSTYPE  yyval;
454264790Sbapt    YYSTYPE  yylval;
455264790Sbapt
456264790Sbapt    /* variables for the parser stack */
457264790Sbapt    YYSTACKDATA yystack;
458264790Sbapt    int yym, yyn, yystate;
459264790Sbapt#if YYDEBUG
460264790Sbapt    const char *yys;
461264790Sbapt
462264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
463264790Sbapt    {
464264790Sbapt        yyn = *yys;
465264790Sbapt        if (yyn >= '0' && yyn <= '9')
466264790Sbapt            yydebug = yyn - '0';
467264790Sbapt    }
468264790Sbapt#endif
469264790Sbapt
470264790Sbapt    yynerrs = 0;
471264790Sbapt    yyerrflag = 0;
472264790Sbapt    yychar = YYEMPTY;
473264790Sbapt    yystate = 0;
474264790Sbapt
475264790Sbapt#if YYPURE
476264790Sbapt    memset(&yystack, 0, sizeof(yystack));
477264790Sbapt#endif
478264790Sbapt
479264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
480264790Sbapt    yystack.s_mark = yystack.s_base;
481264790Sbapt    yystack.l_mark = yystack.l_base;
482264790Sbapt    yystate = 0;
483264790Sbapt    *yystack.s_mark = 0;
484264790Sbapt
485264790Sbaptyyloop:
486264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
487264790Sbapt    if (yychar < 0)
488264790Sbapt    {
489264790Sbapt        if ((yychar = YYLEX) < 0) yychar = YYEOF;
490264790Sbapt#if YYDEBUG
491264790Sbapt        if (yydebug)
492264790Sbapt        {
493264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
494264790Sbapt            printf("%sdebug: state %d, reading %d (%s)\n",
495264790Sbapt                    YYPREFIX, yystate, yychar, yys);
496264790Sbapt        }
497264790Sbapt#endif
498264790Sbapt    }
499264790Sbapt    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
500264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
501264790Sbapt    {
502264790Sbapt#if YYDEBUG
503264790Sbapt        if (yydebug)
504264790Sbapt            printf("%sdebug: state %d, shifting to state %d\n",
505264790Sbapt                    YYPREFIX, yystate, yytable[yyn]);
506264790Sbapt#endif
507264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
508264790Sbapt        {
509264790Sbapt            goto yyoverflow;
510264790Sbapt        }
511264790Sbapt        yystate = yytable[yyn];
512264790Sbapt        *++yystack.s_mark = yytable[yyn];
513264790Sbapt        *++yystack.l_mark = yylval;
514264790Sbapt        yychar = YYEMPTY;
515264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
516264790Sbapt        goto yyloop;
517264790Sbapt    }
518264790Sbapt    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
519264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
520264790Sbapt    {
521264790Sbapt        yyn = yytable[yyn];
522264790Sbapt        goto yyreduce;
523264790Sbapt    }
524264790Sbapt    if (yyerrflag) goto yyinrecovery;
525264790Sbapt
526264790Sbapt    YYERROR_CALL("syntax error");
527264790Sbapt
528264790Sbapt    goto yyerrlab;
529264790Sbapt
530264790Sbaptyyerrlab:
531264790Sbapt    ++yynerrs;
532264790Sbapt
533264790Sbaptyyinrecovery:
534264790Sbapt    if (yyerrflag < 3)
535264790Sbapt    {
536264790Sbapt        yyerrflag = 3;
537264790Sbapt        for (;;)
538264790Sbapt        {
539264790Sbapt            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
540264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
541264790Sbapt            {
542264790Sbapt#if YYDEBUG
543264790Sbapt                if (yydebug)
544264790Sbapt                    printf("%sdebug: state %d, error recovery shifting\
545264790Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
546264790Sbapt#endif
547264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
548264790Sbapt                {
549264790Sbapt                    goto yyoverflow;
550264790Sbapt                }
551264790Sbapt                yystate = yytable[yyn];
552264790Sbapt                *++yystack.s_mark = yytable[yyn];
553264790Sbapt                *++yystack.l_mark = yylval;
554264790Sbapt                goto yyloop;
555264790Sbapt            }
556264790Sbapt            else
557264790Sbapt            {
558264790Sbapt#if YYDEBUG
559264790Sbapt                if (yydebug)
560264790Sbapt                    printf("%sdebug: error recovery discarding state %d\n",
561264790Sbapt                            YYPREFIX, *yystack.s_mark);
562264790Sbapt#endif
563264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
564264790Sbapt                --yystack.s_mark;
565264790Sbapt                --yystack.l_mark;
566264790Sbapt            }
567264790Sbapt        }
568264790Sbapt    }
569264790Sbapt    else
570264790Sbapt    {
571264790Sbapt        if (yychar == YYEOF) goto yyabort;
572264790Sbapt#if YYDEBUG
573264790Sbapt        if (yydebug)
574264790Sbapt        {
575264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
576264790Sbapt            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
577264790Sbapt                    YYPREFIX, yystate, yychar, yys);
578264790Sbapt        }
579264790Sbapt#endif
580264790Sbapt        yychar = YYEMPTY;
581264790Sbapt        goto yyloop;
582264790Sbapt    }
583264790Sbapt
584264790Sbaptyyreduce:
585264790Sbapt#if YYDEBUG
586264790Sbapt    if (yydebug)
587264790Sbapt        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
588264790Sbapt                YYPREFIX, yystate, yyn, yyrule[yyn]);
589264790Sbapt#endif
590264790Sbapt    yym = yylen[yyn];
591264790Sbapt    if (yym)
592264790Sbapt        yyval = yystack.l_mark[1-yym];
593264790Sbapt    else
594264790Sbapt        memset(&yyval, 0, sizeof yyval);
595264790Sbapt    switch (yyn)
596264790Sbapt    {
597264790Sbaptcase 3:
598264790Sbapt#line 66 "ok_syntax1.y"
599264790Sbapt	{  yyerrok ; }
600264790Sbaptbreak;
601264790Sbaptcase 4:
602264790Sbapt#line 70 "ok_syntax1.y"
603264790Sbapt	{  printf("%d\n",yystack.l_mark[0].ival);}
604264790Sbaptbreak;
605264790Sbaptcase 5:
606264790Sbapt#line 72 "ok_syntax1.y"
607264790Sbapt	{  regs[yystack.l_mark[-2].ival] = yystack.l_mark[0].ival; }
608264790Sbaptbreak;
609264790Sbaptcase 6:
610264790Sbapt#line 76 "ok_syntax1.y"
611264790Sbapt	{  yyval.ival = yystack.l_mark[-1].ival; }
612264790Sbaptbreak;
613264790Sbaptcase 7:
614264790Sbapt#line 78 "ok_syntax1.y"
615264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival + yystack.l_mark[0].ival; }
616264790Sbaptbreak;
617264790Sbaptcase 8:
618264790Sbapt#line 80 "ok_syntax1.y"
619264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival - yystack.l_mark[0].ival; }
620264790Sbaptbreak;
621264790Sbaptcase 9:
622264790Sbapt#line 82 "ok_syntax1.y"
623264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival * yystack.l_mark[0].ival; }
624264790Sbaptbreak;
625264790Sbaptcase 10:
626264790Sbapt#line 84 "ok_syntax1.y"
627264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival / yystack.l_mark[0].ival; }
628264790Sbaptbreak;
629264790Sbaptcase 11:
630264790Sbapt#line 86 "ok_syntax1.y"
631264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival % yystack.l_mark[0].ival; }
632264790Sbaptbreak;
633264790Sbaptcase 12:
634264790Sbapt#line 88 "ok_syntax1.y"
635264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival & yystack.l_mark[0].ival; }
636264790Sbaptbreak;
637264790Sbaptcase 13:
638264790Sbapt#line 90 "ok_syntax1.y"
639264790Sbapt	{  yyval.ival = yystack.l_mark[-2].ival | yystack.l_mark[0].ival; }
640264790Sbaptbreak;
641264790Sbaptcase 14:
642264790Sbapt#line 92 "ok_syntax1.y"
643264790Sbapt	{  yyval.ival = - yystack.l_mark[0].ival; }
644264790Sbaptbreak;
645264790Sbaptcase 15:
646264790Sbapt#line 94 "ok_syntax1.y"
647264790Sbapt	{  yyval.ival = regs[yystack.l_mark[0].ival]; }
648264790Sbaptbreak;
649264790Sbaptcase 17:
650264790Sbapt#line 99 "ok_syntax1.y"
651264790Sbapt	{  yyval.ival = yystack.l_mark[0].ival; (*base) = (yystack.l_mark[0].ival==0) ? 8 : 10; }
652264790Sbaptbreak;
653264790Sbaptcase 18:
654264790Sbapt#line 101 "ok_syntax1.y"
655264790Sbapt	{  yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; }
656264790Sbaptbreak;
657264790Sbapt#line 658 "ok_syntax1.tab.c"
658264790Sbapt    }
659264790Sbapt    yystack.s_mark -= yym;
660264790Sbapt    yystate = *yystack.s_mark;
661264790Sbapt    yystack.l_mark -= yym;
662264790Sbapt    yym = yylhs[yyn];
663264790Sbapt    if (yystate == 0 && yym == 0)
664264790Sbapt    {
665264790Sbapt#if YYDEBUG
666264790Sbapt        if (yydebug)
667264790Sbapt            printf("%sdebug: after reduction, shifting from state 0 to\
668264790Sbapt state %d\n", YYPREFIX, YYFINAL);
669264790Sbapt#endif
670264790Sbapt        yystate = YYFINAL;
671264790Sbapt        *++yystack.s_mark = YYFINAL;
672264790Sbapt        *++yystack.l_mark = yyval;
673264790Sbapt        if (yychar < 0)
674264790Sbapt        {
675264790Sbapt            if ((yychar = YYLEX) < 0) yychar = YYEOF;
676264790Sbapt#if YYDEBUG
677264790Sbapt            if (yydebug)
678264790Sbapt            {
679264790Sbapt                yys = yyname[YYTRANSLATE(yychar)];
680264790Sbapt                printf("%sdebug: state %d, reading %d (%s)\n",
681264790Sbapt                        YYPREFIX, YYFINAL, yychar, yys);
682264790Sbapt            }
683264790Sbapt#endif
684264790Sbapt        }
685264790Sbapt        if (yychar == YYEOF) goto yyaccept;
686264790Sbapt        goto yyloop;
687264790Sbapt    }
688264790Sbapt    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
689264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
690264790Sbapt        yystate = yytable[yyn];
691264790Sbapt    else
692264790Sbapt        yystate = yydgoto[yym];
693264790Sbapt#if YYDEBUG
694264790Sbapt    if (yydebug)
695264790Sbapt        printf("%sdebug: after reduction, shifting from state %d \
696264790Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate);
697264790Sbapt#endif
698264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
699264790Sbapt    {
700264790Sbapt        goto yyoverflow;
701264790Sbapt    }
702264790Sbapt    *++yystack.s_mark = (YYINT) yystate;
703264790Sbapt    *++yystack.l_mark = yyval;
704264790Sbapt    goto yyloop;
705264790Sbapt
706264790Sbaptyyoverflow:
707264790Sbapt    YYERROR_CALL("yacc stack overflow");
708264790Sbapt
709264790Sbaptyyabort:
710264790Sbapt    yyfreestack(&yystack);
711264790Sbapt    return (1);
712264790Sbapt
713264790Sbaptyyaccept:
714264790Sbapt    yyfreestack(&yystack);
715264790Sbapt    return (0);
716264790Sbapt}
717