Search in sources :

Example 61 with ITerm

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

the class TermMultisetTest method testContainsOriginalAndUnifiedTerm.

@Test
public void testContainsOriginalAndUnifiedTerm() throws UnificationException {
    final ITermVar v1 = B.newVar("", "v1");
    final ITerm t1 = B.newInt(1);
    final ITerm t2 = B.newTuple(v1);
    terms.add(t2, unifier);
    assertEquals(1, terms.varSet().size());
    IUnifier.Immutable result = unifier.unify(v1, t1);
    terms.update(result.varSet(), unifier);
    assertTrue(terms.contains(t2, unifier));
    assertTrue(terms.contains(unifier.findTerm(t2), unifier));
    assertEquals(0, terms.varSet().size());
}
Also used : IUnifier(mb.nabl2.terms.unification.IUnifier) ITermVar(mb.nabl2.terms.ITermVar) ITerm(mb.nabl2.terms.ITerm) Test(org.junit.Test)

Example 62 with ITerm

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

the class TermMultisetTest method testAdd2AtOnce.

@Test
public void testAdd2AtOnce() {
    final ITerm t1 = B.newInt(1);
    terms.add(t1, 2, unifier);
    assertEquals(0, terms.varSet().size());
    assertEquals(1, terms.elementSet().size());
    assertEquals(2, terms.count(t1, unifier));
}
Also used : ITerm(mb.nabl2.terms.ITerm) Test(org.junit.Test)

Example 63 with ITerm

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

the class EqualityComponent method solve.

// ------------------------------------------------------------------------------------------------------//
private Optional<SolveResult> solve(CEqual constraint) {
    final ITerm left = constraint.getLeft();
    final ITerm right = constraint.getRight();
    try {
        final IUnifier.Transient unifier = this.unifier.get().melt();
        final IUnifier.Immutable unifyResult = unifier.unify(left, right);
        final SolveResult solveResult = ImmutableSolveResult.builder().unifierDiff(unifyResult).build();
        this.unifier.set(unifier.freeze());
        return Optional.of(solveResult);
    } catch (UnificationException ex) {
        final MessageContent content = MessageContent.builder().append("Cannot unify ").append(left).append(" with ").append(right).build();
        final IMessageInfo message = (constraint.getMessageInfo().withDefaultContent(content));
        final SolveResult solveResult = SolveResult.messages(message);
        return Optional.of(solveResult);
    }
}
Also used : MessageContent(mb.nabl2.constraints.messages.MessageContent) IUnifier(mb.nabl2.terms.unification.IUnifier) ImmutableSolveResult(mb.nabl2.solver.ImmutableSolveResult) SolveResult(mb.nabl2.solver.ISolver.SolveResult) ITerm(mb.nabl2.terms.ITerm) UnificationException(mb.nabl2.terms.unification.UnificationException) IMessageInfo(mb.nabl2.constraints.messages.IMessageInfo)

Example 64 with ITerm

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

the class AbstractApplTerm method toString.

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append(getOp());
    sb.append("(");
    boolean first = true;
    for (ITerm arg : getArgs()) {
        if (first) {
            first = false;
        } else {
            sb.append(",");
        }
        sb.append(arg.toString());
    }
    sb.append(")");
    return sb.toString();
}
Also used : ITerm(mb.nabl2.terms.ITerm)

Example 65 with ITerm

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

the class TermIndexTest method testSerializeSpecialized.

@Test
public void testSerializeSpecialized() throws Exception {
    ITerm t = ImmutableTermIndex.of("Hello, world!", 42);
    byte[] b1 = serialize(t);
    byte[] b2 = serialize(deserialize(b1));
    assertTrue(Arrays.equals(b1, b2));
}
Also used : ITerm(mb.nabl2.terms.ITerm) Test(org.junit.Test)

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