Exemplo n.º 1
0
 def run(self, vm: VM):
     quote_false = pop(vm)
     quote_true = pop(vm)
     is_true = pop_value(vm)
     if is_true:
         vm.run_ast(quote_true.ast)
     else:
         vm.run_ast(quote_false.ast)
Exemplo n.º 2
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)
Exemplo n.º 3
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)
Exemplo n.º 4
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)
Exemplo n.º 5
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))
Exemplo n.º 6
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)
Exemplo n.º 7
0
 def run(self, vm: VM):
   parameters = []
   python_function = pop(vm)
   count_of_parameters = pop_value(vm)
   for _ in range(0,count_of_parameters):
     parameters.append(vm.stack.pop().value)
   parameters = parameters[::-1]
   result = python_function(*parameters)
   vm.stack.append(create_node(result))
Exemplo n.º 8
0
 def run(self, vm: VM):
   key = pop_value(vm)
   python_module = pop(vm)
   result = getattr(python_module, key)
   push(vm, result)
Exemplo n.º 9
0
 def run(self, vm: VM):
     quote = pop(vm)
     is_true = pop_value(vm)
     if is_true:
         vm.run_ast(quote.ast)
Exemplo n.º 10
0
 def run(self, vm: VM):
     quote = pop(vm)
     count = pop_value(vm)
     for _ in range(0, count):
         vm.run_ast(quote.ast)
Exemplo n.º 11
0
 def run(self, vm: VM):
     value = pop(vm)
     push(vm, value)
     push(vm, value)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 14
0
 def run(self, vm: VM):
     sequence = pop(vm)
     for entry in sequence:
         run_node(vm, entry)
Exemplo n.º 15
0
 def run(self, vm: VM):
     key = pop_value(vm)
     dict = pop(vm)
     push(vm, BooleanNode(key in dict.value, None))
Exemplo n.º 16
0
 def run(self, vm: VM):
     value = pop(vm)
     push(vm, BooleanNode(isinstance(value, NullNode), None))
Exemplo n.º 17
0
 def run(self, vm: VM):
     value1 = pop(vm)
     value2 = pop(vm)
     push(vm, value1)
     push(vm, value2)