ptera-0.1.0.0: src/Language/Parser/Ptera/Pipeline/Grammar2Runner.hs
module Language.Parser.Ptera.Pipeline.Grammar2Runner where
import Language.Parser.Ptera.Prelude
import qualified Language.Parser.Ptera.Pipeline.SRB2Parser as SRB2Parser
import qualified Language.Parser.Ptera.Pipeline.SafeGrammar2SRB as SafeGrammar2SRB
import qualified Language.Parser.Ptera.Runner as Runner
import qualified Language.Parser.Ptera.Syntax as Syntax
grammar2Runner :: forall initials ctx rules tokens elem
. Syntax.GrammarToken tokens elem
=> Syntax.GrammarM ctx rules tokens elem initials
-> Either [StringLit] (Runner.T ctx rules elem initials)
grammar2Runner g = do
srb <- SafeGrammar2SRB.safeGrammar2Srb g
let parser = SRB2Parser.srb2Parser
do Proxy @tokens
do srb
pure do Runner.UnsafeRunnerM parser