struct { char* name; int op; int terminal; }keywds[] = { "nop", INOP, TOKI0, "alt", IALT, TOKI3, "nbalt", INBALT, TOKI3, "goto", IGOTO, TOKI2, "call", ICALL, TOKI2, "frame", IFRAME, TOKI2, "spawn", ISPAWN, TOKI2, "runt", IRUNT, TOKI2, "load", ILOAD, TOKI3, "mcall", IMCALL, TOKI3, "mspawn", IMSPAWN, TOKI3, "mframe", IMFRAME, TOKI3, "ret", IRET, TOKI0, "jmp", IJMP, TOKI1, "case", ICASE, TOKI2, "exit", IEXIT, TOKI0, "new", INEW, TOKI2, "newa", INEWA, TOKI3, "newcb", INEWCB, TOKI1, "newcw", INEWCW, TOKI1, "newcf", INEWCF, TOKI1, "newcp", INEWCP, TOKI1, "newcm", INEWCM, TOKI2, "newcmp", INEWCMP, TOKI2, "send", ISEND, TOKI2, "recv", IRECV, TOKI2, "consb", ICONSB, TOKI2, "consw", ICONSW, TOKI2, "consp", ICONSP, TOKI2, "consf", ICONSF, TOKI2, "consm", ICONSM, TOKI3, "consmp", ICONSMP, TOKI3, "headb", IHEADB, TOKI2, "headw", IHEADW, TOKI2, "headp", IHEADP, TOKI2, "headf", IHEADF, TOKI2, "headm", IHEADM, TOKI3, "headmp", IHEADMP, TOKI3, "tail", ITAIL, TOKI2, "lea", ILEA, TOKI2, "indx", IINDX, TOKI3, "movp", IMOVP, TOKI2, "movm", IMOVM, TOKI3, "movmp", IMOVMP, TOKI3, "movb", IMOVB, TOKI2, "movw", IMOVW, TOKI2, "movf", IMOVF, TOKI2, "cvtbw", ICVTBW, TOKI2, "cvtwb", ICVTWB, TOKI2, "cvtfw", ICVTFW, TOKI2, "cvtwf", ICVTWF, TOKI2, "cvtca", ICVTCA, TOKI2, "cvtac", ICVTAC, TOKI2, "cvtwc", ICVTWC, TOKI2, "cvtcw", ICVTCW, TOKI2, "cvtfc", ICVTFC, TOKI2, "cvtcf", ICVTCF, TOKI2, "addb", IADDB, TOKI3, "addw", IADDW, TOKI3, "addf", IADDF, TOKI3, "subb", ISUBB, TOKI3, "subw", ISUBW, TOKI3, "subf", ISUBF, TOKI3, "mulb", IMULB, TOKI3, "mulw", IMULW, TOKI3, "mulf", IMULF, TOKI3, "divb", IDIVB, TOKI3, "divw", IDIVW, TOKI3, "divf", IDIVF, TOKI3, "modw", IMODW, TOKI3, "modb", IMODB, TOKI3, "andb", IANDB, TOKI3, "andw", IANDW, TOKI3, "orb", IORB, TOKI3, "orw", IORW, TOKI3, "xorb", IXORB, TOKI3, "xorw", IXORW, TOKI3, "shlb", ISHLB, TOKI3, "shlw", ISHLW, TOKI3, "shrb", ISHRB, TOKI3, "shrw", ISHRW, TOKI3, "insc", IINSC, TOKI3, "indc", IINDC, TOKI3, "addc", IADDC, TOKI3, "lenc", ILENC, TOKI2, "lena", ILENA, TOKI2, "lenl", ILENL, TOKI2, "beqb", IBEQB, TOKI3, "bneb", IBNEB, TOKI3, "bltb", IBLTB, TOKI3, "bleb", IBLEB, TOKI3, "bgtb", IBGTB, TOKI3, "bgeb", IBGEB, TOKI3, "beqw", IBEQW, TOKI3, "bnew", IBNEW, TOKI3, "bltw", IBLTW, TOKI3, "blew", IBLEW, TOKI3, "bgtw", IBGTW, TOKI3, "bgew", IBGEW, TOKI3, "beqf", IBEQF, TOKI3, "bnef", IBNEF, TOKI3, "bltf", IBLTF, TOKI3, "blef", IBLEF, TOKI3, "bgtf", IBGTF, TOKI3, "bgef", IBGEF, TOKI3, "beqc", IBEQC, TOKI3, "bnec", IBNEC, TOKI3, "bltc", IBLTC, TOKI3, "blec", IBLEC, TOKI3, "bgtc", IBGTC, TOKI3, "bgec", IBGEC, TOKI3, "slicea", ISLICEA, TOKI3, "slicela", ISLICELA, TOKI3, "slicec", ISLICEC, TOKI3, "indw", IINDW, TOKI3, "indf", IINDF, TOKI3, "indb", IINDB, TOKI3, "negf", INEGF, TOKI2, "movl", IMOVL, TOKI2, "addl", IADDL, TOKI3, "subl", ISUBL, TOKI3, "divl", IDIVL, TOKI3, "modl", IMODL, TOKI3, "mull", IMULL, TOKI3, "andl", IANDL, TOKI3, "orl", IORL, TOKI3, "xorl", IXORL, TOKI3, "shll", ISHLL, TOKI3, "shrl", ISHRL, TOKI3, "bnel", IBNEL, TOKI3, "bltl", IBLTL, TOKI3, "blel", IBLEL, TOKI3, "bgtl", IBGTL, TOKI3, "bgel", IBGEL, TOKI3, "beql", IBEQL, TOKI3, "cvtlf", ICVTLF, TOKI2, "cvtfl", ICVTFL, TOKI2, "cvtlw", ICVTLW, TOKI2, "cvtwl", ICVTWL, TOKI2, "cvtlc", ICVTLC, TOKI2, "cvtcl", ICVTCL, TOKI2, "headl", IHEADL, TOKI2, "consl", ICONSL, TOKI2, "newcl", INEWCL, TOKI1, "casec", ICASEC, TOKI2, "indl", IINDL, TOKI3, "movpc", IMOVPC, TOKI2, "tcmp", ITCMP, TOKI2, "mnewz", IMNEWZ, TOKI3, "cvtrf", ICVTRF, TOKI2, "cvtfr", ICVTFR, TOKI2, "cvtws", ICVTWS, TOKI2, "cvtsw", ICVTSW, TOKI2, "lsrw", ILSRW, TOKI3, "lsrl", ILSRL, TOKI3, "eclr", IECLR, TOKI0, "newz", INEWZ, TOKI2, "newaz", INEWAZ, TOKI3, 0, };