1
0
forked from GitHub/gf-core

handle unknowns words graciously in parseAny

This commit is contained in:
aarne
2007-07-08 13:55:00 +00:00
parent ba70611669
commit 3627875fa8
2 changed files with 9 additions and 5 deletions

View File

@@ -109,7 +109,8 @@ parse :: GFGrammar -> GFCat -> String -> [Tree]
parse sgr cat = errVal [] . parseString noOptions sgr cat
parseAny :: [GFGrammar] -> GFCat -> String -> [Tree]
parseAny grs cat s = concat [parse gr cat s | gr <- grs]
parseAny grs cat s =
concat [errVal [] (parseString (options [iOpt "trynextlang"]) gr cat s) | gr <- grs]
translate :: GFGrammar -> GFGrammar -> GFCat -> String -> [String]
translate ig og cat = map (linearize og) . parse ig cat
@@ -121,7 +122,8 @@ translateFromAny :: [GFGrammar] -> GFGrammar -> GFCat -> String -> [String]
translateFromAny igs og cat s = concat [translate ig og cat s | ig <- igs]
translateBetweenAll :: [GFGrammar] -> GFCat -> String -> [String]
translateBetweenAll grs cat = concat . map (linearizeToAll grs) . parseAny grs cat
translateBetweenAll grs cat =
concat . map (linearizeToAll grs) . parseAny grs cat
homonyms :: GFGrammar -> GFCat -> Tree -> [Tree]
homonyms gr cat = nub . parse gr cat . linearize gr

View File

@@ -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