peggy-0.3.2: bootstrap/Bootstrap.hs
{-# LANGUAGE TemplateHaskell, QuasiQuotes, FlexibleContexts #-}
import Data.Char
import Numeric
import Language.Haskell.TH
import Language.Haskell.Meta.Utils
import qualified Stage2
import Text.Peggy.Prim
import Text.Peggy.Quote
import Text.Peggy.CodeGen.TH
import Text.Peggy.Syntax
import Text.Peggy.SrcLoc
header :: String
header =
unlines
[ "{-# LANGUAGE RankNTypes, FlexibleContexts #-}"
, ""
, "module Text.Peggy.Parser (syntax) where"
, "import Control.Applicative"
, "import Data.ListLike.Base hiding (head)"
, "import Data.HashTable.ST.Basic"
, "import Numeric"
, "import Data.Char"
, "import Text.Peggy.Prim"
, "import Text.Peggy.Syntax"
]
main :: IO ()
main = do
res <- parseFile Stage2.syntax "./peggy.peggy"
case res of
Left err -> error $ show err
Right defs -> do
code <- runQ $ genDecs defs
putStrLn header
putStrLn $ pp code