diff options
| author | peb <unknown> | 2005-04-18 13:55:32 +0000 |
|---|---|---|
| committer | peb <unknown> | 2005-04-18 13:55:32 +0000 |
| commit | c1592825c71867711a63293b588fcbc97e52bfc4 (patch) | |
| tree | 5b042471de94431e15f8fda2c6ff9a85bce99cef /src/GF/Conversion/GFC.hs | |
| parent | 1323b7406376c72f40b1e561e079f8824f79aabf (diff) | |
"Committed_by_peb"
Diffstat (limited to 'src/GF/Conversion/GFC.hs')
| -rw-r--r-- | src/GF/Conversion/GFC.hs | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/GF/Conversion/GFC.hs b/src/GF/Conversion/GFC.hs index 3f52ec88d..f2261ea3c 100644 --- a/src/GF/Conversion/GFC.hs +++ b/src/GF/Conversion/GFC.hs @@ -4,21 +4,21 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/04/16 05:40:49 $ +-- > CVS $Date: 2005/04/18 14:55:32 $ -- > CVS $Author: peb $ --- > CVS $Revision: 1.5 $ +-- > CVS $Revision: 1.6 $ -- -- All conversions from GFC ----------------------------------------------------------------------------- -module GF.Conversion.GFC +module GF.Conversion.GFC (module GF.Conversion.GFC, SGrammar, MGrammar, CGrammar) where import Option import GFC (CanonGrammar) import Ident (Ident) -import GF.Conversion.Types (CGrammar, MGrammar, NGrammar, SGrammar) +import GF.Conversion.Types (CGrammar, MGrammar, EGrammar, SGrammar) import qualified GF.Conversion.GFCtoSimple as G2S import qualified GF.Conversion.SimpleToFinite as S2Fin @@ -31,9 +31,10 @@ import qualified GF.Conversion.MCFGtoCFG as M2C -- * GFC -> MCFG & CFG, using options to decide which conversion is used gfc2mcfg2cfg :: Options -> (CanonGrammar, Ident) -> (MGrammar, CGrammar) -gfc2mcfg2cfg opts = \g -> let m = g2m g in (m, m2c m) - where m2c = mcfg2cfg - g2m = case getOptVal opts gfcConversion of +gfc2mcfg2cfg opts = \g -> let e = g2e g in (e2m e, e2c e) + where e2c = mcfg2cfg + e2m = removeErasing + g2e = case getOptVal opts gfcConversion of Just "strict" -> simple2mcfg_strict . gfc2simple Just "finite" -> simple2mcfg_nondet . gfc2finite Just "finite-strict" -> simple2mcfg_strict . gfc2finite @@ -60,24 +61,18 @@ removeSingletons = RemSing.convertGrammar gfc2finite :: (CanonGrammar, Ident) -> SGrammar gfc2finite = removeSingletons . simple2finite . gfc2simple -simple2mcfg_nondet :: SGrammar -> MGrammar +simple2mcfg_nondet :: SGrammar -> EGrammar simple2mcfg_nondet = S2M.convertGrammarNondet -simple2mcfg_strict :: SGrammar -> MGrammar +simple2mcfg_strict :: SGrammar -> EGrammar simple2mcfg_strict = S2M.convertGrammarStrict -mcfg2cfg :: MGrammar -> CGrammar +mcfg2cfg :: EGrammar -> CGrammar mcfg2cfg = M2C.convertGrammar -removeErasing :: MGrammar -> NGrammar +removeErasing :: EGrammar -> MGrammar removeErasing = RemEra.convertGrammar --- | this function is unnecessary, because of the following equivalence: --- --- > mcfg2cfg == ne_mcfg2cfg . removeErasing --- -ne_mcfg2cfg :: NGrammar -> CGrammar -ne_mcfg2cfg = M2C.convertNEGrammar |
