summaryrefslogtreecommitdiff
path: root/src/GF/UseGrammar
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-07-08 13:55:00 +0000
committeraarne <aarne@cs.chalmers.se>2007-07-08 13:55:00 +0000
commit3627875fa8ec277fad0bdabb1e7d74bd66ba2c42 (patch)
treef6b85d058866a1cd5807af1b847d8534e2a00727 /src/GF/UseGrammar
parentba7061166978e74bc0b0930c5d1db695aa125bda (diff)
handle unknowns words graciously in parseAny
Diffstat (limited to 'src/GF/UseGrammar')
-rw-r--r--src/GF/UseGrammar/Parsing.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/GF/UseGrammar/Parsing.hs b/src/GF/UseGrammar/Parsing.hs
index 599268b1d..2ca057410 100644
--- a/src/GF/UseGrammar/Parsing.hs
+++ b/src/GF/UseGrammar/Parsing.hs
@@ -52,8 +52,9 @@ parseString os sg cat = liftM fst . parseStringMsg os sg cat
parseStringMsg :: Options -> StateGrammar -> CFCat -> String -> Err ([Tree],String)
parseStringMsg os sg cat s = do
- (ts,(_,ss)) <- checkStart $ parseStringC os sg cat s
- return (ts, unlines $ reverse ss)
+ case checkStart $ parseStringC os sg cat s of
+ Ok (ts,(_,ss)) -> return (ts, unlines $ reverse ss)
+ Bad s -> return ([],s)
parseStringC :: Options -> StateGrammar -> CFCat -> String -> Check [Tree]
parseStringC opts0 sg cat s
@@ -92,7 +93,8 @@ parseStringC opts0 sg cat s
uncap s = s
case unknowns of
- _:_ -> fail $ "Unknown words:" +++ unwords unknowns
+ _:_ | oElem (iOpt "trynextlang") opts -> return []
+ _:_ -> fail $ "Unknown words:" +++ unwords unknowns
_ -> do
ts <- checkErr $ New.parse algorithm strategy (pInfo sg) (absId sg) cat toks