optimize-pgf and file flag in pg -pgf

This commit is contained in:
aarne
2010-12-07 19:28:40 +00:00
parent 1b24f4490c
commit ff23d6db76

View File

@@ -23,6 +23,7 @@ import PGF.Printer
import PGF.Probabilistic -- (getProbsFromFile,prProbabilities,defaultProbabilities) import PGF.Probabilistic -- (getProbsFromFile,prProbabilities,defaultProbabilities)
import PGF.Generate (generateRandomFrom) ---- import PGF.Generate (generateRandomFrom) ----
import PGF.Tree (Tree(Fun), expr2tree, tree2expr) import PGF.Tree (Tree(Fun), expr2tree, tree2expr)
import PGF.Optimize
import GF.Compile.Export import GF.Compile.Export
import GF.Compile.ToAPI import GF.Compile.ToAPI
import GF.Compile.ExampleBased import GF.Compile.ExampleBased
@@ -34,12 +35,12 @@ import GF.Command.Messages
import GF.Text.Lexing import GF.Text.Lexing
import GF.Text.Transliterations import GF.Text.Transliterations
import GF.Quiz import GF.Quiz
import GFC (writePGF)
import GF.Command.TreeOperations ---- temporary place for typecheck and compute import GF.Command.TreeOperations ---- temporary place for typecheck and compute
import GF.Data.Operations import GF.Data.Operations
import Data.Binary (encodeFile)
import Data.List import Data.List
import Data.Maybe import Data.Maybe
import qualified Data.Map as Map import qualified Data.Map as Map
@@ -548,6 +549,7 @@ allCommands env@(pgf, mos) = Map.fromList [
exec = \opts _ -> prGrammar opts, exec = \opts _ -> prGrammar opts,
flags = [ flags = [
--"cat", --"cat",
("file", "set the file name when printing with -pgf option"),
("lang", "select languages for the some options (default all languages)"), ("lang", "select languages for the some options (default all languages)"),
("printer","select the printing format (see gfc --help)") ("printer","select the printing format (see gfc --help)")
], ],
@@ -556,6 +558,7 @@ allCommands env@(pgf, mos) = Map.fromList [
("fullform", "print the fullform lexicon"), ("fullform", "print the fullform lexicon"),
("funs", "show just the names and types of abstract syntax functions"), ("funs", "show just the names and types of abstract syntax functions"),
("missing","show just the names of functions that have no linearization"), ("missing","show just the names of functions that have no linearization"),
("opt", "optimize the generated pgf"),
("pgf", "write current pgf image in file"), ("pgf", "write current pgf image in file"),
("words", "print the list of words") ("words", "print the list of words")
], ],
@@ -1077,7 +1080,12 @@ allCommands env@(pgf, mos) = Map.fromList [
_ -> fromExprs es _ -> fromExprs es
prGrammar opts prGrammar opts
| isOpt "pgf" opts = dieIOE (writePGF noOptions pgf) >> return void ---- opts | isOpt "pgf" opts = do
let pgf1 = if isOpt "opt" opts then optimizePGF pgf else pgf
let outfile = valStrOpts "file" (showCId (abstractName pgf) ++ ".pgf") opts
encodeFile outfile pgf1
putStrLn $ "wrote file " ++ outfile
return void
| isOpt "cats" opts = return $ fromString $ unwords $ map showCId $ categories pgf | isOpt "cats" opts = return $ fromString $ unwords $ map showCId $ categories pgf
| isOpt "funs" opts = return $ fromString $ unlines $ map showFun $ funsigs pgf | isOpt "funs" opts = return $ fromString $ unlines $ map showFun $ funsigs pgf
| isOpt "fullform" opts = return $ fromString $ concatMap (morpho "" prFullFormLexicon) $ optLangs opts | isOpt "fullform" opts = return $ fromString $ concatMap (morpho "" prFullFormLexicon) $ optLangs opts