diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-01-26 13:57:22 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-01-26 13:57:22 +0000 |
| commit | 443f86ba4d5f156472d704ffc83c5cd92a4bd835 (patch) | |
| tree | b2fe55845f9464b438bf8886db78f9dc40c17c1c /src/GF/Grammar | |
| parent | ad65c86860337dd17e961ed8b269ee2e54481b45 (diff) | |
Norwegian
Diffstat (limited to 'src/GF/Grammar')
| -rw-r--r-- | src/GF/Grammar/Compute.hs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/GF/Grammar/Compute.hs b/src/GF/Grammar/Compute.hs index cc5db2a21..b31718bd5 100644 --- a/src/GF/Grammar/Compute.hs +++ b/src/GF/Grammar/Compute.hs @@ -124,12 +124,16 @@ computeTermOpt rec gr = comp where S t@(T _ cc) v -> do v' <- comp g v - case matchPattern cc v' of - Ok (c,g') -> comp (g' ++ g) c - _ | isCan v' -> prtBad ("missing case" +++ prt v' +++ "in") t - _ -> do - t' <- comp g t - return $ S t' v' -- if v' is not canonical + case v' of + FV vs -> do + ts' <- mapM (comp g . S t) vs + return $ variants ts' + _ -> case matchPattern cc v' of + Ok (c,g') -> comp (g' ++ g) c + _ | isCan v' -> prtBad ("missing case" +++ prt v' +++ "in") t + _ -> do + t' <- comp g t + return $ S t' v' -- if v' is not canonical S t v -> do t' <- comp g t |
