summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2007-09-25 12:59:25 +0000
committerkr.angelov <kr.angelov@gmail.com>2007-09-25 12:59:25 +0000
commit6613d5f40adfd5cbfa539aadbdbde5fc9383d28a (patch)
tree18871aa24571dead3d2107a07d3895a5808c6fa7
parent286851b7c0628ec9aaecf6d41bd56d13218f53cd (diff)
simple optimization of the parser that makes it about two times faster
-rw-r--r--src/GF/Parsing/FCFG/Active.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/GF/Parsing/FCFG/Active.hs b/src/GF/Parsing/FCFG/Active.hs
index a7a2e7263..548dc8276 100644
--- a/src/GF/Parsing/FCFG/Active.hs
+++ b/src/GF/Parsing/FCFG/Active.hs
@@ -174,8 +174,12 @@ initialTD pinfo starts toks =
initialBU :: FCFPInfo -> Input FToken -> [(FCat,Item)]
initialBU pinfo toks =
- do tok <- aElems (inputToken toks)
- ruleid <- leftcornerTokens pinfo ? tok ++
- epsilonRules pinfo
+ do (tok,rngs) <- aAssocs (inputToken toks)
+ ruleid <- leftcornerTokens pinfo ? tok
+ let FRule _ _ cat _ = allRules pinfo ! ruleid
+ (i,j) <- rngs
+ return (cat,Active [] (makeRange i j) 0 1 (emptyChildren ruleid pinfo))
+ ++
+ do ruleid <- epsilonRules pinfo
let FRule _ _ cat _ = allRules pinfo ! ruleid
return (cat,Active [] EmptyRange 0 0 (emptyChildren ruleid pinfo))