diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-06-20 08:38:44 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-06-20 08:38:44 +0000 |
| commit | 402a113b567a96eef61946552b68df6ac6eb6712 (patch) | |
| tree | 6446bbaf195800c7e0ec71d30cba113c9bcf1f74 /src/GF/UseGrammar/Parsing.hs | |
| parent | cb168e92e23d0f620b75f6119a4cb298360e6f21 (diff) | |
made -fcfg default parser; added lexer textvars
Diffstat (limited to 'src/GF/UseGrammar/Parsing.hs')
| -rw-r--r-- | src/GF/UseGrammar/Parsing.hs | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/GF/UseGrammar/Parsing.hs b/src/GF/UseGrammar/Parsing.hs index 6e8965f08..e979579c9 100644 --- a/src/GF/UseGrammar/Parsing.hs +++ b/src/GF/UseGrammar/Parsing.hs @@ -54,25 +54,30 @@ parseStringMsg os sg cat s = do return (ts, unlines $ reverse ss) parseStringC :: Options -> StateGrammar -> CFCat -> String -> Check [Tree] +parseStringC opts0 sg cat s + | oElem (iOpt "old") opts0 || + (not (oElem (iOpt "fcfg") opts0) && stateHasHOAS sg) = do + let opts = unionOptions opts0 $ stateOptions sg + cf = stateCF sg + gr = stateGrammarST sg + cn = cncId sg + toks = customOrDefault opts useTokenizer customTokenizer sg s + parser = customOrDefault opts useParser customParser sg cat + if oElem (iOpt "cut") opts + then doUntil (not . null) $ map (tokens2trms opts sg cn parser) toks + else mapM (tokens2trms opts sg cn parser) toks >>= return . concat + +---- | or [oElem p opts0 | +---- p <- [newCParser,newMParser,newFParser,newParser,newerParser] = do ----- to test peb's new parser 6/10/2003 ----- (obsoleted by "newer" below) --- parseStringC opts0 sg cat s --- | oElem newParser opts0 = do --- let pm = maybe "" id $ getOptVal opts0 useParser -- -parser=pm --- ct = cfCat2Cat cat --- ts <- checkErr $ NewOld.newParser pm sg ct s --- mapM (checkErr . annotate (stateGrammarST sg) . refreshMetas []) ts - --- to use peb's newer parser 7/4-05 -parseStringC opts0 sg cat s - | oElem newCParser opts0 || oElem newMParser opts0 || oElem newFParser opts0 || oElem newParser opts0 || oElem newerParser opts0 = do + | otherwise = do let opts = unionOptions opts0 $ stateOptions sg algorithm | oElem newCParser opts0 = "c" | oElem newMParser opts0 = "m" | oElem newFParser opts0 = "f" - | otherwise = "c" -- default algorithm - strategy = maybe "bottomup" id $ getOptVal opts useParser -- -parser=bottomup/topdown + | otherwise = "f" -- default algorithm: FCFG + strategy = maybe "bottomup" id $ getOptVal opts useParser + -- -parser=bottomup/topdown tokenizer = customOrDefault opts useTokenizer customTokenizer sg toks = case tokenizer s of t:_ -> t @@ -81,16 +86,6 @@ parseStringC opts0 sg cat s ts' <- mapM (checkErr . annotate (stateGrammarST sg) . refreshMetas []) ts return $ optIntOrAll opts flagNumber ts' -parseStringC opts0 sg cat s = do - let opts = unionOptions opts0 $ stateOptions sg - cf = stateCF sg - gr = stateGrammarST sg - cn = cncId sg - toks = customOrDefault opts useTokenizer customTokenizer sg s - parser = customOrDefault opts useParser customParser sg cat - if oElem (iOpt "cut") opts - then doUntil (not . null) $ map (tokens2trms opts sg cn parser) toks - else mapM (tokens2trms opts sg cn parser) toks >>= return . concat tokens2trms :: Options ->StateGrammar ->Ident -> CFParser -> [CFTok] -> Check [Tree] tokens2trms opts sg cn parser toks = trees2trms opts sg cn toks trees info |
