{-# LANGUAGE NoImplicitPrelude #-} module Main where import BNFC.Main (bnfcArgs) import Paths_BNFC3 (getDataDir) import BNFC.Prelude import System.FilePath ((), (<.>)) main :: IO () main = do dir <- getDataDir mapM_ (generate dir) examples mapM_ (generateFunctor dir) examples mapM_ (generateGadt dir) examples generate :: FilePath -> FilePath -> IO () generate dir testName = bnfcArgs [ "-o", outDir, fileName, "haskell", "-d" ] where fileName = dir "examples" testName <.> "cf" outDir = dir "test/haskell/printer/printer-test/srcNormal" generateFunctor :: FilePath -> FilePath -> IO () generateFunctor dir testName = bnfcArgs [ "-o", outDir, fileName, "haskell", "-d", "--functor" ] where fileName = dir "examples" testName <.> "cf" outDir = dir "test/haskell/printer/printer-test/srcFunctor" generateGadt :: FilePath -> FilePath -> IO () generateGadt dir testName = bnfcArgs [ "-o", outDir, fileName, "haskell", "-d", "--gadt" ] where fileName = dir "examples" testName <.> "cf" outDir = dir "test/haskell/printer/printer-test/srcGadt" examples :: [String] examples = [ "Alfa/Alfa" , "C/C" , "C/C4" , "Calc/Calc" , "Cpp/Cpp" , "Cubicaltt/Cubicaltt" , "GF/GF" , "Haskell-core/Core" , "Javalette/JavaletteLight" , "LBNF/LBNF" , "OCL/OCL" , "Prolog/Prolog" ]