def run(self, vm: VM): key = pop_value(vm) dict = pop(vm) if key in dict.value: push(vm, dict.value[key][1]) else: push(vm, NullNode(None))
def run(self, vm: VM): key = pop_value(vm) dict = pop(vm) value = NullNode(None) if key in dict.value: value = dict.value.pop(key)[1] push(vm, dict) push(vm, value)
def run(self, vm: VM): quote = pop(vm) acc = pop(vm) sequence = pop(vm) for entry in sequence: run_node(vm, entry) run_node(vm, acc) vm.run_ast(quote.ast) acc = pop(vm) push(vm, acc)
def run(self, vm: VM): quote = pop(vm) sequence = pop(vm) result = ArrayNode() for entry in sequence: run_node(vm, entry) vm.run_ast(quote.ast) node = pop(vm) result.append(node) push(vm, result)
def run(self, vm: VM): quote = pop(vm) sequence = pop(vm) filtered = ArrayNode() for entry in sequence: run_node(vm, entry) vm.run_ast(quote.ast) result = pop_value(vm) if result: filtered.append(entry) push(vm, filtered)
def run(self, vm: VM): module_name = pop_value(vm) result = import_module(module_name) push(vm, result)
def run(self, vm: VM): key = pop_value(vm) python_module = pop(vm) result = getattr(python_module, key) push(vm, result)
def run(self, vm: VM): value1 = pop_value(vm) value2 = pop_value(vm) value = create_node(value2 / value1) push(vm, value)
def run(self, vm: VM): value = create_node(pop_value(vm) * pop_value(vm)) push(vm, value)
def run(self, vm: VM): push(vm, StringNode(str(pop_value(vm)), None))
def run(self, vm: VM): value = pop_value(vm) push(vm, BooleanNode(not value, None))
def run(self, vm: VM): value = pop(vm) key = pop(vm) dict = pop(vm) dict.value.update({key.value: (key, value)}) push(vm, dict)
def run(self, vm: VM): dict = pop(vm) result = ArrayNode(None, None) for k, v in dict.value.values(): result.append(k) push(vm, result)
def run(self, vm: VM): push(vm, self)
def run(self, vm: VM): value = pop(vm) push(vm, value) push(vm, value)
def run(self, vm: VM): python_code = pop_value(vm) result = create_node(eval(python_code)) push(vm, result)
def run(self, vm: VM): value = pop(vm) push(vm, BooleanNode(isinstance(value, NullNode), None))
def run(self, vm: VM): key = pop_value(vm) dict = pop(vm) push(vm, BooleanNode(key in dict.value, None))
def run(self, vm: VM): value1, value2 = two_pop_value(vm) push(vm, BooleanNode(value1 and value2, None))
def run(self, vm: VM): value1 = pop(vm) value2 = pop(vm) push(vm, value1) push(vm, value2)