1 module Symantic.Parser.Automaton
2 ( module Symantic.Parser.Automaton
3 , module Symantic.Parser.Automaton.Instructions
4 , module Symantic.Parser.Automaton.Dump
6 import Symantic.Parser.Automaton.Instructions
7 import Symantic.Parser.Automaton.Dump
9 import Symantic.Parser.Grammar
10 import Symantic.Parser.Automaton.Input
11 import Data.Function ((.))
12 import qualified Language.Haskell.TH.Syntax as TH
14 automaton :: forall inp repr a.
17 Grammar (Automaton inp a) =>
18 ObserveSharing TH.Name (OptimizeComb TH.Name (Automaton inp a)) a ->
19 repr inp '[] ('Succ 'Zero) a a
20 automaton = runAutomaton . optimizeComb . observeSharing