summaryrefslogtreecommitdiff
path: root/src/GF/Canon/CanonToGFCC.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-09-25 13:03:33 +0000
committeraarne <aarne@cs.chalmers.se>2006-09-25 13:03:33 +0000
commit902ff81773fc6eb63512fbb95fc8e3d5ead0e738 (patch)
tree9b3e77be37806fa7144f9a4a5f7ad3641eafeb59 /src/GF/Canon/CanonToGFCC.hs
parent9ae36df22079e072b302ad966fc98963d97d2654 (diff)
some fixes in gfcc compilation
Diffstat (limited to 'src/GF/Canon/CanonToGFCC.hs')
-rw-r--r--src/GF/Canon/CanonToGFCC.hs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/GF/Canon/CanonToGFCC.hs b/src/GF/Canon/CanonToGFCC.hs
index f7fc3f18f..f49908db9 100644
--- a/src/GF/Canon/CanonToGFCC.hs
+++ b/src/GF/Canon/CanonToGFCC.hs
@@ -182,7 +182,7 @@ paramValues cgr = (labels,untyps,typs) where
[(cat,ls) | (_,(cat,CncCat (RecType ls) _ _)) <- jments]
labels = Map.fromList $ concat
[((cat,[lab]),(typ,i)):
- [((cat,[lab2,lab]),(ty,j)) |
+ [((cat,[lab,lab2]),(ty,j)) |
rs <- getRec typ, (Lbg lab2 ty,j) <- zip rs [0..]]
|
(cat,ls) <- lincats, (Lbg lab typ,i) <- zip ls [0..]]
@@ -197,7 +197,7 @@ paramValues cgr = (labels,untyps,typs) where
term2term :: CanonGrammar -> ParamEnv -> Term -> Term
term2term cgr env@(labels,untyps,typs) tr = case tr of
Par _ _ -> mkValCase tr
- R rs | any (isStr . trmAss) rs ->
+ R rs -> ---- | any (isStr . trmAss) rs ->
R [Ass (mkLab i) (t2t t) | (i,Ass l t) <- zip [0..] rs, not (isLock l t)]
R rs -> valNum tr
P t l -> r2r tr
@@ -219,7 +219,7 @@ term2term cgr env@(labels,untyps,typs) tr = case tr of
Arg (A cat _) -> return (cat,[])
P p lab2 -> do
(cat,labs) <- getLab p
- return (cat,lab2:labs)
+ return (cat,labs++[lab2])
S p _ -> getLab p
_ -> Bad "getLab"
@@ -249,7 +249,8 @@ term2term cgr env@(labels,untyps,typs) tr = case tr of
let tr' = LI $ identC $ show k
let tyvs = case Map.lookup (cat,lab) labels of
Just (ty,_) -> case Map.lookup ty typs of
- Just vs -> (ty,Map.keys vs)
+ Just vs -> (ty,[t |
+ (t,_) <- sortBy (\x y -> compare (snd x) (snd y)) (Map.assocs vs)])
_ -> error $ A.prt ty
_ -> error $ A.prt tr
updateSTM ((tyvs, (tr', tr)):)