diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
| commit | b96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch) | |
| tree | 0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/GF/Conversion/GFC.hs | |
| parent | fe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff) | |
removed src for 2.9
Diffstat (limited to 'src/GF/Conversion/GFC.hs')
| -rw-r--r-- | src/GF/Conversion/GFC.hs | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/GF/Conversion/GFC.hs b/src/GF/Conversion/GFC.hs deleted file mode 100644 index 354bdea65..000000000 --- a/src/GF/Conversion/GFC.hs +++ /dev/null @@ -1,157 +0,0 @@ ----------------------------------------------------------------------- --- | --- Maintainer : PL --- Stability : (stable) --- Portability : (portable) --- --- > CVS $Date: 2005/09/01 09:53:18 $ --- > CVS $Author: peb $ --- > CVS $Revision: 1.14 $ --- --- All conversions from GFC ------------------------------------------------------------------------------ - -module GF.Conversion.GFC - (module GF.Conversion.GFC, - SGrammar, EGrammar, MGrammar, CGrammar) where - -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) -import GF.Formalism.CFG (CFRule(..)) -import GF.Formalism.Utilities (symbol, name2fun) -import GF.Conversion.Types - -import qualified GF.Conversion.GFCtoSimple as G2S -import qualified GF.Conversion.SimpleToFinite as S2Fin -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.MCFGtoCFG as M2C - -import GF.Infra.Print - -import GF.System.Tracing - ----------------------------------------------------------------------- --- * GFC -> MCFG & CFG, using options to decide which conversion is used - -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, e2c e))) - where e2c = M2C.convertGrammar - e2m = case getOptVal opts firstCat of - Just cat -> flip erasing [identC cat] - Nothing -> flip erasing [] - s2e = case getOptVal opts gfcConversion of - Just "strict" -> strict - Just "finite-strict" -> strict - Just "epsilon" -> epsilon . nondet - _ -> nondet - g2s = case getOptVal opts gfcConversion of - 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 - -gfc2mcfg :: Options -> (CanonGrammar, Ident) -> MGrammar -gfc2mcfg opts g = mcfg - where - (mcfg, _) = snd (snd (convertGFC opts g)) - -gfc2cfg :: Options -> (CanonGrammar, Ident) -> CGrammar -gfc2cfg opts g = cfg - where - (_, cfg) = snd (snd (convertGFC opts g)) - - ----------------------------------------------------------------------- --- * single step conversions - -{- -gfc2simple :: (CanonGrammar, Ident) -> SGrammar -gfc2simple = G2S.convertGrammar - -simple2finite :: SGrammar -> SGrammar -simple2finite = S2Fin.convertGrammar - -removeSingletons :: SGrammar -> SGrammar -removeSingletons = RemSing.convertGrammar - -simple2mcfg_nondet :: SGrammar -> EGrammar -simple2mcfg_nondet = - -simple2mcfg_strict :: SGrammar -> EGrammar -simple2mcfg_strict = S2M.convertGrammarStrict - -mcfg2cfg :: EGrammar -> CGrammar -mcfg2cfg = M2C.convertGrammar - -removeErasing :: EGrammar -> [SCat] -> MGrammar -removeErasing = RemEra.convertGrammar - -removeEpsilon :: EGrammar -> EGrammar -removeEpsilon = RemEps.convertGrammar --} - ----------------------------------------------------------------------- --- * converting to some obscure formats - -gfc2abstract :: (CanonGrammar, Ident) -> [Abstract SCat Fun] -gfc2abstract gr = [ Abs (decl2cat decl) (map decl2cat decls) (name2fun name) | - Rule (Abs decl decls name) _ <- G2S.convertGrammar gr ] - -abstract2skvatt :: [Abstract SCat Fun] -> String -abstract2skvatt gr = skvatt_hdr ++ concatMap abs2pl gr - where abs2pl (Abs cat [] fun) = prtQuoted cat ++ " ---> " ++ - "\"" ++ prt fun ++ "\".\n" - abs2pl (Abs cat cats fun) = - prtQuoted cat ++ " ---> " ++ - "\"(" ++ prt fun ++ "\"" ++ - prtBefore ", \" \", " (map prtQuoted cats) ++ ", \")\".\n" - -cfg2skvatt :: CGrammar -> String -cfg2skvatt gr = skvatt_hdr ++ concatMap cfg2pl gr - where cfg2pl (CFRule cat syms _name) = - prtQuoted cat ++ " ---> " ++ - if null syms then "\"\".\n" else - prtSep ", " (map (symbol prtQuoted prTok) syms) ++ ".\n" - prTok tok = "\"" ++ tok ++ " \"" - -skvatt_hdr = ":- use_module(library(skvatt)).\n" ++ - ":- use_module(library(utils), [repeat/1]).\n" ++ - "corpus(File, StartCat, Depth, Size) :- \n" ++ - " set_flag(gendepth, Depth),\n" ++ - " tell(File), repeat(Size),\n" ++ - " generate_words(StartCat, String), format('~s~n~n', [String]),\n" ++ - " write(user_error, '.'),\n" ++ - " fail ; told.\n\n" - -prtQuoted :: Print a => a -> String -prtQuoted a = "'" ++ prt a ++ "'" - - - - |
