add function to quad tree to turn items into strings (for later saving to file)
This commit is contained in:
35
fcore/parser/all-dfa.sml
Normal file
35
fcore/parser/all-dfa.sml
Normal file
@@ -0,0 +1,35 @@
|
||||
structure AllDfa =
|
||||
struct
|
||||
type t = {curInt: int, curSpace: int, curBrace: int, lastInt: int,
|
||||
lastSpace: int, lastBrace: int}
|
||||
|
||||
val initial: t =
|
||||
{
|
||||
curInt = IntDfa.start,
|
||||
curSpace = SpaceDfa.start,
|
||||
curBrace = BraceDfa.start,
|
||||
|
||||
lastInt = ~1,
|
||||
lastSpace = ~1,
|
||||
lastBrace = ~1
|
||||
}
|
||||
|
||||
fun areAllDead ({curInt, curSpace, curBrace, ...}: t) =
|
||||
curInt = 0 andalso curSpace = 0 andalso curBrace = 0
|
||||
|
||||
fun update (chr, dfa, pos) =
|
||||
let
|
||||
val {curInt, curSpace, curBrace, lastInt, lastBrace, lastSpace} = dfa
|
||||
|
||||
val curInt = IntDfa.next (curInt, chr)
|
||||
val curSpace = SpaceDfa.next (curSpace, chr)
|
||||
val curBrace = BraceDfa.next (curBrace, chr)
|
||||
|
||||
val lastInt = if IntDfa.isFinal curInt then pos else lastInt
|
||||
val lastSpace = if SpaceDfa.isFinal curSpace then pos else lastSpace
|
||||
val lastBrace = if BraceDfa.isFinal curBrace then pos else lastBrace
|
||||
in
|
||||
{curInt = curInt, curSpace = curSpace, curBrace = curBrace, lastInt =
|
||||
lastInt, lastBrace = lastBrace, lastSpace = lastSpace}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user