{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} module BNFC.Backend.Latex where import BNFC.Backend.CommonInterface.Backend import BNFC.Backend.Latex.InitState import BNFC.Backend.Latex.Latex import BNFC.Backend.Latex.Makefile import BNFC.Backend.Latex.State import BNFC.CF import BNFC.Prelude import BNFC.Options.GlobalOptions import BNFC.Options.Target import Control.Monad.Except import Control.Monad.State import Options.Applicative data LatexBackendOptions = LatexOpts latexOptionsParser :: Parser LatexBackendOptions latexOptionsParser = pure LatexOpts instance Backend 'TargetLatex where type BackendOptions 'TargetLatex = LatexBackendOptions type BackendState 'TargetLatex = LatexBackendState parseOpts :: Parser LatexBackendOptions parseOpts = latexOptionsParser initState :: LBNF -> GlobalOptions -> BackendOptions 'TargetLatex -> Except String (BackendState 'TargetLatex) initState _ globalOpts _ = latexInitState globalOpts abstractSyntax :: LBNF -> State (BackendState 'TargetLatex) Result abstractSyntax = latex printer :: LBNF -> State (BackendState 'TargetLatex) Result printer _ = return [] lexer :: LBNF -> State (BackendState 'TargetLatex) Result lexer _ = return [] parser :: LBNF -> State (BackendState 'TargetLatex) Result parser _ = return [] parserTest :: LBNF -> State (BackendState 'TargetLatex) Result parserTest _ = return [] makefile :: LBNF -> State (BackendState 'TargetLatex) Result makefile = latexmakefile