q3rally/engine/builds/release-linux-x86_64/tools/rcc/dagcheck.c
2016-05-19 17:56:13 +00:00

2086 lines
50 KiB
C

#include "c.h"
typedef Node NODEPTR_TYPE;
#define OP_LABEL(p) (specific((p)->op))
#define LEFT_CHILD(p) ((p)->kids[0])
#define RIGHT_CHILD(p) ((p)->kids[1])
#define STATE_LABEL(p) ((p)->x.state)
#define PANIC error
/*
generated at Thu May 19 18:28:27 2016
by lburg.c - faked rcsid
*/
static void _kids(NODEPTR_TYPE, int, NODEPTR_TYPE[]);
static void _label(NODEPTR_TYPE);
static int _rule(void*, int);
#define _stmt_NT 1
#define _P_NT 2
#define _V_NT 3
#define _bogus_NT 4
#define _I_NT 5
#define _U_NT 6
#define _F_NT 7
#define _B_NT 8
static char *_ntname[] = {
0,
"stmt",
"P",
"V",
"bogus",
"I",
"U",
"F",
"B",
0
};
struct _state {
short cost[9];
struct {
unsigned int _stmt:4;
unsigned int _P:4;
unsigned int _V:6;
unsigned int _bogus:3;
unsigned int _I:5;
unsigned int _U:5;
unsigned int _F:4;
unsigned int _B:2;
} rule;
};
static short _nts_0[] = { _P_NT, 0 };
static short _nts_1[] = { _V_NT, 0 };
static short _nts_2[] = { _I_NT, 0 };
static short _nts_3[] = { _U_NT, 0 };
static short _nts_4[] = { _F_NT, 0 };
static short _nts_5[] = { _B_NT, 0 };
static short _nts_6[] = { _bogus_NT, 0 };
static short _nts_7[] = { 0 };
static short _nts_8[] = { _P_NT, _B_NT, 0 };
static short _nts_9[] = { _P_NT, _F_NT, 0 };
static short _nts_10[] = { _P_NT, _I_NT, 0 };
static short _nts_11[] = { _P_NT, _U_NT, 0 };
static short _nts_12[] = { _P_NT, _P_NT, 0 };
static short _nts_13[] = { _F_NT, _F_NT, 0 };
static short _nts_14[] = { _I_NT, _I_NT, 0 };
static short _nts_15[] = { _I_NT, _P_NT, 0 };
static short _nts_16[] = { _U_NT, _P_NT, 0 };
static short _nts_17[] = { _U_NT, _U_NT, 0 };
static short _nts_18[] = { _U_NT, _I_NT, 0 };
static short *_nts[] = {
0, /* 0 */
_nts_0, /* 1 */
_nts_0, /* 2 */
_nts_0, /* 3 */
_nts_0, /* 4 */
_nts_0, /* 5 */
_nts_0, /* 6 */
_nts_0, /* 7 */
_nts_0, /* 8 */
_nts_0, /* 9 */
_nts_1, /* 10 */
_nts_2, /* 11 */
_nts_3, /* 12 */
_nts_0, /* 13 */
_nts_4, /* 14 */
_nts_5, /* 15 */
_nts_1, /* 16 */
_nts_6, /* 17 */
_nts_6, /* 18 */
_nts_6, /* 19 */
_nts_6, /* 20 */
_nts_6, /* 21 */
_nts_6, /* 22 */
_nts_7, /* 23 */
_nts_7, /* 24 */
_nts_7, /* 25 */
_nts_7, /* 26 */
_nts_5, /* 27 */
_nts_4, /* 28 */
_nts_2, /* 29 */
_nts_3, /* 30 */
_nts_0, /* 31 */
_nts_8, /* 32 */
_nts_9, /* 33 */
_nts_10, /* 34 */
_nts_11, /* 35 */
_nts_12, /* 36 */
_nts_0, /* 37 */
_nts_0, /* 38 */
_nts_0, /* 39 */
_nts_0, /* 40 */
_nts_0, /* 41 */
_nts_2, /* 42 */
_nts_3, /* 43 */
_nts_4, /* 44 */
_nts_2, /* 45 */
_nts_3, /* 46 */
_nts_0, /* 47 */
_nts_2, /* 48 */
_nts_4, /* 49 */
_nts_3, /* 50 */
_nts_0, /* 51 */
_nts_4, /* 52 */
_nts_2, /* 53 */
_nts_12, /* 54 */
_nts_0, /* 55 */
_nts_0, /* 56 */
_nts_0, /* 57 */
_nts_0, /* 58 */
_nts_0, /* 59 */
_nts_4, /* 60 */
_nts_2, /* 61 */
_nts_3, /* 62 */
_nts_0, /* 63 */
_nts_7, /* 64 */
_nts_7, /* 65 */
_nts_7, /* 66 */
_nts_7, /* 67 */
_nts_13, /* 68 */
_nts_14, /* 69 */
_nts_10, /* 70 */
_nts_15, /* 71 */
_nts_16, /* 72 */
_nts_11, /* 73 */
_nts_17, /* 74 */
_nts_13, /* 75 */
_nts_14, /* 76 */
_nts_10, /* 77 */
_nts_11, /* 78 */
_nts_17, /* 79 */
_nts_14, /* 80 */
_nts_18, /* 81 */
_nts_14, /* 82 */
_nts_17, /* 83 */
_nts_14, /* 84 */
_nts_18, /* 85 */
_nts_17, /* 86 */
_nts_14, /* 87 */
_nts_3, /* 88 */
_nts_2, /* 89 */
_nts_14, /* 90 */
_nts_17, /* 91 */
_nts_17, /* 92 */
_nts_14, /* 93 */
_nts_13, /* 94 */
_nts_14, /* 95 */
_nts_17, /* 96 */
_nts_13, /* 97 */
_nts_14, /* 98 */
_nts_17, /* 99 */
_nts_13, /* 100 */
_nts_14, /* 101 */
_nts_17, /* 102 */
_nts_13, /* 103 */
_nts_14, /* 104 */
_nts_17, /* 105 */
_nts_13, /* 106 */
_nts_14, /* 107 */
_nts_17, /* 108 */
_nts_13, /* 109 */
_nts_14, /* 110 */
_nts_17, /* 111 */
_nts_13, /* 112 */
_nts_14, /* 113 */
_nts_17, /* 114 */
_nts_13, /* 115 */
_nts_14, /* 116 */
_nts_17, /* 117 */
_nts_0, /* 118 */
_nts_7, /* 119 */
};
static char *_templates[] = {
/* 0 */ 0,
/* 1 */ "", /* stmt: INDIRB(P) */
/* 2 */ "", /* stmt: INDIRF(P) */
/* 3 */ "", /* stmt: INDIRI(P) */
/* 4 */ "", /* stmt: INDIRU(P) */
/* 5 */ "", /* stmt: INDIRP(P) */
/* 6 */ "", /* stmt: CALLF(P) */
/* 7 */ "", /* stmt: CALLI(P) */
/* 8 */ "", /* stmt: CALLU(P) */
/* 9 */ "", /* stmt: CALLP(P) */
/* 10 */ "", /* stmt: V */
/* 11 */ "", /* bogus: I */
/* 12 */ "", /* bogus: U */
/* 13 */ "", /* bogus: P */
/* 14 */ "", /* bogus: F */
/* 15 */ "", /* bogus: B */
/* 16 */ "", /* bogus: V */
/* 17 */ "", /* I: bogus */
/* 18 */ "", /* U: bogus */
/* 19 */ "", /* P: bogus */
/* 20 */ "", /* F: bogus */
/* 21 */ "", /* B: bogus */
/* 22 */ "", /* V: bogus */
/* 23 */ "", /* F: CNSTF */
/* 24 */ "", /* I: CNSTI */
/* 25 */ "", /* P: CNSTP */
/* 26 */ "", /* U: CNSTU */
/* 27 */ "", /* V: ARGB(B) */
/* 28 */ "", /* V: ARGF(F) */
/* 29 */ "", /* V: ARGI(I) */
/* 30 */ "", /* V: ARGU(U) */
/* 31 */ "", /* V: ARGP(P) */
/* 32 */ "", /* V: ASGNB(P,B) */
/* 33 */ "", /* V: ASGNF(P,F) */
/* 34 */ "", /* V: ASGNI(P,I) */
/* 35 */ "", /* V: ASGNU(P,U) */
/* 36 */ "", /* V: ASGNP(P,P) */
/* 37 */ "", /* B: INDIRB(P) */
/* 38 */ "", /* F: INDIRF(P) */
/* 39 */ "", /* I: INDIRI(P) */
/* 40 */ "", /* U: INDIRU(P) */
/* 41 */ "", /* P: INDIRP(P) */
/* 42 */ "", /* I: CVII(I) */
/* 43 */ "", /* I: CVUI(U) */
/* 44 */ "", /* I: CVFI(F) */
/* 45 */ "", /* U: CVIU(I) */
/* 46 */ "", /* U: CVUU(U) */
/* 47 */ "", /* U: CVPU(P) */
/* 48 */ "", /* F: CVIF(I) */
/* 49 */ "", /* F: CVFF(F) */
/* 50 */ "", /* P: CVUP(U) */
/* 51 */ "", /* P: CVPP(P) */
/* 52 */ "", /* F: NEGF(F) */
/* 53 */ "", /* I: NEGI(I) */
/* 54 */ "", /* V: CALLB(P,P) */
/* 55 */ "", /* F: CALLF(P) */
/* 56 */ "", /* I: CALLI(P) */
/* 57 */ "", /* U: CALLU(P) */
/* 58 */ "", /* P: CALLP(P) */
/* 59 */ "", /* V: CALLV(P) */
/* 60 */ "", /* V: RETF(F) */
/* 61 */ "", /* V: RETI(I) */
/* 62 */ "", /* V: RETU(U) */
/* 63 */ "", /* V: RETP(P) */
/* 64 */ "", /* V: RETV */
/* 65 */ "", /* P: ADDRGP */
/* 66 */ "", /* P: ADDRFP */
/* 67 */ "", /* P: ADDRLP */
/* 68 */ "", /* F: ADDF(F,F) */
/* 69 */ "", /* I: ADDI(I,I) */
/* 70 */ "", /* P: ADDP(P,I) */
/* 71 */ "", /* P: ADDP(I,P) */
/* 72 */ "", /* P: ADDP(U,P) */
/* 73 */ "", /* P: ADDP(P,U) */
/* 74 */ "", /* U: ADDU(U,U) */
/* 75 */ "", /* F: SUBF(F,F) */
/* 76 */ "", /* I: SUBI(I,I) */
/* 77 */ "", /* P: SUBP(P,I) */
/* 78 */ "", /* P: SUBP(P,U) */
/* 79 */ "", /* U: SUBU(U,U) */
/* 80 */ "", /* I: LSHI(I,I) */
/* 81 */ "", /* U: LSHU(U,I) */
/* 82 */ "", /* I: MODI(I,I) */
/* 83 */ "", /* U: MODU(U,U) */
/* 84 */ "", /* I: RSHI(I,I) */
/* 85 */ "", /* U: RSHU(U,I) */
/* 86 */ "", /* U: BANDU(U,U) */
/* 87 */ "", /* I: BANDI(I,I) */
/* 88 */ "", /* U: BCOMU(U) */
/* 89 */ "", /* I: BCOMI(I) */
/* 90 */ "", /* I: BORI(I,I) */
/* 91 */ "", /* U: BORU(U,U) */
/* 92 */ "", /* U: BXORU(U,U) */
/* 93 */ "", /* I: BXORI(I,I) */
/* 94 */ "", /* F: DIVF(F,F) */
/* 95 */ "", /* I: DIVI(I,I) */
/* 96 */ "", /* U: DIVU(U,U) */
/* 97 */ "", /* F: MULF(F,F) */
/* 98 */ "", /* I: MULI(I,I) */
/* 99 */ "", /* U: MULU(U,U) */
/* 100 */ "", /* V: EQF(F,F) */
/* 101 */ "", /* V: EQI(I,I) */
/* 102 */ "", /* V: EQU(U,U) */
/* 103 */ "", /* V: GEF(F,F) */
/* 104 */ "", /* V: GEI(I,I) */
/* 105 */ "", /* V: GEU(U,U) */
/* 106 */ "", /* V: GTF(F,F) */
/* 107 */ "", /* V: GTI(I,I) */
/* 108 */ "", /* V: GTU(U,U) */
/* 109 */ "", /* V: LEF(F,F) */
/* 110 */ "", /* V: LEI(I,I) */
/* 111 */ "", /* V: LEU(U,U) */
/* 112 */ "", /* V: LTF(F,F) */
/* 113 */ "", /* V: LTI(I,I) */
/* 114 */ "", /* V: LTU(U,U) */
/* 115 */ "", /* V: NEF(F,F) */
/* 116 */ "", /* V: NEI(I,I) */
/* 117 */ "", /* V: NEU(U,U) */
/* 118 */ "", /* V: JUMPV(P) */
/* 119 */ "", /* V: LABELV */
};
static char _isinstruction[] = {
/* 0 */ 0,
/* 1 */ 0, /* */
/* 2 */ 0, /* */
/* 3 */ 0, /* */
/* 4 */ 0, /* */
/* 5 */ 0, /* */
/* 6 */ 0, /* */
/* 7 */ 0, /* */
/* 8 */ 0, /* */
/* 9 */ 0, /* */
/* 10 */ 0, /* */
/* 11 */ 0, /* */
/* 12 */ 0, /* */
/* 13 */ 0, /* */
/* 14 */ 0, /* */
/* 15 */ 0, /* */
/* 16 */ 0, /* */
/* 17 */ 0, /* */
/* 18 */ 0, /* */
/* 19 */ 0, /* */
/* 20 */ 0, /* */
/* 21 */ 0, /* */
/* 22 */ 0, /* */
/* 23 */ 0, /* */
/* 24 */ 0, /* */
/* 25 */ 0, /* */
/* 26 */ 0, /* */
/* 27 */ 0, /* */
/* 28 */ 0, /* */
/* 29 */ 0, /* */
/* 30 */ 0, /* */
/* 31 */ 0, /* */
/* 32 */ 0, /* */
/* 33 */ 0, /* */
/* 34 */ 0, /* */
/* 35 */ 0, /* */
/* 36 */ 0, /* */
/* 37 */ 0, /* */
/* 38 */ 0, /* */
/* 39 */ 0, /* */
/* 40 */ 0, /* */
/* 41 */ 0, /* */
/* 42 */ 0, /* */
/* 43 */ 0, /* */
/* 44 */ 0, /* */
/* 45 */ 0, /* */
/* 46 */ 0, /* */
/* 47 */ 0, /* */
/* 48 */ 0, /* */
/* 49 */ 0, /* */
/* 50 */ 0, /* */
/* 51 */ 0, /* */
/* 52 */ 0, /* */
/* 53 */ 0, /* */
/* 54 */ 0, /* */
/* 55 */ 0, /* */
/* 56 */ 0, /* */
/* 57 */ 0, /* */
/* 58 */ 0, /* */
/* 59 */ 0, /* */
/* 60 */ 0, /* */
/* 61 */ 0, /* */
/* 62 */ 0, /* */
/* 63 */ 0, /* */
/* 64 */ 0, /* */
/* 65 */ 0, /* */
/* 66 */ 0, /* */
/* 67 */ 0, /* */
/* 68 */ 0, /* */
/* 69 */ 0, /* */
/* 70 */ 0, /* */
/* 71 */ 0, /* */
/* 72 */ 0, /* */
/* 73 */ 0, /* */
/* 74 */ 0, /* */
/* 75 */ 0, /* */
/* 76 */ 0, /* */
/* 77 */ 0, /* */
/* 78 */ 0, /* */
/* 79 */ 0, /* */
/* 80 */ 0, /* */
/* 81 */ 0, /* */
/* 82 */ 0, /* */
/* 83 */ 0, /* */
/* 84 */ 0, /* */
/* 85 */ 0, /* */
/* 86 */ 0, /* */
/* 87 */ 0, /* */
/* 88 */ 0, /* */
/* 89 */ 0, /* */
/* 90 */ 0, /* */
/* 91 */ 0, /* */
/* 92 */ 0, /* */
/* 93 */ 0, /* */
/* 94 */ 0, /* */
/* 95 */ 0, /* */
/* 96 */ 0, /* */
/* 97 */ 0, /* */
/* 98 */ 0, /* */
/* 99 */ 0, /* */
/* 100 */ 0, /* */
/* 101 */ 0, /* */
/* 102 */ 0, /* */
/* 103 */ 0, /* */
/* 104 */ 0, /* */
/* 105 */ 0, /* */
/* 106 */ 0, /* */
/* 107 */ 0, /* */
/* 108 */ 0, /* */
/* 109 */ 0, /* */
/* 110 */ 0, /* */
/* 111 */ 0, /* */
/* 112 */ 0, /* */
/* 113 */ 0, /* */
/* 114 */ 0, /* */
/* 115 */ 0, /* */
/* 116 */ 0, /* */
/* 117 */ 0, /* */
/* 118 */ 0, /* */
/* 119 */ 0, /* */
};
static char *_string[] = {
/* 0 */ 0,
/* 1 */ "stmt: INDIRB(P)",
/* 2 */ "stmt: INDIRF(P)",
/* 3 */ "stmt: INDIRI(P)",
/* 4 */ "stmt: INDIRU(P)",
/* 5 */ "stmt: INDIRP(P)",
/* 6 */ "stmt: CALLF(P)",
/* 7 */ "stmt: CALLI(P)",
/* 8 */ "stmt: CALLU(P)",
/* 9 */ "stmt: CALLP(P)",
/* 10 */ "stmt: V",
/* 11 */ "bogus: I",
/* 12 */ "bogus: U",
/* 13 */ "bogus: P",
/* 14 */ "bogus: F",
/* 15 */ "bogus: B",
/* 16 */ "bogus: V",
/* 17 */ "I: bogus",
/* 18 */ "U: bogus",
/* 19 */ "P: bogus",
/* 20 */ "F: bogus",
/* 21 */ "B: bogus",
/* 22 */ "V: bogus",
/* 23 */ "F: CNSTF",
/* 24 */ "I: CNSTI",
/* 25 */ "P: CNSTP",
/* 26 */ "U: CNSTU",
/* 27 */ "V: ARGB(B)",
/* 28 */ "V: ARGF(F)",
/* 29 */ "V: ARGI(I)",
/* 30 */ "V: ARGU(U)",
/* 31 */ "V: ARGP(P)",
/* 32 */ "V: ASGNB(P,B)",
/* 33 */ "V: ASGNF(P,F)",
/* 34 */ "V: ASGNI(P,I)",
/* 35 */ "V: ASGNU(P,U)",
/* 36 */ "V: ASGNP(P,P)",
/* 37 */ "B: INDIRB(P)",
/* 38 */ "F: INDIRF(P)",
/* 39 */ "I: INDIRI(P)",
/* 40 */ "U: INDIRU(P)",
/* 41 */ "P: INDIRP(P)",
/* 42 */ "I: CVII(I)",
/* 43 */ "I: CVUI(U)",
/* 44 */ "I: CVFI(F)",
/* 45 */ "U: CVIU(I)",
/* 46 */ "U: CVUU(U)",
/* 47 */ "U: CVPU(P)",
/* 48 */ "F: CVIF(I)",
/* 49 */ "F: CVFF(F)",
/* 50 */ "P: CVUP(U)",
/* 51 */ "P: CVPP(P)",
/* 52 */ "F: NEGF(F)",
/* 53 */ "I: NEGI(I)",
/* 54 */ "V: CALLB(P,P)",
/* 55 */ "F: CALLF(P)",
/* 56 */ "I: CALLI(P)",
/* 57 */ "U: CALLU(P)",
/* 58 */ "P: CALLP(P)",
/* 59 */ "V: CALLV(P)",
/* 60 */ "V: RETF(F)",
/* 61 */ "V: RETI(I)",
/* 62 */ "V: RETU(U)",
/* 63 */ "V: RETP(P)",
/* 64 */ "V: RETV",
/* 65 */ "P: ADDRGP",
/* 66 */ "P: ADDRFP",
/* 67 */ "P: ADDRLP",
/* 68 */ "F: ADDF(F,F)",
/* 69 */ "I: ADDI(I,I)",
/* 70 */ "P: ADDP(P,I)",
/* 71 */ "P: ADDP(I,P)",
/* 72 */ "P: ADDP(U,P)",
/* 73 */ "P: ADDP(P,U)",
/* 74 */ "U: ADDU(U,U)",
/* 75 */ "F: SUBF(F,F)",
/* 76 */ "I: SUBI(I,I)",
/* 77 */ "P: SUBP(P,I)",
/* 78 */ "P: SUBP(P,U)",
/* 79 */ "U: SUBU(U,U)",
/* 80 */ "I: LSHI(I,I)",
/* 81 */ "U: LSHU(U,I)",
/* 82 */ "I: MODI(I,I)",
/* 83 */ "U: MODU(U,U)",
/* 84 */ "I: RSHI(I,I)",
/* 85 */ "U: RSHU(U,I)",
/* 86 */ "U: BANDU(U,U)",
/* 87 */ "I: BANDI(I,I)",
/* 88 */ "U: BCOMU(U)",
/* 89 */ "I: BCOMI(I)",
/* 90 */ "I: BORI(I,I)",
/* 91 */ "U: BORU(U,U)",
/* 92 */ "U: BXORU(U,U)",
/* 93 */ "I: BXORI(I,I)",
/* 94 */ "F: DIVF(F,F)",
/* 95 */ "I: DIVI(I,I)",
/* 96 */ "U: DIVU(U,U)",
/* 97 */ "F: MULF(F,F)",
/* 98 */ "I: MULI(I,I)",
/* 99 */ "U: MULU(U,U)",
/* 100 */ "V: EQF(F,F)",
/* 101 */ "V: EQI(I,I)",
/* 102 */ "V: EQU(U,U)",
/* 103 */ "V: GEF(F,F)",
/* 104 */ "V: GEI(I,I)",
/* 105 */ "V: GEU(U,U)",
/* 106 */ "V: GTF(F,F)",
/* 107 */ "V: GTI(I,I)",
/* 108 */ "V: GTU(U,U)",
/* 109 */ "V: LEF(F,F)",
/* 110 */ "V: LEI(I,I)",
/* 111 */ "V: LEU(U,U)",
/* 112 */ "V: LTF(F,F)",
/* 113 */ "V: LTI(I,I)",
/* 114 */ "V: LTU(U,U)",
/* 115 */ "V: NEF(F,F)",
/* 116 */ "V: NEI(I,I)",
/* 117 */ "V: NEU(U,U)",
/* 118 */ "V: JUMPV(P)",
/* 119 */ "V: LABELV",
};
static short _decode_stmt[] = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
};
static short _decode_P[] = {
0,
19,
25,
41,
50,
51,
58,
65,
66,
67,
70,
71,
72,
73,
77,
78,
};
static short _decode_V[] = {
0,
22,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
54,
59,
60,
61,
62,
63,
64,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
};
static short _decode_bogus[] = {
0,
11,
12,
13,
14,
15,
16,
};
static short _decode_I[] = {
0,
17,
24,
39,
42,
43,
44,
53,
56,
69,
76,
80,
82,
84,
87,
89,
90,
93,
95,
98,
};
static short _decode_U[] = {
0,
18,
26,
40,
45,
46,
47,
57,
74,
79,
81,
83,
85,
86,
88,
91,
92,
96,
99,
};
static short _decode_F[] = {
0,
20,
23,
38,
48,
49,
52,
55,
68,
75,
94,
97,
};
static short _decode_B[] = {
0,
21,
37,
};
static int _rule(void *state, int goalnt) {
if (goalnt < 1 || goalnt > 8)
fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
if (!state)
return 0;
switch (goalnt) {
case _stmt_NT: return _decode_stmt[((struct _state *)state)->rule._stmt];
case _P_NT: return _decode_P[((struct _state *)state)->rule._P];
case _V_NT: return _decode_V[((struct _state *)state)->rule._V];
case _bogus_NT: return _decode_bogus[((struct _state *)state)->rule._bogus];
case _I_NT: return _decode_I[((struct _state *)state)->rule._I];
case _U_NT: return _decode_U[((struct _state *)state)->rule._U];
case _F_NT: return _decode_F[((struct _state *)state)->rule._F];
case _B_NT: return _decode_B[((struct _state *)state)->rule._B];
default:
fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
return 0;
}
}
static void _closure_P(NODEPTR_TYPE, int);
static void _closure_V(NODEPTR_TYPE, int);
static void _closure_bogus(NODEPTR_TYPE, int);
static void _closure_I(NODEPTR_TYPE, int);
static void _closure_U(NODEPTR_TYPE, int);
static void _closure_F(NODEPTR_TYPE, int);
static void _closure_B(NODEPTR_TYPE, int);
static void _closure_P(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 3;
_closure_bogus(a, c + 1);
}
}
static void _closure_V(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 6;
_closure_bogus(a, c + 1);
}
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 10;
}
}
static void _closure_bogus(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 1;
p->rule._V = 1;
_closure_V(a, c + 1);
}
if (c + 1 < p->cost[_B_NT]) {
p->cost[_B_NT] = c + 1;
p->rule._B = 1;
_closure_B(a, c + 1);
}
if (c + 1 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 1;
p->rule._F = 1;
_closure_F(a, c + 1);
}
if (c + 1 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 1;
p->rule._P = 1;
_closure_P(a, c + 1);
}
if (c + 1 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 1;
p->rule._U = 1;
_closure_U(a, c + 1);
}
if (c + 1 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 1;
p->rule._I = 1;
_closure_I(a, c + 1);
}
}
static void _closure_I(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 1;
_closure_bogus(a, c + 1);
}
}
static void _closure_U(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 2;
_closure_bogus(a, c + 1);
}
}
static void _closure_F(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 4;
_closure_bogus(a, c + 1);
}
}
static void _closure_B(NODEPTR_TYPE a, int c) {
struct _state *p = STATE_LABEL(a);
if (c + 1 < p->cost[_bogus_NT]) {
p->cost[_bogus_NT] = c + 1;
p->rule._bogus = 5;
_closure_bogus(a, c + 1);
}
}
static void _label(NODEPTR_TYPE a) {
int c;
struct _state *p;
if (!a)
fatal("_label", "Null tree\n", 0);
STATE_LABEL(a) = p = allocate(sizeof *p, FUNC);
p->rule._stmt = 0;
p->cost[1] =
p->cost[2] =
p->cost[3] =
p->cost[4] =
p->cost[5] =
p->cost[6] =
p->cost[7] =
p->cost[8] =
0x7fff;
switch (OP_LABEL(a)) {
case 17: /* CNSTF */
/* F: CNSTF */
if (0 + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = 0 + 0;
p->rule._F = 2;
_closure_F(a, 0 + 0);
}
break;
case 21: /* CNSTI */
/* I: CNSTI */
if (0 + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = 0 + 0;
p->rule._I = 2;
_closure_I(a, 0 + 0);
}
break;
case 22: /* CNSTU */
/* U: CNSTU */
if (0 + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = 0 + 0;
p->rule._U = 2;
_closure_U(a, 0 + 0);
}
break;
case 23: /* CNSTP */
/* P: CNSTP */
if (0 + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = 0 + 0;
p->rule._P = 2;
_closure_P(a, 0 + 0);
}
break;
case 33: /* ARGF */
_label(LEFT_CHILD(a));
/* V: ARGF(F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 3;
_closure_V(a, c + 0);
}
break;
case 37: /* ARGI */
_label(LEFT_CHILD(a));
/* V: ARGI(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 4;
_closure_V(a, c + 0);
}
break;
case 38: /* ARGU */
_label(LEFT_CHILD(a));
/* V: ARGU(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 5;
_closure_V(a, c + 0);
}
break;
case 39: /* ARGP */
_label(LEFT_CHILD(a));
/* V: ARGP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 6;
_closure_V(a, c + 0);
}
break;
case 41: /* ARGB */
_label(LEFT_CHILD(a));
/* V: ARGB(B) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_B_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 2;
_closure_V(a, c + 0);
}
break;
case 49: /* ASGNF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: ASGNF(P,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 8;
_closure_V(a, c + 0);
}
break;
case 53: /* ASGNI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: ASGNI(P,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 9;
_closure_V(a, c + 0);
}
break;
case 54: /* ASGNU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: ASGNU(P,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 10;
_closure_V(a, c + 0);
}
break;
case 55: /* ASGNP */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: ASGNP(P,P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 11;
_closure_V(a, c + 0);
}
break;
case 57: /* ASGNB */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: ASGNB(P,B) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_B_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 7;
_closure_V(a, c + 0);
}
break;
case 65: /* INDIRF */
_label(LEFT_CHILD(a));
/* stmt: INDIRF(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 2;
}
/* F: INDIRF(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 3;
_closure_F(a, c + 0);
}
break;
case 69: /* INDIRI */
_label(LEFT_CHILD(a));
/* stmt: INDIRI(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 3;
}
/* I: INDIRI(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 3;
_closure_I(a, c + 0);
}
break;
case 70: /* INDIRU */
_label(LEFT_CHILD(a));
/* stmt: INDIRU(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 4;
}
/* U: INDIRU(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 3;
_closure_U(a, c + 0);
}
break;
case 71: /* INDIRP */
_label(LEFT_CHILD(a));
/* stmt: INDIRP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 5;
}
/* P: INDIRP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 3;
_closure_P(a, c + 0);
}
break;
case 73: /* INDIRB */
_label(LEFT_CHILD(a));
/* stmt: INDIRB(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 1;
}
/* B: INDIRB(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_B_NT]) {
p->cost[_B_NT] = c + 0;
p->rule._B = 2;
_closure_B(a, c + 0);
}
break;
case 113: /* CVFF */
_label(LEFT_CHILD(a));
/* F: CVFF(F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 5;
_closure_F(a, c + 0);
}
break;
case 117: /* CVFI */
_label(LEFT_CHILD(a));
/* I: CVFI(F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 6;
_closure_I(a, c + 0);
}
break;
case 129: /* CVIF */
_label(LEFT_CHILD(a));
/* F: CVIF(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 4;
_closure_F(a, c + 0);
}
break;
case 133: /* CVII */
_label(LEFT_CHILD(a));
/* I: CVII(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 4;
_closure_I(a, c + 0);
}
break;
case 134: /* CVIU */
_label(LEFT_CHILD(a));
/* U: CVIU(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 4;
_closure_U(a, c + 0);
}
break;
case 150: /* CVPU */
_label(LEFT_CHILD(a));
/* U: CVPU(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 6;
_closure_U(a, c + 0);
}
break;
case 151: /* CVPP */
_label(LEFT_CHILD(a));
/* P: CVPP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 5;
_closure_P(a, c + 0);
}
break;
case 181: /* CVUI */
_label(LEFT_CHILD(a));
/* I: CVUI(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 5;
_closure_I(a, c + 0);
}
break;
case 182: /* CVUU */
_label(LEFT_CHILD(a));
/* U: CVUU(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 5;
_closure_U(a, c + 0);
}
break;
case 183: /* CVUP */
_label(LEFT_CHILD(a));
/* P: CVUP(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 4;
_closure_P(a, c + 0);
}
break;
case 193: /* NEGF */
_label(LEFT_CHILD(a));
/* F: NEGF(F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 6;
_closure_F(a, c + 0);
}
break;
case 197: /* NEGI */
_label(LEFT_CHILD(a));
/* I: NEGI(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 7;
_closure_I(a, c + 0);
}
break;
case 209: /* CALLF */
_label(LEFT_CHILD(a));
/* stmt: CALLF(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 6;
}
/* F: CALLF(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 7;
_closure_F(a, c + 0);
}
break;
case 213: /* CALLI */
_label(LEFT_CHILD(a));
/* stmt: CALLI(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 7;
}
/* I: CALLI(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 8;
_closure_I(a, c + 0);
}
break;
case 214: /* CALLU */
_label(LEFT_CHILD(a));
/* stmt: CALLU(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 8;
}
/* U: CALLU(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 7;
_closure_U(a, c + 0);
}
break;
case 215: /* CALLP */
_label(LEFT_CHILD(a));
/* stmt: CALLP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_stmt_NT]) {
p->cost[_stmt_NT] = c + 0;
p->rule._stmt = 9;
}
/* P: CALLP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 6;
_closure_P(a, c + 0);
}
break;
case 216: /* CALLV */
_label(LEFT_CHILD(a));
/* V: CALLV(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 13;
_closure_V(a, c + 0);
}
break;
case 217: /* CALLB */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: CALLB(P,P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 12;
_closure_V(a, c + 0);
}
break;
case 241: /* RETF */
_label(LEFT_CHILD(a));
/* V: RETF(F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 14;
_closure_V(a, c + 0);
}
break;
case 245: /* RETI */
_label(LEFT_CHILD(a));
/* V: RETI(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 15;
_closure_V(a, c + 0);
}
break;
case 246: /* RETU */
_label(LEFT_CHILD(a));
/* V: RETU(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 16;
_closure_V(a, c + 0);
}
break;
case 247: /* RETP */
_label(LEFT_CHILD(a));
/* V: RETP(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 17;
_closure_V(a, c + 0);
}
break;
case 248: /* RETV */
/* V: RETV */
if (0 + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = 0 + 0;
p->rule._V = 18;
_closure_V(a, 0 + 0);
}
break;
case 263: /* ADDRGP */
/* P: ADDRGP */
if (0 + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = 0 + 0;
p->rule._P = 7;
_closure_P(a, 0 + 0);
}
break;
case 279: /* ADDRFP */
/* P: ADDRFP */
if (0 + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = 0 + 0;
p->rule._P = 8;
_closure_P(a, 0 + 0);
}
break;
case 295: /* ADDRLP */
/* P: ADDRLP */
if (0 + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = 0 + 0;
p->rule._P = 9;
_closure_P(a, 0 + 0);
}
break;
case 305: /* ADDF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* F: ADDF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 8;
_closure_F(a, c + 0);
}
break;
case 309: /* ADDI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: ADDI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 9;
_closure_I(a, c + 0);
}
break;
case 310: /* ADDU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: ADDU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 8;
_closure_U(a, c + 0);
}
break;
case 311: /* ADDP */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* P: ADDP(P,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 10;
_closure_P(a, c + 0);
}
/* P: ADDP(I,P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 11;
_closure_P(a, c + 0);
}
/* P: ADDP(U,P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 12;
_closure_P(a, c + 0);
}
/* P: ADDP(P,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 13;
_closure_P(a, c + 0);
}
break;
case 321: /* SUBF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* F: SUBF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 9;
_closure_F(a, c + 0);
}
break;
case 325: /* SUBI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: SUBI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 10;
_closure_I(a, c + 0);
}
break;
case 326: /* SUBU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: SUBU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 9;
_closure_U(a, c + 0);
}
break;
case 327: /* SUBP */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* P: SUBP(P,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 14;
_closure_P(a, c + 0);
}
/* P: SUBP(P,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_P_NT]) {
p->cost[_P_NT] = c + 0;
p->rule._P = 15;
_closure_P(a, c + 0);
}
break;
case 341: /* LSHI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: LSHI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 11;
_closure_I(a, c + 0);
}
break;
case 342: /* LSHU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: LSHU(U,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 10;
_closure_U(a, c + 0);
}
break;
case 357: /* MODI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: MODI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 12;
_closure_I(a, c + 0);
}
break;
case 358: /* MODU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: MODU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 11;
_closure_U(a, c + 0);
}
break;
case 373: /* RSHI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: RSHI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 13;
_closure_I(a, c + 0);
}
break;
case 374: /* RSHU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: RSHU(U,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 12;
_closure_U(a, c + 0);
}
break;
case 389: /* BANDI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: BANDI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 14;
_closure_I(a, c + 0);
}
break;
case 390: /* BANDU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: BANDU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 13;
_closure_U(a, c + 0);
}
break;
case 405: /* BCOMI */
_label(LEFT_CHILD(a));
/* I: BCOMI(I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 15;
_closure_I(a, c + 0);
}
break;
case 406: /* BCOMU */
_label(LEFT_CHILD(a));
/* U: BCOMU(U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 14;
_closure_U(a, c + 0);
}
break;
case 421: /* BORI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: BORI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 16;
_closure_I(a, c + 0);
}
break;
case 422: /* BORU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: BORU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 15;
_closure_U(a, c + 0);
}
break;
case 437: /* BXORI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: BXORI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 17;
_closure_I(a, c + 0);
}
break;
case 438: /* BXORU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: BXORU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 16;
_closure_U(a, c + 0);
}
break;
case 449: /* DIVF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* F: DIVF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 10;
_closure_F(a, c + 0);
}
break;
case 453: /* DIVI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: DIVI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 18;
_closure_I(a, c + 0);
}
break;
case 454: /* DIVU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: DIVU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 17;
_closure_U(a, c + 0);
}
break;
case 465: /* MULF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* F: MULF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_F_NT]) {
p->cost[_F_NT] = c + 0;
p->rule._F = 11;
_closure_F(a, c + 0);
}
break;
case 469: /* MULI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* I: MULI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_I_NT]) {
p->cost[_I_NT] = c + 0;
p->rule._I = 19;
_closure_I(a, c + 0);
}
break;
case 470: /* MULU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* U: MULU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_U_NT]) {
p->cost[_U_NT] = c + 0;
p->rule._U = 18;
_closure_U(a, c + 0);
}
break;
case 481: /* EQF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: EQF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 19;
_closure_V(a, c + 0);
}
break;
case 485: /* EQI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: EQI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 20;
_closure_V(a, c + 0);
}
break;
case 486: /* EQU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: EQU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 21;
_closure_V(a, c + 0);
}
break;
case 497: /* GEF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GEF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 22;
_closure_V(a, c + 0);
}
break;
case 501: /* GEI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GEI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 23;
_closure_V(a, c + 0);
}
break;
case 502: /* GEU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GEU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 24;
_closure_V(a, c + 0);
}
break;
case 513: /* GTF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GTF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 25;
_closure_V(a, c + 0);
}
break;
case 517: /* GTI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GTI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 26;
_closure_V(a, c + 0);
}
break;
case 518: /* GTU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: GTU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 27;
_closure_V(a, c + 0);
}
break;
case 529: /* LEF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LEF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 28;
_closure_V(a, c + 0);
}
break;
case 533: /* LEI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LEI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 29;
_closure_V(a, c + 0);
}
break;
case 534: /* LEU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LEU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 30;
_closure_V(a, c + 0);
}
break;
case 545: /* LTF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LTF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 31;
_closure_V(a, c + 0);
}
break;
case 549: /* LTI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LTI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 32;
_closure_V(a, c + 0);
}
break;
case 550: /* LTU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: LTU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 33;
_closure_V(a, c + 0);
}
break;
case 561: /* NEF */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: NEF(F,F) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 34;
_closure_V(a, c + 0);
}
break;
case 565: /* NEI */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: NEI(I,I) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 35;
_closure_V(a, c + 0);
}
break;
case 566: /* NEU */
_label(LEFT_CHILD(a));
_label(RIGHT_CHILD(a));
/* V: NEU(U,U) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 36;
_closure_V(a, c + 0);
}
break;
case 584: /* JUMPV */
_label(LEFT_CHILD(a));
/* V: JUMPV(P) */
c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
if (c + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = c + 0;
p->rule._V = 37;
_closure_V(a, c + 0);
}
break;
case 600: /* LABELV */
/* V: LABELV */
if (0 + 0 < p->cost[_V_NT]) {
p->cost[_V_NT] = 0 + 0;
p->rule._V = 38;
_closure_V(a, 0 + 0);
}
break;
default:
fatal("_label", "Bad terminal %d\n", OP_LABEL(a));
}
}
static void _kids(NODEPTR_TYPE p, int eruleno, NODEPTR_TYPE kids[]) {
if (!p)
fatal("_kids", "Null tree\n", 0);
if (!kids)
fatal("_kids", "Null kids\n", 0);
switch (eruleno) {
case 118: /* V: JUMPV(P) */
case 89: /* I: BCOMI(I) */
case 88: /* U: BCOMU(U) */
case 63: /* V: RETP(P) */
case 62: /* V: RETU(U) */
case 61: /* V: RETI(I) */
case 60: /* V: RETF(F) */
case 59: /* V: CALLV(P) */
case 58: /* P: CALLP(P) */
case 57: /* U: CALLU(P) */
case 56: /* I: CALLI(P) */
case 55: /* F: CALLF(P) */
case 53: /* I: NEGI(I) */
case 52: /* F: NEGF(F) */
case 51: /* P: CVPP(P) */
case 50: /* P: CVUP(U) */
case 49: /* F: CVFF(F) */
case 48: /* F: CVIF(I) */
case 47: /* U: CVPU(P) */
case 46: /* U: CVUU(U) */
case 45: /* U: CVIU(I) */
case 44: /* I: CVFI(F) */
case 43: /* I: CVUI(U) */
case 42: /* I: CVII(I) */
case 41: /* P: INDIRP(P) */
case 40: /* U: INDIRU(P) */
case 39: /* I: INDIRI(P) */
case 38: /* F: INDIRF(P) */
case 37: /* B: INDIRB(P) */
case 31: /* V: ARGP(P) */
case 30: /* V: ARGU(U) */
case 29: /* V: ARGI(I) */
case 28: /* V: ARGF(F) */
case 27: /* V: ARGB(B) */
case 9: /* stmt: CALLP(P) */
case 8: /* stmt: CALLU(P) */
case 7: /* stmt: CALLI(P) */
case 6: /* stmt: CALLF(P) */
case 5: /* stmt: INDIRP(P) */
case 4: /* stmt: INDIRU(P) */
case 3: /* stmt: INDIRI(P) */
case 2: /* stmt: INDIRF(P) */
case 1: /* stmt: INDIRB(P) */
kids[0] = LEFT_CHILD(p);
break;
case 22: /* V: bogus */
case 21: /* B: bogus */
case 20: /* F: bogus */
case 19: /* P: bogus */
case 18: /* U: bogus */
case 17: /* I: bogus */
case 16: /* bogus: V */
case 15: /* bogus: B */
case 14: /* bogus: F */
case 13: /* bogus: P */
case 12: /* bogus: U */
case 11: /* bogus: I */
case 10: /* stmt: V */
kids[0] = p;
break;
case 119: /* V: LABELV */
case 67: /* P: ADDRLP */
case 66: /* P: ADDRFP */
case 65: /* P: ADDRGP */
case 64: /* V: RETV */
case 26: /* U: CNSTU */
case 25: /* P: CNSTP */
case 24: /* I: CNSTI */
case 23: /* F: CNSTF */
break;
case 117: /* V: NEU(U,U) */
case 116: /* V: NEI(I,I) */
case 115: /* V: NEF(F,F) */
case 114: /* V: LTU(U,U) */
case 113: /* V: LTI(I,I) */
case 112: /* V: LTF(F,F) */
case 111: /* V: LEU(U,U) */
case 110: /* V: LEI(I,I) */
case 109: /* V: LEF(F,F) */
case 108: /* V: GTU(U,U) */
case 107: /* V: GTI(I,I) */
case 106: /* V: GTF(F,F) */
case 105: /* V: GEU(U,U) */
case 104: /* V: GEI(I,I) */
case 103: /* V: GEF(F,F) */
case 102: /* V: EQU(U,U) */
case 101: /* V: EQI(I,I) */
case 100: /* V: EQF(F,F) */
case 99: /* U: MULU(U,U) */
case 98: /* I: MULI(I,I) */
case 97: /* F: MULF(F,F) */
case 96: /* U: DIVU(U,U) */
case 95: /* I: DIVI(I,I) */
case 94: /* F: DIVF(F,F) */
case 93: /* I: BXORI(I,I) */
case 92: /* U: BXORU(U,U) */
case 91: /* U: BORU(U,U) */
case 90: /* I: BORI(I,I) */
case 87: /* I: BANDI(I,I) */
case 86: /* U: BANDU(U,U) */
case 85: /* U: RSHU(U,I) */
case 84: /* I: RSHI(I,I) */
case 83: /* U: MODU(U,U) */
case 82: /* I: MODI(I,I) */
case 81: /* U: LSHU(U,I) */
case 80: /* I: LSHI(I,I) */
case 79: /* U: SUBU(U,U) */
case 78: /* P: SUBP(P,U) */
case 77: /* P: SUBP(P,I) */
case 76: /* I: SUBI(I,I) */
case 75: /* F: SUBF(F,F) */
case 74: /* U: ADDU(U,U) */
case 73: /* P: ADDP(P,U) */
case 72: /* P: ADDP(U,P) */
case 71: /* P: ADDP(I,P) */
case 70: /* P: ADDP(P,I) */
case 69: /* I: ADDI(I,I) */
case 68: /* F: ADDF(F,F) */
case 54: /* V: CALLB(P,P) */
case 36: /* V: ASGNP(P,P) */
case 35: /* V: ASGNU(P,U) */
case 34: /* V: ASGNI(P,I) */
case 33: /* V: ASGNF(P,F) */
case 32: /* V: ASGNB(P,B) */
kids[0] = LEFT_CHILD(p);
kids[1] = RIGHT_CHILD(p);
break;
default:
fatal("_kids", "Bad rule number %d\n", eruleno);
}
}
static void reduce(NODEPTR_TYPE p, int goalnt) {
int i, sz = opsize(p->op), rulenumber = _rule(p->x.state, goalnt);
short *nts = _nts[rulenumber];
NODEPTR_TYPE kids[10];
assert(rulenumber);
_kids(p, rulenumber, kids);
for (i = 0; nts[i]; i++)
reduce(kids[i], nts[i]);
switch (optype(p->op)) {
#define xx(ty) if (sz == ty->size) return
case I:
case U:
xx(chartype);
xx(shorttype);
xx(inttype);
xx(longtype);
xx(longlong);
break;
case F:
xx(floattype);
xx(doubletype);
xx(longdouble);
break;
case P:
xx(voidptype);
xx(funcptype);
break;
case V:
case B: if (sz == 0) return;
#undef xx
}
printdag(p, 2);
assert(0);
}
void check(Node p) {
struct _state { short cost[1]; };
_label(p);
if (((struct _state *)p->x.state)->cost[1] > 0) {
printdag(p, 2);
assert(0);
}
reduce(p, 1);
}