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/CF/CFtoGrammar.hs | |
| parent | fe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff) | |
removed src for 2.9
Diffstat (limited to 'src/GF/CF/CFtoGrammar.hs')
| -rw-r--r-- | src/GF/CF/CFtoGrammar.hs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/GF/CF/CFtoGrammar.hs b/src/GF/CF/CFtoGrammar.hs deleted file mode 100644 index 5e73aec31..000000000 --- a/src/GF/CF/CFtoGrammar.hs +++ /dev/null @@ -1,62 +0,0 @@ ----------------------------------------------------------------------- --- | --- Module : CFtoGrammar --- Maintainer : AR --- Stability : (stable) --- Portability : (portable) --- --- > CVS $Date: 2005/04/21 16:21:09 $ --- > CVS $Author: bringert $ --- > CVS $Revision: 1.7 $ --- --- 26\/1\/2000 -- 18\/4 -- 24\/3\/2004 ------------------------------------------------------------------------------ - -module GF.CF.CFtoGrammar (cf2grammar) where - -import GF.Infra.Ident -import GF.Grammar.Grammar -import qualified GF.Source.AbsGF as A -import qualified GF.Source.GrammarToSource as S -import GF.Grammar.Macros - -import GF.CF.CF -import GF.CF.CFIdent -import GF.CF.PPrCF - -import GF.Data.Operations - -import Data.List (nub) -import Data.Char (isSpace) - -cf2grammar :: CF -> [A.TopDef] -cf2grammar cf = concatMap S.trAnyDef (abs ++ conc) where - rules = rulesOfCF cf - abs = cats ++ funs - conc = lintypes ++ lins - cats = [(cat, AbsCat (yes []) (yes [])) | - cat <- nub (concat (map cf2cat rules))] ----notPredef cat - lintypes = [(cat, CncCat (yes defLinType) nope nope) | (cat,AbsCat _ _) <- cats] - (funs,lins) = unzip (map cf2rule rules) - -cf2cat :: CFRule -> [Ident] -cf2cat (_,(cat, items)) = map cfCat2Ident $ cat : [c | CFNonterm c <- items] - -cf2rule :: CFRule -> ((Ident,Info),(Ident,Info)) -cf2rule (fun, (cat, items)) = (def,ldef) where - f = cfFun2Ident fun - def = (f, AbsFun (yes (mkProd (args', Cn (cfCat2Ident cat), []))) nope) - args0 = zip (map (mkIdent "x") [0..]) items - args = [(v, Cn (cfCat2Ident c)) | (v, CFNonterm c) <- args0] - args' = [(zIdent "_", Cn (cfCat2Ident c)) | (_, CFNonterm c) <- args0] - ldef = (f, CncFun - Nothing - (yes (mkAbs (map fst args) - (mkRecord (const theLinLabel) [foldconcat (map mkIt args0)]))) - nope) - mkIt (v, CFNonterm _) = P (Vr v) theLinLabel - mkIt (_, CFTerm (RegAlts [a])) = K a - mkIt _ = K "" --- regexp not recognized in input CF ; use EBNF for this - foldconcat [] = K "" - foldconcat tt = foldr1 C tt - |
