summaryrefslogtreecommitdiff
path: root/src/GF/Conversion/GFC.hs
diff options
context:
space:
mode:
authorpeb <peb@cs.chalmers.se>2006-01-13 08:42:25 +0000
committerpeb <peb@cs.chalmers.se>2006-01-13 08:42:25 +0000
commitacd24331af16964c6f3dad549ce43e44130b1284 (patch)
tree857123cbe46d725e402d63585eb486dd184a1309 /src/GF/Conversion/GFC.hs
parent7752543f042b555bc87d57c3c3dcbfb15f2132c3 (diff)
peb
Diffstat (limited to 'src/GF/Conversion/GFC.hs')
-rw-r--r--src/GF/Conversion/GFC.hs32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/GF/Conversion/GFC.hs b/src/GF/Conversion/GFC.hs
index 0975d552a..e4a5ef298 100644
--- a/src/GF/Conversion/GFC.hs
+++ b/src/GF/Conversion/GFC.hs
@@ -46,19 +46,29 @@ convertGFC opts = \g -> let s = g2s g
in trace2 "Options" (show opts) (s, (e, (e2m e, e2c e)))
where e2c = M2C.convertGrammar
e2m = case getOptVal opts firstCat of
- Just cat -> flip RemEra.convertGrammar [identC cat]
- Nothing -> flip RemEra.convertGrammar []
+ Just cat -> flip erasing [identC cat]
+ Nothing -> flip erasing []
s2e = case getOptVal opts gfcConversion of
- Just "strict" -> S2M.convertGrammarStrict
- Just "finite-strict" -> S2M.convertGrammarStrict
- Just "epsilon" -> RemEps.convertGrammar . S2M.convertGrammarNondet
- _ -> S2M.convertGrammarNondet
+ Just "strict" -> strict
+ Just "finite-strict" -> strict
+ Just "epsilon" -> epsilon . nondet
+ _ -> nondet
g2s = case getOptVal opts gfcConversion of
- Just "finite" -> S2Fin.convertGrammar . G2S.convertGrammar
- Just "singletons" -> RemSing.convertGrammar . G2S.convertGrammar
- Just "finite-singletons" -> RemSing.convertGrammar . S2Fin.convertGrammar . G2S.convertGrammar
- Just "finite-strict" -> S2Fin.convertGrammar . G2S.convertGrammar
- _ -> G2S.convertGrammar
+ Just "finite" -> finite . simple
+ Just "finite2" -> finite . finite . simple
+ Just "finite3" -> finite . finite . finite . simple
+ Just "singletons" -> single . simple
+ Just "finite-singletons" -> single . finite . simple
+ Just "finite-strict" -> finite . simple
+ _ -> simple
+
+ simple = G2S.convertGrammar
+ strict = S2M.convertGrammarStrict
+ nondet = S2M.convertGrammarNondet
+ epsilon = RemEps.convertGrammar
+ finite = S2Fin.convertGrammar
+ single = RemSing.convertGrammar
+ erasing = RemEra.convertGrammar
gfc2simple :: Options -> (CanonGrammar, Ident) -> SGrammar
gfc2simple opts = fst . convertGFC opts