Search in sources :

Example 41 with ITerm

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

the class StrategoTerms method fromStratego.

// from
public ITerm fromStratego(IStrategoTerm sterm) {
    ImmutableClassToInstanceMap<Object> attachments = getAttachments(sterm);
    // @formatter:off
    ITerm term = match(sterm, StrategoTerms.cases(appl -> B.newAppl(appl.getConstructor().getName(), Arrays.asList(appl.getAllSubterms()).stream().map(this::fromStratego).collect(Collectors.toList())), tuple -> B.newTuple(Arrays.asList(tuple.getAllSubterms()).stream().map(this::fromStratego).collect(Collectors.toList())), this::fromStrategoList, integer -> B.newInt(integer.intValue()), real -> {
        throw new IllegalArgumentException("Real values are not supported.");
    }, string -> B.newString(string.stringValue()), blob -> B.newBlob(blob.value()))).withAttachments(attachments);
    // @formatter:on
    return term;
}
Also used : ITerm(mb.nabl2.terms.ITerm)

Example 42 with ITerm

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

the class TermMultiset method update.

public boolean update(Collection<ITermVar> vars, IUnifier unifier) {
    final Set<ITerm> updatedTerms = vars.stream().flatMap(var -> varTerms.removeAll(var).stream()).collect(Collectors.toSet());
    for (ITerm term : updatedTerms) {
        final int n = terms.remove(term, terms.count(term));
        varTerms.values().remove(term);
        add(term, n, unifier);
    }
    return !updatedTerms.isEmpty();
}
Also used : IUnifier(mb.nabl2.terms.unification.IUnifier) HashMultimap(com.google.common.collect.HashMultimap) HashMultiset(com.google.common.collect.HashMultiset) ITerm(mb.nabl2.terms.ITerm) Multiset(com.google.common.collect.Multiset) Collection(java.util.Collection) ITermVar(mb.nabl2.terms.ITermVar) Set(java.util.Set) Multimap(com.google.common.collect.Multimap) Collections(java.util.Collections) Collectors(java.util.stream.Collectors) ITerm(mb.nabl2.terms.ITerm)

Example 43 with ITerm

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

the class TermMultiset method add.

public void add(ITerm term, int n, IUnifier unifier) {
    final ITerm rep = unifier.findRecursive(term);
    for (ITermVar var : rep.getVars().elementSet()) {
        varTerms.put(var, rep);
    }
    terms.add(rep, n);
}
Also used : ITermVar(mb.nabl2.terms.ITermVar) ITerm(mb.nabl2.terms.ITerm)

Example 44 with ITerm

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

the class TermMultisetTest method testAdd2Seprately.

@Test
public void testAdd2Seprately() {
    final ITerm t1 = B.newInt(1);
    terms.add(t1, unifier);
    terms.add(t1, 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 45 with ITerm

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

the class TermIndexTest method testEqualAfterSerialization1.

@Test
public void testEqualAfterSerialization1() throws Exception {
    ITerm t1 = ImmutableTermIndex.of("Hello, world!", 42);
    ITerm t2 = deserialize(serialize(t1));
    assertEquals(t1.hashCode(), t2.hashCode());
    assertTrue(t1.equals(t2));
}
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