mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2025-02-23 20:41:22 +00:00
2086 lines
50 KiB
C
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);
|
|
}
|