]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/byacc/test/yacc/expr.oxout.tab.c
MFV r361322:
[FreeBSD/FreeBSD.git] / contrib / byacc / test / yacc / expr.oxout.tab.c
1 /* original parser id follows */
2 /* yysccsid[] = "@(#)yaccpar    1.9 (Berkeley) 02/21/93" */
3 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4
5 #define YYBYACC 1
6 #define YYMAJOR 1
7 #define YYMINOR 9
8 #define YYCHECK "yyyymmdd"
9
10 #define YYEMPTY        (-1)
11 #define yyclearin      (yychar = YYEMPTY)
12 #define yyerrok        (yyerrflag = 0)
13 #define YYRECOVERING() (yyerrflag != 0)
14 #define YYENOMEM       (-2)
15 #define YYEOF          0
16
17 #ifndef yyparse
18 #define yyparse    expr.oxout_parse
19 #endif /* yyparse */
20
21 #ifndef yylex
22 #define yylex      expr.oxout_lex
23 #endif /* yylex */
24
25 #ifndef yyerror
26 #define yyerror    expr.oxout_error
27 #endif /* yyerror */
28
29 #ifndef yychar
30 #define yychar     expr.oxout_char
31 #endif /* yychar */
32
33 #ifndef yyval
34 #define yyval      expr.oxout_val
35 #endif /* yyval */
36
37 #ifndef yylval
38 #define yylval     expr.oxout_lval
39 #endif /* yylval */
40
41 #ifndef yydebug
42 #define yydebug    expr.oxout_debug
43 #endif /* yydebug */
44
45 #ifndef yynerrs
46 #define yynerrs    expr.oxout_nerrs
47 #endif /* yynerrs */
48
49 #ifndef yyerrflag
50 #define yyerrflag  expr.oxout_errflag
51 #endif /* yyerrflag */
52
53 #ifndef yylhs
54 #define yylhs      expr.oxout_lhs
55 #endif /* yylhs */
56
57 #ifndef yylen
58 #define yylen      expr.oxout_len
59 #endif /* yylen */
60
61 #ifndef yydefred
62 #define yydefred   expr.oxout_defred
63 #endif /* yydefred */
64
65 #ifndef yydgoto
66 #define yydgoto    expr.oxout_dgoto
67 #endif /* yydgoto */
68
69 #ifndef yysindex
70 #define yysindex   expr.oxout_sindex
71 #endif /* yysindex */
72
73 #ifndef yyrindex
74 #define yyrindex   expr.oxout_rindex
75 #endif /* yyrindex */
76
77 #ifndef yygindex
78 #define yygindex   expr.oxout_gindex
79 #endif /* yygindex */
80
81 #ifndef yytable
82 #define yytable    expr.oxout_table
83 #endif /* yytable */
84
85 #ifndef yycheck
86 #define yycheck    expr.oxout_check
87 #endif /* yycheck */
88
89 #ifndef yyname
90 #define yyname     expr.oxout_name
91 #endif /* yyname */
92
93 #ifndef yyrule
94 #define yyrule     expr.oxout_rule
95 #endif /* yyrule */
96 #define YYPREFIX "expr.oxout_"
97
98 #define YYPURE 0
99
100 #line 5 "expr.oxout.y"
101 #include <stdlib.h>
102 #include <string.h>
103 #line 8 "expr.Y"
104  
105 #include "expr.oxout.h" 
106 #include <stdio.h>
107
108 extern int yylex(void);
109 extern void yyerror(const char *);
110 #line 27 "expr.oxout.y"
111 #include <limits.h>
112 #define yyyR USHRT_MAX  
113 #ifdef YYSTYPE
114 #undef  YYSTYPE_IS_DECLARED
115 #define YYSTYPE_IS_DECLARED 1
116 #endif
117 #ifndef YYSTYPE_IS_DECLARED
118 #define YYSTYPE_IS_DECLARED 1
119 #line 31 "expr.oxout.y"
120 typedef union {
121 struct yyyOxAttrbs {
122 struct yyyStackItem *yyyOxStackItem;
123 } yyyOxAttrbs;
124 } YYSTYPE;
125 #endif /* !YYSTYPE_IS_DECLARED */
126 #line 38 "expr.oxout.y"
127 #include <stdio.h>
128 #include <stdarg.h>
129
130 static int yyyYok = 1;
131
132 extern yyyFT yyyRCIL[];
133
134 void yyyExecuteRRsection(yyyGNT *rootNode);
135 void yyyYoxInit(void);
136 void yyyDecorate(void);
137 struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */
138 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
139 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
140 void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum);
141 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode);
142 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode);
143 void yyyabort(void);
144
145 #line 146 "expr.oxout.tab.c"
146
147 /* compatibility with bison */
148 #ifdef YYPARSE_PARAM
149 /* compatibility with FreeBSD */
150 # ifdef YYPARSE_PARAM_TYPE
151 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
152 # else
153 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
154 # endif
155 #else
156 # define YYPARSE_DECL() yyparse(void)
157 #endif
158
159 /* Parameters sent to lex. */
160 #ifdef YYLEX_PARAM
161 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
162 # define YYLEX yylex(YYLEX_PARAM)
163 #else
164 # define YYLEX_DECL() yylex(void)
165 # define YYLEX yylex()
166 #endif
167
168 /* Parameters sent to yyerror. */
169 #ifndef YYERROR_DECL
170 #define YYERROR_DECL() yyerror(const char *s)
171 #endif
172 #ifndef YYERROR_CALL
173 #define YYERROR_CALL(msg) yyerror(msg)
174 #endif
175
176 extern int YYPARSE_DECL();
177
178 #define ID 257
179 #define CONST 258
180 #define YYERRCODE 256
181 typedef int YYINT;
182 static const YYINT expr.oxout_lhs[] = {                  -1,
183     2,    0,    1,    3,    3,    3,    3,    3,    3,    3,
184 };
185 static const YYINT expr.oxout_len[] = {                   2,
186     0,    2,    1,    3,    3,    3,    3,    3,    1,    1,
187 };
188 static const YYINT expr.oxout_defred[] = {                1,
189     0,    0,    9,   10,    0,    2,    0,    0,    0,    0,
190     0,    0,    8,    0,    0,    4,    0,
191 };
192 static const YYINT expr.oxout_dgoto[] = {                 1,
193     6,    2,    7,
194 };
195 static const YYINT expr.oxout_sindex[] = {                0,
196     0,  -40,    0,    0,  -40,    0,  -18,  -24,  -40,  -40,
197   -40,  -40,    0,  -37,  -37,    0,  -39,
198 };
199 static const YYINT expr.oxout_rindex[] = {                0,
200     0,    0,    0,    0,    0,    0,    6,    0,    0,    0,
201     0,    0,    0,    2,    8,    0,    1,
202 };
203 static const YYINT expr.oxout_gindex[] = {                0,
204     0,    0,    4,
205 };
206 #define YYTABLESIZE 218
207 static const YYINT expr.oxout_table[] = {                 5,
208     6,    5,   11,    0,   11,    3,    0,    7,    8,   12,
209     0,    0,   14,   15,   16,   17,   13,   11,    9,    0,
210    10,    0,   12,   11,    9,    0,   10,    0,   12,    0,
211     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
212     0,    6,    5,    6,    5,    6,    5,    6,    7,    0,
213     7,    0,    7,    0,    0,    0,    0,    0,    0,    0,
214     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
215     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
216     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
217     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
218     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
219     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
220     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
221     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
222     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
223     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
224     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
225     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
226     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
227     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
228     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
229     0,    0,    0,    0,    0,    0,    3,    4,
230 };
231 static const YYINT expr.oxout_check[] = {                40,
232     0,    0,   42,   -1,   42,    0,   -1,    0,    5,   47,
233    -1,   -1,    9,   10,   11,   12,   41,   42,   43,   -1,
234    45,   -1,   47,   42,   43,   -1,   45,   -1,   47,   -1,
235    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
236    -1,   41,   41,   43,   43,   45,   45,   47,   41,   -1,
237    43,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
238    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
239    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
240    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
241    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
242    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
243    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
244    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
245    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
246    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
247    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
248    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
249    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
250    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
251    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
252    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
253    -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
254 };
255 #define YYFINAL 1
256 #ifndef YYDEBUG
257 #define YYDEBUG 0
258 #endif
259 #define YYMAXTOKEN 258
260 #define YYUNDFTOKEN 264
261 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
262 #if YYDEBUG
263 static const char *const expr.oxout_name[] = {
264
265 "end-of-file",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,
266 0,0,0,0,0,0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
267 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,
268 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,
269 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,
270 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,
271 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,"ID",
272 "CONST",0,0,0,0,0,"illegal-symbol",
273 };
274 static const char *const expr.oxout_rule[] = {
275 "$accept : yyyAugNonterm",
276 "$$1 :",
277 "yyyAugNonterm : $$1 s",
278 "s : expr",
279 "expr : expr '*' expr",
280 "expr : expr '+' expr",
281 "expr : expr '/' expr",
282 "expr : expr '-' expr",
283 "expr : '(' expr ')'",
284 "expr : ID",
285 "expr : CONST",
286
287 };
288 #endif
289
290 int      yydebug;
291 int      yynerrs;
292
293 int      yyerrflag;
294 int      yychar;
295 YYSTYPE  yyval;
296 YYSTYPE  yylval;
297
298 /* define the initial stack-sizes */
299 #ifdef YYSTACKSIZE
300 #undef YYMAXDEPTH
301 #define YYMAXDEPTH  YYSTACKSIZE
302 #else
303 #ifdef YYMAXDEPTH
304 #define YYSTACKSIZE YYMAXDEPTH
305 #else
306 #define YYSTACKSIZE 10000
307 #define YYMAXDEPTH  10000
308 #endif
309 #endif
310
311 #define YYINITSTACKSIZE 200
312
313 typedef struct {
314     unsigned stacksize;
315     YYINT    *s_base;
316     YYINT    *s_mark;
317     YYINT    *s_last;
318     YYSTYPE  *l_base;
319     YYSTYPE  *l_mark;
320 } YYSTACKDATA;
321 /* variables for the parser stack */
322 static YYSTACKDATA yystack;
323 #line 53 "expr.Y"
324  
325
326 int yyparse(void);
327
328 int main() 
329   {yyparse(); 
330   } 
331
332
333
334 #line 138 "expr.oxout.y"
335 long yyySSALspaceSize =    20000; 
336 long yyyRSmaxSize =        1000; 
337 long yyyTravStackMaxSize = 2000; 
338
339 struct yyySolvedSAlistCell {yyyWAT attrbNum; 
340                             long next; 
341                            }; 
342  
343 #define yyyLambdaSSAL 0 
344 long yyySSALCfreeList = yyyLambdaSSAL; 
345 long yyyNewSSALC = 1; 
346  
347 struct yyySolvedSAlistCell *yyySSALspace; 
348
349 long yyyNbytesStackStg; 
350
351
352
353 yyyFT yyyRCIL[1];
354
355 short yyyIIIEL[] = {0,
356 0,2,6,10,14,18,22,24,
357 };
358
359 long yyyIIEL[] = {
360 0,0,0,0,0,0,0,0,0,0,0,0,
361 0,0,0,0,0,0,0,0,0,0,0,0,
362 1,1,
363 };
364
365 long yyyIEL[] = {
366 0,0,0,
367 };
368
369 yyyFT yyyEntL[1];
370
371 void yyyfatal(char *msg)
372 {fputs(msg,stderr);exit(-1);} 
373
374
375
376 #define yyySSALof 'S' 
377 #define yyyRSof   'q' 
378 #define yyyTSof   't' 
379
380
381
382 void yyyHandleOverflow(char which) 
383   {char *msg1,*msg2; 
384    long  oldSize,newSize; 
385    switch(which) 
386      {
387       case yyySSALof : 
388            msg1 = "SSAL overflow: ";
389            oldSize = yyySSALspaceSize; 
390            break; 
391       case yyyRSof   : 
392            msg1 = "ready set overflow: ";
393            oldSize = yyyRSmaxSize; 
394            break; 
395       case yyyTSof   : 
396            msg1 = "traversal stack overflow: ";
397            oldSize = yyyTravStackMaxSize; 
398            break; 
399       default        :;  
400      }
401    newSize = (3*oldSize)/2; 
402    if (newSize < 100) newSize = 100; 
403    fputs(msg1,stderr); 
404    fprintf(stderr,"size was %ld.\n",oldSize); 
405    msg2 = "     Have to modify evaluator:  -Y%c%ld.\n"; 
406    fprintf(stderr,msg2,which,newSize); 
407    exit(-1); 
408   }
409
410
411
412 void yyySignalEnts(yyyGNT *node,long startP,long stopP) 
413   {yyyGNT *dumNode; 
414
415    while (startP < stopP)  
416      {
417       if (!yyyEntL[startP]) dumNode = node;  
418          else dumNode = (node->cL)[yyyEntL[startP]-1];   
419       if (!(--((dumNode->refCountList)[yyyEntL[startP+1]]
420               ) 
421            )
422          ) 
423          { 
424           if (++yyyRSTop == yyyAfterRS) 
425              {yyyHandleOverflow(yyyRSof); 
426               break; 
427              }
428           yyyRSTop->node = dumNode; 
429           yyyRSTop->whichSym = yyyEntL[startP];  
430           yyyRSTop->wa = yyyEntL[startP+1];  
431          }  
432       startP += 2;  
433      }  
434   } 
435
436
437
438
439
440
441 void yyySolveAndSignal() {
442 long yyyiDum,*yyypL;
443 int yyyws,yyywa;
444 yyyGNT *yyyRSTopN,*yyyRefN; 
445 yyyParent yyyRSTopNp; 
446
447
448 yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent;
449 yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN;
450 yyywa = yyyRSTop->wa; 
451 yyyRSTop--;
452 switch(yyyRefN->prodNum) {
453 case 1:  /***yacc rule 1***/
454   switch (yyyws) {
455   }
456 break;
457 case 2:  /***yacc rule 2***/
458   switch (yyyws) {
459   }
460 break;
461 case 3:  /***yacc rule 3***/
462   switch (yyyws) {
463   }
464 break;
465 case 4:  /***yacc rule 4***/
466   switch (yyyws) {
467   }
468 break;
469 case 5:  /***yacc rule 5***/
470   switch (yyyws) {
471   }
472 break;
473 case 6:  /***yacc rule 6***/
474   switch (yyyws) {
475   }
476 break;
477 case 7:  /***yacc rule 7***/
478   switch (yyyws) {
479   case 1:  /**/
480     switch (yyywa) {
481     }
482   break;
483   }
484 break;
485 case 8:  /***yacc rule 8***/
486   switch (yyyws) {
487   case 1:  /**/
488     switch (yyywa) {
489     }
490   break;
491   }
492 break;
493 } /* switch */ 
494
495 if (yyyws)  /* the just-solved instance was inherited. */ 
496    {if (yyyRSTopN->prodNum) 
497        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa;
498         yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum],
499                                 yyyIEL[yyyiDum+1]
500                      );
501        }
502    } 
503    else     /* the just-solved instance was synthesized. */ 
504    {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */ 
505        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] + 
506                           yyyRSTopN->whichSym 
507                          ] + 
508                   yyywa;
509         yyySignalEnts(yyyRSTopNp.noderef,
510                       yyyIEL[yyyiDum],
511                       yyyIEL[yyyiDum+1] 
512                      );
513        } 
514        else   /* node is still on the stack--it has no parent yet. */ 
515        {yyypL = &(yyyRSTopNp.stackref->solvedSAlist); 
516         if (yyySSALCfreeList == yyyLambdaSSAL) 
517            {yyySSALspace[yyyNewSSALC].next = *yyypL; 
518             if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize) 
519                yyyHandleOverflow(yyySSALof); 
520            }  
521            else
522            {yyyiDum = yyySSALCfreeList; 
523             yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next; 
524             yyySSALspace[yyyiDum].next = *yyypL; 
525             *yyypL = yyyiDum;  
526            } 
527         yyySSALspace[*yyypL].attrbNum = yyywa; 
528        } 
529    }
530
531 } /* yyySolveAndSignal */ 
532
533
534
535
536
537
538 #define condStg unsigned int conds;
539 #define yyyClearConds {yyyTST->conds = 0;}
540 #define yyySetCond(n) {yyyTST->conds += (1<<(n));}
541 #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0)
542
543
544
545 struct yyyTravStackItem {yyyGNT *node; 
546                          char isReady;
547                          condStg
548                         };
549
550
551
552 void yyyDoTraversals(yyyGNT *rootNode)
553 {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack;
554  yyyGNT *yyyTSTn,**yyyCLptr2; 
555  int yyyi,yyyRL,yyyPass;
556  int i;
557
558  if (!yyyYok) return;
559  if ((yyyTravStack = 
560                  ((struct yyyTravStackItem *) 
561                   calloc((size_t)yyyTravStackMaxSize, 
562                          (size_t)sizeof(struct yyyTravStackItem)
563                         )
564                  )
565      )
566      == 
567      (struct yyyTravStackItem *)NULL
568     ) 
569     {fputs("malloc error in traversal stack allocation\n",stderr); 
570      exit(-1); 
571     } 
572
573 yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize; 
574 yyyTravStack++; 
575
576
577 for (yyyi=0; yyyi<2; yyyi++) {
578 yyyTST = yyyTravStack; 
579 yyyTST->node = rootNode;
580 yyyTST->isReady = 0;
581 yyyClearConds
582
583 while(yyyTST >= yyyTravStack)
584   {yyyTSTn = yyyTST->node;
585    if (yyyTST->isReady)  
586       {yyyPass = 1;
587        goto yyyTravSwitch;
588 yyyTpop:
589        yyyTST--;
590       } 
591       else 
592       {yyyPass = 0;
593        goto yyyTravSwitch;
594 yyyTpush:
595        yyyTST->isReady = 1;  
596        if (yyyTSTn->prodNum)
597           {if (yyyRL)
598              {yyyCLptr2 = yyyTSTn->cL; 
599               i = yyyTSTn->cLlen; 
600               while (i--) 
601                 {if (++yyyTST == yyyAfterTravStack)
602                     yyyHandleOverflow(yyyTSof);
603                     else
604                     {yyyTST->node = *yyyCLptr2; 
605                      yyyTST->isReady = 0; 
606                      yyyClearConds
607                     }
608                  yyyCLptr2++; 
609                 } 
610              } /* right to left */
611              else  /* left to right */
612              {i = yyyTSTn->cLlen; 
613               yyyCLptr2 = yyyTSTn->cL + i; 
614               while (i--) 
615                 {yyyCLptr2--; 
616                  if (++yyyTST == yyyAfterTravStack)
617                     yyyHandleOverflow(yyyTSof);
618                     else
619                     {yyyTST->node = *yyyCLptr2; 
620                      yyyTST->isReady = 0; 
621                      yyyClearConds
622                     }
623                 } 
624              } /* left to right */
625           }
626       } /* else */
627    continue;
628 yyyTravSwitch:
629                                 switch(yyyTSTn->prodNum)        {
630 case 1:
631         switch(yyyi)    { 
632                 case 0:
633                         switch(yyyPass) {
634                                 case 0:
635 yyyRL = 0;yyySetCond(0)
636
637 if (!
638 #line 24 "expr.Y"
639   (1)
640 #line 444 "expr.oxout.y"
641 ) yyySetCond(1)
642 yyySetCond(2)
643
644                                 case 1:
645
646 if (yyyCond(0) != yyyPass) {
647 #line 24 "expr.Y"
648   
649 #line 453 "expr.oxout.y"
650 }
651 if (yyyCond(1) != yyyPass) {
652 #line 24 "expr.Y"
653  printf("\n"); 
654                    
655 #line 459 "expr.oxout.y"
656 }
657 if (yyyCond(2) != yyyPass) {
658 #line 25 "expr.Y"
659   printf("prefix:   ");
660                 
661 #line 465 "expr.oxout.y"
662 }
663                                 break;
664                                         }
665                 break;
666                 case 1:
667                         switch(yyyPass) {
668                                 case 0:
669 yyyRL = 0;
670 if (
671 #line 23 "expr.Y"
672   (1)
673 #line 477 "expr.oxout.y"
674 ) yyySetCond(2)
675
676                                 case 1:
677
678 if (yyyCond(0) != yyyPass) {
679 #line 22 "expr.Y"
680  printf("\n"); 
681                    
682 #line 486 "expr.oxout.y"
683 }
684 if (yyyCond(1) != yyyPass) {
685 #line 23 "expr.Y"
686  
687 #line 491 "expr.oxout.y"
688 }
689 if (yyyCond(2) != yyyPass) {
690 #line 23 "expr.Y"
691  printf("postfix:  ")/* missing ; */
692                    
693 #line 497 "expr.oxout.y"
694 }
695                                 break;
696                                         }
697                 break;
698                         }
699
700 break;
701 case 2:
702         switch(yyyi)    { 
703                 case 0:
704                         switch(yyyPass) {
705                                 case 0:
706 yyyRL = 0;yyySetCond(0)
707
708                                 case 1:
709
710 if (yyyCond(0) != yyyPass) {
711 #line 29 "expr.Y"
712   printf(" * "); 
713                 
714 #line 518 "expr.oxout.y"
715 }
716                                 break;
717                                         }
718                 break;
719                 case 1:
720                         switch(yyyPass) {
721                                 case 0:
722 yyyRL = 0;
723                                 case 1:
724
725 if (yyyCond(0) != yyyPass) {
726 #line 28 "expr.Y"
727  printf(" * "); 
728                    
729 #line 533 "expr.oxout.y"
730 }
731                                 break;
732                                         }
733                 break;
734                         }
735
736 break;
737 case 3:
738         switch(yyyi)    { 
739                 case 0:
740                         switch(yyyPass) {
741                                 case 0:
742 yyyRL = 0;yyySetCond(0)
743
744                                 case 1:
745
746 if (yyyCond(0) != yyyPass) {
747 #line 32 "expr.Y"
748   printf(" + "); 
749                    
750 #line 554 "expr.oxout.y"
751 }
752                                 break;
753                                         }
754                 break;
755                 case 1:
756                         switch(yyyPass) {
757                                 case 0:
758 yyyRL = 0;
759                                 case 1:
760
761 if (yyyCond(0) != yyyPass) {
762 #line 33 "expr.Y"
763  printf(" + "); 
764                 
765 #line 569 "expr.oxout.y"
766 }
767                                 break;
768                                         }
769                 break;
770                         }
771
772 break;
773 case 4:
774         switch(yyyi)    { 
775                 case 0:
776                         switch(yyyPass) {
777                                 case 0:
778 yyyRL = 0;yyySetCond(0)
779
780                                 case 1:
781
782 if (yyyCond(0) != yyyPass) {
783 #line 37 "expr.Y"
784   printf(" / "); 
785                 
786 #line 590 "expr.oxout.y"
787 }
788                                 break;
789                                         }
790                 break;
791                 case 1:
792                         switch(yyyPass) {
793                                 case 0:
794 yyyRL = 0;
795                                 case 1:
796
797 if (yyyCond(0) != yyyPass) {
798 #line 36 "expr.Y"
799  printf(" / "); 
800                    
801 #line 605 "expr.oxout.y"
802 }
803                                 break;
804                                         }
805                 break;
806                         }
807
808 break;
809 case 5:
810         switch(yyyi)    { 
811                 case 0:
812                         switch(yyyPass) {
813                                 case 0:
814 yyyRL = 0;yyySetCond(0)
815
816                                 case 1:
817
818 if (yyyCond(0) != yyyPass) {
819 #line 41 "expr.Y"
820   printf(" - "); 
821                 
822 #line 626 "expr.oxout.y"
823 }
824                                 break;
825                                         }
826                 break;
827                 case 1:
828                         switch(yyyPass) {
829                                 case 0:
830 yyyRL = 0;
831                                 case 1:
832
833 if (yyyCond(0) != yyyPass) {
834 #line 40 "expr.Y"
835  printf(" - "); 
836                    
837 #line 641 "expr.oxout.y"
838 }
839                                 break;
840                                         }
841                 break;
842                         }
843
844 break;
845 case 6:
846         switch(yyyi)    { 
847                 case 0:
848                         switch(yyyPass) {
849                                 case 0:
850 yyyRL = 0;
851                                 case 1:
852
853                                 break;
854                                         }
855                 break;
856                 case 1:
857                         switch(yyyPass) {
858                                 case 0:
859 yyyRL = 0;
860                                 case 1:
861
862                                 break;
863                                         }
864                 break;
865                         }
866
867 break;
868 case 7:
869         switch(yyyi)    { 
870                 case 0:
871                         switch(yyyPass) {
872                                 case 0:
873 yyyRL = 0;yyySetCond(0)
874
875                                 case 1:
876
877 if (yyyCond(0) != yyyPass) {
878 #line 46 "expr.Y"
879   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 
880                 
881 #line 685 "expr.oxout.y"
882 }
883                                 break;
884                                         }
885                 break;
886                 case 1:
887                         switch(yyyPass) {
888                                 case 0:
889 yyyRL = 0;
890                                 case 1:
891
892 if (yyyCond(0) != yyyPass) {
893 #line 45 "expr.Y"
894  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 
895                    
896 #line 700 "expr.oxout.y"
897 }
898                                 break;
899                                         }
900                 break;
901                         }
902
903 break;
904 case 8:
905         switch(yyyi)    { 
906                 case 0:
907                         switch(yyyPass) {
908                                 case 0:
909 yyyRL = 0;yyySetCond(0)
910
911                                 case 1:
912
913 if (yyyCond(0) != yyyPass) {
914 #line 50 "expr.Y"
915   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 
916                 
917 #line 721 "expr.oxout.y"
918 }
919                                 break;
920                                         }
921                 break;
922                 case 1:
923                         switch(yyyPass) {
924                                 case 0:
925 yyyRL = 0;
926                                 case 1:
927
928 if (yyyCond(0) != yyyPass) {
929 #line 49 "expr.Y"
930  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 
931                    
932 #line 736 "expr.oxout.y"
933 }
934                                 break;
935                                         }
936                 break;
937                         }
938
939 break;
940                                                                 } /* switch */ 
941    if (yyyPass) goto yyyTpop; else goto yyyTpush; 
942   } /* while */ 
943  } /* for */ 
944 } /* yyyDoTraversals */ 
945
946 void yyyExecuteRRsection(yyyGNT *rootNode)  {
947    int yyyi; 
948    long cycleSum = 0; 
949    long nNZrc = 0; 
950
951    if (!yyyYok) return; 
952    yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum);
953    if (nNZrc) 
954       {
955        fputs("\n\n\n**********\n",stderr);
956        fputs("cycle detected in completed parse tree",stderr);
957        fputs(" after decoration.\n",stderr);
958 #if CYCLE_VERBOSE
959        fprintf(stderr,
960                "number of unsolved attribute instances == %ld.\n", 
961                nNZrc 
962               ); 
963        fprintf(stderr,
964                "total number of remaining dependencies == %ld.\n", 
965                cycleSum
966               ); 
967        fputs("average number of remaining dependencies\n",stderr);
968        fprintf(stderr,"  per unsolved instance == %f.\n", 
969                ((float)(cycleSum)/(float)(nNZrc)) 
970               ); 
971 #endif
972        fprintf(stderr,
973          "searching parse tree for %ld unsolved instances:\n",
974                nNZrc
975               );
976        yyyUnsolvedInstSearchTravAux(rootNode);
977       }
978    yyyDoTraversals(rootNode);
979 } /* yyyExecuteRRsection */ 
980
981
982
983 yyyWAT yyyLRCIL[2] = {0,0,
984 };
985
986
987
988 void yyyYoxInit(void) 
989   { 
990    static int yyyInitDone = 0;
991    if (yyyInitDone) return;
992  
993    if ((yyyRS = (struct yyyRSitem *) 
994          calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem))
995        )  
996        == 
997        ((struct yyyRSitem *) NULL) 
998       )   
999       yyyfatal("malloc error in ox ready set space allocation\n");  
1000    yyyRS++; 
1001    yyyAfterRS = yyyRS + yyyRSmaxSize; 
1002
1003  
1004    if ((yyySSALspace = (struct yyySolvedSAlistCell *) 
1005           calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell)) 
1006        ) 
1007        == 
1008        ((struct yyySolvedSAlistCell *) NULL) 
1009       ) 
1010       yyyfatal("malloc error in stack solved list space allocation\n"); 
1011    yyyInitDone = 1;
1012  
1013    yyyRSTop = yyyRS - 1; 
1014   } /* yyyYoxInit */ 
1015
1016
1017
1018 void yyyDecorate(void) 
1019   { 
1020    while (yyyRSTop >= yyyRS) 
1021       yyySolveAndSignal();  
1022   } 
1023
1024
1025
1026 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...) 
1027   {yyyWST i;
1028    yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem; 
1029    yyyGNT *gnpDum; 
1030    va_list ap; 
1031
1032    *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT)); 
1033    if (*yyyOxStackItem == (yyySIT *) NULL) 
1034       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
1035    (*yyyOxStackItem)->node = 
1036                                 (yyyGNT *) malloc((size_t)sizeof(yyyGNT)); 
1037    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL) 
1038       yyyfatal("malloc error in ox node space allocation\n");
1039    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL; 
1040    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;  
1041    (*yyyOxStackItem)->node->parentIsStack = 1;  
1042    (*yyyOxStackItem)->node->cLlen  = yyyRHSlength; 
1043    (*yyyOxStackItem)->node->cL = 
1044             (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *)); 
1045    if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL) 
1046       yyyfatal("malloc error in ox child list space allocation\n");
1047    (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs; 
1048    (*yyyOxStackItem)->node->refCountList =  
1049             (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT));  
1050    if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL) 
1051       yyyfatal("malloc error in ox reference count list space allocation\n");  
1052    (*yyyOxStackItem)->node->prodNum = yyyProdNum; 
1053    va_start(ap, yyval_OxAttrbs); 
1054    for (i=1;i<=yyyRHSlength;i++) 
1055      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
1056       gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node;  
1057       gnpDum->whichSym = i;  
1058       gnpDum->parent.noderef = (*yyyOxStackItem)->node; 
1059       gnpDum->parentIsStack = 0;  
1060      } 
1061    va_end(ap); 
1062   } 
1063
1064
1065
1066 #define yyyDECORfREQ 50 
1067
1068
1069
1070 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...) 
1071   {yyyWST i;
1072    yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem;
1073    long SSALptr,SSALptrHead,*cPtrPtr; 
1074    long *pL; 
1075    yyyGNT *gnpDum; 
1076    long iTemp;
1077    long nextP;
1078    static unsigned short intNodeCount = yyyDECORfREQ;
1079    va_list ap; 
1080
1081    nextP = startP;
1082    while (nextP < stopP) 
1083      {if (yyyRCIL[nextP] == yyyR)  
1084          {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
1085          } 
1086          else 
1087          {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
1088          } 
1089       nextP += 3;  
1090      }
1091    pL = yyyIIEL + yyyIIIEL[yyyProdNum]; 
1092    va_start(ap, yyval_OxAttrbs); 
1093    for (i=1;i<=yyyRHSlength;i++) 
1094      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
1095       pL++; 
1096       SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist)); 
1097       if (SSALptr != yyyLambdaSSAL) 
1098          {*cPtrPtr = yyyLambdaSSAL; 
1099           do 
1100             {
1101              iTemp = (*pL+yyySSALspace[SSALptr].attrbNum);
1102              yyySignalEnts(yyyOxStackItem->node,
1103                            yyyIEL[iTemp],
1104                            yyyIEL[iTemp+1]
1105                           );  
1106              SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next)); 
1107             } 
1108             while (SSALptr != yyyLambdaSSAL);  
1109           *cPtrPtr = yyySSALCfreeList;  
1110           yyySSALCfreeList = SSALptrHead;  
1111          } 
1112      } 
1113    va_end(ap); 
1114    nextP = startP + 2;
1115    while (nextP < stopP) 
1116      {if (!yyyRCIL[nextP])
1117          {if (yyyRCIL[nextP-2] == yyyR)  
1118              {pL = &(yyyOxStackItem->solvedSAlist); 
1119               if (yyySSALCfreeList == yyyLambdaSSAL) 
1120                  {yyySSALspace[yyyNewSSALC].next = *pL; 
1121                   if ((*pL = yyyNewSSALC++) == yyySSALspaceSize) 
1122                      yyyHandleOverflow(yyySSALof); 
1123                  }  
1124                  else
1125                  {iTemp = yyySSALCfreeList; 
1126                   yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next; 
1127                   yyySSALspace[iTemp].next = *pL; 
1128                   *pL = iTemp;  
1129                  } 
1130               yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1]; 
1131              } 
1132              else 
1133              {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0)
1134                  {
1135                   iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1];
1136                   yyySignalEnts(gnpDum, 
1137                                 yyyIEL[iTemp],  
1138                                 yyyIEL[iTemp+1] 
1139                                );    
1140                  }  
1141              } 
1142          } 
1143       nextP += 3; 
1144      } 
1145    if (!--intNodeCount) 
1146       {intNodeCount = yyyDECORfREQ; 
1147        yyyDecorate(); 
1148       } 
1149   } 
1150
1151
1152
1153 void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval) 
1154   {yyyRCT *rcPdum; 
1155    yyySIT **yyyOxStackItem = &yylval->yyyOxAttrbs.yyyOxStackItem; 
1156    (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT)); 
1157    if ((*yyyOxStackItem) == (yyySIT *) NULL) 
1158       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
1159    (*yyyOxStackItem)->node = 
1160                           (yyyGNT *) malloc((size_t)sizeof(yyyGNT)) 
1161                          ; 
1162    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL) 
1163       yyyfatal("malloc error in ox node space allocation\n");
1164    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL; 
1165    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem; 
1166    (*yyyOxStackItem)->node->parentIsStack = 1; 
1167    (*yyyOxStackItem)->node->cLlen = 0; 
1168    (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL;  
1169    (*yyyOxStackItem)->node->refCountListLen = nAttrbs; 
1170    rcPdum = (*yyyOxStackItem)->node->refCountList =  
1171             (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT));  
1172    if (rcPdum == (yyyRCT *) NULL) 
1173       yyyfatal("malloc error in ox reference count list space allocation\n");  
1174    while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0; 
1175    (*yyyOxStackItem)->node->prodNum = 0; 
1176    (*yyyOxStackItem)->node->whichSym = 0; 
1177   } 
1178
1179
1180
1181 void yyyabort(void)
1182   {yyyYok = 0; 
1183   } 
1184
1185
1186
1187
1188
1189 #define yyyLastProdNum 8
1190
1191
1192 #define yyyNsorts 1
1193
1194
1195 int yyyProdsInd[] = {
1196    0,
1197    0,   2,   6,  10,  14,  18,  22,  24,
1198   26,
1199 };
1200
1201
1202 int yyyProds[][2] = {
1203 { 116,   0},{ 462,   0},{ 462,   0},{ 462,   0},{ 412,   0},
1204 { 462,   0},{ 462,   0},{ 462,   0},{ 420,   0},{ 462,   0},
1205 { 462,   0},{ 462,   0},{ 452,   0},{ 462,   0},{ 462,   0},
1206 { 462,   0},{ 436,   0},{ 462,   0},{ 462,   0},{ 396,   0},
1207 { 462,   0},{ 404,   0},{ 462,   0},{ 619,   1},{ 462,   0},
1208 { 567,   1},
1209 };
1210
1211
1212 int yyySortsInd[] = {
1213   0,
1214   0,
1215   1,
1216 };
1217
1218
1219 int yyySorts[] = {
1220   413,
1221 };
1222
1223
1224
1225 char *yyyStringTab[] = {
1226 0,0,0,0,0,
1227 0,0,0,0,0,
1228 0,0,0,0,0,
1229 0,0,0,0,0,
1230 0,0,0,0,0,
1231 0,0,0,0,0,
1232 0,0,0,0,0,
1233 0,0,0,0,0,
1234 0,0,0,0,0,
1235 0,0,0,0,0,
1236 0,0,0,0,0,
1237 0,0,0,0,0,
1238 0,0,0,0,0,
1239 0,0,0,0,0,
1240 0,0,0,0,0,
1241 0,0,0,0,0,
1242 0,0,0,0,0,
1243 0,0,0,0,0,
1244 0,0,0,0,0,
1245 0,0,0,0,0,
1246 0,0,0,0,0,
1247 0,0,0,0,0,
1248 0,0,0,0,0,
1249 0,"s",0,0,0,
1250 0,0,"y",0,0,
1251 0,0,0,0,0,
1252 0,0,0,0,0,
1253 0,0,0,0,0,
1254 0,0,0,0,0,
1255 0,0,0,0,0,
1256 0,0,0,0,0,
1257 0,0,0,0,0,
1258 0,0,0,0,0,
1259 0,0,0,0,0,
1260 0,0,0,0,0,
1261 0,0,0,0,0,
1262 0,0,0,0,0,
1263 0,0,0,0,0,
1264 0,0,0,0,0,
1265 0,0,0,0,0,
1266 0,0,0,0,0,
1267 0,0,0,0,0,
1268 0,0,0,0,0,
1269 0,0,0,0,0,
1270 0,0,0,0,0,
1271 0,0,0,0,0,
1272 0,0,0,0,0,
1273 0,0,0,0,0,
1274 0,0,0,0,0,
1275 0,0,0,0,0,
1276 0,0,0,0,0,
1277 0,0,0,0,0,
1278 0,0,0,0,0,
1279 0,0,0,0,0,
1280 0,0,0,0,0,
1281 0,0,0,0,0,
1282 0,0,0,0,0,
1283 0,0,0,0,0,
1284 0,0,0,0,0,
1285 0,0,0,0,0,
1286 0,0,0,0,0,
1287 0,0,0,0,0,
1288 0,0,0,0,0,
1289 0,0,0,0,0,
1290 0,0,0,0,0,
1291 0,"LRpre",0,0,0,
1292 0,0,0,0,0,
1293 0,0,0,0,0,
1294 0,0,0,0,0,
1295 0,0,0,0,0,
1296 0,0,0,0,0,
1297 0,0,0,0,0,
1298 0,0,0,0,0,
1299 0,0,0,0,0,
1300 0,0,0,0,0,
1301 0,0,0,0,0,
1302 0,0,0,0,0,
1303 0,0,0,0,0,
1304 0,0,0,0,0,
1305 0,"'('",0,0,0,
1306 0,0,0,0,"')'",
1307 0,0,0,0,0,
1308 0,0,"'*'","lexeme",0,
1309 0,0,0,0,0,
1310 "'+'",0,0,0,0,
1311 0,0,0,0,0,
1312 0,0,0,0,0,
1313 0,"'-'",0,0,0,
1314 0,0,0,0,0,
1315 0,0,0,0,0,
1316 0,0,"'/'",0,0,
1317 0,0,0,0,0,
1318 0,0,"expr",0,0,
1319 0,0,0,0,0,
1320 0,0,0,0,0,
1321 0,"printf",0,0,0,
1322 0,0,0,0,0,
1323 0,0,0,0,0,
1324 0,0,0,0,0,
1325 0,0,0,0,0,
1326 0,0,0,0,0,
1327 0,0,0,0,0,
1328 0,0,0,0,0,
1329 0,0,0,0,0,
1330 0,0,0,0,0,
1331 0,0,0,0,0,
1332 0,0,0,0,0,
1333 0,0,0,0,0,
1334 0,0,0,0,0,
1335 0,0,0,0,0,
1336 0,0,0,0,0,
1337 0,0,0,0,0,
1338 0,0,0,0,0,
1339 0,0,"CONST","LRpost",0,
1340 0,0,0,0,0,
1341 0,0,0,0,0,
1342 0,0,0,0,0,
1343 0,0,0,0,0,
1344 0,0,0,0,0,
1345 0,0,0,0,0,
1346 0,0,0,0,0,
1347 0,0,0,0,0,
1348 0,0,0,0,0,
1349 0,0,0,0,"ID",
1350 0,0,0,0,0,
1351 0,0,0,0,0,
1352 0,0,0,0,0,
1353 0,0,0,0,0,
1354 0,0,0,0,0,
1355 0,0,0,0,0,
1356 0,0,0,0,0,
1357 0,0,0,0,0,
1358 0,0,0,0,0,
1359 0,0,0,0,0,
1360 0,0,0,0,0,
1361 0,0,0,0,0,
1362 0,0,0,0,0,
1363 0,0,0,0,0,
1364 0,0,0,0,0,
1365 0,0,0,0,0,
1366 0,0,0,0,0,
1367 0,0,0,0,0,
1368 0,0,0,0,0,
1369 0,0,0,0,0,
1370 0,0,0,0,0,
1371 0,0,0,0,0,
1372 0,0,0,0,0,
1373 0,0,0,0,0,
1374 0,0,0,0,0,
1375 0,0,0,0,0,
1376 0,0,0,0,0,
1377 0,0,0,0,0,
1378 0,0,0,0,0,
1379 0,0,0,0,0,
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,0,0,0,0,
1404 0,0,0,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,0,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,0,
1460 0,0,0,0,0,
1461 0,0,0,0,0,
1462 0,0,0,0,0,
1463 0,0,0,0,0,
1464 0,0,0,0,0,
1465 0,0,0,0,0,
1466 0,0,0,0,0,
1467 0,0,0,0,0,
1468 0,0,0,0,0,
1469 0,0,0,0,0,
1470 0,0,0,0,0,
1471 0,0,0,0,0,
1472 0,
1473 };
1474
1475
1476
1477 #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)])
1478
1479 #define yyyGSoccurStr(prodNum,symPos) \
1480    (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]])
1481
1482 #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)])
1483
1484 #define yyySortOf(prodNum,symPos) \
1485   (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1]) 
1486
1487 #define yyyAttrbStr(prodNum,symPos,attrbNum)                      \
1488   (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \
1489                          (attrbNum)                               \
1490                         ]                                         \
1491                ]                                                  \
1492   )
1493
1494
1495
1496 void yyyShowProd(int i)
1497   {int j,nSyms;
1498
1499    nSyms = yyySizeofProd(i);
1500    for (j=0; j<nSyms; j++)
1501      {
1502       fprintf(stderr,"%s",yyyGSoccurStr(i,j));
1503       if (j == 0) fputs(" : ",stderr); else putc(' ',stderr);
1504      }
1505    fputs(";\n",stderr);
1506   }
1507
1508
1509
1510 void yyyShowProds()
1511   {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);}
1512
1513
1514
1515 void yyyShowSymsAndSorts()
1516   {int i; 
1517
1518    for (i=1; i<=yyyLastProdNum; i++) 
1519      {int j, nSyms;
1520
1521       fprintf(stderr,
1522               "\n\n\n---------------------------------- %3.1d\n",i);
1523       /* yyyShowProd(i); */ 
1524       nSyms = yyySizeofProd(i); 
1525       for (j=0; j<nSyms; j++) 
1526         {int k, sortSize;
1527
1528          fprintf(stderr,"%s\n",yyyGSoccurStr(i,j));
1529          sortSize = yyySizeofSort(yyySortOf(i,j));
1530          for (k=0; k<sortSize; k++) 
1531             fprintf(stderr,"  %s\n",yyyAttrbStr(i,j,k));
1532          if (j == 0) fputs("->\n",stderr); 
1533               else 
1534               putc('\n',stderr); 
1535         }
1536      }
1537   }
1538
1539
1540
1541 void yyyCheckNodeInstancesSolved(yyyGNT *np)
1542   {int mysort,sortSize,i,prodNum,symPos,inTerminalNode;
1543    int nUnsolvedInsts = 0;
1544
1545    if (np->prodNum != 0)
1546      {inTerminalNode = 0;
1547       prodNum = np->prodNum;
1548       symPos = 0;
1549      }
1550    else
1551      {inTerminalNode = 1;
1552       prodNum = np->parent.noderef->prodNum;
1553       symPos = np->whichSym;
1554      }
1555    mysort = yyySortOf(prodNum,symPos);
1556    sortSize = yyySizeofSort(mysort);
1557    for (i=0; i<sortSize; i++)
1558      if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1;
1559    if (nUnsolvedInsts)
1560      {fprintf(stderr,
1561       "\nFound node that has %d unsolved attribute instance(s).\n",
1562               nUnsolvedInsts
1563              );
1564       fprintf(stderr,"Node is labeled \"%s\".\n",
1565              yyyGSoccurStr(prodNum,symPos));
1566       if (inTerminalNode)
1567         {fputs("Node is terminal.  Its parent production is:\n  ",stderr);
1568          yyyShowProd(prodNum);
1569         }
1570       else
1571         {fputs("Node is nonterminal.  ",stderr);
1572          if (!(np->parentIsStack))
1573            {fprintf(stderr,
1574                     "Node is %dth child in its parent production:\n  ",
1575                    np->whichSym
1576                   );
1577             yyyShowProd(np->parent.noderef->prodNum);
1578            }
1579          fputs("Node is on left hand side of this production:\n  ",stderr);
1580          yyyShowProd(np->prodNum);
1581         }
1582       fputs("The following instances are unsolved:\n",stderr);
1583       for (i=0; i<sortSize; i++)
1584         if ((np->refCountList)[i] != 0)
1585           fprintf(stderr,"     %-16s still has %1d dependencies.\n",
1586                   yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]);
1587      }
1588   }
1589
1590
1591
1592 void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum)
1593   {yyyGNT **yyyCLpdum;
1594    yyyRCT *rcp;
1595    int i;
1596   
1597    /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */ 
1598    rcp = pNode->refCountList; 
1599    i = pNode->refCountListLen; 
1600    while (i--) 
1601       if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;} 
1602    yyyCLpdum = pNode->cL;
1603    i = pNode->cLlen;
1604    while (i--)
1605      {
1606       yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum);
1607       yyyCLpdum++;
1608      }
1609   }
1610
1611
1612
1613 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode)
1614   {yyyGNT **yyyCLpdum;
1615    int i;
1616   
1617    yyyCheckNodeInstancesSolved(pNode); 
1618    yyyCLpdum = pNode->cL;
1619    i = pNode->cLlen;
1620    while (i--)
1621      {
1622       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1623       yyyCLpdum++;
1624      }
1625   }
1626
1627
1628
1629 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode)
1630   {yyyGNT **yyyCLpdum;
1631    int i;
1632   
1633    yyyCLpdum = pNode->cL;
1634    i = pNode->cLlen;
1635    while (i--)
1636      {
1637       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1638       yyyCLpdum++;
1639      }
1640   }
1641
1642
1643
1644 #line 1645 "expr.oxout.tab.c"
1645
1646 #if YYDEBUG
1647 #include <stdio.h>      /* needed for printf */
1648 #endif
1649
1650 #include <stdlib.h>     /* needed for malloc, etc */
1651 #include <string.h>     /* needed for memset */
1652
1653 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
1654 static int yygrowstack(YYSTACKDATA *data)
1655 {
1656     int i;
1657     unsigned newsize;
1658     YYINT *newss;
1659     YYSTYPE *newvs;
1660
1661     if ((newsize = data->stacksize) == 0)
1662         newsize = YYINITSTACKSIZE;
1663     else if (newsize >= YYMAXDEPTH)
1664         return YYENOMEM;
1665     else if ((newsize *= 2) > YYMAXDEPTH)
1666         newsize = YYMAXDEPTH;
1667
1668     i = (int) (data->s_mark - data->s_base);
1669     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
1670     if (newss == 0)
1671         return YYENOMEM;
1672
1673     data->s_base = newss;
1674     data->s_mark = newss + i;
1675
1676     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1677     if (newvs == 0)
1678         return YYENOMEM;
1679
1680     data->l_base = newvs;
1681     data->l_mark = newvs + i;
1682
1683     data->stacksize = newsize;
1684     data->s_last = data->s_base + newsize - 1;
1685     return 0;
1686 }
1687
1688 #if YYPURE || defined(YY_NO_LEAKS)
1689 static void yyfreestack(YYSTACKDATA *data)
1690 {
1691     free(data->s_base);
1692     free(data->l_base);
1693     memset(data, 0, sizeof(*data));
1694 }
1695 #else
1696 #define yyfreestack(data) /* nothing */
1697 #endif
1698
1699 #define YYABORT  goto yyabort
1700 #define YYREJECT goto yyabort
1701 #define YYACCEPT goto yyaccept
1702 #define YYERROR  goto yyerrlab
1703
1704 int
1705 YYPARSE_DECL()
1706 {
1707     int yym, yyn, yystate;
1708 #if YYDEBUG
1709     const char *yys;
1710
1711     if ((yys = getenv("YYDEBUG")) != 0)
1712     {
1713         yyn = *yys;
1714         if (yyn >= '0' && yyn <= '9')
1715             yydebug = yyn - '0';
1716     }
1717 #endif
1718
1719     yym = 0;
1720     yyn = 0;
1721     yynerrs = 0;
1722     yyerrflag = 0;
1723     yychar = YYEMPTY;
1724     yystate = 0;
1725
1726 #if YYPURE
1727     memset(&yystack, 0, sizeof(yystack));
1728 #endif
1729
1730     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1731     yystack.s_mark = yystack.s_base;
1732     yystack.l_mark = yystack.l_base;
1733     yystate = 0;
1734     *yystack.s_mark = 0;
1735
1736 yyloop:
1737     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1738     if (yychar < 0)
1739     {
1740         yychar = YYLEX;
1741         if (yychar < 0) yychar = YYEOF;
1742 #if YYDEBUG
1743         if (yydebug)
1744         {
1745             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1746             printf("%sdebug: state %d, reading %d (%s)\n",
1747                     YYPREFIX, yystate, yychar, yys);
1748         }
1749 #endif
1750     }
1751     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1752             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1753     {
1754 #if YYDEBUG
1755         if (yydebug)
1756             printf("%sdebug: state %d, shifting to state %d\n",
1757                     YYPREFIX, yystate, yytable[yyn]);
1758 #endif
1759         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1760         yystate = yytable[yyn];
1761         *++yystack.s_mark = yytable[yyn];
1762         *++yystack.l_mark = yylval;
1763         yychar = YYEMPTY;
1764         if (yyerrflag > 0)  --yyerrflag;
1765         goto yyloop;
1766     }
1767     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1768             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1769     {
1770         yyn = yytable[yyn];
1771         goto yyreduce;
1772     }
1773     if (yyerrflag != 0) goto yyinrecovery;
1774
1775     YYERROR_CALL("syntax error");
1776
1777     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
1778 yyerrlab:
1779     ++yynerrs;
1780
1781 yyinrecovery:
1782     if (yyerrflag < 3)
1783     {
1784         yyerrflag = 3;
1785         for (;;)
1786         {
1787             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1788                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1789             {
1790 #if YYDEBUG
1791                 if (yydebug)
1792                     printf("%sdebug: state %d, error recovery shifting\
1793  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
1794 #endif
1795                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1796                 yystate = yytable[yyn];
1797                 *++yystack.s_mark = yytable[yyn];
1798                 *++yystack.l_mark = yylval;
1799                 goto yyloop;
1800             }
1801             else
1802             {
1803 #if YYDEBUG
1804                 if (yydebug)
1805                     printf("%sdebug: error recovery discarding state %d\n",
1806                             YYPREFIX, *yystack.s_mark);
1807 #endif
1808                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1809                 --yystack.s_mark;
1810                 --yystack.l_mark;
1811             }
1812         }
1813     }
1814     else
1815     {
1816         if (yychar == YYEOF) goto yyabort;
1817 #if YYDEBUG
1818         if (yydebug)
1819         {
1820             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1821             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1822                     YYPREFIX, yystate, yychar, yys);
1823         }
1824 #endif
1825         yychar = YYEMPTY;
1826         goto yyloop;
1827     }
1828
1829 yyreduce:
1830 #if YYDEBUG
1831     if (yydebug)
1832         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1833                 YYPREFIX, yystate, yyn, yyrule[yyn]);
1834 #endif
1835     yym = yylen[yyn];
1836     if (yym > 0)
1837         yyval = yystack.l_mark[1-yym];
1838     else
1839         memset(&yyval, 0, sizeof yyval);
1840
1841     switch (yyn)
1842     {
1843 case 1:
1844 #line 64 "expr.oxout.y"
1845         {yyyYoxInit();}
1846 break;
1847 case 2:
1848 #line 66 "expr.oxout.y"
1849         {
1850                  yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node);
1851                 }
1852 break;
1853 case 3:
1854 #line 73 "expr.oxout.y"
1855         {if(yyyYok){
1856 yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1857 yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1858 break;
1859 case 4:
1860 #line 80 "expr.oxout.y"
1861         {if(yyyYok){
1862 yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1863 yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1864 break;
1865 case 5:
1866 #line 87 "expr.oxout.y"
1867         {if(yyyYok){
1868 yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1869 yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1870 break;
1871 case 6:
1872 #line 94 "expr.oxout.y"
1873         {if(yyyYok){
1874 yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1875 yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1876 break;
1877 case 7:
1878 #line 101 "expr.oxout.y"
1879         {if(yyyYok){
1880 yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1881 yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1882 break;
1883 case 8:
1884 #line 108 "expr.oxout.y"
1885         {if(yyyYok){
1886 yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1887 yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1888 break;
1889 case 9:
1890 #line 114 "expr.oxout.y"
1891         {if(yyyYok){
1892 yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1893 yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1894 break;
1895 case 10:
1896 #line 121 "expr.oxout.y"
1897         {if(yyyYok){
1898 yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);
1899 yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}}
1900 break;
1901 #line 1902 "expr.oxout.tab.c"
1902     }
1903     yystack.s_mark -= yym;
1904     yystate = *yystack.s_mark;
1905     yystack.l_mark -= yym;
1906     yym = yylhs[yyn];
1907     if (yystate == 0 && yym == 0)
1908     {
1909 #if YYDEBUG
1910         if (yydebug)
1911             printf("%sdebug: after reduction, shifting from state 0 to\
1912  state %d\n", YYPREFIX, YYFINAL);
1913 #endif
1914         yystate = YYFINAL;
1915         *++yystack.s_mark = YYFINAL;
1916         *++yystack.l_mark = yyval;
1917         if (yychar < 0)
1918         {
1919             yychar = YYLEX;
1920             if (yychar < 0) yychar = YYEOF;
1921 #if YYDEBUG
1922             if (yydebug)
1923             {
1924                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1925                 printf("%sdebug: state %d, reading %d (%s)\n",
1926                         YYPREFIX, YYFINAL, yychar, yys);
1927             }
1928 #endif
1929         }
1930         if (yychar == YYEOF) goto yyaccept;
1931         goto yyloop;
1932     }
1933     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1934             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1935         yystate = yytable[yyn];
1936     else
1937         yystate = yydgoto[yym];
1938 #if YYDEBUG
1939     if (yydebug)
1940         printf("%sdebug: after reduction, shifting from state %d \
1941 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
1942 #endif
1943     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1944     *++yystack.s_mark = (YYINT) yystate;
1945     *++yystack.l_mark = yyval;
1946     goto yyloop;
1947
1948 yyoverflow:
1949     YYERROR_CALL("yacc stack overflow");
1950
1951 yyabort:
1952     yyfreestack(&yystack);
1953     return (1);
1954
1955 yyaccept:
1956     yyfreestack(&yystack);
1957     return (0);
1958 }