module FormalLanguage.GrammarProduct.QQ where
import Language.Haskell.TH
import Language.Haskell.TH.Quote
import Text.Trifecta.Delta (Delta (Directed))
import Text.Trifecta (parseString)
import Text.Trifecta.Result (Result (..))
import Control.Monad.Trans.State.Strict (evalStateT)
import Data.Default (def)
import Data.ByteString.Char8 (pack)
import Control.Lens
import FormalLanguage.CFG.QQ (trim, parseFormalLanguage)
import FormalLanguage.CFG.PrettyPrint.ANSI
import FormalLanguage.CFG.Parser
import FormalLanguage.CFG.TH
import FormalLanguage.CFG.Grammar
import FormalLanguage.GrammarProduct.Parser (parseGrammarProduct)
grammarProductF = quoteFile grammarProduct
grammarProduct = QuasiQuoter
{ quoteDec = parseFormalLanguage parseGrammarProduct
, quoteExp = err
, quotePat = err
, quoteType = err
} where err = error "there is only a Dec quoter"