mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
28 lines
900 B
Haskell
28 lines
900 B
Haskell
module GF.Command.Importing (importGrammar) where
|
|
|
|
import GF.Compile.API
|
|
import GF.GFCC.DataGFCC
|
|
import GF.GFCC.API
|
|
|
|
import GF.Devel.UseIO
|
|
import GF.Infra.Option
|
|
import GF.Data.ErrM
|
|
|
|
import Data.List (nubBy)
|
|
import System.FilePath
|
|
|
|
-- import a grammar in an environment where it extends an existing grammar
|
|
importGrammar :: MultiGrammar -> Options -> [FilePath] -> IO MultiGrammar
|
|
importGrammar mgr0 opts files =
|
|
case takeExtensions (last files) of
|
|
s | elem s [".gf",".gfo"] -> do
|
|
res <- appIOE $ compileToGFCC opts files
|
|
case res of
|
|
Ok gfcc2 -> do let gfcc3 = unionGFCC (gfcc mgr0) gfcc2
|
|
return $ MultiGrammar gfcc3
|
|
Bad msg -> do putStrLn msg
|
|
return mgr0
|
|
".gfcc" -> do
|
|
gfcc2 <- mapM file2gfcc files >>= return . foldl1 unionGFCC
|
|
let gfcc3 = unionGFCC (gfcc mgr0) gfcc2
|
|
return $ MultiGrammar gfcc3 |