summaryrefslogtreecommitdiff
path: root/src/GF/GFCC/Linearize.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-01-31 16:37:32 +0000
committeraarne <aarne@cs.chalmers.se>2008-01-31 16:37:32 +0000
commit8f8aac4d24b8ea7d0867df8b3f890422a1f833d8 (patch)
tree05fcda4d1d2bd628b6ebae138f0a473c7857929f /src/GF/GFCC/Linearize.hs
parentc6137229ebb66b0a299b3ff09bd6fabf01444884 (diff)
gfcc generation with HOAS: var fields appended to records
Diffstat (limited to 'src/GF/GFCC/Linearize.hs')
-rw-r--r--src/GF/GFCC/Linearize.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/GF/GFCC/Linearize.hs b/src/GF/GFCC/Linearize.hs
index 7d5e6b010..b585385ea 100644
--- a/src/GF/GFCC/Linearize.hs
+++ b/src/GF/GFCC/Linearize.hs
@@ -27,19 +27,24 @@ realize trm = case trm of
_ -> "ERROR " ++ show trm ---- debug
linExp :: GFCC -> CId -> Exp -> Term
-linExp mcfg lang tree@(DTr _ at trees) = ---- bindings TODO
+linExp mcfg lang tree@(DTr xs at trees) = ---- bindings TODO
case at of
- AC fun -> comp (lmap lin trees) $ look fun
+ AC fun -> addB $ comp (lmap lin trees) $ look fun
AS s -> R [kks (show s)] -- quoted
AI i -> R [kks (show i)]
--- [C lst, kks (show i), C size] where
--- lst = mod (fromInteger i) 10 ; size = if i < 10 then 0 else 1
AF d -> R [kks (show d)]
+ AV x -> addB $ R [kks (prCId x)] ---- lindef of cat
AM _ -> TM
where
lin = linExp mcfg lang
comp = compute mcfg lang
look = lookLin mcfg lang
+ addB t
+ | Data.List.null xs = t
+ | otherwise = case t of
+ R ts -> R $ ts ++ (Data.List.map (kks . prCId) xs)
compute :: GFCC -> CId -> [Term] -> Term -> Term
compute mcfg lang args = comp where