diff -r 14a348d050b3 -r 084e2843f478 progs/display/thompson1.scala --- a/progs/display/thompson1.scala Tue Jul 21 00:12:34 2020 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Thompson Construction (Part 1) -// (needs :load dfa.scala -// :load nfa.scala -// :load enfa.scala) - - -// states for Thompson construction -case class TState(i: Int) extends State - -object TState { - var counter = 0 - - def apply() : TState = { - counter += 1; - new TState(counter - 1) - } -} - - -// a type abbreviation -type NFAt = NFA[TState, Char] - - -// a NFA that does not accept any string -def NFA_ZERO(): NFAt = { - val Q = TState() - NFA(Set(Q), { case _ => Set() }, Set()) -} - -// a NFA that accepts the empty string -def NFA_ONE() : NFAt = { - val Q = TState() - NFA(Set(Q), { case _ => Set() }, Set(Q)) -} - -// a NFA that accepts the string "c" -def NFA_CHAR(c: Char) : NFAt = { - val Q1 = TState() - val Q2 = TState() - NFA(Set(Q1), { case (Q1, d) if (c == d) => Set(Q2) }, Set(Q2)) -}