summaryrefslogtreecommitdiff
path: root/src/GF/Conversion/GFC.hs
diff options
context:
space:
mode:
authorkr_angelov <kr_angelov@gmail.com>2006-12-28 16:45:57 +0000
committerkr_angelov <kr_angelov@gmail.com>2006-12-28 16:45:57 +0000
commit3f183ce821b3f0188dbe61738fb9b63c6423f655 (patch)
treeb532f63fc0cacd035d8e8fde4ffe11dd3df158c0 /src/GF/Conversion/GFC.hs
parent041c00abf3bfbbc770d52b23f9e27598f25f1f63 (diff)
GFCC to FCFG conversion
Diffstat (limited to 'src/GF/Conversion/GFC.hs')
-rw-r--r--src/GF/Conversion/GFC.hs24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/GF/Conversion/GFC.hs b/src/GF/Conversion/GFC.hs
index 2fff4be26..dcaa784f3 100644
--- a/src/GF/Conversion/GFC.hs
+++ b/src/GF/Conversion/GFC.hs
@@ -18,6 +18,7 @@ module GF.Conversion.GFC
import GF.Infra.Option
import GF.Canon.GFC (CanonGrammar)
import GF.Infra.Ident (Ident, identC)
+import qualified GF.Infra.Modules as M
import GF.Formalism.GCFG (Rule(..), Abstract(..))
import GF.Formalism.SimpleGFC (decl2cat)
@@ -31,23 +32,22 @@ import qualified GF.Conversion.RemoveSingletons as RemSing
import qualified GF.Conversion.RemoveErasing as RemEra
import qualified GF.Conversion.RemoveEpsilon as RemEps
import qualified GF.Conversion.SimpleToMCFG as S2M
-import qualified GF.Conversion.SimpleToFCFG as S2FM
---import qualified GF.Conversion.MCFGtoFCFG as M2FM
import qualified GF.Conversion.MCFGtoCFG as M2C
import GF.Infra.Print
import GF.System.Tracing
+import qualified Debug.Trace as D
----------------------------------------------------------------------
-- * GFC -> MCFG & CFG, using options to decide which conversion is used
-convertGFC :: Options -> (CanonGrammar, Ident)
- -> (SGrammar, (EGrammar, (MGrammar, FGrammar, CGrammar)))
+convertGFC :: Options -> (CanonGrammar, Ident)
+ -> (SGrammar, (EGrammar, (MGrammar, CGrammar)))
convertGFC opts = \g -> let s = g2s g
e = s2e s
m = e2m e
- in trace2 "Options" (show opts) (s, (e, (m, s2fm s, e2c e)))
+ in D.trace (show ((M.greatestAbstract (fst g),snd g))) $ trace2 "Options" (show opts) (s, (e, (m, e2c e)))
where e2c = M2C.convertGrammar
e2m = case getOptVal opts firstCat of
Just cat -> flip erasing [identC cat]
@@ -57,8 +57,6 @@ convertGFC opts = \g -> let s = g2s g
Just "finite-strict" -> strict
Just "epsilon" -> epsilon . nondet
_ -> nondet
- s2fm= S2FM.convertGrammar
- m2fm= undefined --M2FM.convertGrammar
g2s = case getOptVal opts gfcConversion of
Just "finite" -> finite . simple
Just "finite2" -> finite . finite . simple
@@ -82,20 +80,12 @@ gfc2simple opts = fst . convertGFC opts
gfc2mcfg :: Options -> (CanonGrammar, Ident) -> MGrammar
gfc2mcfg opts g = mcfg
where
- (mcfg, _, _) = snd (snd (convertGFC opts g))
+ (mcfg, _) = snd (snd (convertGFC opts g))
gfc2cfg :: Options -> (CanonGrammar, Ident) -> CGrammar
gfc2cfg opts g = cfg
where
- (_, _, cfg) = snd (snd (convertGFC opts g))
-
-gfc2fcfg :: Options -> (CanonGrammar, Ident) -> FGrammar
-gfc2fcfg opts g = fcfg
- where
- (_, fcfg, _) = snd (snd (convertGFC opts g))
-
-mcfg2fcfg :: MGrammar -> FGrammar
-mcfg2fcfg = undefined --M2FM.convertGrammar
+ (_, cfg) = snd (snd (convertGFC opts g))
----------------------------------------------------------------------