mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-07 10:12:51 -06:00
Add Phrasebook to testsuite. Move grammars into subfolders. Add run-bench script.
This commit is contained in:
@@ -10,7 +10,7 @@ import qualified Data.List as L
|
||||
import qualified Data.Map as Map
|
||||
import System.Environment (getArgs)
|
||||
import System.Directory (listDirectory)
|
||||
import System.FilePath ((</>), (<.>), takeBaseName, takeExtension, dropExtension)
|
||||
import System.FilePath ((</>), (<.>), takeDirectory, takeBaseName, takeExtension, dropExtension)
|
||||
import Text.Printf (printf)
|
||||
|
||||
dir :: FilePath
|
||||
@@ -21,41 +21,41 @@ main = do
|
||||
args <- getArgs
|
||||
case args of
|
||||
[] -> do
|
||||
doGrammar "Bind"
|
||||
doGrammar "Tables"
|
||||
doGrammar "Params"
|
||||
doGrammar "Pre"
|
||||
doGrammar "Projection"
|
||||
doGrammar "Walking"
|
||||
doGrammar "Foods"
|
||||
doGrammar "unittests" "Bind"
|
||||
doGrammar "unittests" "Tables"
|
||||
doGrammar "unittests" "Params"
|
||||
doGrammar "unittests" "Pre"
|
||||
doGrammar "unittests" "Projection"
|
||||
doGrammar "walking" "Walking"
|
||||
doGrammar "foods" "Foods"
|
||||
[absname] ->
|
||||
doGrammar absname
|
||||
doGrammar (takeDirectory absname) (takeBaseName absname)
|
||||
absname:langs ->
|
||||
doGrammar' absname langs
|
||||
doGrammar' (takeDirectory absname) (takeBaseName absname) langs
|
||||
|
||||
doGrammar :: String -> IO ()
|
||||
doGrammar gname = doGrammar' gname []
|
||||
doGrammar :: FilePath -> String -> IO ()
|
||||
doGrammar path gname = doGrammar' path gname []
|
||||
|
||||
doGrammar' :: String -> [String] -> IO ()
|
||||
doGrammar' gname cncs = do
|
||||
doGrammar' :: FilePath -> String -> [String] -> IO ()
|
||||
doGrammar' path gname cncs = do
|
||||
-- Collect paths to concrete modules
|
||||
mods <- map (dir </>)
|
||||
mods <- map ((dir </> path) </>)
|
||||
. filter (\p -> gname `L.isPrefixOf` takeBaseName p
|
||||
&& takeExtension p == ".gf"
|
||||
&& (null cncs || any (`L.isSuffixOf` dropExtension p) cncs)
|
||||
)
|
||||
<$> listDirectory dir
|
||||
<$> listDirectory (dir </> path)
|
||||
|
||||
-- Compile LPGF
|
||||
lpgf <- compileToLPGF noOptions mods
|
||||
path <- writeLPGF noOptions lpgf
|
||||
pgfPath <- writeLPGF noOptions lpgf
|
||||
putStrLn ""
|
||||
|
||||
-- Read back from file
|
||||
lpgf <- readLPGF path
|
||||
lpgf <- readLPGF pgfPath
|
||||
|
||||
-- Read treebank
|
||||
gs <- groups . lines <$> readFile (dir </> gname <.> "treebank")
|
||||
gs <- groups . lines <$> readFile (dir </> path </> gname <.> "treebank")
|
||||
forM_ gs $ \grp -> do
|
||||
let ast = drop 2 $ dropWhile (/=':') $ head grp
|
||||
printf "%s: %s\n" gname ast
|
||||
|
||||
Reference in New Issue
Block a user