Files
sml-projects/dotscape/fcore/parser/space-dfa.sml
Humza Shahid f3a4e15ed5 Add 'dotscape/' from commit 'f306501a68a51b634e895c5fdac70788ae899d75'
git-subtree-dir: dotscape
git-subtree-mainline: 6b91d64fc3
git-subtree-split: f306501a68
2026-04-24 00:30:08 +01:00

30 lines
584 B
Standard ML

structure SpaceDfa =
struct
val dead = 0
val start = 1
val final = 2
fun makeDead _ = 0
fun makeStart i =
let val chr = Char.chr i
in if Char.isSpace chr then final else dead
end
val deadTable = Vector.tabulate (255, makeDead)
val startTable = Vector.tabulate (255, makeStart)
val finalTable = startTable
val tables = #[deadTable, startTable, finalTable]
fun isFinal state = state = final
fun next (state, chr) =
let
val table = Vector.sub (tables, state)
val idx = Char.ord chr
in
Vector.sub (table, idx)
end
end