Beispiel #1
0
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)
Beispiel #2
0
                    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)
Beispiel #3
0
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)