1
0
forked from GitHub/gf-core

corrected bottomup MCFG parsing, added GF.Parsing.MCFG.FastActive

This commit is contained in:
peb
2006-06-07 16:18:28 +00:00
parent 8bee2d7def
commit 6c5d4da9d0
4 changed files with 214 additions and 30 deletions

View File

@@ -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