summaryrefslogtreecommitdiff
path: root/src/GF/Canon
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-12-10 16:46:04 +0000
committeraarne <aarne@cs.chalmers.se>2007-12-10 16:46:04 +0000
commit83b47b13b77d2f1d94fdd94b45301c41952f47eb (patch)
tree81aadd5f6360f1f69141236027d75d25c3a53575 /src/GF/Canon
parent6edb2f075a5be472fbdf01946a2cba2c17059b49 (diff)
some adjustments in GFCC generation (old)
Diffstat (limited to 'src/GF/Canon')
-rw-r--r--src/GF/Canon/CanonToGrammar.hs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/GF/Canon/CanonToGrammar.hs b/src/GF/Canon/CanonToGrammar.hs
index da40425f0..078c3cc03 100644
--- a/src/GF/Canon/CanonToGrammar.hs
+++ b/src/GF/Canon/CanonToGrammar.hs
@@ -73,6 +73,11 @@ redInfo (c,info) = errIn ("decompiling abstract" +++ show c) $ do
par' <- mapM redParam par
return $ G.ResParam (Yes (par',Nothing)) ---- list of values
+ ResOper pty ptr -> do
+ ty' <- redCType pty
+ trm' <- redCTerm ptr
+ return $ G.ResOper (Yes ty') (Yes trm')
+
CncCat pty ptr ppr -> do
ty' <- redCType pty
trm' <- redCTerm ptr
@@ -145,13 +150,13 @@ redCTerm x = case x of
P term label -> liftM2 G.P (redCTerm term) (return $ redLabel label)
T ctype cases -> do
ctype' <- redCType ctype
- let (ps,ts) = unzip [(ps,t) | Cas ps t <- cases]
- ps' <- mapM (mapM redPatt) ps
+ let (ps,ts) = unzip [(p,t) | Cas [p] t <- cases]
+ ps' <- mapM redPatt ps
ts' <- mapM redCTerm ts
let tinfo = case ps' of
- [[G.PV _]] -> G.TTyped ctype'
+ [G.PV _] -> G.TTyped ctype'
_ -> G.TComp ctype'
- return $ G.TSh tinfo $ zip ps' ts'
+ return $ G.T tinfo $ zip ps' ts'
V ctype ts -> do
ctype' <- redCType ctype
ts' <- mapM redCTerm ts