From 6613d5f40adfd5cbfa539aadbdbde5fc9383d28a Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Tue, 25 Sep 2007 12:59:25 +0000 Subject: [PATCH] simple optimization of the parser that makes it about two times faster --- src/GF/Parsing/FCFG/Active.hs | 10 +++++++--- 1 file 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))