def main(): parser = SDLParser() mainTree = parser.parse(sys.argv[1]) print(mainTree) return treeToLookFor = parser.parse(sys.argv[2]) subThisTree = parser.parse(sys.argv[3]) makeTreeReplacement(mainTree, treeToLookFor, subThisTree) str1 = str(mainTree) str2 = str(treeToLookFor) str3 = str(subThisTree) x = str1.replace(str2, str3) print(x)
else: print("ERROR: Invalid SDL statement!") sys.exit(-1) else: print("Need type annotation for list type: ", listKey) else: # check context of LHS assignment: varType[varName] = new_type # need to somehow handle list types => Str, Int, ZR, G1, G2, GT types #eq1 = M.evaluate(exp(G1, mul(GT, GT))) #print("Test 8: ", eq1) # #print("Test 9: ", M.evaluate(asym_pair(G1, G2))) # #print("Test 10: ", ) if __name__ == "__main__": tc = TypeCheck() tc.setupSolver() parser = sdl.SDLParser() varType = {} #{'tf0':listG1, 'tf1':listG1} args = sys.argv[1:] for i in args: binNode = parser.parse(i) tc.inferType(binNode, varType) print("VarTypes: ", varType)
class SubstituteVar: def __init__(self, target, new_var): self.target = target self.new_var = new_var def visit(self, node, data): pass def visit_attr(self, node, data): if str(node) == self.target: node.setAttribute(self.new_var) if __name__ == "__main__": statement = sys.argv[1] parser = SDLParser() equation = parser.parse(statement) print("Original: ", equation) tech2 = Technique2() ASTVisitor(tech2).preorder(equation) print("Tech 2: ", equation) tech1 = Technique1() ASTVisitor(tech1).preorder(equation) print("Tech 1: ", equation) tech3 = Technique3() ASTVisitor(tech3).preorder(equation) print("Tech 3: ", equation)