summaryrefslogtreecommitdiff
path: root/src/GF/UseGrammar/Parsing.hs
diff options
context:
space:
mode:
authorpeb <unknown>2004-06-02 11:17:15 +0000
committerpeb <unknown>2004-06-02 11:17:15 +0000
commit7716f818869971da138cf706c124a6be73bbab62 (patch)
tree4ec44ec8a042d15b48a4554ef8333e6395487689 /src/GF/UseGrammar/Parsing.hs
parent9b0a96859790a4d30bf2071a20a7e7d29dbd1131 (diff)
*** empty log message ***
Diffstat (limited to 'src/GF/UseGrammar/Parsing.hs')
-rw-r--r--src/GF/UseGrammar/Parsing.hs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/GF/UseGrammar/Parsing.hs b/src/GF/UseGrammar/Parsing.hs
index 91e811f22..6e6356081 100644
--- a/src/GF/UseGrammar/Parsing.hs
+++ b/src/GF/UseGrammar/Parsing.hs
@@ -20,7 +20,7 @@ import Option
import Custom
import ShellState
-import qualified ExportParser as N
+import qualified ParseGFCviaCFG as N
import Operations
@@ -43,9 +43,9 @@ parseStringC opts0 sg cat s
---- to test peb's new parser 6/10/2003
| oElem newParser opts0 = do
let pm = maybe "" id $ getOptVal opts0 useParser -- -parser=pm
- gr = grammar sg
+ gr = stateGrammarST sg
ct = cfCat2Cat cat
- ts <- checkErr $ N.newParser pm gr (cfCat2Cat cat) s
+ ts <- checkErr $ N.newParser pm sg ct s -- peb 27/5-04 (changed gr -> sg)
mapM (checkErr . (annotate gr)) ts
| otherwise = do
@@ -58,11 +58,13 @@ parseStringC opts0 sg cat s
tokens2trms opts sg cn parser (tok s)
tokens2trms :: Options ->StateGrammar ->Ident -> CFParser -> [CFTok] -> Check [Tree]
-tokens2trms opts sg cn parser as = do
- let res@(trees,info) = parser as
- ts0 <- return $ cfParseResults res -- removed nub, peb 25/5-04
- -- ts0 <- return $ nub (cfParseResults res) -- nub gives quadratic behaviour!
- -- SortedList.nubsort is O(n log n)
+tokens2trms opts sg cn parser toks = trees2trms opts sg cn toks trees info
+ where result = parser toks
+ info = snd result
+ trees = {- nub $ -} cfParseResults result -- peb 25/5-04: removed nub (O(n^2))
+
+trees2trms :: Options -> StateGrammar -> Ident -> [CFTok] -> [CFTree] -> String -> Check [Tree]
+trees2trms opts sg cn as ts0 info = do
ts <- case () of
_ | null ts0 -> checkWarn "No success in cf parsing" >> return []
_ | raw -> do