summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-12-14 11:16:01 +0000
committeraarne <aarne@cs.chalmers.se>2007-12-14 11:16:01 +0000
commit49b3ffb7a0ba176a6689d7792ad42cdd2f17adee (patch)
treed9220ff6ebde281dff28eea689a92ab8801faec2 /src/GF
parentf85ba4bfa03ec006248a47ff7b1b232e8c1fae08 (diff)
completed ConvertGFCC for all terms
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/GFCC/Raw/ConvertGFCC.hs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/GF/GFCC/Raw/ConvertGFCC.hs b/src/GF/GFCC/Raw/ConvertGFCC.hs
index 79dae1fd6..fbed72e69 100644
--- a/src/GF/GFCC/Raw/ConvertGFCC.hs
+++ b/src/GF/GFCC/Raw/ConvertGFCC.hs
@@ -72,8 +72,13 @@ toExp :: RExp -> Exp
toExp e = case e of
App fun [App (CId "B") xs, App (CId "X") exps] ->
DTr [x | AId x <- xs] (AC fun) (lmap toExp exps)
- App (CId "Eq") _ -> EEq [] ----
+ App (CId "Eq") eqs ->
+ EEq [Equ (lmap toExp ps) (toExp v) | App (CId "Case") (v:ps) <- eqs]
AMet -> DTr [] (AM 0) []
+ AInt i -> DTr [] (AI i) []
+ AFlt i -> DTr [] (AF i) []
+ AStr i -> DTr [] (AS i) []
+ AId i -> DTr [] (AV i) []
_ -> error $ "exp " ++ show e
toTerm :: RExp -> Term
@@ -136,8 +141,13 @@ fromExp :: Exp -> RExp
fromExp e = case e of
DTr xs (AC fun) exps ->
App fun [App (CId "B") (lmap AId xs), App (CId "X") (lmap fromExp exps)]
- DTr xs (AM _) exps -> AMet ----
- EEq _ -> App (CId "Eq") [] ----
+ DTr [] (AS s) [] -> AStr s
+ DTr [] (AF d) [] -> AFlt d
+ DTr [] (AV x) [] -> AId x
+ DTr [] (AI i) [] -> AInt (toInteger i)
+ DTr [] (AM _) [] -> AMet ----
+ EEq eqs ->
+ App (CId "Eq") [App (CId "Case") (lmap fromExp (v:ps)) | Equ ps v <- eqs]
_ -> error $ "exp " ++ show e
fromTerm :: Term -> RExp