summaryrefslogtreecommitdiff
path: root/src/GF/UseGrammar/Parsing.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-06-20 08:38:44 +0000
committeraarne <aarne@cs.chalmers.se>2006-06-20 08:38:44 +0000
commit402a113b567a96eef61946552b68df6ac6eb6712 (patch)
tree6446bbaf195800c7e0ec71d30cba113c9bcf1f74 /src/GF/UseGrammar/Parsing.hs
parentcb168e92e23d0f620b75f6119a4cb298360e6f21 (diff)
made -fcfg default parser; added lexer textvars
Diffstat (limited to 'src/GF/UseGrammar/Parsing.hs')
-rw-r--r--src/GF/UseGrammar/Parsing.hs43
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