summaryrefslogtreecommitdiff
path: root/src/GF/Conversion/GFC.hs
diff options
context:
space:
mode:
authorpeb <unknown>2005-04-18 13:55:32 +0000
committerpeb <unknown>2005-04-18 13:55:32 +0000
commitc1592825c71867711a63293b588fcbc97e52bfc4 (patch)
tree5b042471de94431e15f8fda2c6ff9a85bce99cef /src/GF/Conversion/GFC.hs
parent1323b7406376c72f40b1e561e079f8824f79aabf (diff)
"Committed_by_peb"
Diffstat (limited to 'src/GF/Conversion/GFC.hs')
-rw-r--r--src/GF/Conversion/GFC.hs29
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