diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2007-09-25 12:59:25 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2007-09-25 12:59:25 +0000 |
| commit | 6613d5f40adfd5cbfa539aadbdbde5fc9383d28a (patch) | |
| tree | 18871aa24571dead3d2107a07d3895a5808c6fa7 /src/GF | |
| parent | 286851b7c0628ec9aaecf6d41bd56d13218f53cd (diff) | |
simple optimization of the parser that makes it about two times faster
Diffstat (limited to 'src/GF')
| -rw-r--r-- | src/GF/Parsing/FCFG/Active.hs | 10 |
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)) |
