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