diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-11-12 12:36:40 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-11-12 12:36:40 +0000 |
| commit | 6158445114731a71295723718f7a673786b5e37a (patch) | |
| tree | e63fba5a67669360d5605d5b6e01d1bf80d86a5f /src/GF/Grammar/Compute.hs | |
| parent | b801149fbf5c9eb3f73477d3496cdfd92cb178a1 (diff) | |
fixed bug with prawitz transform of course-of-values tables in Compute
Diffstat (limited to 'src/GF/Grammar/Compute.hs')
| -rw-r--r-- | src/GF/Grammar/Compute.hs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/GF/Grammar/Compute.hs b/src/GF/Grammar/Compute.hs index cccbb2ca4..e3185849c 100644 --- a/src/GF/Grammar/Compute.hs +++ b/src/GF/Grammar/Compute.hs @@ -90,6 +90,7 @@ computeTermOpt rec gr = comp where (Alias _ _ d, _) -> comp g (App d a') (S (T i cs) e,_) -> prawitz g i (flip App a') cs e + (S (V i cs) e,_) -> prawitzV g i (flip App a') cs e _ -> do (t',b) <- appPredefined (App f' a') @@ -122,6 +123,7 @@ computeTermOpt rec gr = comp where Alias _ _ r -> comp g (P r l) S (T i cs) e -> prawitz g i (flip P l) cs e + S (V i cs) e -> prawitzV g i (flip P l) cs e _ -> returnC $ P t' l @@ -197,6 +199,7 @@ computeTermOpt rec gr = comp where Alias _ _ d -> comp g (S d v') S (T i cs) e -> prawitz g i (flip S v') cs e + S (V i cs) e -> prawitzV g i (flip S v') cs e _ -> returnC $ S t' v' -- normalize away empty tokens @@ -219,6 +222,8 @@ computeTermOpt rec gr = comp where (S (T i cs) e, s) -> prawitz g i (flip Glue s) cs e (s, S (T i cs) e) -> prawitz g i (Glue s) cs e + (S (V i cs) e, s) -> prawitzV g i (flip Glue s) cs e + (s, S (V i cs) e) -> prawitzV g i (Glue s) cs e (_,Empty) -> return x (Empty,_) -> return y (K a, K b) -> return $ K (a ++ b) @@ -373,6 +378,9 @@ computeTermOpt rec gr = comp where prawitz g i f cs e = do cs' <- mapM (compBranch g) [(p, f v) | (p,v) <- cs] return $ S (T i cs') e + prawitzV g i f cs e = do + cs' <- mapM (comp g) [(f v) | v <- cs] + return $ S (V i cs') e -- | argument variables cannot be glued checkNoArgVars :: Term -> Err Term |
