diff options
| author | krasimir <krasimir@chalmers.se> | 2010-01-17 21:35:36 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2010-01-17 21:35:36 +0000 |
| commit | 9b362ff231efbd43ffb4f1c6285c41a34caf3777 (patch) | |
| tree | 73b226f21f4910081ca2f02b481bc6c39c7c5c7a /src/runtime/haskell/PGF/Macros.hs | |
| parent | af13bae2dfb9adaa7c4aa273961fc09cc7ba1b7a (diff) | |
PGF is now real synchronous PMCFG
Diffstat (limited to 'src/runtime/haskell/PGF/Macros.hs')
| -rw-r--r-- | src/runtime/haskell/PGF/Macros.hs | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/src/runtime/haskell/PGF/Macros.hs b/src/runtime/haskell/PGF/Macros.hs index bf6252f2a..de6436425 100644 --- a/src/runtime/haskell/PGF/Macros.hs +++ b/src/runtime/haskell/PGF/Macros.hs @@ -17,22 +17,6 @@ import GF.Data.Utilities(sortNub) mapConcretes :: (Concr -> Concr) -> PGF -> PGF mapConcretes f pgf = pgf { concretes = Map.map f (concretes pgf) } -lookLin :: PGF -> CId -> CId -> Term -lookLin pgf lang fun = - lookMap tm0 fun $ lins $ lookMap (error "no lang") lang $ concretes pgf - -lookOper :: PGF -> CId -> CId -> Term -lookOper pgf lang fun = - lookMap tm0 fun $ opers $ lookMap (error "no lang") lang $ concretes pgf - -lookLincat :: PGF -> CId -> CId -> Term -lookLincat pgf lang fun = - lookMap tm0 fun $ lincats $ lookMap (error "no lang") lang $ concretes pgf - -lookParamLincat :: PGF -> CId -> CId -> Term -lookParamLincat pgf lang fun = - lookMap tm0 fun $ paramlincats $ lookMap (error "no lang") lang $ concretes pgf - lookType :: PGF -> CId -> Type lookType pgf f = case lookMap (error $ "lookType " ++ show f) f (funs (abstract pgf)) of @@ -52,9 +36,6 @@ isData pgf f = lookValCat :: PGF -> CId -> CId lookValCat pgf = valCat . lookType pgf -lookParser :: PGF -> CId -> Maybe ParserInfo -lookParser pgf lang = Map.lookup lang (concretes pgf) >>= parser - lookStartCat :: PGF -> CId lookStartCat pgf = mkCId $ fromMaybe "S" $ msum $ Data.List.map (Map.lookup (mkCId "startcat")) [gflags pgf, aflags (abstract pgf)] @@ -86,7 +67,7 @@ missingLins pgf lang = [c | c <- fs, not (hasl c)] where hasl = hasLin pgf lang hasLin :: PGF -> CId -> CId -> Bool -hasLin pgf lang f = Map.member f $ lins $ lookConcr pgf lang +hasLin pgf lang f = Map.member f $ lproductions $ lookConcr pgf lang restrictPGF :: (CId -> Bool) -> PGF -> PGF restrictPGF cond pgf = pgf { @@ -164,13 +145,11 @@ updateProductionIndices :: PGF -> PGF updateProductionIndices pgf = pgf{concretes = fmap updateConcrete (concretes pgf)} where updateConcrete cnc = - case parser cnc of - Nothing -> cnc - Just pinfo -> let prods0 = filterProductions (productions pinfo) - p_prods = parseIndex pinfo prods0 - l_prods = linIndex pinfo prods0 - in cnc{parser = Just pinfo{pproductions = p_prods, lproductions = l_prods}} - + let prods0 = filterProductions (productions cnc) + p_prods = parseIndex cnc prods0 + l_prods = linIndex cnc prods0 + in cnc{pproductions = p_prods, lproductions = l_prods} + filterProductions prods0 | IntMap.size prods == IntMap.size prods0 = prods | otherwise = filterProductions prods |
