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));
}
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));
}
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;
}
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;
}
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());
}
Aggregations