diff options
Diffstat (limited to 'src/GF/Conversion/SimpleToFCFG.hs')
| -rw-r--r-- | src/GF/Conversion/SimpleToFCFG.hs | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/GF/Conversion/SimpleToFCFG.hs b/src/GF/Conversion/SimpleToFCFG.hs index 081a2485d..1c5901fcf 100644 --- a/src/GF/Conversion/SimpleToFCFG.hs +++ b/src/GF/Conversion/SimpleToFCFG.hs @@ -13,7 +13,7 @@ module GF.Conversion.SimpleToFCFG - (convertGrammar) where + (convertConcrete) where import GF.Infra.PrintClass @@ -39,19 +39,14 @@ import Data.Maybe ---------------------------------------------------------------------- -- main conversion function -convertGrammar :: GFCC -> [(CId,FGrammar)] -convertGrammar gfcc = - [(cncname,convert abs_defs conc cats) - | cncname <- cncnames gfcc, - cnc <- Map.lookup cncname (concretes gfcc), - let conc = Map.union (opers cnc) (lins cnc) -- "union big+small most efficient" +convertConcrete :: Abstr -> Concr -> FGrammar +convertConcrete abs cnc = convert abs_defs conc cats + where abs_defs = Map.assocs (funs abs) + conc = Map.union (opers cnc) (lins cnc) -- "union big+small most efficient" cats = lincats cnc - ] - where - abs_defs = Map.assocs (funs (abstract gfcc)) - convert :: [(CId,(Type,Exp))] -> TermMap -> TermMap -> FGrammar - convert abs_defs cnc_defs cat_defs = getFGrammar (loop frulesEnv) +convert :: [(CId,(Type,Exp))] -> TermMap -> TermMap -> FGrammar +convert abs_defs cnc_defs cat_defs = getFGrammar (loop frulesEnv) where srules = [ (XRule id args res (map findLinType args) (findLinType res) term) | |
