diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-07-08 13:55:00 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-07-08 13:55:00 +0000 |
| commit | 3627875fa8ec277fad0bdabb1e7d74bd66ba2c42 (patch) | |
| tree | f6b85d058866a1cd5807af1b847d8534e2a00727 /src/GF/UseGrammar | |
| parent | ba7061166978e74bc0b0930c5d1db695aa125bda (diff) | |
handle unknowns words graciously in parseAny
Diffstat (limited to 'src/GF/UseGrammar')
| -rw-r--r-- | src/GF/UseGrammar/Parsing.hs | 8 |
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 |
