diff options
| author | bjorn <bjorn@bringert.net> | 2008-10-20 14:52:50 +0000 |
|---|---|---|
| committer | bjorn <bjorn@bringert.net> | 2008-10-20 14:52:50 +0000 |
| commit | d327d9da6c25349757fb87f4cc8bcb3ba69ca8f4 (patch) | |
| tree | 1f29c5b13fd793696b2d4f2e1cf952bf3f8fd059 /src/PGF.hs | |
| parent | 6b8c9dd4c9a1e28ef22a1c1797143ffd8febef5d (diff) | |
Added --parser=ondemand flag.
Diffstat (limited to 'src/PGF.hs')
| -rw-r--r-- | src/PGF.hs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/PGF.hs b/src/PGF.hs index 17f1d8af8..754bcf34f 100644 --- a/src/PGF.hs +++ b/src/PGF.hs @@ -214,12 +214,12 @@ readPGF f = do g <- parseGrammar s return $! addParsers $ toPGF g --- Adds parsers for all concretes that don't have a parser. +-- Adds parsers for all concretes that don't have a parser and that have parser=ondemand. addParsers :: PGF -> PGF -addParsers pgf = pgf { concretes = Map.map conv (concretes pgf) } - where - conv cnc | isJust (parser cnc) = cnc - | otherwise = cnc { parser = Just (PMCFG.convertConcrete (abstract pgf) cnc) } +addParsers pgf = mapConcretes (\cnc -> if wantsParser cnc then addParser cnc else cnc) pgf + where + wantsParser cnc = isNothing (parser cnc) && Map.lookup (mkCId "parser") (cflags cnc) == Just "ondemand" + addParser cnc = cnc { parser = Just (PMCFG.convertConcrete (abstract pgf) cnc) } linearize pgf lang = concat . take 1 . PGF.Linearize.linearizes pgf lang |
