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