module Symantic.Parser.Automaton ( module Symantic.Parser.Automaton , module Symantic.Parser.Automaton.Instructions , module Symantic.Parser.Automaton.Dump ) where import Symantic.Parser.Automaton.Instructions import Symantic.Parser.Automaton.Dump import Symantic.Parser.Grammar import Data.Function ((.)) import qualified Language.Haskell.TH.Syntax as TH automaton :: forall inp repr a. InputPosition inp => Executable repr => Grammar (Automaton inp a) => ObserveSharing TH.Name (OptimizeComb TH.Name (Automaton inp a)) a -> repr inp '[] ('Succ 'Zero) a a automaton = runAutomaton . optimizeComb . observeSharing