arg1 = valueOfToken(stack.pop()) else: arg1 = 0 stack.append(operations[node.op](arg1, arg2)) elif node.__class__ == AST.AssignNode: val = valueOfToken(stack.pop()) name = stack.pop() vars[name] = val elif node.__class__ == AST.WhileNode: cond = valueOfToken(stack.pop()) if cond: node = node.next[0] else: node = node.next[1] continue if node.next: node = node.next[0] else: node = None if __name__ == "__main__": from parser5 import parse from threader import thread import sys print('hammer') prog = open(sys.argv[1]).read() ast = parse(prog) entry = thread(ast) execute(entry)
arg2 = valueOfToken(stack.pop()) if node.nbargs == 2: arg1 = valueOfToken(stack.pop()) else: arg1 = 0 stack.append(operations[node.op](arg1, arg2)) elif node.__class__ == AST.AssignNode: val = valueOfToken(stack.pop()) name = stack.pop() vars[name] = val elif node.__class__ == AST.WhileNode: cond = valueOfToken(stack.pop()) if cond: node = node.next[0] else: node = node.next[1] continue if node.next: node = node.next[0] else: node = None if __name__ == "__main__": from parser5 import parse from thread import thread import sys prog = open(sys.argv[1]).read() ast = parse(prog) entry = thread(ast) execute(entry)