def _execute_simple(self, code, data): result = [None] def getresult(val): result[0] = val vm = VirtualMachine([], getresult) globalns = Namespace("globals") ctx = BytecodeCompiler("main", code, data, namespace=globalns) globalns.set_func("main", ctx.mkfunc()) vm.setglobals(globalns) vm.run(pass_argv=False) return result[0]
def _execute_simple(self, code): # set up the global namespace globalns = Namespace("globals") for node in DipperParser().parse(code): if node.type == "Function": globalns.add_func(node.name, FrameCompiler(node).mkfunc()) elif node.type == "Struct": globalns.add_struct(node.name, node.mkstruct()) # set up a hacky way to extract data from the VM via a callback result = [None] # we need a mutable object we can put data in def getresult(val): result[0] = val # set up the VM vm = VirtualMachine([], cb=getresult, debug=False) vm.setglobals(globalns) vm.run() return result[0]
def _execute_simple(self, caller, code): mainmodule = Module.from_ast("<%s>" % caller, "main", DipperParser().parse(code)) # set up a hacky way to extract data from the VM via a callback result = [None] # we need a mutable object we can put data in def getresult(val): result[0] = val # set up the VM vm = VirtualMachine([], cb=getresult, debug=False) vm.setglobals(mainmodule) vm.run() return result[0]