Search in sources :

Example 16 with ITerm

use of mb.nabl2.terms.ITerm in project nabl by metaborg.

the class HashcodeAndEqualsTest method testSpecializedApplEqualsGenericAfterSerialization.

@Test
public void testSpecializedApplEqualsGenericAfterSerialization() throws Exception {
    ITerm t1 = deserialize(serialize(ImmutableSpecializedAppl.of("Hello, world!", 42)));
    ITerm t2 = B.newAppl(SpecializedAppl.OP, B.newString("Hello, world!"), B.newInt(42));
    assertEquals(t1.hashCode(), t2.hashCode());
    assertTrue(t1.equals(t2));
}
Also used : ITerm(mb.nabl2.terms.ITerm) Test(org.junit.Test)

Example 17 with ITerm

use of mb.nabl2.terms.ITerm in project nabl by metaborg.

the class UnificationPerformanceTest method testCycle.

private static void testCycle() {
    System.out.println("Testing cycle");
    final IUnifier.Transient unifier = PersistentUnifier.Transient.of();
    ITermVar varA = TermBuild.B.newVar("", A);
    ITermVar varB = TermBuild.B.newVar("", B);
    ITermVar varC = TermBuild.B.newVar("", C);
    ITerm termB = TermBuild.B.newTuple(varB, varB);
    ITerm termC = TermBuild.B.newTuple(varC, varC);
    try {
        unifier.unify(varA, termB);
        unifier.unify(varB, termC);
        unifier.unify(varC, termB);
        System.out.println(unifier);
    } catch (UnificationException e) {
        System.out.println("Could not unify");
    }
    System.out.println("ground = " + unifier.isGround(termB));
    System.out.println("cyclic = " + unifier.isCyclic(termB));
    System.out.println("size = " + unifier.size(termB));
    System.out.println("vars = " + unifier.getVars(termB));
    System.out.println("equal = " + unifier.areEqual(termB, termC));
    System.out.println("unequal = " + unifier.areUnequal(termB, termC));
}
Also used : ITermVar(mb.nabl2.terms.ITermVar) ITerm(mb.nabl2.terms.ITerm)

Example 18 with ITerm

use of mb.nabl2.terms.ITerm in project nabl by metaborg.

the class UnificationPerformanceTest method testUnify.

private static IUnifier testUnify(int n) {
    final IUnifier.Transient unifier = PersistentUnifier.Transient.of();
    final ITerm left = TermBuild.B.newTuple(Iterables.concat(createVars(A, n), createTuples(B, n), Iterables2.singleton(createVar(A, n))));
    final ITerm right = TermBuild.B.newTuple(Iterables.concat(createTuples(A, n), createVars(B, n), Iterables2.singleton(createVar(B, n))));
    try {
        unifier.unify(left, right);
    } catch (UnificationException e) {
        System.err.println("Unification failed");
        e.printStackTrace(System.err);
    }
    System.out.println("ground = " + unifier.isGround(left));
    System.out.println("cyclic = " + unifier.isCyclic(left));
    System.out.println("size = " + unifier.size(left));
    System.out.println("vars = " + unifier.getVars(left));
    System.out.println("equal = " + unifier.areEqual(left, right));
    System.out.println("unequal = " + unifier.areUnequal(left, right));
    return unifier;
}
Also used : ITerm(mb.nabl2.terms.ITerm)

Example 19 with ITerm

use of mb.nabl2.terms.ITerm in project nabl by metaborg.

the class TransferFunctionAppl method args.

public ITerm[] args(ITerm firstArg) {
    List<ITerm> otherArgs = otherArgs();
    ITerm[] args = new ITerm[otherArgs.size() + 1];
    args[0] = firstArg;
    int i = 1;
    for (ITerm arg : otherArgs) {
        args[i] = arg;
        i++;
    }
    return args;
}
Also used : ITerm(mb.nabl2.terms.ITerm)

Example 20 with ITerm

use of mb.nabl2.terms.ITerm in project nabl by metaborg.

the class InterpreterTerms method scopeEntries.

private static ITerm scopeEntries(IScopeGraph<Scope, Label, Occurrence> scopeGraph) {
    Map<ITerm, ITerm> entries = Maps.newHashMap();
    for (Scope scope : scopeGraph.getAllScopes()) {
        IListTerm decls = B.newList(scopeGraph.getDecls().inverse().get(scope));
        IListTerm refs = B.newList(scopeGraph.getRefs().inverse().get(scope));
        IListTerm edges = multimap(scopeGraph.getDirectEdges().get(scope));
        IListTerm imports = multimap(scopeGraph.getImportEdges().get(scope));
        ITerm entry = B.newAppl("SE", decls, refs, edges, imports);
        entries.put(scope, entry);
    }
    return map(entries.entrySet());
}
Also used : IListTerm(mb.nabl2.terms.IListTerm) Scope(mb.nabl2.scopegraph.terms.Scope) ITerm(mb.nabl2.terms.ITerm)

Aggregations

ITerm (mb.nabl2.terms.ITerm)79 Test (org.junit.Test)24 Occurrence (mb.nabl2.scopegraph.terms.Occurrence)19 Scope (mb.nabl2.scopegraph.terms.Scope)18 SolveResult (mb.nabl2.solver.ISolver.SolveResult)16 Optional (java.util.Optional)15 IMessageInfo (mb.nabl2.constraints.messages.IMessageInfo)15 ITermVar (mb.nabl2.terms.ITermVar)15 Label (mb.nabl2.scopegraph.terms.Label)14 Map (java.util.Map)12 Set (java.util.Set)10 MessageContent (mb.nabl2.constraints.messages.MessageContent)10 SolverCore (mb.nabl2.solver.SolverCore)9 IUnifier (mb.nabl2.terms.unification.IUnifier)9 Function1 (org.metaborg.util.functions.Function1)9 Lists (com.google.common.collect.Lists)8 ISolution (mb.nabl2.solver.ISolution)8 HashMultimap (com.google.common.collect.HashMultimap)7 Multimap (com.google.common.collect.Multimap)7 IConstraint (mb.nabl2.constraints.IConstraint)7