xref: /netbsd-src/external/bsd/byacc/dist/test/btyacc/expr.oxout.tab.c (revision 2f62cc9c12bc202c40224f32c879f81443fee079)
1 /*	$NetBSD: expr.oxout.tab.c,v 1.5 2021/02/20 22:57:57 christos Exp $	*/
2 
3 /* original parser id follows */
4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
6 
7 #define YYBYACC 1
8 #define YYMAJOR 2
9 #define YYMINOR 0
10 #define YYCHECK "yyyymmdd"
11 
12 #define YYEMPTY        (-1)
13 #define yyclearin      (yychar = YYEMPTY)
14 #define yyerrok        (yyerrflag = 0)
15 #define YYRECOVERING() (yyerrflag != 0)
16 #define YYENOMEM       (-2)
17 #define YYEOF          0
18 #undef YYBTYACC
19 #define YYBTYACC 0
20 #define YYDEBUGSTR YYPREFIX "debug"
21 
22 #ifndef yyparse
23 #define yyparse    expr.oxout_parse
24 #endif /* yyparse */
25 
26 #ifndef yylex
27 #define yylex      expr.oxout_lex
28 #endif /* yylex */
29 
30 #ifndef yyerror
31 #define yyerror    expr.oxout_error
32 #endif /* yyerror */
33 
34 #ifndef yychar
35 #define yychar     expr.oxout_char
36 #endif /* yychar */
37 
38 #ifndef yyval
39 #define yyval      expr.oxout_val
40 #endif /* yyval */
41 
42 #ifndef yylval
43 #define yylval     expr.oxout_lval
44 #endif /* yylval */
45 
46 #ifndef yydebug
47 #define yydebug    expr.oxout_debug
48 #endif /* yydebug */
49 
50 #ifndef yynerrs
51 #define yynerrs    expr.oxout_nerrs
52 #endif /* yynerrs */
53 
54 #ifndef yyerrflag
55 #define yyerrflag  expr.oxout_errflag
56 #endif /* yyerrflag */
57 
58 #ifndef yylhs
59 #define yylhs      expr.oxout_lhs
60 #endif /* yylhs */
61 
62 #ifndef yylen
63 #define yylen      expr.oxout_len
64 #endif /* yylen */
65 
66 #ifndef yydefred
67 #define yydefred   expr.oxout_defred
68 #endif /* yydefred */
69 
70 #ifndef yystos
71 #define yystos     expr.oxout_stos
72 #endif /* yystos */
73 
74 #ifndef yydgoto
75 #define yydgoto    expr.oxout_dgoto
76 #endif /* yydgoto */
77 
78 #ifndef yysindex
79 #define yysindex   expr.oxout_sindex
80 #endif /* yysindex */
81 
82 #ifndef yyrindex
83 #define yyrindex   expr.oxout_rindex
84 #endif /* yyrindex */
85 
86 #ifndef yygindex
87 #define yygindex   expr.oxout_gindex
88 #endif /* yygindex */
89 
90 #ifndef yytable
91 #define yytable    expr.oxout_table
92 #endif /* yytable */
93 
94 #ifndef yycheck
95 #define yycheck    expr.oxout_check
96 #endif /* yycheck */
97 
98 #ifndef yyname
99 #define yyname     expr.oxout_name
100 #endif /* yyname */
101 
102 #ifndef yyrule
103 #define yyrule     expr.oxout_rule
104 #endif /* yyrule */
105 
106 #if YYBTYACC
107 
108 #ifndef yycindex
109 #define yycindex   expr.oxout_cindex
110 #endif /* yycindex */
111 
112 #ifndef yyctable
113 #define yyctable   expr.oxout_ctable
114 #endif /* yyctable */
115 
116 #endif /* YYBTYACC */
117 
118 #define YYPREFIX "expr.oxout_"
119 
120 #define YYPURE 0
121 
122 #line 5 "expr.oxout.y"
123 #include <stdlib.h>
124 #include <string.h>
125 #line 8 "expr.Y"
126 
127 #include "expr.oxout.h"
128 #include <stdio.h>
129 
130 extern int yylex(void);
131 extern void yyerror(const char *);
132 #line 27 "expr.oxout.y"
133 #include <limits.h>
134 #define yyyR USHRT_MAX
135 #ifdef YYSTYPE
136 #undef  YYSTYPE_IS_DECLARED
137 #define YYSTYPE_IS_DECLARED 1
138 #endif
139 #ifndef YYSTYPE_IS_DECLARED
140 #define YYSTYPE_IS_DECLARED 1
141 #line 31 "expr.oxout.y"
142 typedef union {
143 struct yyyOxAttrbs {
144 struct yyyStackItem *yyyOxStackItem;
145 } yyyOxAttrbs;
146 } YYSTYPE;
147 #endif /* !YYSTYPE_IS_DECLARED */
148 #line 38 "expr.oxout.y"
149 #include <stdio.h>
150 #include <stdarg.h>
151 
152 static int yyyYok = 1;
153 
154 extern yyyFT yyyRCIL[];
155 
156 void yyyExecuteRRsection(yyyGNT *rootNode);
157 void yyyYoxInit(void);
158 void yyyDecorate(void);
159 struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */
160 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
161 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
162 void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum);
163 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode);
164 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode);
165 void yyyabort(void);
166 
167 #line 166 "expr.oxout.tab.c"
168 
169 /* compatibility with bison */
170 #ifdef YYPARSE_PARAM
171 /* compatibility with FreeBSD */
172 # ifdef YYPARSE_PARAM_TYPE
173 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
174 # else
175 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
176 # endif
177 #else
178 # define YYPARSE_DECL() yyparse(void)
179 #endif
180 
181 /* Parameters sent to lex. */
182 #ifdef YYLEX_PARAM
183 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
184 # define YYLEX yylex(YYLEX_PARAM)
185 #else
186 # define YYLEX_DECL() yylex(void)
187 # define YYLEX yylex()
188 #endif
189 
190 /* Parameters sent to yyerror. */
191 #ifndef YYERROR_DECL
192 #define YYERROR_DECL() yyerror(const char *s)
193 #endif
194 #ifndef YYERROR_CALL
195 #define YYERROR_CALL(msg) yyerror(msg)
196 #endif
197 
198 extern int YYPARSE_DECL();
199 
200 #define ID 257
201 #define CONST 258
202 #define YYERRCODE 256
203 typedef short YYINT;
204 static const YYINT expr.oxout_lhs[] = {                  -1,
205     2,    0,    1,    3,    3,    3,    3,    3,    3,    3,
206 };
207 static const YYINT expr.oxout_len[] = {                   2,
208     0,    2,    1,    3,    3,    3,    3,    3,    1,    1,
209 };
210 static const YYINT expr.oxout_defred[] = {                1,
211     0,    0,    9,   10,    0,    2,    0,    0,    0,    0,
212     0,    0,    8,    0,    0,    4,    0,
213 };
214 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
215 static const YYINT expr.oxout_stos[] = {                  0,
216   260,  262,  257,  258,   40,  261,  263,  263,   43,   45,
217    42,   47,   41,  263,  263,  263,  263,
218 };
219 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
220 static const YYINT expr.oxout_dgoto[] = {                 1,
221     6,    2,    7,
222 };
223 static const YYINT expr.oxout_sindex[] = {                0,
224     0,  -40,    0,    0,  -40,    0,  -18,  -24,  -40,  -40,
225   -40,  -40,    0,  -37,  -37,    0,  -39,
226 };
227 static const YYINT expr.oxout_rindex[] = {                0,
228     0,    0,    0,    0,    0,    0,    6,    0,    0,    0,
229     0,    0,    0,    2,    8,    0,    1,
230 };
231 #if YYBTYACC
232 static const YYINT expr.oxout_cindex[] = {                0,
233     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
234     0,    0,    0,    0,    0,    0,    0,
235 };
236 #endif
237 static const YYINT expr.oxout_gindex[] = {                0,
238     0,    0,    4,
239 };
240 #define YYTABLESIZE 218
241 static const YYINT expr.oxout_table[] = {                 5,
242     6,    5,   11,    0,   11,    3,    0,    7,    8,   12,
243     0,    0,   14,   15,   16,   17,   13,   11,    9,    0,
244    10,    0,   12,   11,    9,    0,   10,    0,   12,    0,
245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
246     0,    6,    5,    6,    5,    6,    5,    6,    7,    0,
247     7,    0,    7,    0,    0,    0,    0,    0,    0,    0,
248     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
249     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
250     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
251     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
252     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
253     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
254     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
256     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
257     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
258     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
259     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
260     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
261     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
262     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
263     0,    0,    0,    0,    0,    0,    3,    4,
264 };
265 static const YYINT expr.oxout_check[] = {                40,
266     0,    0,   42,   -1,   42,    0,   -1,    0,    5,   47,
267    -1,   -1,    9,   10,   11,   12,   41,   42,   43,   -1,
268    45,   -1,   47,   42,   43,   -1,   45,   -1,   47,   -1,
269    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
270    -1,   41,   41,   43,   43,   45,   45,   47,   41,   -1,
271    43,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
272    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
273    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
274    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
275    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
276    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
277    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
278    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
279    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
280    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
281    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
282    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
283    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
284    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
285    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
286    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
287    -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
288 };
289 #if YYBTYACC
290 static const YYINT expr.oxout_ctable[] = {               -1,
291    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
292    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
293    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
294    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
295    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
296    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
297    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
298    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
299    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
300    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
301    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
302    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
303    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
304    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
305    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
307    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
308    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
309    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
310    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
311    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
312    -1,   -1,   -1,   -1,   -1,   -1,   -1,
313 };
314 #endif
315 #define YYFINAL 1
316 #ifndef YYDEBUG
317 #define YYDEBUG 0
318 #endif
319 #define YYMAXTOKEN 258
320 #define YYUNDFTOKEN 264
321 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
322 #if YYDEBUG
323 static const char *const expr.oxout_name[] = {
324 
325 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
326 0,0,0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
327 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
328 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
329 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
330 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
331 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","ID",
332 "CONST","$accept","yyyAugNonterm","s","$$1","expr","illegal-symbol",
333 };
334 static const char *const expr.oxout_rule[] = {
335 "$accept : yyyAugNonterm",
336 "$$1 :",
337 "yyyAugNonterm : $$1 s",
338 "s : expr",
339 "expr : expr '*' expr",
340 "expr : expr '+' expr",
341 "expr : expr '/' expr",
342 "expr : expr '-' expr",
343 "expr : '(' expr ')'",
344 "expr : ID",
345 "expr : CONST",
346 
347 };
348 #endif
349 
350 #if YYDEBUG
351 int      yydebug;
352 #endif
353 
354 int      yyerrflag;
355 int      yychar;
356 YYSTYPE  yyval;
357 YYSTYPE  yylval;
358 int      yynerrs;
359 
360 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
361 YYLTYPE  yyloc; /* position returned by actions */
362 YYLTYPE  yylloc; /* position from the lexer */
363 #endif
364 
365 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
366 #ifndef YYLLOC_DEFAULT
367 #define YYLLOC_DEFAULT(loc, rhs, n) \
368 do \
369 { \
370     if (n == 0) \
371     { \
372         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
373         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
374         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
375         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
376     } \
377     else \
378     { \
379         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
380         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
381         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
382         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
383     } \
384 } while (0)
385 #endif /* YYLLOC_DEFAULT */
386 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
387 #if YYBTYACC
388 
389 #ifndef YYLVQUEUEGROWTH
390 #define YYLVQUEUEGROWTH 32
391 #endif
392 #endif /* YYBTYACC */
393 
394 /* define the initial stack-sizes */
395 #ifdef YYSTACKSIZE
396 #undef YYMAXDEPTH
397 #define YYMAXDEPTH  YYSTACKSIZE
398 #else
399 #ifdef YYMAXDEPTH
400 #define YYSTACKSIZE YYMAXDEPTH
401 #else
402 #define YYSTACKSIZE 10000
403 #define YYMAXDEPTH  10000
404 #endif
405 #endif
406 
407 #ifndef YYINITSTACKSIZE
408 #define YYINITSTACKSIZE 200
409 #endif
410 
411 typedef struct {
412     unsigned stacksize;
413     YYINT    *s_base;
414     YYINT    *s_mark;
415     YYINT    *s_last;
416     YYSTYPE  *l_base;
417     YYSTYPE  *l_mark;
418 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
419     YYLTYPE  *p_base;
420     YYLTYPE  *p_mark;
421 #endif
422 } YYSTACKDATA;
423 #if YYBTYACC
424 
425 struct YYParseState_s
426 {
427     struct YYParseState_s *save;    /* Previously saved parser state */
428     YYSTACKDATA            yystack; /* saved parser stack */
429     int                    state;   /* saved parser state */
430     int                    errflag; /* saved error recovery status */
431     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
432     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
433 };
434 typedef struct YYParseState_s YYParseState;
435 #endif /* YYBTYACC */
436 /* variables for the parser stack */
437 static YYSTACKDATA yystack;
438 #if YYBTYACC
439 
440 /* Current parser state */
441 static YYParseState *yyps = 0;
442 
443 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
444 static YYParseState *yypath = 0;
445 
446 /* Base of the lexical value queue */
447 static YYSTYPE *yylvals = 0;
448 
449 /* Current position at lexical value queue */
450 static YYSTYPE *yylvp = 0;
451 
452 /* End position of lexical value queue */
453 static YYSTYPE *yylve = 0;
454 
455 /* The last allocated position at the lexical value queue */
456 static YYSTYPE *yylvlim = 0;
457 
458 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
459 /* Base of the lexical position queue */
460 static YYLTYPE *yylpsns = 0;
461 
462 /* Current position at lexical position queue */
463 static YYLTYPE *yylpp = 0;
464 
465 /* End position of lexical position queue */
466 static YYLTYPE *yylpe = 0;
467 
468 /* The last allocated position at the lexical position queue */
469 static YYLTYPE *yylplim = 0;
470 #endif
471 
472 /* Current position at lexical token queue */
473 static YYINT  *yylexp = 0;
474 
475 static YYINT  *yylexemes = 0;
476 #endif /* YYBTYACC */
477 #line 53 "expr.Y"
478 
479 
480 int yyparse(void);
481 
482 int main()
483   {yyparse();
484   }
485 
486 
487 
488 #line 138 "expr.oxout.y"
489 long yyySSALspaceSize =    20000;
490 long yyyRSmaxSize =        1000;
491 long yyyTravStackMaxSize = 2000;
492 
493 struct yyySolvedSAlistCell {yyyWAT attrbNum;
494                             long next;
495                            };
496 
497 #define yyyLambdaSSAL 0
498 long yyySSALCfreeList = yyyLambdaSSAL;
499 long yyyNewSSALC = 1;
500 
501 struct yyySolvedSAlistCell *yyySSALspace;
502 
503 long yyyNbytesStackStg;
504 
505 
506 
507 yyyFT yyyRCIL[1];
508 
509 short yyyIIIEL[] = {0,
510 0,2,6,10,14,18,22,24,
511 };
512 
513 long yyyIIEL[] = {
514 0,0,0,0,0,0,0,0,0,0,0,0,
515 0,0,0,0,0,0,0,0,0,0,0,0,
516 1,1,
517 };
518 
519 long yyyIEL[] = {
520 0,0,0,
521 };
522 
523 yyyFT yyyEntL[1];
524 
525 void yyyfatal(char *msg)
526 {fputs(msg,stderr);exit(-1);}
527 
528 
529 
530 #define yyySSALof 'S'
531 #define yyyRSof   'q'
532 #define yyyTSof   't'
533 
534 
535 
536 void yyyHandleOverflow(char which)
537   {char *msg1,*msg2;
538    long  oldSize,newSize;
539    switch(which)
540      {
541       case yyySSALof :
542            msg1 = "SSAL overflow: ";
543            oldSize = yyySSALspaceSize;
544            break;
545       case yyyRSof   :
546            msg1 = "ready set overflow: ";
547            oldSize = yyyRSmaxSize;
548            break;
549       case yyyTSof   :
550            msg1 = "traversal stack overflow: ";
551            oldSize = yyyTravStackMaxSize;
552            break;
553       default        :;
554      }
555    newSize = (3*oldSize)/2;
556    if (newSize < 100) newSize = 100;
557    fputs(msg1,stderr);
558    fprintf(stderr,"size was %ld.\n",oldSize);
559    msg2 = "     Have to modify evaluator:  -Y%c%ld.\n";
560    fprintf(stderr,msg2,which,newSize);
561    exit(-1);
562   }
563 
564 
565 
566 void yyySignalEnts(yyyGNT *node,long startP,long stopP)
567   {yyyGNT *dumNode;
568 
569    while (startP < stopP)
570      {
571       if (!yyyEntL[startP]) dumNode = node;
572          else dumNode = (node->cL)[yyyEntL[startP]-1];
573       if (!(--((dumNode->refCountList)[yyyEntL[startP+1]]
574               )
575            )
576          )
577          {
578           if (++yyyRSTop == yyyAfterRS)
579              {yyyHandleOverflow(yyyRSof);
580               break;
581              }
582           yyyRSTop->node = dumNode;
583           yyyRSTop->whichSym = yyyEntL[startP];
584           yyyRSTop->wa = yyyEntL[startP+1];
585          }
586       startP += 2;
587      }
588   }
589 
590 
591 
592 
593 
594 
595 void yyySolveAndSignal() {
596 long yyyiDum,*yyypL;
597 int yyyws,yyywa;
598 yyyGNT *yyyRSTopN,*yyyRefN;
599 yyyParent yyyRSTopNp;
600 
601 
602 yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent;
603 yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN;
604 yyywa = yyyRSTop->wa;
605 yyyRSTop--;
606 switch(yyyRefN->prodNum) {
607 case 1:  /***yacc rule 1***/
608   switch (yyyws) {
609   }
610 break;
611 case 2:  /***yacc rule 2***/
612   switch (yyyws) {
613   }
614 break;
615 case 3:  /***yacc rule 3***/
616   switch (yyyws) {
617   }
618 break;
619 case 4:  /***yacc rule 4***/
620   switch (yyyws) {
621   }
622 break;
623 case 5:  /***yacc rule 5***/
624   switch (yyyws) {
625   }
626 break;
627 case 6:  /***yacc rule 6***/
628   switch (yyyws) {
629   }
630 break;
631 case 7:  /***yacc rule 7***/
632   switch (yyyws) {
633   case 1:  /**/
634     switch (yyywa) {
635     }
636   break;
637   }
638 break;
639 case 8:  /***yacc rule 8***/
640   switch (yyyws) {
641   case 1:  /**/
642     switch (yyywa) {
643     }
644   break;
645   }
646 break;
647 } /* switch */
648 
649 if (yyyws)  /* the just-solved instance was inherited. */
650    {if (yyyRSTopN->prodNum)
651        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa;
652         yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum],
653                                 yyyIEL[yyyiDum+1]
654                      );
655        }
656    }
657    else     /* the just-solved instance was synthesized. */
658    {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */
659        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] +
660                           yyyRSTopN->whichSym
661                          ] +
662                   yyywa;
663         yyySignalEnts(yyyRSTopNp.noderef,
664                       yyyIEL[yyyiDum],
665                       yyyIEL[yyyiDum+1]
666                      );
667        }
668        else   /* node is still on the stack--it has no parent yet. */
669        {yyypL = &(yyyRSTopNp.stackref->solvedSAlist);
670         if (yyySSALCfreeList == yyyLambdaSSAL)
671            {yyySSALspace[yyyNewSSALC].next = *yyypL;
672             if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize)
673                yyyHandleOverflow(yyySSALof);
674            }
675            else
676            {yyyiDum = yyySSALCfreeList;
677             yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
678             yyySSALspace[yyyiDum].next = *yyypL;
679             *yyypL = yyyiDum;
680            }
681         yyySSALspace[*yyypL].attrbNum = yyywa;
682        }
683    }
684 
685 } /* yyySolveAndSignal */
686 
687 
688 
689 
690 
691 
692 #define condStg unsigned int conds;
693 #define yyyClearConds {yyyTST->conds = 0;}
694 #define yyySetCond(n) {yyyTST->conds += (1<<(n));}
695 #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0)
696 
697 
698 
699 struct yyyTravStackItem {yyyGNT *node;
700                          char isReady;
701                          condStg
702                         };
703 
704 
705 
706 void yyyDoTraversals(yyyGNT *rootNode)
707 {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack;
708  yyyGNT *yyyTSTn,**yyyCLptr2;
709  int yyyi,yyyRL,yyyPass;
710  int i;
711 
712  if (!yyyYok) return;
713  if ((yyyTravStack =
714                  ((struct yyyTravStackItem *)
715                   calloc((size_t)yyyTravStackMaxSize,
716                          (size_t)sizeof(struct yyyTravStackItem)
717                         )
718                  )
719      )
720      ==
721      (struct yyyTravStackItem *)NULL
722     )
723     {fputs("malloc error in traversal stack allocation\n",stderr);
724      exit(-1);
725     }
726 
727 yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize;
728 yyyTravStack++;
729 
730 
731 for (yyyi=0; yyyi<2; yyyi++) {
732 yyyTST = yyyTravStack;
733 yyyTST->node = rootNode;
734 yyyTST->isReady = 0;
735 yyyClearConds
736 
737 while(yyyTST >= yyyTravStack)
738   {yyyTSTn = yyyTST->node;
739    if (yyyTST->isReady)
740       {yyyPass = 1;
741        goto yyyTravSwitch;
742 yyyTpop:
743        yyyTST--;
744       }
745       else
746       {yyyPass = 0;
747        goto yyyTravSwitch;
748 yyyTpush:
749        yyyTST->isReady = 1;
750        if (yyyTSTn->prodNum)
751           {if (yyyRL)
752              {yyyCLptr2 = yyyTSTn->cL;
753               i = yyyTSTn->cLlen;
754               while (i--)
755                 {if (++yyyTST == yyyAfterTravStack)
756                     yyyHandleOverflow(yyyTSof);
757                     else
758                     {yyyTST->node = *yyyCLptr2;
759                      yyyTST->isReady = 0;
760                      yyyClearConds
761                     }
762                  yyyCLptr2++;
763                 }
764              } /* right to left */
765              else  /* left to right */
766              {i = yyyTSTn->cLlen;
767               yyyCLptr2 = yyyTSTn->cL + i;
768               while (i--)
769                 {yyyCLptr2--;
770                  if (++yyyTST == yyyAfterTravStack)
771                     yyyHandleOverflow(yyyTSof);
772                     else
773                     {yyyTST->node = *yyyCLptr2;
774                      yyyTST->isReady = 0;
775                      yyyClearConds
776                     }
777                 }
778              } /* left to right */
779           }
780       } /* else */
781    continue;
782 yyyTravSwitch:
783 				switch(yyyTSTn->prodNum)	{
784 case 1:
785 	switch(yyyi)	{
786 		case 0:
787 			switch(yyyPass)	{
788 				case 0:
789 yyyRL = 0;yyySetCond(0)
790 
791 if (!
792 #line 24 "expr.Y"
793   (1)
794 #line 444 "expr.oxout.y"
795 ) yyySetCond(1)
796 yyySetCond(2)
797 
798 				case 1:
799 
800 if (yyyCond(0) != yyyPass) {
801 #line 24 "expr.Y"
802 
803 #line 453 "expr.oxout.y"
804 }
805 if (yyyCond(1) != yyyPass) {
806 #line 24 "expr.Y"
807  printf("\n");
808 
809 #line 459 "expr.oxout.y"
810 }
811 if (yyyCond(2) != yyyPass) {
812 #line 25 "expr.Y"
813   printf("prefix:   ");
814 
815 #line 465 "expr.oxout.y"
816 }
817 				break;
818 					}
819 		break;
820 		case 1:
821 			switch(yyyPass)	{
822 				case 0:
823 yyyRL = 0;
824 if (
825 #line 23 "expr.Y"
826   (1)
827 #line 477 "expr.oxout.y"
828 ) yyySetCond(2)
829 
830 				case 1:
831 
832 if (yyyCond(0) != yyyPass) {
833 #line 22 "expr.Y"
834  printf("\n");
835 
836 #line 486 "expr.oxout.y"
837 }
838 if (yyyCond(1) != yyyPass) {
839 #line 23 "expr.Y"
840 
841 #line 491 "expr.oxout.y"
842 }
843 if (yyyCond(2) != yyyPass) {
844 #line 23 "expr.Y"
845  printf("postfix:  ")/* missing ; */
846 
847 #line 497 "expr.oxout.y"
848 }
849 				break;
850 					}
851 		break;
852 			}
853 
854 break;
855 case 2:
856 	switch(yyyi)	{
857 		case 0:
858 			switch(yyyPass)	{
859 				case 0:
860 yyyRL = 0;yyySetCond(0)
861 
862 				case 1:
863 
864 if (yyyCond(0) != yyyPass) {
865 #line 29 "expr.Y"
866   printf(" * ");
867 
868 #line 518 "expr.oxout.y"
869 }
870 				break;
871 					}
872 		break;
873 		case 1:
874 			switch(yyyPass)	{
875 				case 0:
876 yyyRL = 0;
877 				case 1:
878 
879 if (yyyCond(0) != yyyPass) {
880 #line 28 "expr.Y"
881  printf(" * ");
882 
883 #line 533 "expr.oxout.y"
884 }
885 				break;
886 					}
887 		break;
888 			}
889 
890 break;
891 case 3:
892 	switch(yyyi)	{
893 		case 0:
894 			switch(yyyPass)	{
895 				case 0:
896 yyyRL = 0;yyySetCond(0)
897 
898 				case 1:
899 
900 if (yyyCond(0) != yyyPass) {
901 #line 32 "expr.Y"
902   printf(" + ");
903 
904 #line 554 "expr.oxout.y"
905 }
906 				break;
907 					}
908 		break;
909 		case 1:
910 			switch(yyyPass)	{
911 				case 0:
912 yyyRL = 0;
913 				case 1:
914 
915 if (yyyCond(0) != yyyPass) {
916 #line 33 "expr.Y"
917  printf(" + ");
918 
919 #line 569 "expr.oxout.y"
920 }
921 				break;
922 					}
923 		break;
924 			}
925 
926 break;
927 case 4:
928 	switch(yyyi)	{
929 		case 0:
930 			switch(yyyPass)	{
931 				case 0:
932 yyyRL = 0;yyySetCond(0)
933 
934 				case 1:
935 
936 if (yyyCond(0) != yyyPass) {
937 #line 37 "expr.Y"
938   printf(" / ");
939 
940 #line 590 "expr.oxout.y"
941 }
942 				break;
943 					}
944 		break;
945 		case 1:
946 			switch(yyyPass)	{
947 				case 0:
948 yyyRL = 0;
949 				case 1:
950 
951 if (yyyCond(0) != yyyPass) {
952 #line 36 "expr.Y"
953  printf(" / ");
954 
955 #line 605 "expr.oxout.y"
956 }
957 				break;
958 					}
959 		break;
960 			}
961 
962 break;
963 case 5:
964 	switch(yyyi)	{
965 		case 0:
966 			switch(yyyPass)	{
967 				case 0:
968 yyyRL = 0;yyySetCond(0)
969 
970 				case 1:
971 
972 if (yyyCond(0) != yyyPass) {
973 #line 41 "expr.Y"
974   printf(" - ");
975 
976 #line 626 "expr.oxout.y"
977 }
978 				break;
979 					}
980 		break;
981 		case 1:
982 			switch(yyyPass)	{
983 				case 0:
984 yyyRL = 0;
985 				case 1:
986 
987 if (yyyCond(0) != yyyPass) {
988 #line 40 "expr.Y"
989  printf(" - ");
990 
991 #line 641 "expr.oxout.y"
992 }
993 				break;
994 					}
995 		break;
996 			}
997 
998 break;
999 case 6:
1000 	switch(yyyi)	{
1001 		case 0:
1002 			switch(yyyPass)	{
1003 				case 0:
1004 yyyRL = 0;
1005 				case 1:
1006 
1007 				break;
1008 					}
1009 		break;
1010 		case 1:
1011 			switch(yyyPass)	{
1012 				case 0:
1013 yyyRL = 0;
1014 				case 1:
1015 
1016 				break;
1017 					}
1018 		break;
1019 			}
1020 
1021 break;
1022 case 7:
1023 	switch(yyyi)	{
1024 		case 0:
1025 			switch(yyyPass)	{
1026 				case 0:
1027 yyyRL = 0;yyySetCond(0)
1028 
1029 				case 1:
1030 
1031 if (yyyCond(0) != yyyPass) {
1032 #line 46 "expr.Y"
1033   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
1034 
1035 #line 685 "expr.oxout.y"
1036 }
1037 				break;
1038 					}
1039 		break;
1040 		case 1:
1041 			switch(yyyPass)	{
1042 				case 0:
1043 yyyRL = 0;
1044 				case 1:
1045 
1046 if (yyyCond(0) != yyyPass) {
1047 #line 45 "expr.Y"
1048  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
1049 
1050 #line 700 "expr.oxout.y"
1051 }
1052 				break;
1053 					}
1054 		break;
1055 			}
1056 
1057 break;
1058 case 8:
1059 	switch(yyyi)	{
1060 		case 0:
1061 			switch(yyyPass)	{
1062 				case 0:
1063 yyyRL = 0;yyySetCond(0)
1064 
1065 				case 1:
1066 
1067 if (yyyCond(0) != yyyPass) {
1068 #line 50 "expr.Y"
1069   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
1070 
1071 #line 721 "expr.oxout.y"
1072 }
1073 				break;
1074 					}
1075 		break;
1076 		case 1:
1077 			switch(yyyPass)	{
1078 				case 0:
1079 yyyRL = 0;
1080 				case 1:
1081 
1082 if (yyyCond(0) != yyyPass) {
1083 #line 49 "expr.Y"
1084  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
1085 
1086 #line 736 "expr.oxout.y"
1087 }
1088 				break;
1089 					}
1090 		break;
1091 			}
1092 
1093 break;
1094 								} /* switch */
1095    if (yyyPass) goto yyyTpop; else goto yyyTpush;
1096   } /* while */
1097  } /* for */
1098 } /* yyyDoTraversals */
1099 
1100 void yyyExecuteRRsection(yyyGNT *rootNode)  {
1101    int yyyi;
1102    long cycleSum = 0;
1103    long nNZrc = 0;
1104 
1105    if (!yyyYok) return;
1106    yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum);
1107    if (nNZrc)
1108       {
1109        fputs("\n\n\n**********\n",stderr);
1110        fputs("cycle detected in completed parse tree",stderr);
1111        fputs(" after decoration.\n",stderr);
1112 #if CYCLE_VERBOSE
1113        fprintf(stderr,
1114                "number of unsolved attribute instances == %ld.\n",
1115                nNZrc
1116               );
1117        fprintf(stderr,
1118                "total number of remaining dependencies == %ld.\n",
1119                cycleSum
1120               );
1121        fputs("average number of remaining dependencies\n",stderr);
1122        fprintf(stderr,"  per unsolved instance == %f.\n",
1123                ((float)(cycleSum)/(float)(nNZrc))
1124               );
1125 #endif
1126        fprintf(stderr,
1127          "searching parse tree for %ld unsolved instances:\n",
1128                nNZrc
1129               );
1130        yyyUnsolvedInstSearchTravAux(rootNode);
1131       }
1132    yyyDoTraversals(rootNode);
1133 } /* yyyExecuteRRsection */
1134 
1135 
1136 
1137 yyyWAT yyyLRCIL[2] = {0,0,
1138 };
1139 
1140 
1141 
1142 void yyyYoxInit(void)
1143   {
1144    static int yyyInitDone = 0;
1145    if (yyyInitDone) return;
1146 
1147    if ((yyyRS = (struct yyyRSitem *)
1148          calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem))
1149        )
1150        ==
1151        ((struct yyyRSitem *) NULL)
1152       )
1153       yyyfatal("malloc error in ox ready set space allocation\n");
1154    yyyRS++;
1155    yyyAfterRS = yyyRS + yyyRSmaxSize;
1156 
1157 
1158    if ((yyySSALspace = (struct yyySolvedSAlistCell *)
1159           calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell))
1160        )
1161        ==
1162        ((struct yyySolvedSAlistCell *) NULL)
1163       )
1164       yyyfatal("malloc error in stack solved list space allocation\n");
1165    yyyInitDone = 1;
1166 
1167    yyyRSTop = yyyRS - 1;
1168   } /* yyyYoxInit */
1169 
1170 
1171 
1172 void yyyDecorate(void)
1173   {
1174    while (yyyRSTop >= yyyRS)
1175       yyySolveAndSignal();
1176   }
1177 
1178 
1179 
1180 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
1181   {yyyWST i;
1182    yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem;
1183    yyyGNT *gnpDum;
1184    va_list ap;
1185 
1186    *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT));
1187    if (*yyyOxStackItem == (yyySIT *) NULL)
1188       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
1189    (*yyyOxStackItem)->node =
1190                                 (yyyGNT *) malloc((size_t)sizeof(yyyGNT));
1191    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
1192       yyyfatal("malloc error in ox node space allocation\n");
1193    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
1194    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
1195    (*yyyOxStackItem)->node->parentIsStack = 1;
1196    (*yyyOxStackItem)->node->cLlen  = yyyRHSlength;
1197    (*yyyOxStackItem)->node->cL =
1198             (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *));
1199    if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL)
1200       yyyfatal("malloc error in ox child list space allocation\n");
1201    (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs;
1202    (*yyyOxStackItem)->node->refCountList =
1203             (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT));
1204    if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL)
1205       yyyfatal("malloc error in ox reference count list space allocation\n");
1206    (*yyyOxStackItem)->node->prodNum = yyyProdNum;
1207    va_start(ap, yyval_OxAttrbs);
1208    for (i=1;i<=yyyRHSlength;i++)
1209      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
1210       gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node;
1211       gnpDum->whichSym = i;
1212       gnpDum->parent.noderef = (*yyyOxStackItem)->node;
1213       gnpDum->parentIsStack = 0;
1214      }
1215    va_end(ap);
1216   }
1217 
1218 
1219 
1220 #define yyyDECORfREQ 50
1221 
1222 
1223 
1224 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
1225   {yyyWST i;
1226    yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem;
1227    long SSALptr,SSALptrHead,*cPtrPtr;
1228    long *pL;
1229    yyyGNT *gnpDum;
1230    long iTemp;
1231    long nextP;
1232    static unsigned short intNodeCount = yyyDECORfREQ;
1233    va_list ap;
1234 
1235    nextP = startP;
1236    while (nextP < stopP)
1237      {if (yyyRCIL[nextP] == yyyR)
1238          {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
1239          }
1240          else
1241          {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
1242          }
1243       nextP += 3;
1244      }
1245    pL = yyyIIEL + yyyIIIEL[yyyProdNum];
1246    va_start(ap, yyval_OxAttrbs);
1247    for (i=1;i<=yyyRHSlength;i++)
1248      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
1249       pL++;
1250       SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist));
1251       if (SSALptr != yyyLambdaSSAL)
1252          {*cPtrPtr = yyyLambdaSSAL;
1253           do
1254             {
1255              iTemp = (*pL+yyySSALspace[SSALptr].attrbNum);
1256              yyySignalEnts(yyyOxStackItem->node,
1257                            yyyIEL[iTemp],
1258                            yyyIEL[iTemp+1]
1259                           );
1260              SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next));
1261             }
1262             while (SSALptr != yyyLambdaSSAL);
1263           *cPtrPtr = yyySSALCfreeList;
1264           yyySSALCfreeList = SSALptrHead;
1265          }
1266      }
1267    va_end(ap);
1268    nextP = startP + 2;
1269    while (nextP < stopP)
1270      {if (!yyyRCIL[nextP])
1271          {if (yyyRCIL[nextP-2] == yyyR)
1272              {pL = &(yyyOxStackItem->solvedSAlist);
1273               if (yyySSALCfreeList == yyyLambdaSSAL)
1274                  {yyySSALspace[yyyNewSSALC].next = *pL;
1275                   if ((*pL = yyyNewSSALC++) == yyySSALspaceSize)
1276                      yyyHandleOverflow(yyySSALof);
1277                  }
1278                  else
1279                  {iTemp = yyySSALCfreeList;
1280                   yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
1281                   yyySSALspace[iTemp].next = *pL;
1282                   *pL = iTemp;
1283                  }
1284               yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1];
1285              }
1286              else
1287              {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0)
1288                  {
1289                   iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1];
1290                   yyySignalEnts(gnpDum,
1291                                 yyyIEL[iTemp],
1292                                 yyyIEL[iTemp+1]
1293                                );
1294                  }
1295              }
1296          }
1297       nextP += 3;
1298      }
1299    if (!--intNodeCount)
1300       {intNodeCount = yyyDECORfREQ;
1301        yyyDecorate();
1302       }
1303   }
1304 
1305 
1306 
1307 void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval)
1308   {yyyRCT *rcPdum;
1309    yyySIT **yyyOxStackItem = &yylval->yyyOxAttrbs.yyyOxStackItem;
1310    (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT));
1311    if ((*yyyOxStackItem) == (yyySIT *) NULL)
1312       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
1313    (*yyyOxStackItem)->node =
1314                           (yyyGNT *) malloc((size_t)sizeof(yyyGNT))
1315                          ;
1316    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
1317       yyyfatal("malloc error in ox node space allocation\n");
1318    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
1319    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
1320    (*yyyOxStackItem)->node->parentIsStack = 1;
1321    (*yyyOxStackItem)->node->cLlen = 0;
1322    (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL;
1323    (*yyyOxStackItem)->node->refCountListLen = nAttrbs;
1324    rcPdum = (*yyyOxStackItem)->node->refCountList =
1325             (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT));
1326    if (rcPdum == (yyyRCT *) NULL)
1327       yyyfatal("malloc error in ox reference count list space allocation\n");
1328    while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0;
1329    (*yyyOxStackItem)->node->prodNum = 0;
1330    (*yyyOxStackItem)->node->whichSym = 0;
1331   }
1332 
1333 
1334 
1335 void yyyabort(void)
1336   {yyyYok = 0;
1337   }
1338 
1339 
1340 
1341 
1342 
1343 #define yyyLastProdNum 8
1344 
1345 
1346 #define yyyNsorts 1
1347 
1348 
1349 int yyyProdsInd[] = {
1350    0,
1351    0,   2,   6,  10,  14,  18,  22,  24,
1352   26,
1353 };
1354 
1355 
1356 int yyyProds[][2] = {
1357 { 116,   0},{ 462,   0},{ 462,   0},{ 462,   0},{ 412,   0},
1358 { 462,   0},{ 462,   0},{ 462,   0},{ 420,   0},{ 462,   0},
1359 { 462,   0},{ 462,   0},{ 452,   0},{ 462,   0},{ 462,   0},
1360 { 462,   0},{ 436,   0},{ 462,   0},{ 462,   0},{ 396,   0},
1361 { 462,   0},{ 404,   0},{ 462,   0},{ 619,   1},{ 462,   0},
1362 { 567,   1},
1363 };
1364 
1365 
1366 int yyySortsInd[] = {
1367   0,
1368   0,
1369   1,
1370 };
1371 
1372 
1373 int yyySorts[] = {
1374   413,
1375 };
1376 
1377 
1378 
1379 char *yyyStringTab[] = {
1380 0,0,0,0,0,
1381 0,0,0,0,0,
1382 0,0,0,0,0,
1383 0,0,0,0,0,
1384 0,0,0,0,0,
1385 0,0,0,0,0,
1386 0,0,0,0,0,
1387 0,0,0,0,0,
1388 0,0,0,0,0,
1389 0,0,0,0,0,
1390 0,0,0,0,0,
1391 0,0,0,0,0,
1392 0,0,0,0,0,
1393 0,0,0,0,0,
1394 0,0,0,0,0,
1395 0,0,0,0,0,
1396 0,0,0,0,0,
1397 0,0,0,0,0,
1398 0,0,0,0,0,
1399 0,0,0,0,0,
1400 0,0,0,0,0,
1401 0,0,0,0,0,
1402 0,0,0,0,0,
1403 0,"s",0,0,0,
1404 0,0,"y",0,0,
1405 0,0,0,0,0,
1406 0,0,0,0,0,
1407 0,0,0,0,0,
1408 0,0,0,0,0,
1409 0,0,0,0,0,
1410 0,0,0,0,0,
1411 0,0,0,0,0,
1412 0,0,0,0,0,
1413 0,0,0,0,0,
1414 0,0,0,0,0,
1415 0,0,0,0,0,
1416 0,0,0,0,0,
1417 0,0,0,0,0,
1418 0,0,0,0,0,
1419 0,0,0,0,0,
1420 0,0,0,0,0,
1421 0,0,0,0,0,
1422 0,0,0,0,0,
1423 0,0,0,0,0,
1424 0,0,0,0,0,
1425 0,0,0,0,0,
1426 0,0,0,0,0,
1427 0,0,0,0,0,
1428 0,0,0,0,0,
1429 0,0,0,0,0,
1430 0,0,0,0,0,
1431 0,0,0,0,0,
1432 0,0,0,0,0,
1433 0,0,0,0,0,
1434 0,0,0,0,0,
1435 0,0,0,0,0,
1436 0,0,0,0,0,
1437 0,0,0,0,0,
1438 0,0,0,0,0,
1439 0,0,0,0,0,
1440 0,0,0,0,0,
1441 0,0,0,0,0,
1442 0,0,0,0,0,
1443 0,0,0,0,0,
1444 0,0,0,0,0,
1445 0,"LRpre",0,0,0,
1446 0,0,0,0,0,
1447 0,0,0,0,0,
1448 0,0,0,0,0,
1449 0,0,0,0,0,
1450 0,0,0,0,0,
1451 0,0,0,0,0,
1452 0,0,0,0,0,
1453 0,0,0,0,0,
1454 0,0,0,0,0,
1455 0,0,0,0,0,
1456 0,0,0,0,0,
1457 0,0,0,0,0,
1458 0,0,0,0,0,
1459 0,"'('",0,0,0,
1460 0,0,0,0,"')'",
1461 0,0,0,0,0,
1462 0,0,"'*'","lexeme",0,
1463 0,0,0,0,0,
1464 "'+'",0,0,0,0,
1465 0,0,0,0,0,
1466 0,0,0,0,0,
1467 0,"'-'",0,0,0,
1468 0,0,0,0,0,
1469 0,0,0,0,0,
1470 0,0,"'/'",0,0,
1471 0,0,0,0,0,
1472 0,0,"expr",0,0,
1473 0,0,0,0,0,
1474 0,0,0,0,0,
1475 0,"printf",0,0,0,
1476 0,0,0,0,0,
1477 0,0,0,0,0,
1478 0,0,0,0,0,
1479 0,0,0,0,0,
1480 0,0,0,0,0,
1481 0,0,0,0,0,
1482 0,0,0,0,0,
1483 0,0,0,0,0,
1484 0,0,0,0,0,
1485 0,0,0,0,0,
1486 0,0,0,0,0,
1487 0,0,0,0,0,
1488 0,0,0,0,0,
1489 0,0,0,0,0,
1490 0,0,0,0,0,
1491 0,0,0,0,0,
1492 0,0,0,0,0,
1493 0,0,"CONST","LRpost",0,
1494 0,0,0,0,0,
1495 0,0,0,0,0,
1496 0,0,0,0,0,
1497 0,0,0,0,0,
1498 0,0,0,0,0,
1499 0,0,0,0,0,
1500 0,0,0,0,0,
1501 0,0,0,0,0,
1502 0,0,0,0,0,
1503 0,0,0,0,"ID",
1504 0,0,0,0,0,
1505 0,0,0,0,0,
1506 0,0,0,0,0,
1507 0,0,0,0,0,
1508 0,0,0,0,0,
1509 0,0,0,0,0,
1510 0,0,0,0,0,
1511 0,0,0,0,0,
1512 0,0,0,0,0,
1513 0,0,0,0,0,
1514 0,0,0,0,0,
1515 0,0,0,0,0,
1516 0,0,0,0,0,
1517 0,0,0,0,0,
1518 0,0,0,0,0,
1519 0,0,0,0,0,
1520 0,0,0,0,0,
1521 0,0,0,0,0,
1522 0,0,0,0,0,
1523 0,0,0,0,0,
1524 0,0,0,0,0,
1525 0,0,0,0,0,
1526 0,0,0,0,0,
1527 0,0,0,0,0,
1528 0,0,0,0,0,
1529 0,0,0,0,0,
1530 0,0,0,0,0,
1531 0,0,0,0,0,
1532 0,0,0,0,0,
1533 0,0,0,0,0,
1534 0,0,0,0,0,
1535 0,0,0,0,0,
1536 0,0,0,0,0,
1537 0,0,0,0,0,
1538 0,0,0,0,0,
1539 0,0,0,0,0,
1540 0,0,0,0,0,
1541 0,0,0,0,0,
1542 0,0,0,0,0,
1543 0,0,0,0,0,
1544 0,0,0,0,0,
1545 0,0,0,0,0,
1546 0,0,0,0,0,
1547 0,0,0,0,0,
1548 0,0,0,0,0,
1549 0,0,0,0,0,
1550 0,0,0,0,0,
1551 0,0,0,0,0,
1552 0,0,0,0,0,
1553 0,0,0,0,0,
1554 0,0,0,0,0,
1555 0,0,0,0,0,
1556 0,0,0,0,0,
1557 0,0,0,0,0,
1558 0,0,0,0,0,
1559 0,0,0,0,0,
1560 0,0,0,0,0,
1561 0,0,0,0,0,
1562 0,0,0,0,0,
1563 0,0,0,0,0,
1564 0,0,0,0,0,
1565 0,0,0,0,0,
1566 0,0,0,0,0,
1567 0,0,0,0,0,
1568 0,0,0,0,0,
1569 0,0,0,0,0,
1570 0,0,0,0,0,
1571 0,0,0,0,0,
1572 0,0,0,0,0,
1573 0,0,0,0,0,
1574 0,0,0,0,0,
1575 0,0,0,0,0,
1576 0,0,0,0,0,
1577 0,0,0,0,0,
1578 0,0,0,0,0,
1579 0,0,0,0,0,
1580 0,0,0,0,0,
1581 0,0,0,0,0,
1582 0,0,0,0,0,
1583 0,0,0,0,0,
1584 0,0,0,0,0,
1585 0,0,0,0,0,
1586 0,0,0,0,0,
1587 0,0,0,0,0,
1588 0,0,0,0,0,
1589 0,0,0,0,0,
1590 0,0,0,0,0,
1591 0,0,0,0,0,
1592 0,0,0,0,0,
1593 0,0,0,0,0,
1594 0,0,0,0,0,
1595 0,0,0,0,0,
1596 0,0,0,0,0,
1597 0,0,0,0,0,
1598 0,0,0,0,0,
1599 0,0,0,0,0,
1600 0,0,0,0,0,
1601 0,0,0,0,0,
1602 0,0,0,0,0,
1603 0,0,0,0,0,
1604 0,0,0,0,0,
1605 0,0,0,0,0,
1606 0,0,0,0,0,
1607 0,0,0,0,0,
1608 0,0,0,0,0,
1609 0,0,0,0,0,
1610 0,0,0,0,0,
1611 0,0,0,0,0,
1612 0,0,0,0,0,
1613 0,0,0,0,0,
1614 0,0,0,0,0,
1615 0,0,0,0,0,
1616 0,0,0,0,0,
1617 0,0,0,0,0,
1618 0,0,0,0,0,
1619 0,0,0,0,0,
1620 0,0,0,0,0,
1621 0,0,0,0,0,
1622 0,0,0,0,0,
1623 0,0,0,0,0,
1624 0,0,0,0,0,
1625 0,0,0,0,0,
1626 0,
1627 };
1628 
1629 
1630 
1631 #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)])
1632 
1633 #define yyyGSoccurStr(prodNum,symPos) \
1634    (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]])
1635 
1636 #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)])
1637 
1638 #define yyySortOf(prodNum,symPos) \
1639   (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1])
1640 
1641 #define yyyAttrbStr(prodNum,symPos,attrbNum)                      \
1642   (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \
1643                          (attrbNum)                               \
1644                         ]                                         \
1645                ]                                                  \
1646   )
1647 
1648 
1649 
1650 void yyyShowProd(int i)
1651   {int j,nSyms;
1652 
1653    nSyms = yyySizeofProd(i);
1654    for (j=0; j<nSyms; j++)
1655      {
1656       fprintf(stderr,"%s",yyyGSoccurStr(i,j));
1657       if (j == 0) fputs(" : ",stderr); else putc(' ',stderr);
1658      }
1659    fputs(";\n",stderr);
1660   }
1661 
1662 
1663 
1664 void yyyShowProds()
1665   {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);}
1666 
1667 
1668 
1669 void yyyShowSymsAndSorts()
1670   {int i;
1671 
1672    for (i=1; i<=yyyLastProdNum; i++)
1673      {int j, nSyms;
1674 
1675       fprintf(stderr,
1676               "\n\n\n---------------------------------- %3.1d\n",i);
1677       /* yyyShowProd(i); */
1678       nSyms = yyySizeofProd(i);
1679       for (j=0; j<nSyms; j++)
1680         {int k, sortSize;
1681 
1682          fprintf(stderr,"%s\n",yyyGSoccurStr(i,j));
1683          sortSize = yyySizeofSort(yyySortOf(i,j));
1684          for (k=0; k<sortSize; k++)
1685             fprintf(stderr,"  %s\n",yyyAttrbStr(i,j,k));
1686          if (j == 0) fputs("->\n",stderr);
1687               else
1688               putc('\n',stderr);
1689         }
1690      }
1691   }
1692 
1693 
1694 
1695 void yyyCheckNodeInstancesSolved(yyyGNT *np)
1696   {int mysort,sortSize,i,prodNum,symPos,inTerminalNode;
1697    int nUnsolvedInsts = 0;
1698 
1699    if (np->prodNum != 0)
1700      {inTerminalNode = 0;
1701       prodNum = np->prodNum;
1702       symPos = 0;
1703      }
1704    else
1705      {inTerminalNode = 1;
1706       prodNum = np->parent.noderef->prodNum;
1707       symPos = np->whichSym;
1708      }
1709    mysort = yyySortOf(prodNum,symPos);
1710    sortSize = yyySizeofSort(mysort);
1711    for (i=0; i<sortSize; i++)
1712      if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1;
1713    if (nUnsolvedInsts)
1714      {fprintf(stderr,
1715       "\nFound node that has %d unsolved attribute instance(s).\n",
1716               nUnsolvedInsts
1717              );
1718       fprintf(stderr,"Node is labeled \"%s\".\n",
1719              yyyGSoccurStr(prodNum,symPos));
1720       if (inTerminalNode)
1721         {fputs("Node is terminal.  Its parent production is:\n  ",stderr);
1722          yyyShowProd(prodNum);
1723         }
1724       else
1725         {fputs("Node is nonterminal.  ",stderr);
1726          if (!(np->parentIsStack))
1727            {fprintf(stderr,
1728                     "Node is %dth child in its parent production:\n  ",
1729                    np->whichSym
1730                   );
1731             yyyShowProd(np->parent.noderef->prodNum);
1732            }
1733          fputs("Node is on left hand side of this production:\n  ",stderr);
1734          yyyShowProd(np->prodNum);
1735         }
1736       fputs("The following instances are unsolved:\n",stderr);
1737       for (i=0; i<sortSize; i++)
1738         if ((np->refCountList)[i] != 0)
1739           fprintf(stderr,"     %-16s still has %1d dependencies.\n",
1740                   yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]);
1741      }
1742   }
1743 
1744 
1745 
1746 void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum)
1747   {yyyGNT **yyyCLpdum;
1748    yyyRCT *rcp;
1749    int i;
1750 
1751    /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */
1752    rcp = pNode->refCountList;
1753    i = pNode->refCountListLen;
1754    while (i--)
1755       if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;}
1756    yyyCLpdum = pNode->cL;
1757    i = pNode->cLlen;
1758    while (i--)
1759      {
1760       yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum);
1761       yyyCLpdum++;
1762      }
1763   }
1764 
1765 
1766 
1767 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode)
1768   {yyyGNT **yyyCLpdum;
1769    int i;
1770 
1771    yyyCheckNodeInstancesSolved(pNode);
1772    yyyCLpdum = pNode->cL;
1773    i = pNode->cLlen;
1774    while (i--)
1775      {
1776       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1777       yyyCLpdum++;
1778      }
1779   }
1780 
1781 
1782 
1783 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode)
1784   {yyyGNT **yyyCLpdum;
1785    int i;
1786 
1787    yyyCLpdum = pNode->cL;
1788    i = pNode->cLlen;
1789    while (i--)
1790      {
1791       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1792       yyyCLpdum++;
1793      }
1794   }
1795 
1796 
1797 
1798 #line 1797 "expr.oxout.tab.c"
1799 
1800 /* For use in generated program */
1801 #define yydepth (int)(yystack.s_mark - yystack.s_base)
1802 #if YYBTYACC
1803 #define yytrial (yyps->save)
1804 #endif /* YYBTYACC */
1805 
1806 #if YYDEBUG
1807 #include <stdio.h>	/* needed for printf */
1808 #endif
1809 
1810 #include <stdlib.h>	/* needed for malloc, etc */
1811 #include <string.h>	/* needed for memset */
1812 
1813 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
1814 static int yygrowstack(YYSTACKDATA *data)
1815 {
1816     int i;
1817     unsigned newsize;
1818     YYINT *newss;
1819     YYSTYPE *newvs;
1820 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1821     YYLTYPE *newps;
1822 #endif
1823 
1824     if ((newsize = data->stacksize) == 0)
1825         newsize = YYINITSTACKSIZE;
1826     else if (newsize >= YYMAXDEPTH)
1827         return YYENOMEM;
1828     else if ((newsize *= 2) > YYMAXDEPTH)
1829         newsize = YYMAXDEPTH;
1830 
1831     i = (int) (data->s_mark - data->s_base);
1832     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
1833     if (newss == 0)
1834         return YYENOMEM;
1835 
1836     data->s_base = newss;
1837     data->s_mark = newss + i;
1838 
1839     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1840     if (newvs == 0)
1841         return YYENOMEM;
1842 
1843     data->l_base = newvs;
1844     data->l_mark = newvs + i;
1845 
1846 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1847     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
1848     if (newps == 0)
1849         return YYENOMEM;
1850 
1851     data->p_base = newps;
1852     data->p_mark = newps + i;
1853 #endif
1854 
1855     data->stacksize = newsize;
1856     data->s_last = data->s_base + newsize - 1;
1857 
1858 #if YYDEBUG
1859     if (yydebug)
1860         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
1861 #endif
1862     return 0;
1863 }
1864 
1865 #if YYPURE || defined(YY_NO_LEAKS)
1866 static void yyfreestack(YYSTACKDATA *data)
1867 {
1868     free(data->s_base);
1869     free(data->l_base);
1870 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1871     free(data->p_base);
1872 #endif
1873     memset(data, 0, sizeof(*data));
1874 }
1875 #else
1876 #define yyfreestack(data) /* nothing */
1877 #endif /* YYPURE || defined(YY_NO_LEAKS) */
1878 #if YYBTYACC
1879 
1880 static YYParseState *
1881 yyNewState(unsigned size)
1882 {
1883     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
1884     if (p == NULL) return NULL;
1885 
1886     p->yystack.stacksize = size;
1887     if (size == 0)
1888     {
1889         p->yystack.s_base = NULL;
1890         p->yystack.l_base = NULL;
1891 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1892         p->yystack.p_base = NULL;
1893 #endif
1894         return p;
1895     }
1896     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
1897     if (p->yystack.s_base == NULL) return NULL;
1898     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
1899     if (p->yystack.l_base == NULL) return NULL;
1900     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
1901 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1902     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
1903     if (p->yystack.p_base == NULL) return NULL;
1904     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
1905 #endif
1906 
1907     return p;
1908 }
1909 
1910 static void
1911 yyFreeState(YYParseState *p)
1912 {
1913     yyfreestack(&p->yystack);
1914     free(p);
1915 }
1916 #endif /* YYBTYACC */
1917 
1918 #define YYABORT  goto yyabort
1919 #define YYREJECT goto yyabort
1920 #define YYACCEPT goto yyaccept
1921 #define YYERROR  goto yyerrlab
1922 #if YYBTYACC
1923 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
1924 #define YYVALID_NESTED do { if (yyps->save && \
1925                                 yyps->save->save == 0) goto yyvalid; } while(0)
1926 #endif /* YYBTYACC */
1927 
1928 int
1929 YYPARSE_DECL()
1930 {
1931     int yym, yyn, yystate, yyresult;
1932 #if YYBTYACC
1933     int yynewerrflag;
1934     YYParseState *yyerrctx = NULL;
1935 #endif /* YYBTYACC */
1936 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1937     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
1938 #endif
1939 #if YYDEBUG
1940     const char *yys;
1941 
1942     if ((yys = getenv("YYDEBUG")) != 0)
1943     {
1944         yyn = *yys;
1945         if (yyn >= '0' && yyn <= '9')
1946             yydebug = yyn - '0';
1947     }
1948     if (yydebug)
1949         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
1950 #endif
1951 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1952     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
1953 #endif
1954 
1955 #if YYBTYACC
1956     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
1957     yyps->save = 0;
1958 #endif /* YYBTYACC */
1959     yym = 0;
1960     yyn = 0;
1961     yynerrs = 0;
1962     yyerrflag = 0;
1963     yychar = YYEMPTY;
1964     yystate = 0;
1965 
1966 #if YYPURE
1967     memset(&yystack, 0, sizeof(yystack));
1968 #endif
1969 
1970     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1971     yystack.s_mark = yystack.s_base;
1972     yystack.l_mark = yystack.l_base;
1973 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1974     yystack.p_mark = yystack.p_base;
1975 #endif
1976     yystate = 0;
1977     *yystack.s_mark = 0;
1978 
1979 yyloop:
1980     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1981     if (yychar < 0)
1982     {
1983 #if YYBTYACC
1984         do {
1985         if (yylvp < yylve)
1986         {
1987             /* we're currently re-reading tokens */
1988             yylval = *yylvp++;
1989 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1990             yylloc = *yylpp++;
1991 #endif
1992             yychar = *yylexp++;
1993             break;
1994         }
1995         if (yyps->save)
1996         {
1997             /* in trial mode; save scanner results for future parse attempts */
1998             if (yylvp == yylvlim)
1999             {   /* Enlarge lexical value queue */
2000                 size_t p = (size_t) (yylvp - yylvals);
2001                 size_t s = (size_t) (yylvlim - yylvals);
2002 
2003                 s += YYLVQUEUEGROWTH;
2004                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
2005                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
2006 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2007                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
2008 #endif
2009                 yylvp   = yylve = yylvals + p;
2010                 yylvlim = yylvals + s;
2011 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2012                 yylpp   = yylpe = yylpsns + p;
2013                 yylplim = yylpsns + s;
2014 #endif
2015                 yylexp  = yylexemes + p;
2016             }
2017             *yylexp = (YYINT) YYLEX;
2018             *yylvp++ = yylval;
2019             yylve++;
2020 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2021             *yylpp++ = yylloc;
2022             yylpe++;
2023 #endif
2024             yychar = *yylexp++;
2025             break;
2026         }
2027         /* normal operation, no conflict encountered */
2028 #endif /* YYBTYACC */
2029         yychar = YYLEX;
2030 #if YYBTYACC
2031         } while (0);
2032 #endif /* YYBTYACC */
2033         if (yychar < 0) yychar = YYEOF;
2034 #if YYDEBUG
2035         if (yydebug)
2036         {
2037             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
2038             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
2039                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
2040 #ifdef YYSTYPE_TOSTRING
2041 #if YYBTYACC
2042             if (!yytrial)
2043 #endif /* YYBTYACC */
2044                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
2045 #endif
2046             fputc('\n', stderr);
2047         }
2048 #endif
2049     }
2050 #if YYBTYACC
2051 
2052     /* Do we have a conflict? */
2053     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
2054         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
2055     {
2056         YYINT ctry;
2057 
2058         if (yypath)
2059         {
2060             YYParseState *save;
2061 #if YYDEBUG
2062             if (yydebug)
2063                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
2064                                 YYDEBUGSTR, yydepth, yystate);
2065 #endif
2066             /* Switch to the next conflict context */
2067             save = yypath;
2068             yypath = save->save;
2069             save->save = NULL;
2070             ctry = save->ctry;
2071             if (save->state != yystate) YYABORT;
2072             yyFreeState(save);
2073 
2074         }
2075         else
2076         {
2077 
2078             /* Unresolved conflict - start/continue trial parse */
2079             YYParseState *save;
2080 #if YYDEBUG
2081             if (yydebug)
2082             {
2083                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
2084                 if (yyps->save)
2085                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
2086                 else
2087                     fputs("Starting trial parse.\n", stderr);
2088             }
2089 #endif
2090             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
2091             if (save == NULL) goto yyenomem;
2092             save->save            = yyps->save;
2093             save->state           = yystate;
2094             save->errflag         = yyerrflag;
2095             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
2096             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2097             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
2098             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2099 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2100             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
2101             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2102 #endif
2103             ctry                  = yytable[yyn];
2104             if (yyctable[ctry] == -1)
2105             {
2106 #if YYDEBUG
2107                 if (yydebug && yychar >= YYEOF)
2108                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
2109 #endif
2110                 ctry++;
2111             }
2112             save->ctry = ctry;
2113             if (yyps->save == NULL)
2114             {
2115                 /* If this is a first conflict in the stack, start saving lexemes */
2116                 if (!yylexemes)
2117                 {
2118                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
2119                     if (yylexemes == NULL) goto yyenomem;
2120                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
2121                     if (yylvals == NULL) goto yyenomem;
2122                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
2123 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2124                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
2125                     if (yylpsns == NULL) goto yyenomem;
2126                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
2127 #endif
2128                 }
2129                 if (yylvp == yylve)
2130                 {
2131                     yylvp  = yylve = yylvals;
2132 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2133                     yylpp  = yylpe = yylpsns;
2134 #endif
2135                     yylexp = yylexemes;
2136                     if (yychar >= YYEOF)
2137                     {
2138                         *yylve++ = yylval;
2139 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2140                         *yylpe++ = yylloc;
2141 #endif
2142                         *yylexp  = (YYINT) yychar;
2143                         yychar   = YYEMPTY;
2144                     }
2145                 }
2146             }
2147             if (yychar >= YYEOF)
2148             {
2149                 yylvp--;
2150 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2151                 yylpp--;
2152 #endif
2153                 yylexp--;
2154                 yychar = YYEMPTY;
2155             }
2156             save->lexeme = (int) (yylvp - yylvals);
2157             yyps->save   = save;
2158         }
2159         if (yytable[yyn] == ctry)
2160         {
2161 #if YYDEBUG
2162             if (yydebug)
2163                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
2164                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
2165 #endif
2166             if (yychar < 0)
2167             {
2168                 yylvp++;
2169 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2170                 yylpp++;
2171 #endif
2172                 yylexp++;
2173             }
2174             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
2175                 goto yyoverflow;
2176             yystate = yyctable[ctry];
2177             *++yystack.s_mark = (YYINT) yystate;
2178             *++yystack.l_mark = yylval;
2179 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2180             *++yystack.p_mark = yylloc;
2181 #endif
2182             yychar  = YYEMPTY;
2183             if (yyerrflag > 0) --yyerrflag;
2184             goto yyloop;
2185         }
2186         else
2187         {
2188             yyn = yyctable[ctry];
2189             goto yyreduce;
2190         }
2191     } /* End of code dealing with conflicts */
2192 #endif /* YYBTYACC */
2193     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
2194             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
2195     {
2196 #if YYDEBUG
2197         if (yydebug)
2198             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
2199                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
2200 #endif
2201         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2202         yystate = yytable[yyn];
2203         *++yystack.s_mark = yytable[yyn];
2204         *++yystack.l_mark = yylval;
2205 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2206         *++yystack.p_mark = yylloc;
2207 #endif
2208         yychar = YYEMPTY;
2209         if (yyerrflag > 0)  --yyerrflag;
2210         goto yyloop;
2211     }
2212     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
2213             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
2214     {
2215         yyn = yytable[yyn];
2216         goto yyreduce;
2217     }
2218     if (yyerrflag != 0) goto yyinrecovery;
2219 #if YYBTYACC
2220 
2221     yynewerrflag = 1;
2222     goto yyerrhandler;
2223     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
2224 
2225 yyerrlab:
2226     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
2227      * before looking for error recovery */
2228     yystack.s_mark -= yym;
2229     yystate = *yystack.s_mark;
2230     yystack.l_mark -= yym;
2231 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2232     yystack.p_mark -= yym;
2233 #endif
2234 
2235     yynewerrflag = 0;
2236 yyerrhandler:
2237     while (yyps->save)
2238     {
2239         int ctry;
2240         YYParseState *save = yyps->save;
2241 #if YYDEBUG
2242         if (yydebug)
2243             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
2244                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
2245                     (int)(yylvp - yylvals - yyps->save->lexeme));
2246 #endif
2247         /* Memorize most forward-looking error state in case it's really an error. */
2248         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
2249         {
2250             /* Free old saved error context state */
2251             if (yyerrctx) yyFreeState(yyerrctx);
2252             /* Create and fill out new saved error context state */
2253             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
2254             if (yyerrctx == NULL) goto yyenomem;
2255             yyerrctx->save           = yyps->save;
2256             yyerrctx->state          = yystate;
2257             yyerrctx->errflag        = yyerrflag;
2258             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
2259             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2260             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
2261             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2262 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2263             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
2264             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2265 #endif
2266             yyerrctx->lexeme         = (int) (yylvp - yylvals);
2267         }
2268         yylvp          = yylvals   + save->lexeme;
2269 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2270         yylpp          = yylpsns   + save->lexeme;
2271 #endif
2272         yylexp         = yylexemes + save->lexeme;
2273         yychar         = YYEMPTY;
2274         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
2275         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2276         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
2277         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2278 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2279         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
2280         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2281 #endif
2282         ctry           = ++save->ctry;
2283         yystate        = save->state;
2284         /* We tried shift, try reduce now */
2285         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
2286         yyps->save     = save->save;
2287         save->save     = NULL;
2288         yyFreeState(save);
2289 
2290         /* Nothing left on the stack -- error */
2291         if (!yyps->save)
2292         {
2293 #if YYDEBUG
2294             if (yydebug)
2295                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
2296                                 YYPREFIX, yydepth);
2297 #endif
2298             /* Restore state as it was in the most forward-advanced error */
2299             yylvp          = yylvals   + yyerrctx->lexeme;
2300 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2301             yylpp          = yylpsns   + yyerrctx->lexeme;
2302 #endif
2303             yylexp         = yylexemes + yyerrctx->lexeme;
2304             yychar         = yylexp[-1];
2305             yylval         = yylvp[-1];
2306 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2307             yylloc         = yylpp[-1];
2308 #endif
2309             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
2310             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2311             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
2312             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2313 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2314             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
2315             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2316 #endif
2317             yystate        = yyerrctx->state;
2318             yyFreeState(yyerrctx);
2319             yyerrctx       = NULL;
2320         }
2321         yynewerrflag = 1;
2322     }
2323     if (yynewerrflag == 0) goto yyinrecovery;
2324 #endif /* YYBTYACC */
2325 
2326     YYERROR_CALL("syntax error");
2327 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2328     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
2329 #endif
2330 
2331 #if !YYBTYACC
2332     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
2333 yyerrlab:
2334 #endif
2335     ++yynerrs;
2336 
2337 yyinrecovery:
2338     if (yyerrflag < 3)
2339     {
2340         yyerrflag = 3;
2341         for (;;)
2342         {
2343             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
2344                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
2345             {
2346 #if YYDEBUG
2347                 if (yydebug)
2348                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
2349                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
2350 #endif
2351                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2352                 yystate = yytable[yyn];
2353                 *++yystack.s_mark = yytable[yyn];
2354                 *++yystack.l_mark = yylval;
2355 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2356                 /* lookahead position is error end position */
2357                 yyerror_loc_range[2] = yylloc;
2358                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
2359                 *++yystack.p_mark = yyloc;
2360 #endif
2361                 goto yyloop;
2362             }
2363             else
2364             {
2365 #if YYDEBUG
2366                 if (yydebug)
2367                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
2368                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
2369 #endif
2370                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
2371 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2372                 /* the current TOS position is the error start position */
2373                 yyerror_loc_range[1] = *yystack.p_mark;
2374 #endif
2375 #if defined(YYDESTRUCT_CALL)
2376 #if YYBTYACC
2377                 if (!yytrial)
2378 #endif /* YYBTYACC */
2379 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2380                     YYDESTRUCT_CALL("error: discarding state",
2381                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
2382 #else
2383                     YYDESTRUCT_CALL("error: discarding state",
2384                                     yystos[*yystack.s_mark], yystack.l_mark);
2385 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2386 #endif /* defined(YYDESTRUCT_CALL) */
2387                 --yystack.s_mark;
2388                 --yystack.l_mark;
2389 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2390                 --yystack.p_mark;
2391 #endif
2392             }
2393         }
2394     }
2395     else
2396     {
2397         if (yychar == YYEOF) goto yyabort;
2398 #if YYDEBUG
2399         if (yydebug)
2400         {
2401             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
2402             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
2403                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
2404         }
2405 #endif
2406 #if defined(YYDESTRUCT_CALL)
2407 #if YYBTYACC
2408         if (!yytrial)
2409 #endif /* YYBTYACC */
2410 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2411             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
2412 #else
2413             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
2414 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2415 #endif /* defined(YYDESTRUCT_CALL) */
2416         yychar = YYEMPTY;
2417         goto yyloop;
2418     }
2419 
2420 yyreduce:
2421     yym = yylen[yyn];
2422 #if YYDEBUG
2423     if (yydebug)
2424     {
2425         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
2426                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
2427 #ifdef YYSTYPE_TOSTRING
2428 #if YYBTYACC
2429         if (!yytrial)
2430 #endif /* YYBTYACC */
2431             if (yym > 0)
2432             {
2433                 int i;
2434                 fputc('<', stderr);
2435                 for (i = yym; i > 0; i--)
2436                 {
2437                     if (i != yym) fputs(", ", stderr);
2438                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
2439                                            yystack.l_mark[1-i]), stderr);
2440                 }
2441                 fputc('>', stderr);
2442             }
2443 #endif
2444         fputc('\n', stderr);
2445     }
2446 #endif
2447     if (yym > 0)
2448         yyval = yystack.l_mark[1-yym];
2449     else
2450         memset(&yyval, 0, sizeof yyval);
2451 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2452 
2453     /* Perform position reduction */
2454     memset(&yyloc, 0, sizeof(yyloc));
2455 #if YYBTYACC
2456     if (!yytrial)
2457 #endif /* YYBTYACC */
2458     {
2459         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
2460         /* just in case YYERROR is invoked within the action, save
2461            the start of the rhs as the error start position */
2462         yyerror_loc_range[1] = yystack.p_mark[1-yym];
2463     }
2464 #endif
2465 
2466     switch (yyn)
2467     {
2468 case 1:
2469 #line 64 "expr.oxout.y"
2470 	{yyyYoxInit();}
2471 break;
2472 case 2:
2473 #line 66 "expr.oxout.y"
2474 	{
2475 		 yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node);
2476 		}
2477 break;
2478 case 3:
2479 #line 73 "expr.oxout.y"
2480 	{if(yyyYok){
2481 yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2482 yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2483 break;
2484 case 4:
2485 #line 80 "expr.oxout.y"
2486 	{if(yyyYok){
2487 yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2488 yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2489 break;
2490 case 5:
2491 #line 87 "expr.oxout.y"
2492 	{if(yyyYok){
2493 yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2494 yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2495 break;
2496 case 6:
2497 #line 94 "expr.oxout.y"
2498 	{if(yyyYok){
2499 yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2500 yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2501 break;
2502 case 7:
2503 #line 101 "expr.oxout.y"
2504 	{if(yyyYok){
2505 yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2506 yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2507 break;
2508 case 8:
2509 #line 108 "expr.oxout.y"
2510 	{if(yyyYok){
2511 yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2512 yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2513 break;
2514 case 9:
2515 #line 114 "expr.oxout.y"
2516 	{if(yyyYok){
2517 yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2518 yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2519 break;
2520 case 10:
2521 #line 121 "expr.oxout.y"
2522 	{if(yyyYok){
2523 yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
2524 yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
2525 break;
2526 #line 2525 "expr.oxout.tab.c"
2527     default:
2528         break;
2529     }
2530     yystack.s_mark -= yym;
2531     yystate = *yystack.s_mark;
2532     yystack.l_mark -= yym;
2533 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2534     yystack.p_mark -= yym;
2535 #endif
2536     yym = yylhs[yyn];
2537     if (yystate == 0 && yym == 0)
2538     {
2539 #if YYDEBUG
2540         if (yydebug)
2541         {
2542             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2543 #ifdef YYSTYPE_TOSTRING
2544 #if YYBTYACC
2545             if (!yytrial)
2546 #endif /* YYBTYACC */
2547                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
2548 #endif
2549             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
2550         }
2551 #endif
2552         yystate = YYFINAL;
2553         *++yystack.s_mark = YYFINAL;
2554         *++yystack.l_mark = yyval;
2555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2556         *++yystack.p_mark = yyloc;
2557 #endif
2558         if (yychar < 0)
2559         {
2560 #if YYBTYACC
2561             do {
2562             if (yylvp < yylve)
2563             {
2564                 /* we're currently re-reading tokens */
2565                 yylval = *yylvp++;
2566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2567                 yylloc = *yylpp++;
2568 #endif
2569                 yychar = *yylexp++;
2570                 break;
2571             }
2572             if (yyps->save)
2573             {
2574                 /* in trial mode; save scanner results for future parse attempts */
2575                 if (yylvp == yylvlim)
2576                 {   /* Enlarge lexical value queue */
2577                     size_t p = (size_t) (yylvp - yylvals);
2578                     size_t s = (size_t) (yylvlim - yylvals);
2579 
2580                     s += YYLVQUEUEGROWTH;
2581                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
2582                         goto yyenomem;
2583                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
2584                         goto yyenomem;
2585 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2586                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
2587                         goto yyenomem;
2588 #endif
2589                     yylvp   = yylve = yylvals + p;
2590                     yylvlim = yylvals + s;
2591 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2592                     yylpp   = yylpe = yylpsns + p;
2593                     yylplim = yylpsns + s;
2594 #endif
2595                     yylexp  = yylexemes + p;
2596                 }
2597                 *yylexp = (YYINT) YYLEX;
2598                 *yylvp++ = yylval;
2599                 yylve++;
2600 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2601                 *yylpp++ = yylloc;
2602                 yylpe++;
2603 #endif
2604                 yychar = *yylexp++;
2605                 break;
2606             }
2607             /* normal operation, no conflict encountered */
2608 #endif /* YYBTYACC */
2609             yychar = YYLEX;
2610 #if YYBTYACC
2611             } while (0);
2612 #endif /* YYBTYACC */
2613             if (yychar < 0) yychar = YYEOF;
2614 #if YYDEBUG
2615             if (yydebug)
2616             {
2617                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
2618                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
2619                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
2620             }
2621 #endif
2622         }
2623         if (yychar == YYEOF) goto yyaccept;
2624         goto yyloop;
2625     }
2626     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
2627             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
2628         yystate = yytable[yyn];
2629     else
2630         yystate = yydgoto[yym];
2631 #if YYDEBUG
2632     if (yydebug)
2633     {
2634         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2635 #ifdef YYSTYPE_TOSTRING
2636 #if YYBTYACC
2637         if (!yytrial)
2638 #endif /* YYBTYACC */
2639             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
2640 #endif
2641         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
2642     }
2643 #endif
2644     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2645     *++yystack.s_mark = (YYINT) yystate;
2646     *++yystack.l_mark = yyval;
2647 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2648     *++yystack.p_mark = yyloc;
2649 #endif
2650     goto yyloop;
2651 #if YYBTYACC
2652 
2653     /* Reduction declares that this path is valid. Set yypath and do a full parse */
2654 yyvalid:
2655     if (yypath) YYABORT;
2656     while (yyps->save)
2657     {
2658         YYParseState *save = yyps->save;
2659         yyps->save = save->save;
2660         save->save = yypath;
2661         yypath = save;
2662     }
2663 #if YYDEBUG
2664     if (yydebug)
2665         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
2666                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
2667 #endif
2668     if (yyerrctx)
2669     {
2670         yyFreeState(yyerrctx);
2671         yyerrctx = NULL;
2672     }
2673     yylvp          = yylvals + yypath->lexeme;
2674 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2675     yylpp          = yylpsns + yypath->lexeme;
2676 #endif
2677     yylexp         = yylexemes + yypath->lexeme;
2678     yychar         = YYEMPTY;
2679     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
2680     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
2681     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
2682     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2683 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2684     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
2685     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2686 #endif
2687     yystate        = yypath->state;
2688     goto yyloop;
2689 #endif /* YYBTYACC */
2690 
2691 yyoverflow:
2692     YYERROR_CALL("yacc stack overflow");
2693 #if YYBTYACC
2694     goto yyabort_nomem;
2695 yyenomem:
2696     YYERROR_CALL("memory exhausted");
2697 yyabort_nomem:
2698 #endif /* YYBTYACC */
2699     yyresult = 2;
2700     goto yyreturn;
2701 
2702 yyabort:
2703     yyresult = 1;
2704     goto yyreturn;
2705 
2706 yyaccept:
2707 #if YYBTYACC
2708     if (yyps->save) goto yyvalid;
2709 #endif /* YYBTYACC */
2710     yyresult = 0;
2711 
2712 yyreturn:
2713 #if defined(YYDESTRUCT_CALL)
2714     if (yychar != YYEOF && yychar != YYEMPTY)
2715 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2716         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
2717 #else
2718         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
2719 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2720 
2721     {
2722         YYSTYPE *pv;
2723 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2724         YYLTYPE *pp;
2725 
2726         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
2727              YYDESTRUCT_CALL("cleanup: discarding state",
2728                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
2729 #else
2730         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
2731              YYDESTRUCT_CALL("cleanup: discarding state",
2732                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
2733 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2734     }
2735 #endif /* defined(YYDESTRUCT_CALL) */
2736 
2737 #if YYBTYACC
2738     if (yyerrctx)
2739     {
2740         yyFreeState(yyerrctx);
2741         yyerrctx = NULL;
2742     }
2743     while (yyps)
2744     {
2745         YYParseState *save = yyps;
2746         yyps = save->save;
2747         save->save = NULL;
2748         yyFreeState(save);
2749     }
2750     while (yypath)
2751     {
2752         YYParseState *save = yypath;
2753         yypath = save->save;
2754         save->save = NULL;
2755         yyFreeState(save);
2756     }
2757 #endif /* YYBTYACC */
2758     yyfreestack(&yystack);
2759     return (yyresult);
2760 }
2761