From da3a5d27e319dd7812cbc2ec1c2843a05838d767 Mon Sep 17 00:00:00 2001 From: peb Date: Wed, 7 Jun 2006 16:18:28 +0000 Subject: corrected bottomup MCFG parsing, added GF.Parsing.MCFG.FastActive --- src/GF/Parsing/MCFG.hs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/GF/Parsing/MCFG.hs') diff --git a/src/GF/Parsing/MCFG.hs b/src/GF/Parsing/MCFG.hs index 6aec811de..bda3af675 100644 --- a/src/GF/Parsing/MCFG.hs +++ b/src/GF/Parsing/MCFG.hs @@ -23,9 +23,10 @@ import GF.Parsing.MCFG.PInfo import qualified GF.Parsing.MCFG.Naive as Naive import qualified GF.Parsing.MCFG.Active as Active -import qualified GF.Parsing.MCFG.Active2 as Active2 +import qualified GF.Parsing.MCFG.FastActive as FastActive +-- import qualified GF.Parsing.MCFG.Active2 as Active2 import qualified GF.Parsing.MCFG.Incremental as Incremental -import qualified GF.Parsing.MCFG.Incremental2 as Incremental2 +-- import qualified GF.Parsing.MCFG.Incremental2 as Incremental2 ---------------------------------------------------------------------- -- parsing @@ -35,13 +36,13 @@ parseMCF prs | prs `elem` strategies = Ok $ parseMCF' prs | otherwise = Bad $ "MCFG parsing strategy not defined: " ++ prs -strategies = words "bottomup topdown n an ab at i an2 ab2 at2 i2 rn ran rab rat ri" +strategies = words "bottomup topdown n an ab at i rn ran rab rat ri ft fb" parseMCF' :: (Ord c, Ord n, Ord l, Ord t) => String -> MCFParser c n l t -parseMCF' "bottomup" pinfo starts toks = Active.parse "b" pinfo starts toks -parseMCF' "topdown" pinfo starts toks = Active.parse "t" pinfo starts toks +parseMCF' "bottomup" pinfo starts toks = parseMCF' "fb" pinfo starts toks +parseMCF' "topdown" pinfo starts toks = parseMCF' "ft" pinfo starts toks parseMCF' "n" pinfo starts toks = Naive.parse pinfo starts toks parseMCF' "an" pinfo starts toks = Active.parse "n" pinfo starts toks @@ -49,10 +50,10 @@ parseMCF' "ab" pinfo starts toks = Active.parse "b" pinfo starts toks parseMCF' "at" pinfo starts toks = Active.parse "t" pinfo starts toks parseMCF' "i" pinfo starts toks = Incremental.parse pinfo starts toks -parseMCF' "an2" pinfo starts toks = Active2.parse "n" pinfo starts toks -parseMCF' "ab2" pinfo starts toks = Active2.parse "b" pinfo starts toks -parseMCF' "at2" pinfo starts toks = Active2.parse "t" pinfo starts toks -parseMCF' "i2" pinfo starts toks = Incremental2.parse pinfo starts toks +-- parseMCF' "an2" pinfo starts toks = Active2.parse "n" pinfo starts toks +-- parseMCF' "ab2" pinfo starts toks = Active2.parse "b" pinfo starts toks +-- parseMCF' "at2" pinfo starts toks = Active2.parse "t" pinfo starts toks +-- parseMCF' "i2" pinfo starts toks = Incremental2.parse pinfo starts toks parseMCF' "rn" pinfo starts toks = Naive.parseR (rrP pinfo toks) starts parseMCF' "ran" pinfo starts toks = Active.parseR "n" (rrP pinfo toks) starts @@ -61,4 +62,7 @@ parseMCF' "rat" pinfo starts toks = Active.parseR "t" (rrP pinfo toks) starts parseMCF' "ri" pinfo starts toks = Incremental.parseR (rrP pinfo toks) starts ntoks where ntoks = snd (inputBounds toks) +parseMCF' "fb" pinfo starts toks = FastActive.parse "b" (rrP pinfo toks) starts +parseMCF' "ft" pinfo starts toks = FastActive.parse "t" (rrP pinfo toks) starts + rrP pi = rangeRestrictPInfo pi -- cgit v1.2.3