summaryrefslogtreecommitdiff
path: root/src/GF/Command/Importing.hs
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2008-04-17 12:50:51 +0000
committerkrasimir <krasimir@chalmers.se>2008-04-17 12:50:51 +0000
commit0ea2798b3cc9bf60e99e01089ea2eddba64a9cbf (patch)
tree0f94cbe1bdf621e9bdf5de892a0c00cb3c1b9298 /src/GF/Command/Importing.hs
parent08f92cd180079125ce3d4826d1eeba1beb91ed46 (diff)
gf3 should not exit if there is a syntax error in the file
Diffstat (limited to 'src/GF/Command/Importing.hs')
-rw-r--r--src/GF/Command/Importing.hs21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/GF/Command/Importing.hs b/src/GF/Command/Importing.hs
index 73589533d..31c4983dc 100644
--- a/src/GF/Command/Importing.hs
+++ b/src/GF/Command/Importing.hs
@@ -6,15 +6,22 @@ import GF.GFCC.API
import GF.Devel.UseIO
import GF.Infra.Option
+import GF.Data.ErrM
import Data.List (nubBy)
-- import a grammar in an environment where it extends an existing grammar
importGrammar :: MultiGrammar -> Options -> [FilePath] -> IO MultiGrammar
-importGrammar mgr0 opts files = do
- gfcc2 <- case fileSuffix (last files) of
- s | elem s ["gf","gfo"] -> compileToGFCC opts files
- "gfcc" ->
- mapM file2gfcc files >>= return . foldl1 unionGFCC
- let gfcc3 = unionGFCC (gfcc mgr0) gfcc2
- return $ MultiGrammar gfcc3 \ No newline at end of file
+importGrammar mgr0 opts files =
+ case fileSuffix (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 print msg
+ return mgr0
+ "gfcc" -> do
+ gfcc2 <- mapM file2gfcc files >>= return . foldl1 unionGFCC
+ let gfcc3 = unionGFCC (gfcc mgr0) gfcc2
+ return $ MultiGrammar gfcc3 \ No newline at end of file