tlex-0.4.0.1: src/Language/Lexer/Tlex.hs
module Language.Lexer.Tlex (
module Language.Lexer.Tlex.Syntax,
module Language.Lexer.Tlex.Runner,
module Language.Lexer.Tlex.Data.InputString,
buildRunner,
) where
import Language.Lexer.Tlex.Data.InputString
import Language.Lexer.Tlex.Prelude
import Language.Lexer.Tlex.Runner
import Language.Lexer.Tlex.Syntax
import qualified Language.Lexer.Tlex.Machine.NFA as NFA
import qualified Language.Lexer.Tlex.Pipeline.Dfa2Runner as TlexPipeline
import qualified Language.Lexer.Tlex.Pipeline.MinDfa as TlexPipeline
import qualified Language.Lexer.Tlex.Pipeline.Nfa2Dfa as TlexPipeline
import qualified Language.Lexer.Tlex.Pipeline.Scanner2Nfa as TlexPipeline
buildRunner :: Enum unit => Scanner unit action -> Runner unit action
buildRunner scanner =
let nfa = NFA.buildNFA do TlexPipeline.scanner2Nfa scanner
dfa = TlexPipeline.nfa2Dfa nfa
minDfa = TlexPipeline.minDfa dfa
in TlexPipeline.dfa2Runner minDfa