diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-01-07 14:39:40 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-01-07 14:39:40 +0000 |
| commit | d133e0353ca614b36357dadb782aea43de895e09 (patch) | |
| tree | a68ecef132a1b18a12899ef9b718ed411816528f /src/GF/Grammar/PatternMatch.hs | |
| parent | 4e42d73ee508715e83c8f1a160b7bc696b78571b (diff) | |
regular expression patterns
Diffstat (limited to 'src/GF/Grammar/PatternMatch.hs')
| -rw-r--r-- | src/GF/Grammar/PatternMatch.hs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/GF/Grammar/PatternMatch.hs b/src/GF/Grammar/PatternMatch.hs index 4e3feb5dc..f850981f0 100644 --- a/src/GF/Grammar/PatternMatch.hs +++ b/src/GF/Grammar/PatternMatch.hs @@ -95,6 +95,10 @@ tryMatch (p,t) = do (PAlt p1 p2,_) -> checks [trym p1 t', trym p2 t'] + (PNeg p',_) -> case tryMatch (p',t) of + Bad _ -> return [] + _ -> prtBad "no match with negative pattern" p + (PSeq p1 p2, ([],K s, [])) -> do let cuts = [splitAt n s | n <- [0 .. length s]] matches <- checks [mapM tryMatch [(p1,K s1),(p2,K s2)] | (s1,s2) <- cuts] |
