示例#1
0
 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))
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 def run(self, vm: VM):
   module_name = pop_value(vm)
   result = import_module(module_name)
   push(vm, result)
示例#7
0
 def run(self, vm: VM):
   key = pop_value(vm)
   python_module = pop(vm)
   result = getattr(python_module, key)
   push(vm, result)
示例#8
0
 def run(self, vm: VM):
   value1 = pop_value(vm)
   value2 = pop_value(vm)
   value = create_node(value2 / value1)
   push(vm, value)
示例#9
0
 def run(self, vm: VM):
   value = create_node(pop_value(vm) * pop_value(vm))
   push(vm, value)
示例#10
0
 def run(self, vm: VM):
     push(vm, StringNode(str(pop_value(vm)), None))
示例#11
0
 def run(self, vm: VM):
     value = pop_value(vm)
     push(vm, BooleanNode(not value, None))
示例#12
0
 def run(self, vm: VM):
     value = pop(vm)
     key = pop(vm)
     dict = pop(vm)
     dict.value.update({key.value: (key, value)})
     push(vm, dict)
示例#13
0
 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)
示例#14
0
 def run(self, vm: VM):
     push(vm, self)
示例#15
0
 def run(self, vm: VM):
     value = pop(vm)
     push(vm, value)
     push(vm, value)
示例#16
0
 def run(self, vm: VM):
   python_code = pop_value(vm)
   result = create_node(eval(python_code))
   push(vm, result)
示例#17
0
 def run(self, vm: VM):
     value = pop(vm)
     push(vm, BooleanNode(isinstance(value, NullNode), None))
示例#18
0
 def run(self, vm: VM):
     key = pop_value(vm)
     dict = pop(vm)
     push(vm, BooleanNode(key in dict.value, None))
示例#19
0
 def run(self, vm: VM):
     value1, value2 = two_pop_value(vm)
     push(vm, BooleanNode(value1 and value2, None))
示例#20
0
 def run(self, vm: VM):
     value1 = pop(vm)
     value2 = pop(vm)
     push(vm, value1)
     push(vm, value2)