Rename TermTrie -> PersistentTermTrie, remove dummy usages.

This commit is contained in:
Fedor Isakov 2018-09-08 13:16:43 +02:00
parent 3b509a60e5
commit 3bdcbc0aa8
4 changed files with 18 additions and 20 deletions

View File

@ -46,7 +46,7 @@ import java.util.*
* Elsevier Sci. Pub. B. V., Amsterdam, The Netherlands, The Netherlands.
*
*/
class TermTrie<T>() {
class PersistentTermTrie<T>() {
private companion object {
@ -66,9 +66,9 @@ class TermTrie<T>() {
this.root = setRoot
}
fun put(term: Term, value: T): TermTrie<T> = TermTrie(putValue(term, value))
fun put(term: Term, value: T): PersistentTermTrie<T> = PersistentTermTrie(putValue(term, value))
fun remove(term: Term, value: T): TermTrie<T> = TermTrie(removeValue(term, value))
fun remove(term: Term, value: T): PersistentTermTrie<T> = PersistentTermTrie(removeValue(term, value))
fun lookupValues(term: Term): Iterable<T> {
val result = ArrayList<T>()

View File

@ -115,14 +115,14 @@ class RuleIndex(handlers: Iterable<Handler>) : Iterable<Rule> {
val anySelectors = ArrayList<MutableMap<Any, BitSet>>()
val termSelectors = ArrayList<TermTrie<Int>>()
val termSelectors = ArrayList<PersistentTermTrie<Int>>()
val wildcardSelectors = ArrayList<BitSet>()
init {
for (idx in 1..symbol.arity()) {
anySelectors.add(HashMap())
termSelectors.add(TermTrie())
termSelectors.add(PersistentTermTrie())
wildcardSelectors.add(BitSet())
}
}

View File

@ -89,14 +89,12 @@ class Store : LogicalObserver {
.fold(Maps.of()) { map, sym -> map.put(sym, IdHashSet(copyFrom.occurrences(sym))) }
var l2o = Maps.of<IdWrapper<Logical<*>>, IdHashSet<ConstraintOccurrence>>()
var t2o = TermTrie<ConstraintOccurrence>()
var v2o = Maps.of<Any, IdHashSet<ConstraintOccurrence>>()
copyFrom.allOccurrences().forEach { occ ->
occ.arguments().forEach { arg ->
when (arg) {
is Logical<*> -> l2o = l2o.put(IdWrapper(arg.findRoot()), l2o[IdWrapper(arg.findRoot())]?.add(occ) ?: singletonSet(occ))
is Term -> t2o = t2o.put(arg.withConstraint(occ.constraint()), occ)
is Any -> v2o = v2o.put(arg, v2o[arg]?.add(occ) ?: singletonSet(occ))
}
}

View File

@ -1,4 +1,4 @@
import jetbrains.mps.logic.reactor.core.TermTrie
import jetbrains.mps.logic.reactor.core.PersistentTermTrie
import jetbrains.mps.unification.test.MockTerm.*
import jetbrains.mps.unification.test.MockTermsParser.parseTerm
import org.junit.Test
@ -18,7 +18,7 @@ class TestTermTrie {
val t3 = parseTerm("f{g h{i k{l m{o p} n}}}")
val t4 = parseTerm("f{g h{i q }}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") },
{ put(t3, "qux") },
@ -49,7 +49,7 @@ class TestTermTrie {
val t3 = parseTerm("f{g h{i k{l m{o p} n}}}")
val t4 = parseTerm("f{g h{i q }}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") },
{ put(t3, "qux") },
@ -80,7 +80,7 @@ class TestTermTrie {
val t1 = parseTerm("a{b c}")
val t2 = parseTerm("a{b d}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") }
)
@ -115,7 +115,7 @@ class TestTermTrie {
val t4 = parseTerm("f{g{X b} X}")
val t5 = parseTerm("f{X Y}")
val tt = TermTrie<String>().runs(
val tt = PersistentTermTrie<String>().runs(
{ put(t1, "t1") },
{ put(t2, "t2") },
{ put(t3, "t3") },
@ -139,7 +139,7 @@ class TestTermTrie {
val t1 = parseTerm("a{b c}")
val t2 = parseTerm("b{c d}")
val trie1 = TermTrie<Any>().runs (
val trie1 = PersistentTermTrie<Any>().runs (
{ put(t1, "foo") },
{ put(t2, "bar") }
)
@ -156,7 +156,7 @@ class TestTermTrie {
val t1 = parseTerm("a{X c}")
val t2 = parseTerm("b{c Y}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") }
)
@ -182,7 +182,7 @@ class TestTermTrie {
val t3 = parseTerm("f{g h{i k{l m{o p} n}}}")
val t4 = parseTerm("f{g h{i q }}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") },
{ put(t3, "qux") },
@ -206,7 +206,7 @@ class TestTermTrie {
val t4 = parseTerm("f{g h{Z k{l m{o p} n}}}")
val t5 = parseTerm("f{Z h{i q }}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") },
{ put(t3, "bazz") },
@ -235,7 +235,7 @@ class TestTermTrie {
val t3 = parseTerm("a{c Y}")
val t4 = parseTerm("a{X Y}")
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(t1, "foo") },
{ put(t2, "bar") },
{ put(t3, "bazz") },
@ -258,7 +258,7 @@ class TestTermTrie {
fun testRefTerm() {
val varRef = MockRef(MockVar("TAIL"))
val pattern = MockFun("g", MockFun("h"), MockFun("f", varRef, MockFun("nil")))
val trie1 = TermTrie<Any>().runs(
val trie1 = PersistentTermTrie<Any>().runs(
{ put(parseTerm("g {h f {a nil}}"), "bar") },
{ put(parseTerm("g {h f {a f {b nil}}}"), "bazz") },
{ put(pattern, "foo") },
@ -273,7 +273,7 @@ class TestTermTrie {
@Test
fun testRefList() {
val trie = TermTrie<Any>().runs(
val trie = PersistentTermTrie<Any>().runs(
{ put(parseTerm("f{X Y}"), "foo") },
{ put(parseTerm("f{a Z}"), "bar") },
{ put(parseTerm("f{a f{b W}}"), "bazz") }
@ -287,7 +287,7 @@ class TestTermTrie {
@Test
fun testCyclicTerm() {
val trie = TermTrie<Any>().runs(
val trie = PersistentTermTrie<Any>().runs(
{ put(parseTerm("cst{ @1 n{ a{b c} d{^1} } }"), "foo") },
{ put(parseTerm("cst{ n{ @2 a{b ^2} d{e} } }"), "bar") }
)