diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-12-10 16:46:04 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-12-10 16:46:04 +0000 |
| commit | 83b47b13b77d2f1d94fdd94b45301c41952f47eb (patch) | |
| tree | 81aadd5f6360f1f69141236027d75d25c3a53575 /src/GF/Canon | |
| parent | 6edb2f075a5be472fbdf01946a2cba2c17059b49 (diff) | |
some adjustments in GFCC generation (old)
Diffstat (limited to 'src/GF/Canon')
| -rw-r--r-- | src/GF/Canon/CanonToGrammar.hs | 13 |
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 |
