diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-01-24 20:36:37 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-01-24 20:36:37 +0000 |
| commit | 32a0a9ac0f9187a02339f55bc34cb779855bc2e2 (patch) | |
| tree | c018dc8142d132a828b5b358feb8e827bd766bc1 | |
| parent | e8d50c3841380fd46ca511da532fc1aca6c7335a (diff) | |
optimization of selection computation
| -rw-r--r-- | src/GF/Grammar/Compute.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/GF/Grammar/Compute.hs b/src/GF/Grammar/Compute.hs index 4adc38ce6..cc5db2a21 100644 --- a/src/GF/Grammar/Compute.hs +++ b/src/GF/Grammar/Compute.hs @@ -122,6 +122,15 @@ computeTermOpt rec gr = comp where _ -> returnC $ P t' l + 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 + S t v -> do t' <- comp g t v' <- comp g v |
