From d133e0353ca614b36357dadb782aea43de895e09 Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 7 Jan 2006 14:39:40 +0000 Subject: regular expression patterns --- src/GF/Compile/CheckGrammar.hs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/GF/Compile/CheckGrammar.hs') diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 33db87e37..c55873409 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -515,11 +515,17 @@ inferLType gr trm = case trm of PSeq p q -> isConstPatt p && isConstPatt q PAlt p q -> isConstPatt p && isConstPatt q PRep p -> isConstPatt p + PNeg p -> isConstPatt p PAs _ p -> isConstPatt p _ -> False inferPatt p = case p of PP q c ps | q /= cPredef -> checkErr $ lookupResType gr q c >>= valTypeCnc + PAs _ p -> inferPatt p + PNeg p -> inferPatt p + PAlt p q -> checks [inferPatt p, inferPatt q] + PSeq _ _ -> return $ typeTok + PRep _ -> return $ typeTok _ -> infer (patt2term p) >>= return . snd checkLType :: SourceGrammar -> Term -> Type -> Check (Term, Type) @@ -700,6 +706,7 @@ pattContext env typ p = case p of g2 <- pattContext env typ q return $ g1 ++ g2 PRep p -> pattContext env typeStr p + PNeg p -> pattContext env typeStr p _ -> return [] ---- check types! where -- cgit v1.2.3