summaryrefslogtreecommitdiff
path: root/src-3.0/PGF.hs
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2008-06-12 13:11:38 +0000
committerkrasimir <krasimir@chalmers.se>2008-06-12 13:11:38 +0000
commit79cbcdad2d5751e086990d8d98dfef4fcb4a8612 (patch)
treed845eac86e756b7ad5a8f35131d44f57a599a66a /src-3.0/PGF.hs
parent0a6085a7e2699fca3c8d6d38a08b3072430f8b5e (diff)
add generation of erasing PMCFG grammars
Diffstat (limited to 'src-3.0/PGF.hs')
-rw-r--r--src-3.0/PGF.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src-3.0/PGF.hs b/src-3.0/PGF.hs
index f60ba852e..aa2fa2edf 100644
--- a/src-3.0/PGF.hs
+++ b/src-3.0/PGF.hs
@@ -172,11 +172,15 @@ readPGF f = do
linearize pgf lang = PGF.Linearize.linearize pgf (mkCId lang)
parse pgf lang cat s =
- case lookParser pgf (mkCId lang) of
- Nothing -> error ("Unknown language: " ++ lang)
- Just pinfo -> case parseFCFG "bottomup" pinfo (mkCId cat) (words s) of
- Ok x -> x
- Bad s -> error s
+ case Map.lookup (mkCId lang) (concretes pgf) of
+ Just cnc -> case parser cnc of
+ Just pinfo -> if Map.lookup (mkCId "erasing") (cflags cnc) == Just "on"
+ then Incremental.parse pinfo (mkCId cat) (words s)
+ else case parseFCFG "bottomup" pinfo (mkCId cat) (words s) of
+ Ok x -> x
+ Bad s -> error s
+ Nothing -> error ("No parser built fo language: " ++ lang)
+ Nothing -> error ("Unknown language: " ++ lang)
linearizeAll mgr = map snd . linearizeAllLang mgr
linearizeAllLang mgr t =