--[[ Semantic Opcode Module for the Kamin Scheme Interpreter KILT -- Kamin Interpreters in Lua Toolset H. Conrad Cunningham, Professor Computer and Information Science University of Mississippi Developed for CSci 658, Software Language Engineering, Fall 2013 2013-08-17: Separated Scheme interpreter code into a Scmodule 2013-08-29: Added return of empty table 1234567890123456789012345678901234567890123456789012345678901234567890 --]] -- All of these are constants introduced as GLOBAL variables. -- BEGIN delete for Scheme -- FUNDEF = "FunDef" -- END delete for Scheme VARVAL = "VarVal" -- BEGIN change/add for Lisp -- NUMVAL = "NumVal" NUMSXP = "SExprNum" SYMSXP = "SExprSym" NILSXP = "SExprNil" LISTSXP = "SExprList" -- END add for Lisp -- BEGIN add for Scheme PRIMSXP = "SExprPrim" CLOSXP = "SExprClo" -- END add for Scheme IFOP = "IfOp" WHILEOP = "WhileOp" SETOP = "SetOp" BEGINOP = "BeginOp" -- BEGIN change for Scheme -- APPLYFUN = "ApplyFun" LAMBDAOP = "LambdaOp" APPLYCLO = "ApplyClo" -- END change for Scheme APPLYOP = "ApplyOp" ADDOP = "+" SUBOP = "-" MULOP = "*" DIVOP = "/" EQOP = "=" LTOP = "<" GTOP = ">" PRINTOP = "print" -- BEGIN add for Lisp CONSOP = "cons" CAROP = "car" CDROP = "cdr" NUMBERPOP = "number?" SYMBOLPOP = "symbol?" NULLPOP = "null?" LISTPOP = "list?" -- END add for Lisp -- BEGIN add for Scheme PRIMOPPOP = "primop?" CLOSUREPOP = "closure?" -- END add for Scheme return {}