3 typedef Node NODEPTR_TYPE;
4 #define OP_LABEL(p) (specific((p)->op))
5 #define LEFT_CHILD(p) ((p)->kids[0])
6 #define RIGHT_CHILD(p) ((p)->kids[1])
7 #define STATE_LABEL(p) ((p)->x.state)
10 %term CNSTF=17 CNSTI=21 CNSTP=23 CNSTU=22
11 %term ARGB=41 ARGF=33 ARGI=37 ARGP=39 ARGU=38
12 %term ASGNB=57 ASGNF=49 ASGNI=53 ASGNP=55 ASGNU=54
13 %term INDIRB=73 INDIRF=65 INDIRI=69 INDIRP=71 INDIRU=70
14 %term CVFF=113 CVFI=117
15 %term CVIF=129 CVII=133 CVIU=134
16 %term CVPP=151 CVPU=150
17 %term CVUI=181 CVUP=183 CVUU=182
18 %term NEGF=193 NEGI=197
19 %term CALLB=217 CALLF=209 CALLI=213 CALLP=215 CALLU=214 CALLV=216
20 %term RETF=241 RETI=245 RETP=247 RETU=246 RETV=248
24 %term ADDF=305 ADDI=309 ADDP=311 ADDU=310
25 %term SUBF=321 SUBI=325 SUBP=327 SUBU=326
26 %term LSHI=341 LSHU=342
27 %term MODI=357 MODU=358
28 %term RSHI=373 RSHU=374
29 %term BANDI=389 BANDU=390
30 %term BCOMI=405 BCOMU=406
31 %term BORI=421 BORU=422
32 %term BXORI=437 BXORU=438
33 %term DIVF=449 DIVI=453 DIVU=454
34 %term MULF=465 MULI=469 MULU=470
35 %term EQF=481 EQI=485 EQU=486
36 %term GEF=497 GEI=501 GEU=502
37 %term GTF=513 GTI=517 GTU=518
38 %term LEF=529 LEI=533 LEU=534
39 %term LTF=545 LTI=549 LTU=550
40 %term NEF=561 NEI=565 NEU=566
165 static void reduce(NODEPTR_TYPE p, int goalnt) {
166 int i, sz = opsize(p->op), rulenumber = _rule(p->x.state, goalnt);
167 short *nts = _nts[rulenumber];
168 NODEPTR_TYPE kids[10];
171 _kids(p, rulenumber, kids);
172 for (i = 0; nts[i]; i++)
173 reduce(kids[i], nts[i]);
174 switch (optype(p->op)) {
175 #define xx(ty) if (sz == ty->size) return
194 case B: if (sz == 0) return;
202 struct _state { short cost[1]; };
205 if (((struct _state *)p->x.state)->cost[1] > 0) {