xref: /inferno-os/libinterp/tab.h (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 struct
2 {
3 	char*	name;
4 	int	op;
5 	int	terminal;
6 }keywds[] =
7 {
8 	"nop",		INOP,		TOKI0,
9 	"alt",		IALT,		TOKI3,
10 	"nbalt",	INBALT,		TOKI3,
11 	"goto",		IGOTO,		TOKI2,
12 	"call",		ICALL,		TOKI2,
13 	"frame",	IFRAME,		TOKI2,
14 	"spawn",	ISPAWN,		TOKI2,
15 	"runt",		IRUNT,		TOKI2,
16 	"load",		ILOAD,		TOKI3,
17 	"mcall",	IMCALL,		TOKI3,
18 	"mspawn",	IMSPAWN,	TOKI3,
19 	"mframe",	IMFRAME,	TOKI3,
20 	"ret",		IRET,		TOKI0,
21 	"jmp",		IJMP,		TOKI1,
22 	"case",		ICASE,		TOKI2,
23 	"exit",		IEXIT,		TOKI0,
24 	"new",		INEW,		TOKI2,
25 	"newa",		INEWA,		TOKI3,
26 	"newcb",	INEWCB,		TOKI1,
27 	"newcw",	INEWCW,		TOKI1,
28 	"newcf",	INEWCF,		TOKI1,
29 	"newcp",	INEWCP,		TOKI1,
30 	"newcm",	INEWCM,		TOKI2,
31 	"newcmp",	INEWCMP,	TOKI2,
32 	"send",		ISEND,		TOKI2,
33 	"recv",		IRECV,		TOKI2,
34 	"consb",	ICONSB,		TOKI2,
35 	"consw",	ICONSW,		TOKI2,
36 	"consp",	ICONSP,		TOKI2,
37 	"consf",	ICONSF,		TOKI2,
38 	"consm",	ICONSM,		TOKI3,
39 	"consmp",	ICONSMP,	TOKI3,
40 	"headb",	IHEADB,		TOKI2,
41 	"headw",	IHEADW,		TOKI2,
42 	"headp",	IHEADP,		TOKI2,
43 	"headf",	IHEADF,		TOKI2,
44 	"headm",	IHEADM,		TOKI3,
45 	"headmp",	IHEADMP,	TOKI3,
46 	"tail",		ITAIL,		TOKI2,
47 	"lea",		ILEA,		TOKI2,
48 	"indx",		IINDX,		TOKI3,
49 	"movp",		IMOVP,		TOKI2,
50 	"movm",		IMOVM,		TOKI3,
51 	"movmp",	IMOVMP,		TOKI3,
52 	"movb",		IMOVB,		TOKI2,
53 	"movw",		IMOVW,		TOKI2,
54 	"movf",		IMOVF,		TOKI2,
55 	"cvtbw",	ICVTBW,		TOKI2,
56 	"cvtwb",	ICVTWB,		TOKI2,
57 	"cvtfw",	ICVTFW,		TOKI2,
58 	"cvtwf",	ICVTWF,		TOKI2,
59 	"cvtca",	ICVTCA,		TOKI2,
60 	"cvtac",	ICVTAC,		TOKI2,
61 	"cvtwc",	ICVTWC,		TOKI2,
62 	"cvtcw",	ICVTCW,		TOKI2,
63 	"cvtfc",	ICVTFC,		TOKI2,
64 	"cvtcf",	ICVTCF,		TOKI2,
65 	"addb",		IADDB,		TOKI3,
66 	"addw",		IADDW,		TOKI3,
67 	"addf",		IADDF,		TOKI3,
68 	"subb",		ISUBB,		TOKI3,
69 	"subw",		ISUBW,		TOKI3,
70 	"subf",		ISUBF,		TOKI3,
71 	"mulb",		IMULB,		TOKI3,
72 	"mulw",		IMULW,		TOKI3,
73 	"mulf",		IMULF,		TOKI3,
74 	"divb",		IDIVB,		TOKI3,
75 	"divw",		IDIVW,		TOKI3,
76 	"divf",		IDIVF,		TOKI3,
77 	"modw",		IMODW,		TOKI3,
78 	"modb",		IMODB,		TOKI3,
79 	"andb",		IANDB,		TOKI3,
80 	"andw",		IANDW,		TOKI3,
81 	"orb",		IORB,		TOKI3,
82 	"orw",		IORW,		TOKI3,
83 	"xorb",		IXORB,		TOKI3,
84 	"xorw",		IXORW,		TOKI3,
85 	"shlb",		ISHLB,		TOKI3,
86 	"shlw",		ISHLW,		TOKI3,
87 	"shrb",		ISHRB,		TOKI3,
88 	"shrw",		ISHRW,		TOKI3,
89 	"insc",		IINSC,		TOKI3,
90 	"indc",		IINDC,		TOKI3,
91 	"addc",		IADDC,		TOKI3,
92 	"lenc",		ILENC,		TOKI2,
93 	"lena",		ILENA,		TOKI2,
94 	"lenl",		ILENL,		TOKI2,
95 	"beqb",		IBEQB,		TOKI3,
96 	"bneb",		IBNEB,		TOKI3,
97 	"bltb",		IBLTB,		TOKI3,
98 	"bleb",		IBLEB,		TOKI3,
99 	"bgtb",		IBGTB,		TOKI3,
100 	"bgeb",		IBGEB,		TOKI3,
101 	"beqw",		IBEQW,		TOKI3,
102 	"bnew",		IBNEW,		TOKI3,
103 	"bltw",		IBLTW,		TOKI3,
104 	"blew",		IBLEW,		TOKI3,
105 	"bgtw",		IBGTW,		TOKI3,
106 	"bgew",		IBGEW,		TOKI3,
107 	"beqf",		IBEQF,		TOKI3,
108 	"bnef",		IBNEF,		TOKI3,
109 	"bltf",		IBLTF,		TOKI3,
110 	"blef",		IBLEF,		TOKI3,
111 	"bgtf",		IBGTF,		TOKI3,
112 	"bgef",		IBGEF,		TOKI3,
113 	"beqc",		IBEQC,		TOKI3,
114 	"bnec",		IBNEC,		TOKI3,
115 	"bltc",		IBLTC,		TOKI3,
116 	"blec",		IBLEC,		TOKI3,
117 	"bgtc",		IBGTC,		TOKI3,
118 	"bgec",		IBGEC,		TOKI3,
119 	"slicea",	ISLICEA,	TOKI3,
120 	"slicela",	ISLICELA,	TOKI3,
121 	"slicec",	ISLICEC,	TOKI3,
122 	"indw",		IINDW,		TOKI3,
123 	"indf",		IINDF,		TOKI3,
124 	"indb",		IINDB,		TOKI3,
125 	"negf",		INEGF,		TOKI2,
126 	"movl",		IMOVL,		TOKI2,
127 	"addl",		IADDL,		TOKI3,
128 	"subl",		ISUBL,		TOKI3,
129 	"divl",		IDIVL,		TOKI3,
130 	"modl",		IMODL,		TOKI3,
131 	"mull",		IMULL,		TOKI3,
132 	"andl",		IANDL,		TOKI3,
133 	"orl",		IORL,		TOKI3,
134 	"xorl",		IXORL,		TOKI3,
135 	"shll",		ISHLL,		TOKI3,
136 	"shrl",		ISHRL,		TOKI3,
137 	"bnel",		IBNEL,		TOKI3,
138 	"bltl",		IBLTL,		TOKI3,
139 	"blel",		IBLEL,		TOKI3,
140 	"bgtl",		IBGTL,		TOKI3,
141 	"bgel",		IBGEL,		TOKI3,
142 	"beql",		IBEQL,		TOKI3,
143 	"cvtlf",	ICVTLF,		TOKI2,
144 	"cvtfl",	ICVTFL,		TOKI2,
145 	"cvtlw",	ICVTLW,		TOKI2,
146 	"cvtwl",	ICVTWL,		TOKI2,
147 	"cvtlc",	ICVTLC,		TOKI2,
148 	"cvtcl",	ICVTCL,		TOKI2,
149 	"headl",	IHEADL,		TOKI2,
150 	"consl",	ICONSL,		TOKI2,
151 	"newcl",	INEWCL,		TOKI1,
152 	"casec",	ICASEC,		TOKI2,
153 	"indl",		IINDL,		TOKI3,
154 	"movpc",	IMOVPC,		TOKI2,
155 	"tcmp",		ITCMP,		TOKI2,
156 	"mnewz",	IMNEWZ,		TOKI3,
157 	"cvtrf",	ICVTRF,		TOKI2,
158 	"cvtfr",	ICVTFR,		TOKI2,
159 	"cvtws",	ICVTWS,		TOKI2,
160 	"cvtsw",	ICVTSW,		TOKI2,
161 	"lsrw",		ILSRW,		TOKI3,
162 	"lsrl",		ILSRL,		TOKI3,
163 	"eclr",		IECLR,		TOKI0,
164 	"newz",		INEWZ,		TOKI2,
165 	"newaz",	INEWAZ,		TOKI3,
166 	"raise",	IRAISE,	TOKI1,
167 	"casel",	ICASEL,	TOKI2,
168 	"mulx",	IMULX,	TOKI3,
169 	"divx",	IDIVX,	TOKI3,
170 	"cvtxx",	ICVTXX,	TOKI3,
171 	"mulx0",	IMULX0,	TOKI3,
172 	"divx0",	IDIVX0,	TOKI3,
173 	"cvtxx0",	ICVTXX0,	TOKI3,
174 	"mulx1",	IMULX1,	TOKI3,
175 	"divx1",	IDIVX1,	TOKI3,
176 	"cvtxx1",	ICVTXX1,	TOKI3,
177 	"cvtfx",	ICVTFX,	TOKI3,
178 	"cvtxf",	ICVTXF,	TOKI3,
179 	"expw",	IEXPW,	TOKI3,
180 	"expl",	IEXPL,	TOKI3,
181 	"expf",	IEXPF,	TOKI3,
182 	"self",	ISELF,	TOKI1,
183 	0,
184 };
185