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