forked from GitHub/gf-core
the import command can now create blank grammars
This commit is contained in:
@@ -22,6 +22,16 @@ import Control.Monad(foldM)
|
|||||||
|
|
||||||
-- import a grammar in an environment where it extends an existing grammar
|
-- import a grammar in an environment where it extends an existing grammar
|
||||||
importGrammar :: Maybe PGF -> Options -> [FilePath] -> IO (Maybe PGF)
|
importGrammar :: Maybe PGF -> Options -> [FilePath] -> IO (Maybe PGF)
|
||||||
|
importGrammar pgf0 opts _
|
||||||
|
| Just name <- flag optBlank opts = do
|
||||||
|
mb_ngf_file <- if snd (flag optLinkTargets opts)
|
||||||
|
then do let fname = name <.> ".ngf"
|
||||||
|
putStr ("(Boot image "++fname++") ")
|
||||||
|
return (Just fname)
|
||||||
|
else do return Nothing
|
||||||
|
pgf <- newNGF name mb_ngf_file
|
||||||
|
putStrLn (abstractName pgf)
|
||||||
|
return (Just pgf)
|
||||||
importGrammar pgf0 _ [] = return pgf0
|
importGrammar pgf0 _ [] = return pgf0
|
||||||
importGrammar pgf0 opts fs
|
importGrammar pgf0 opts fs
|
||||||
| all (extensionIs ".cf") fs = fmap Just $ importCF opts fs getBNFCRules bnfc2cf
|
| all (extensionIs ".cf") fs = fmap Just $ importCF opts fs getBNFCRules bnfc2cf
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ data Flags = Flags {
|
|||||||
optShowCPUTime :: Bool,
|
optShowCPUTime :: Bool,
|
||||||
optOutputFormats :: [OutputFormat],
|
optOutputFormats :: [OutputFormat],
|
||||||
optLinkTargets :: (Bool,Bool), -- pgf,ngf files
|
optLinkTargets :: (Bool,Bool), -- pgf,ngf files
|
||||||
|
optBlank :: Maybe String,
|
||||||
optSISR :: Maybe SISRFormat,
|
optSISR :: Maybe SISRFormat,
|
||||||
optHaskellOptions :: Set HaskellOption,
|
optHaskellOptions :: Set HaskellOption,
|
||||||
optLexicalCats :: Set String,
|
optLexicalCats :: Set String,
|
||||||
@@ -262,6 +263,7 @@ defaultFlags = Flags {
|
|||||||
optShowCPUTime = False,
|
optShowCPUTime = False,
|
||||||
optOutputFormats = [],
|
optOutputFormats = [],
|
||||||
optLinkTargets = (True,False),
|
optLinkTargets = (True,False),
|
||||||
|
optBlank = Nothing,
|
||||||
optSISR = Nothing,
|
optSISR = Nothing,
|
||||||
optHaskellOptions = Set.empty,
|
optHaskellOptions = Set.empty,
|
||||||
optLiteralCats = Set.fromList [cString,cInt,cFloat,cVar],
|
optLiteralCats = Set.fromList [cString,cInt,cFloat,cVar],
|
||||||
@@ -320,6 +322,7 @@ optDescr =
|
|||||||
Option [] ["make"] (NoArg (liftM2 addOptions (mode ModeCompiler) (phase Link))) "Build .pgf file and other output files and exit.",
|
Option [] ["make"] (NoArg (liftM2 addOptions (mode ModeCompiler) (phase Link))) "Build .pgf file and other output files and exit.",
|
||||||
Option [] ["boot"] (NoArg (set $ \o -> o {optLinkTargets = (True,True)})) "Boot an .ngf database for fast grammar reloading",
|
Option [] ["boot"] (NoArg (set $ \o -> o {optLinkTargets = (True,True)})) "Boot an .ngf database for fast grammar reloading",
|
||||||
Option [] ["boot-only"] (NoArg (set $ \o -> o {optLinkTargets = (False,True)})) "Boot the .ngf database and don't write a .pgf file",
|
Option [] ["boot-only"] (NoArg (set $ \o -> o {optLinkTargets = (False,True)})) "Boot the .ngf database and don't write a .pgf file",
|
||||||
|
Option [] ["blank"] (ReqArg (\x -> set $ \o -> o { optBlank = Just x }) "ABSTR_NAME") "Create a blank database with an empty abstract syntax.",
|
||||||
Option [] ["cpu"] (NoArg (cpu True)) "Show compilation CPU time statistics.",
|
Option [] ["cpu"] (NoArg (cpu True)) "Show compilation CPU time statistics.",
|
||||||
Option [] ["no-cpu"] (NoArg (cpu False)) "Don't show compilation CPU time statistics (default).",
|
Option [] ["no-cpu"] (NoArg (cpu False)) "Don't show compilation CPU time statistics (default).",
|
||||||
Option [] ["gfo-dir"] (ReqArg gfoDir "DIR") "Directory to put .gfo files in (default = '.').",
|
Option [] ["gfo-dir"] (ReqArg gfoDir "DIR") "Directory to put .gfo files in (default = '.').",
|
||||||
|
|||||||
Reference in New Issue
Block a user