예제 #1
0
파일: run.py 프로젝트: Roldak/Dependz
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)

    assert not u.diagnostics

    all_queries = queries(u)
    all_free_syms = set()
    for q in all_queries:
        for term in [q.first, q.second]:
            all_free_syms.update(term.p_free_symbols())

    try:
        substs = u.root.p_unify_all(list(all_queries), list(all_free_syms))
    except ldl.PropertyError:
        substs = None
        print("A crash occurred during unification.")
        print(traceback.print_exc())

    if substs is not None:
        print("Unification success:")
        for s in substs:
            print("  {} -> {}".format(
                s.from_symbol, s.to_term.p_to_string
            ))
    else:
        print("Unification failure")
예제 #2
0
파일: run.py 프로젝트: Roldak/Dependz
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)

    assert not u.diagnostics

    for d in defs_to_eval(u):
        r = d.p_eval_and_print
        print("{} = {}".format(d.f_ident.text, r))
예제 #3
0
파일: run.py 프로젝트: Roldak/Dependz
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)
    type_intro = find_Type_intro(u)

    assert not u.diagnostics

    for d in targets(u):
        intro_name = d.f_ident.text

        try:
            r = d.f_term.p_synthesize(d)
        except ldl.PropertyError:
            r = None
            print("A crash occurred while attempting to synthesize {}.".format(
                intro_name))
            traceback.print_exc()

        if r is not None:
            print("{}: Success".format(intro_name))
            print("  {} = {}".format(intro_name, r.p_to_string))
        else:
            print("{} : Failed".format(intro_name))
예제 #4
0
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)
    type_intro = find_Type_intro(u)

    assert not u.diagnostics

    for d in targets(u):
        intro_name = d.f_ident.text

        try:
            r = d.f_term.p_constructors
        except ldl.PropertyError:
            r = None
            print("A crash occurred while discovering constructors of {}.".
                  format(intro_name))
            traceback.print_exc()

        if r is not None:
            print("{}: Success".format(intro_name))
            print("  {}".format([x.text for x in r if x != type_intro]))
        else:
            print("{} : Failed".format(intro_name))
예제 #5
0
파일: run.py 프로젝트: Roldak/Dependz
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)

    assert not u.diagnostics

    for d in defs_to_domain_check(u):
        def_name = d.f_ident.text

        try:
            r = d.p_check_domains(3)
        except ldl.PropertyError:
            r = False
            print(
                "A crash occurred while domain checking {}.".format(def_name))
            traceback.print_exc()

        if r:
            print("{}: Success".format(def_name))
            for t in [d.f_term] + d.f_term.findall(ldl.Term):
                dom = t.p_domain_val
                print("  {}: {}".format(t, dom.p_to_string if dom else "None"))
        else:
            print("{} : Failed".format(def_name))
예제 #6
0
파일: run.py 프로젝트: Roldak/Dependz
def run(src_file):
    ctx = ldl.AnalysisContext()
    u = ctx.get_from_file(src_file)
    assert not u.diagnostics
    u.root.dump()