xref: /netbsd-src/external/bsd/byacc/dist/test/expr.oxout.y (revision 8ecbf5f02b752fcb7debe1a8fab1dc82602bc760)
1 /*	$NetBSD: expr.oxout.y,v 1.2 2017/02/11 19:33:12 christos Exp $	*/
2 
3 /* output from Ox version G1.04 */
4 #line 1 "expr.Y"
5 #line 4 "expr.oxout.y"
6 %{
7 #include <stdlib.h>
8 #include <string.h>
9 %}
10 #line 1 "expr.Y"
11 /* Y-file for translation of infix expressions to prefix and postfix */
12 %token ID CONST
13 %start yyyAugNonterm
14 %left '+' '-'
15 %left '*' '/'
16 %nonassoc '*'
17 
18 %{
19 #include "expr.oxout.h"
20 #include <stdio.h>
21 
22 extern int yylex(void);
23 extern void yyerror(const char *);
24 %}
25 
26 #line 25 "expr.oxout.y"
27 
28 %{
29 #include <limits.h>
30 #define yyyR USHRT_MAX
31 %}
32 %type <yyyOxAttrbs> yyyAugNonterm
33 %union {
34 struct yyyOxAttrbs {
35 struct yyyStackItem *yyyOxStackItem;
36 } yyyOxAttrbs;
37 }
38 
39 %{
40 #include <stdio.h>
41 #include <stdarg.h>
42 
43 static int yyyYok = 1;
44 
45 extern yyyFT yyyRCIL[];
46 
47 void yyyExecuteRRsection(yyyGNT *rootNode);
48 void yyyYoxInit(void);
49 void yyyDecorate(void);
50 struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */
51 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
52 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...);
53 void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum);
54 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode);
55 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode);
56 void yyyabort(void);
57 
58 %}
59 
60 
61 #line 20 "expr.Y"
62 %%
63 
64 #line 63 "expr.oxout.y"
65 yyyAugNonterm
66 	:	{yyyYoxInit();}
67 		s
68 		{
69 		 yyyDecorate(); yyyExecuteRRsection($<yyyOxAttrbs>2.yyyOxStackItem->node);
70 		}
71 	;
72 #line 21 "expr.Y"
73 s       :       expr
74 #line 73 "expr.oxout.y"
75 {if(yyyYok){
76 yyyGenIntNode(1,1,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);
77 yyyAdjustINRC(1,1,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);}}
78 
79 #line 27 "expr.Y"
80 expr    :       expr    '*'     expr
81 #line 80 "expr.oxout.y"
82 {if(yyyYok){
83 yyyGenIntNode(2,3,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);
84 yyyAdjustINRC(2,3,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);}}
85 
86 #line 31 "expr.Y"
87         |       expr    '+'     expr
88 #line 87 "expr.oxout.y"
89 {if(yyyYok){
90 yyyGenIntNode(3,3,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);
91 yyyAdjustINRC(3,3,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);}}
92 
93 #line 35 "expr.Y"
94         |       expr    '/'     expr
95 #line 94 "expr.oxout.y"
96 {if(yyyYok){
97 yyyGenIntNode(4,3,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);
98 yyyAdjustINRC(4,3,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);}}
99 
100 #line 39 "expr.Y"
101         |       expr    '-'     expr
102 #line 101 "expr.oxout.y"
103 {if(yyyYok){
104 yyyGenIntNode(5,3,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);
105 yyyAdjustINRC(5,3,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);}}
106 
107 #line 43 "expr.Y"
108         |       '('     expr    ')'
109 #line 108 "expr.oxout.y"
110 {if(yyyYok){
111 yyyGenIntNode(6,3,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);
112 yyyAdjustINRC(6,3,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1,&$<yyyOxAttrbs>2,&$<yyyOxAttrbs>3);}}
113 #line 44 "expr.Y"
114         |       ID
115 #line 114 "expr.oxout.y"
116 {if(yyyYok){
117 yyyGenIntNode(7,1,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);
118 yyyAdjustINRC(7,1,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);}}
119 
120 #line 48 "expr.Y"
121         |       CONST
122 #line 121 "expr.oxout.y"
123 {if(yyyYok){
124 yyyGenIntNode(8,1,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);
125 yyyAdjustINRC(8,1,0,0,&$<yyyOxAttrbs>$,&$<yyyOxAttrbs>1);}}
126 
127 #line 52 "expr.Y"
128         ;
129 %%
130 
131 int yyparse(void);
132 
133 int main()
134   {yyparse();
135   }
136 
137 
138 
139 #line 138 "expr.oxout.y"
140 long yyySSALspaceSize =    20000;
141 long yyyRSmaxSize =        1000;
142 long yyyTravStackMaxSize = 2000;
143 
144 struct yyySolvedSAlistCell {yyyWAT attrbNum;
145                             long next;
146                            };
147 
148 #define yyyLambdaSSAL 0
149 long yyySSALCfreeList = yyyLambdaSSAL;
150 long yyyNewSSALC = 1;
151 
152 struct yyySolvedSAlistCell *yyySSALspace;
153 
154 long yyyNbytesStackStg;
155 
156 
157 
158 yyyFT yyyRCIL[1];
159 
160 short yyyIIIEL[] = {0,
161 0,2,6,10,14,18,22,24,
162 };
163 
164 long yyyIIEL[] = {
165 0,0,0,0,0,0,0,0,0,0,0,0,
166 0,0,0,0,0,0,0,0,0,0,0,0,
167 1,1,
168 };
169 
170 long yyyIEL[] = {
171 0,0,0,
172 };
173 
174 yyyFT yyyEntL[1];
175 
176 void yyyfatal(char *msg)
177 {fputs(msg,stderr);exit(-1);}
178 
179 
180 
181 #define yyySSALof 'S'
182 #define yyyRSof   'q'
183 #define yyyTSof   't'
184 
185 
186 
187 void yyyHandleOverflow(char which)
188   {char *msg1,*msg2;
189    long  oldSize,newSize;
190    switch(which)
191      {
192       case yyySSALof :
193            msg1 = "SSAL overflow: ";
194            oldSize = yyySSALspaceSize;
195            break;
196       case yyyRSof   :
197            msg1 = "ready set overflow: ";
198            oldSize = yyyRSmaxSize;
199            break;
200       case yyyTSof   :
201            msg1 = "traversal stack overflow: ";
202            oldSize = yyyTravStackMaxSize;
203            break;
204       default        :;
205      }
206    newSize = (3*oldSize)/2;
207    if (newSize < 100) newSize = 100;
208    fputs(msg1,stderr);
209    fprintf(stderr,"size was %ld.\n",oldSize);
210    msg2 = "     Have to modify evaluator:  -Y%c%ld.\n";
211    fprintf(stderr,msg2,which,newSize);
212    exit(-1);
213   }
214 
215 
216 
217 void yyySignalEnts(yyyGNT *node,long startP,long stopP)
218   {yyyGNT *dumNode;
219 
220    while (startP < stopP)
221      {
222       if (!yyyEntL[startP]) dumNode = node;
223          else dumNode = (node->cL)[yyyEntL[startP]-1];
224       if (!(--((dumNode->refCountList)[yyyEntL[startP+1]]
225               )
226            )
227          )
228          {
229           if (++yyyRSTop == yyyAfterRS)
230              {yyyHandleOverflow(yyyRSof);
231               break;
232              }
233           yyyRSTop->node = dumNode;
234           yyyRSTop->whichSym = yyyEntL[startP];
235           yyyRSTop->wa = yyyEntL[startP+1];
236          }
237       startP += 2;
238      }
239   }
240 
241 
242 
243 
244 
245 
246 void yyySolveAndSignal() {
247 long yyyiDum,*yyypL;
248 int yyyws,yyywa;
249 yyyGNT *yyyRSTopN,*yyyRefN;
250 yyyParent yyyRSTopNp;
251 
252 
253 yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent;
254 yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN;
255 yyywa = yyyRSTop->wa;
256 yyyRSTop--;
257 switch(yyyRefN->prodNum) {
258 case 1:  /***yacc rule 1***/
259   switch (yyyws) {
260   }
261 break;
262 case 2:  /***yacc rule 2***/
263   switch (yyyws) {
264   }
265 break;
266 case 3:  /***yacc rule 3***/
267   switch (yyyws) {
268   }
269 break;
270 case 4:  /***yacc rule 4***/
271   switch (yyyws) {
272   }
273 break;
274 case 5:  /***yacc rule 5***/
275   switch (yyyws) {
276   }
277 break;
278 case 6:  /***yacc rule 6***/
279   switch (yyyws) {
280   }
281 break;
282 case 7:  /***yacc rule 7***/
283   switch (yyyws) {
284   case 1:  /**/
285     switch (yyywa) {
286     }
287   break;
288   }
289 break;
290 case 8:  /***yacc rule 8***/
291   switch (yyyws) {
292   case 1:  /**/
293     switch (yyywa) {
294     }
295   break;
296   }
297 break;
298 } /* switch */
299 
300 if (yyyws)  /* the just-solved instance was inherited. */
301    {if (yyyRSTopN->prodNum)
302        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa;
303         yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum],
304                                 yyyIEL[yyyiDum+1]
305                      );
306        }
307    }
308    else     /* the just-solved instance was synthesized. */
309    {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */
310        {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] +
311                           yyyRSTopN->whichSym
312                          ] +
313                   yyywa;
314         yyySignalEnts(yyyRSTopNp.noderef,
315                       yyyIEL[yyyiDum],
316                       yyyIEL[yyyiDum+1]
317                      );
318        }
319        else   /* node is still on the stack--it has no parent yet. */
320        {yyypL = &(yyyRSTopNp.stackref->solvedSAlist);
321         if (yyySSALCfreeList == yyyLambdaSSAL)
322            {yyySSALspace[yyyNewSSALC].next = *yyypL;
323             if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize)
324                yyyHandleOverflow(yyySSALof);
325            }
326            else
327            {yyyiDum = yyySSALCfreeList;
328             yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
329             yyySSALspace[yyyiDum].next = *yyypL;
330             *yyypL = yyyiDum;
331            }
332         yyySSALspace[*yyypL].attrbNum = yyywa;
333        }
334    }
335 
336 } /* yyySolveAndSignal */
337 
338 
339 
340 
341 
342 
343 #define condStg unsigned int conds;
344 #define yyyClearConds {yyyTST->conds = 0;}
345 #define yyySetCond(n) {yyyTST->conds += (1<<(n));}
346 #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0)
347 
348 
349 
350 struct yyyTravStackItem {yyyGNT *node;
351                          char isReady;
352                          condStg
353                         };
354 
355 
356 
357 void yyyDoTraversals(yyyGNT *rootNode)
358 {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack;
359  yyyGNT *yyyTSTn,**yyyCLptr2;
360  int yyyi,yyyRL,yyyPass;
361  int i;
362 
363  if (!yyyYok) return;
364  if ((yyyTravStack =
365                  ((struct yyyTravStackItem *)
366                   calloc((size_t)yyyTravStackMaxSize,
367                          (size_t)sizeof(struct yyyTravStackItem)
368                         )
369                  )
370      )
371      ==
372      (struct yyyTravStackItem *)NULL
373     )
374     {fputs("malloc error in traversal stack allocation\n",stderr);
375      exit(-1);
376     }
377 
378 yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize;
379 yyyTravStack++;
380 
381 
382 for (yyyi=0; yyyi<2; yyyi++) {
383 yyyTST = yyyTravStack;
384 yyyTST->node = rootNode;
385 yyyTST->isReady = 0;
386 yyyClearConds
387 
388 while(yyyTST >= yyyTravStack)
389   {yyyTSTn = yyyTST->node;
390    if (yyyTST->isReady)
391       {yyyPass = 1;
392        goto yyyTravSwitch;
393 yyyTpop:
394        yyyTST--;
395       }
396       else
397       {yyyPass = 0;
398        goto yyyTravSwitch;
399 yyyTpush:
400        yyyTST->isReady = 1;
401        if (yyyTSTn->prodNum)
402           {if (yyyRL)
403              {yyyCLptr2 = yyyTSTn->cL;
404               i = yyyTSTn->cLlen;
405               while (i--)
406                 {if (++yyyTST == yyyAfterTravStack)
407                     yyyHandleOverflow(yyyTSof);
408                     else
409                     {yyyTST->node = *yyyCLptr2;
410                      yyyTST->isReady = 0;
411                      yyyClearConds
412                     }
413                  yyyCLptr2++;
414                 }
415              } /* right to left */
416              else  /* left to right */
417              {i = yyyTSTn->cLlen;
418               yyyCLptr2 = yyyTSTn->cL + i;
419               while (i--)
420                 {yyyCLptr2--;
421                  if (++yyyTST == yyyAfterTravStack)
422                     yyyHandleOverflow(yyyTSof);
423                     else
424                     {yyyTST->node = *yyyCLptr2;
425                      yyyTST->isReady = 0;
426                      yyyClearConds
427                     }
428                 }
429              } /* left to right */
430           }
431       } /* else */
432    continue;
433 yyyTravSwitch:
434 				switch(yyyTSTn->prodNum)	{
435 case 1:
436 	switch(yyyi)	{
437 		case 0:
438 			switch(yyyPass)	{
439 				case 0:
440 yyyRL = 0;yyySetCond(0)
441 
442 if (!
443 #line 24 "expr.Y"
444   (1)
445 #line 444 "expr.oxout.y"
446 ) yyySetCond(1)
447 yyySetCond(2)
448 
449 				case 1:
450 
451 if (yyyCond(0) != yyyPass) {
452 #line 24 "expr.Y"
453 
454 #line 453 "expr.oxout.y"
455 }
456 if (yyyCond(1) != yyyPass) {
457 #line 24 "expr.Y"
458  printf("\n");
459 
460 #line 459 "expr.oxout.y"
461 }
462 if (yyyCond(2) != yyyPass) {
463 #line 25 "expr.Y"
464   printf("prefix:   ");
465 
466 #line 465 "expr.oxout.y"
467 }
468 				break;
469 					}
470 		break;
471 		case 1:
472 			switch(yyyPass)	{
473 				case 0:
474 yyyRL = 0;
475 if (
476 #line 23 "expr.Y"
477   (1)
478 #line 477 "expr.oxout.y"
479 ) yyySetCond(2)
480 
481 				case 1:
482 
483 if (yyyCond(0) != yyyPass) {
484 #line 22 "expr.Y"
485  printf("\n");
486 
487 #line 486 "expr.oxout.y"
488 }
489 if (yyyCond(1) != yyyPass) {
490 #line 23 "expr.Y"
491 
492 #line 491 "expr.oxout.y"
493 }
494 if (yyyCond(2) != yyyPass) {
495 #line 23 "expr.Y"
496  printf("postfix:  ")/* missing ; */
497 
498 #line 497 "expr.oxout.y"
499 }
500 				break;
501 					}
502 		break;
503 			}
504 
505 break;
506 case 2:
507 	switch(yyyi)	{
508 		case 0:
509 			switch(yyyPass)	{
510 				case 0:
511 yyyRL = 0;yyySetCond(0)
512 
513 				case 1:
514 
515 if (yyyCond(0) != yyyPass) {
516 #line 29 "expr.Y"
517   printf(" * ");
518 
519 #line 518 "expr.oxout.y"
520 }
521 				break;
522 					}
523 		break;
524 		case 1:
525 			switch(yyyPass)	{
526 				case 0:
527 yyyRL = 0;
528 				case 1:
529 
530 if (yyyCond(0) != yyyPass) {
531 #line 28 "expr.Y"
532  printf(" * ");
533 
534 #line 533 "expr.oxout.y"
535 }
536 				break;
537 					}
538 		break;
539 			}
540 
541 break;
542 case 3:
543 	switch(yyyi)	{
544 		case 0:
545 			switch(yyyPass)	{
546 				case 0:
547 yyyRL = 0;yyySetCond(0)
548 
549 				case 1:
550 
551 if (yyyCond(0) != yyyPass) {
552 #line 32 "expr.Y"
553   printf(" + ");
554 
555 #line 554 "expr.oxout.y"
556 }
557 				break;
558 					}
559 		break;
560 		case 1:
561 			switch(yyyPass)	{
562 				case 0:
563 yyyRL = 0;
564 				case 1:
565 
566 if (yyyCond(0) != yyyPass) {
567 #line 33 "expr.Y"
568  printf(" + ");
569 
570 #line 569 "expr.oxout.y"
571 }
572 				break;
573 					}
574 		break;
575 			}
576 
577 break;
578 case 4:
579 	switch(yyyi)	{
580 		case 0:
581 			switch(yyyPass)	{
582 				case 0:
583 yyyRL = 0;yyySetCond(0)
584 
585 				case 1:
586 
587 if (yyyCond(0) != yyyPass) {
588 #line 37 "expr.Y"
589   printf(" / ");
590 
591 #line 590 "expr.oxout.y"
592 }
593 				break;
594 					}
595 		break;
596 		case 1:
597 			switch(yyyPass)	{
598 				case 0:
599 yyyRL = 0;
600 				case 1:
601 
602 if (yyyCond(0) != yyyPass) {
603 #line 36 "expr.Y"
604  printf(" / ");
605 
606 #line 605 "expr.oxout.y"
607 }
608 				break;
609 					}
610 		break;
611 			}
612 
613 break;
614 case 5:
615 	switch(yyyi)	{
616 		case 0:
617 			switch(yyyPass)	{
618 				case 0:
619 yyyRL = 0;yyySetCond(0)
620 
621 				case 1:
622 
623 if (yyyCond(0) != yyyPass) {
624 #line 41 "expr.Y"
625   printf(" - ");
626 
627 #line 626 "expr.oxout.y"
628 }
629 				break;
630 					}
631 		break;
632 		case 1:
633 			switch(yyyPass)	{
634 				case 0:
635 yyyRL = 0;
636 				case 1:
637 
638 if (yyyCond(0) != yyyPass) {
639 #line 40 "expr.Y"
640  printf(" - ");
641 
642 #line 641 "expr.oxout.y"
643 }
644 				break;
645 					}
646 		break;
647 			}
648 
649 break;
650 case 6:
651 	switch(yyyi)	{
652 		case 0:
653 			switch(yyyPass)	{
654 				case 0:
655 yyyRL = 0;
656 				case 1:
657 
658 				break;
659 					}
660 		break;
661 		case 1:
662 			switch(yyyPass)	{
663 				case 0:
664 yyyRL = 0;
665 				case 1:
666 
667 				break;
668 					}
669 		break;
670 			}
671 
672 break;
673 case 7:
674 	switch(yyyi)	{
675 		case 0:
676 			switch(yyyPass)	{
677 				case 0:
678 yyyRL = 0;yyySetCond(0)
679 
680 				case 1:
681 
682 if (yyyCond(0) != yyyPass) {
683 #line 46 "expr.Y"
684   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
685 
686 #line 685 "expr.oxout.y"
687 }
688 				break;
689 					}
690 		break;
691 		case 1:
692 			switch(yyyPass)	{
693 				case 0:
694 yyyRL = 0;
695 				case 1:
696 
697 if (yyyCond(0) != yyyPass) {
698 #line 45 "expr.Y"
699  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
700 
701 #line 700 "expr.oxout.y"
702 }
703 				break;
704 					}
705 		break;
706 			}
707 
708 break;
709 case 8:
710 	switch(yyyi)	{
711 		case 0:
712 			switch(yyyPass)	{
713 				case 0:
714 yyyRL = 0;yyySetCond(0)
715 
716 				case 1:
717 
718 if (yyyCond(0) != yyyPass) {
719 #line 50 "expr.Y"
720   printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
721 
722 #line 721 "expr.oxout.y"
723 }
724 				break;
725 					}
726 		break;
727 		case 1:
728 			switch(yyyPass)	{
729 				case 0:
730 yyyRL = 0;
731 				case 1:
732 
733 if (yyyCond(0) != yyyPass) {
734 #line 49 "expr.Y"
735  printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme);
736 
737 #line 736 "expr.oxout.y"
738 }
739 				break;
740 					}
741 		break;
742 			}
743 
744 break;
745 								} /* switch */
746    if (yyyPass) goto yyyTpop; else goto yyyTpush;
747   } /* while */
748  } /* for */
749 } /* yyyDoTraversals */
750 
751 void yyyExecuteRRsection(yyyGNT *rootNode)  {
752    int yyyi;
753    long cycleSum = 0;
754    long nNZrc = 0;
755 
756    if (!yyyYok) return;
757    yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum);
758    if (nNZrc)
759       {
760        fputs("\n\n\n**********\n",stderr);
761        fputs("cycle detected in completed parse tree",stderr);
762        fputs(" after decoration.\n",stderr);
763 #if CYCLE_VERBOSE
764        fprintf(stderr,
765                "number of unsolved attribute instances == %ld.\n",
766                nNZrc
767               );
768        fprintf(stderr,
769                "total number of remaining dependencies == %ld.\n",
770                cycleSum
771               );
772        fputs("average number of remaining dependencies\n",stderr);
773        fprintf(stderr,"  per unsolved instance == %f.\n",
774                ((float)(cycleSum)/(float)(nNZrc))
775               );
776 #endif
777        fprintf(stderr,
778          "searching parse tree for %ld unsolved instances:\n",
779                nNZrc
780               );
781        yyyUnsolvedInstSearchTravAux(rootNode);
782       }
783    yyyDoTraversals(rootNode);
784 } /* yyyExecuteRRsection */
785 
786 
787 
788 yyyWAT yyyLRCIL[2] = {0,0,
789 };
790 
791 
792 
793 void yyyYoxInit(void)
794   {
795    static int yyyInitDone = 0;
796    if (yyyInitDone) return;
797 
798    if ((yyyRS = (struct yyyRSitem *)
799          calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem))
800        )
801        ==
802        ((struct yyyRSitem *) NULL)
803       )
804       yyyfatal("malloc error in ox ready set space allocation\n");
805    yyyRS++;
806    yyyAfterRS = yyyRS + yyyRSmaxSize;
807 
808 
809    if ((yyySSALspace = (struct yyySolvedSAlistCell *)
810           calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell))
811        )
812        ==
813        ((struct yyySolvedSAlistCell *) NULL)
814       )
815       yyyfatal("malloc error in stack solved list space allocation\n");
816    yyyInitDone = 1;
817 
818    yyyRSTop = yyyRS - 1;
819   } /* yyyYoxInit */
820 
821 
822 
823 void yyyDecorate(void)
824   {
825    while (yyyRSTop >= yyyRS)
826       yyySolveAndSignal();
827   }
828 
829 
830 
831 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
832   {yyyWST i;
833    yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem;
834    yyyGNT *gnpDum;
835    va_list ap;
836 
837    *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT));
838    if (*yyyOxStackItem == (yyySIT *) NULL)
839       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
840    (*yyyOxStackItem)->node =
841                                 (yyyGNT *) malloc((size_t)sizeof(yyyGNT));
842    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
843       yyyfatal("malloc error in ox node space allocation\n");
844    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
845    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
846    (*yyyOxStackItem)->node->parentIsStack = 1;
847    (*yyyOxStackItem)->node->cLlen  = yyyRHSlength;
848    (*yyyOxStackItem)->node->cL =
849             (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *));
850    if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL)
851       yyyfatal("malloc error in ox child list space allocation\n");
852    (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs;
853    (*yyyOxStackItem)->node->refCountList =
854             (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT));
855    if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL)
856       yyyfatal("malloc error in ox reference count list space allocation\n");
857    (*yyyOxStackItem)->node->prodNum = yyyProdNum;
858    va_start(ap, yyval_OxAttrbs);
859    for (i=1;i<=yyyRHSlength;i++)
860      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
861       gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node;
862       gnpDum->whichSym = i;
863       gnpDum->parent.noderef = (*yyyOxStackItem)->node;
864       gnpDum->parentIsStack = 0;
865      }
866    va_end(ap);
867   }
868 
869 
870 
871 #define yyyDECORfREQ 50
872 
873 
874 
875 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...)
876   {yyyWST i;
877    yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem;
878    long SSALptr,SSALptrHead,*cPtrPtr;
879    long *pL;
880    yyyGNT *gnpDum;
881    long iTemp;
882    long nextP;
883    static unsigned short intNodeCount = yyyDECORfREQ;
884    va_list ap;
885 
886    nextP = startP;
887    while (nextP < stopP)
888      {if (yyyRCIL[nextP] == yyyR)
889          {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
890          }
891          else
892          {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2];
893          }
894       nextP += 3;
895      }
896    pL = yyyIIEL + yyyIIIEL[yyyProdNum];
897    va_start(ap, yyval_OxAttrbs);
898    for (i=1;i<=yyyRHSlength;i++)
899      {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem;
900       pL++;
901       SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist));
902       if (SSALptr != yyyLambdaSSAL)
903          {*cPtrPtr = yyyLambdaSSAL;
904           do
905             {
906              iTemp = (*pL+yyySSALspace[SSALptr].attrbNum);
907              yyySignalEnts(yyyOxStackItem->node,
908                            yyyIEL[iTemp],
909                            yyyIEL[iTemp+1]
910                           );
911              SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next));
912             }
913             while (SSALptr != yyyLambdaSSAL);
914           *cPtrPtr = yyySSALCfreeList;
915           yyySSALCfreeList = SSALptrHead;
916          }
917      }
918    va_end(ap);
919    nextP = startP + 2;
920    while (nextP < stopP)
921      {if (!yyyRCIL[nextP])
922          {if (yyyRCIL[nextP-2] == yyyR)
923              {pL = &(yyyOxStackItem->solvedSAlist);
924               if (yyySSALCfreeList == yyyLambdaSSAL)
925                  {yyySSALspace[yyyNewSSALC].next = *pL;
926                   if ((*pL = yyyNewSSALC++) == yyySSALspaceSize)
927                      yyyHandleOverflow(yyySSALof);
928                  }
929                  else
930                  {iTemp = yyySSALCfreeList;
931                   yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next;
932                   yyySSALspace[iTemp].next = *pL;
933                   *pL = iTemp;
934                  }
935               yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1];
936              }
937              else
938              {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0)
939                  {
940                   iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1];
941                   yyySignalEnts(gnpDum,
942                                 yyyIEL[iTemp],
943                                 yyyIEL[iTemp+1]
944                                );
945                  }
946              }
947          }
948       nextP += 3;
949      }
950    if (!--intNodeCount)
951       {intNodeCount = yyyDECORfREQ;
952        yyyDecorate();
953       }
954   }
955 
956 
957 
958 void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval)
959   {yyyRCT *rcPdum;
960    yyySIT **yyyOxStackItem = &yylval->yyyOxAttrbs.yyyOxStackItem;
961    (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT));
962    if ((*yyyOxStackItem) == (yyySIT *) NULL)
963       yyyfatal("malloc error in ox yacc semantic stack space allocation\n");
964    (*yyyOxStackItem)->node =
965                           (yyyGNT *) malloc((size_t)sizeof(yyyGNT))
966                          ;
967    if ((*yyyOxStackItem)->node == (yyyGNT *) NULL)
968       yyyfatal("malloc error in ox node space allocation\n");
969    (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL;
970    (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem;
971    (*yyyOxStackItem)->node->parentIsStack = 1;
972    (*yyyOxStackItem)->node->cLlen = 0;
973    (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL;
974    (*yyyOxStackItem)->node->refCountListLen = nAttrbs;
975    rcPdum = (*yyyOxStackItem)->node->refCountList =
976             (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT));
977    if (rcPdum == (yyyRCT *) NULL)
978       yyyfatal("malloc error in ox reference count list space allocation\n");
979    while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0;
980    (*yyyOxStackItem)->node->prodNum = 0;
981    (*yyyOxStackItem)->node->whichSym = 0;
982   }
983 
984 
985 
986 void yyyabort(void)
987   {yyyYok = 0;
988   }
989 
990 
991 
992 
993 
994 #define yyyLastProdNum 8
995 
996 
997 #define yyyNsorts 1
998 
999 
1000 int yyyProdsInd[] = {
1001    0,
1002    0,   2,   6,  10,  14,  18,  22,  24,
1003   26,
1004 };
1005 
1006 
1007 int yyyProds[][2] = {
1008 { 116,   0},{ 462,   0},{ 462,   0},{ 462,   0},{ 412,   0},
1009 { 462,   0},{ 462,   0},{ 462,   0},{ 420,   0},{ 462,   0},
1010 { 462,   0},{ 462,   0},{ 452,   0},{ 462,   0},{ 462,   0},
1011 { 462,   0},{ 436,   0},{ 462,   0},{ 462,   0},{ 396,   0},
1012 { 462,   0},{ 404,   0},{ 462,   0},{ 619,   1},{ 462,   0},
1013 { 567,   1},
1014 };
1015 
1016 
1017 int yyySortsInd[] = {
1018   0,
1019   0,
1020   1,
1021 };
1022 
1023 
1024 int yyySorts[] = {
1025   413,
1026 };
1027 
1028 
1029 
1030 char *yyyStringTab[] = {
1031 0,0,0,0,0,
1032 0,0,0,0,0,
1033 0,0,0,0,0,
1034 0,0,0,0,0,
1035 0,0,0,0,0,
1036 0,0,0,0,0,
1037 0,0,0,0,0,
1038 0,0,0,0,0,
1039 0,0,0,0,0,
1040 0,0,0,0,0,
1041 0,0,0,0,0,
1042 0,0,0,0,0,
1043 0,0,0,0,0,
1044 0,0,0,0,0,
1045 0,0,0,0,0,
1046 0,0,0,0,0,
1047 0,0,0,0,0,
1048 0,0,0,0,0,
1049 0,0,0,0,0,
1050 0,0,0,0,0,
1051 0,0,0,0,0,
1052 0,0,0,0,0,
1053 0,0,0,0,0,
1054 0,"s",0,0,0,
1055 0,0,"y",0,0,
1056 0,0,0,0,0,
1057 0,0,0,0,0,
1058 0,0,0,0,0,
1059 0,0,0,0,0,
1060 0,0,0,0,0,
1061 0,0,0,0,0,
1062 0,0,0,0,0,
1063 0,0,0,0,0,
1064 0,0,0,0,0,
1065 0,0,0,0,0,
1066 0,0,0,0,0,
1067 0,0,0,0,0,
1068 0,0,0,0,0,
1069 0,0,0,0,0,
1070 0,0,0,0,0,
1071 0,0,0,0,0,
1072 0,0,0,0,0,
1073 0,0,0,0,0,
1074 0,0,0,0,0,
1075 0,0,0,0,0,
1076 0,0,0,0,0,
1077 0,0,0,0,0,
1078 0,0,0,0,0,
1079 0,0,0,0,0,
1080 0,0,0,0,0,
1081 0,0,0,0,0,
1082 0,0,0,0,0,
1083 0,0,0,0,0,
1084 0,0,0,0,0,
1085 0,0,0,0,0,
1086 0,0,0,0,0,
1087 0,0,0,0,0,
1088 0,0,0,0,0,
1089 0,0,0,0,0,
1090 0,0,0,0,0,
1091 0,0,0,0,0,
1092 0,0,0,0,0,
1093 0,0,0,0,0,
1094 0,0,0,0,0,
1095 0,0,0,0,0,
1096 0,"LRpre",0,0,0,
1097 0,0,0,0,0,
1098 0,0,0,0,0,
1099 0,0,0,0,0,
1100 0,0,0,0,0,
1101 0,0,0,0,0,
1102 0,0,0,0,0,
1103 0,0,0,0,0,
1104 0,0,0,0,0,
1105 0,0,0,0,0,
1106 0,0,0,0,0,
1107 0,0,0,0,0,
1108 0,0,0,0,0,
1109 0,0,0,0,0,
1110 0,"'('",0,0,0,
1111 0,0,0,0,"')'",
1112 0,0,0,0,0,
1113 0,0,"'*'","lexeme",0,
1114 0,0,0,0,0,
1115 "'+'",0,0,0,0,
1116 0,0,0,0,0,
1117 0,0,0,0,0,
1118 0,"'-'",0,0,0,
1119 0,0,0,0,0,
1120 0,0,0,0,0,
1121 0,0,"'/'",0,0,
1122 0,0,0,0,0,
1123 0,0,"expr",0,0,
1124 0,0,0,0,0,
1125 0,0,0,0,0,
1126 0,"printf",0,0,0,
1127 0,0,0,0,0,
1128 0,0,0,0,0,
1129 0,0,0,0,0,
1130 0,0,0,0,0,
1131 0,0,0,0,0,
1132 0,0,0,0,0,
1133 0,0,0,0,0,
1134 0,0,0,0,0,
1135 0,0,0,0,0,
1136 0,0,0,0,0,
1137 0,0,0,0,0,
1138 0,0,0,0,0,
1139 0,0,0,0,0,
1140 0,0,0,0,0,
1141 0,0,0,0,0,
1142 0,0,0,0,0,
1143 0,0,0,0,0,
1144 0,0,"CONST","LRpost",0,
1145 0,0,0,0,0,
1146 0,0,0,0,0,
1147 0,0,0,0,0,
1148 0,0,0,0,0,
1149 0,0,0,0,0,
1150 0,0,0,0,0,
1151 0,0,0,0,0,
1152 0,0,0,0,0,
1153 0,0,0,0,0,
1154 0,0,0,0,"ID",
1155 0,0,0,0,0,
1156 0,0,0,0,0,
1157 0,0,0,0,0,
1158 0,0,0,0,0,
1159 0,0,0,0,0,
1160 0,0,0,0,0,
1161 0,0,0,0,0,
1162 0,0,0,0,0,
1163 0,0,0,0,0,
1164 0,0,0,0,0,
1165 0,0,0,0,0,
1166 0,0,0,0,0,
1167 0,0,0,0,0,
1168 0,0,0,0,0,
1169 0,0,0,0,0,
1170 0,0,0,0,0,
1171 0,0,0,0,0,
1172 0,0,0,0,0,
1173 0,0,0,0,0,
1174 0,0,0,0,0,
1175 0,0,0,0,0,
1176 0,0,0,0,0,
1177 0,0,0,0,0,
1178 0,0,0,0,0,
1179 0,0,0,0,0,
1180 0,0,0,0,0,
1181 0,0,0,0,0,
1182 0,0,0,0,0,
1183 0,0,0,0,0,
1184 0,0,0,0,0,
1185 0,0,0,0,0,
1186 0,0,0,0,0,
1187 0,0,0,0,0,
1188 0,0,0,0,0,
1189 0,0,0,0,0,
1190 0,0,0,0,0,
1191 0,0,0,0,0,
1192 0,0,0,0,0,
1193 0,0,0,0,0,
1194 0,0,0,0,0,
1195 0,0,0,0,0,
1196 0,0,0,0,0,
1197 0,0,0,0,0,
1198 0,0,0,0,0,
1199 0,0,0,0,0,
1200 0,0,0,0,0,
1201 0,0,0,0,0,
1202 0,0,0,0,0,
1203 0,0,0,0,0,
1204 0,0,0,0,0,
1205 0,0,0,0,0,
1206 0,0,0,0,0,
1207 0,0,0,0,0,
1208 0,0,0,0,0,
1209 0,0,0,0,0,
1210 0,0,0,0,0,
1211 0,0,0,0,0,
1212 0,0,0,0,0,
1213 0,0,0,0,0,
1214 0,0,0,0,0,
1215 0,0,0,0,0,
1216 0,0,0,0,0,
1217 0,0,0,0,0,
1218 0,0,0,0,0,
1219 0,0,0,0,0,
1220 0,0,0,0,0,
1221 0,0,0,0,0,
1222 0,0,0,0,0,
1223 0,0,0,0,0,
1224 0,0,0,0,0,
1225 0,0,0,0,0,
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,0,0,0,0,
1250 0,0,0,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,
1278 };
1279 
1280 
1281 
1282 #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)])
1283 
1284 #define yyyGSoccurStr(prodNum,symPos) \
1285    (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]])
1286 
1287 #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)])
1288 
1289 #define yyySortOf(prodNum,symPos) \
1290   (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1])
1291 
1292 #define yyyAttrbStr(prodNum,symPos,attrbNum)                      \
1293   (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \
1294                          (attrbNum)                               \
1295                         ]                                         \
1296                ]                                                  \
1297   )
1298 
1299 
1300 
1301 void yyyShowProd(int i)
1302   {int j,nSyms;
1303 
1304    nSyms = yyySizeofProd(i);
1305    for (j=0; j<nSyms; j++)
1306      {
1307       fprintf(stderr,"%s",yyyGSoccurStr(i,j));
1308       if (j == 0) fputs(" : ",stderr); else putc(' ',stderr);
1309      }
1310    fputs(";\n",stderr);
1311   }
1312 
1313 
1314 
1315 void yyyShowProds()
1316   {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);}
1317 
1318 
1319 
1320 void yyyShowSymsAndSorts()
1321   {int i;
1322 
1323    for (i=1; i<=yyyLastProdNum; i++)
1324      {int j, nSyms;
1325 
1326       fprintf(stderr,
1327               "\n\n\n---------------------------------- %3.1d\n",i);
1328       /* yyyShowProd(i); */
1329       nSyms = yyySizeofProd(i);
1330       for (j=0; j<nSyms; j++)
1331         {int k, sortSize;
1332 
1333          fprintf(stderr,"%s\n",yyyGSoccurStr(i,j));
1334          sortSize = yyySizeofSort(yyySortOf(i,j));
1335          for (k=0; k<sortSize; k++)
1336             fprintf(stderr,"  %s\n",yyyAttrbStr(i,j,k));
1337          if (j == 0) fputs("->\n",stderr);
1338               else
1339               putc('\n',stderr);
1340         }
1341      }
1342   }
1343 
1344 
1345 
1346 void yyyCheckNodeInstancesSolved(yyyGNT *np)
1347   {int mysort,sortSize,i,prodNum,symPos,inTerminalNode;
1348    int nUnsolvedInsts = 0;
1349 
1350    if (np->prodNum != 0)
1351      {inTerminalNode = 0;
1352       prodNum = np->prodNum;
1353       symPos = 0;
1354      }
1355    else
1356      {inTerminalNode = 1;
1357       prodNum = np->parent.noderef->prodNum;
1358       symPos = np->whichSym;
1359      }
1360    mysort = yyySortOf(prodNum,symPos);
1361    sortSize = yyySizeofSort(mysort);
1362    for (i=0; i<sortSize; i++)
1363      if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1;
1364    if (nUnsolvedInsts)
1365      {fprintf(stderr,
1366       "\nFound node that has %d unsolved attribute instance(s).\n",
1367               nUnsolvedInsts
1368              );
1369       fprintf(stderr,"Node is labeled \"%s\".\n",
1370              yyyGSoccurStr(prodNum,symPos));
1371       if (inTerminalNode)
1372         {fputs("Node is terminal.  Its parent production is:\n  ",stderr);
1373          yyyShowProd(prodNum);
1374         }
1375       else
1376         {fputs("Node is nonterminal.  ",stderr);
1377          if (!(np->parentIsStack))
1378            {fprintf(stderr,
1379                     "Node is %dth child in its parent production:\n  ",
1380                    np->whichSym
1381                   );
1382             yyyShowProd(np->parent.noderef->prodNum);
1383            }
1384          fputs("Node is on left hand side of this production:\n  ",stderr);
1385          yyyShowProd(np->prodNum);
1386         }
1387       fputs("The following instances are unsolved:\n",stderr);
1388       for (i=0; i<sortSize; i++)
1389         if ((np->refCountList)[i] != 0)
1390           fprintf(stderr,"     %-16s still has %1d dependencies.\n",
1391                   yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]);
1392      }
1393   }
1394 
1395 
1396 
1397 void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum)
1398   {yyyGNT **yyyCLpdum;
1399    yyyRCT *rcp;
1400    int i;
1401 
1402    /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */
1403    rcp = pNode->refCountList;
1404    i = pNode->refCountListLen;
1405    while (i--)
1406       if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;}
1407    yyyCLpdum = pNode->cL;
1408    i = pNode->cLlen;
1409    while (i--)
1410      {
1411       yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum);
1412       yyyCLpdum++;
1413      }
1414   }
1415 
1416 
1417 
1418 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode)
1419   {yyyGNT **yyyCLpdum;
1420    int i;
1421 
1422    yyyCheckNodeInstancesSolved(pNode);
1423    yyyCLpdum = pNode->cL;
1424    i = pNode->cLlen;
1425    while (i--)
1426      {
1427       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1428       yyyCLpdum++;
1429      }
1430   }
1431 
1432 
1433 
1434 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode)
1435   {yyyGNT **yyyCLpdum;
1436    int i;
1437 
1438    yyyCLpdum = pNode->cL;
1439    i = pNode->cLlen;
1440    while (i--)
1441      {
1442       yyyUnsolvedInstSearchTravAux(*yyyCLpdum);
1443       yyyCLpdum++;
1444      }
1445   }
1446 
1447 
1448 
1449