HaRe-0.6: tools/hs2stratego/AST/StrategoPattern.hs
module StrategoPattern where
import Parentheses
data Literal
= HInt (P Integer)
| HChar (P String) -- character literals in Stratego?
| HString (P String) -- desugar into list of characters?
| HFrac (P Rational)
deriving (Show{-,Read-})
hInt = HInt. P
hChar = HChar . P
hString = HString . P
hFrac = HFrac . P
data Pattern
= NoPattern
| NewPattern (P String)
| WildCard
| VarPat (P String)
| ConstrPat (String, [Pattern])
| AsPattern (String, Pattern)
| TuplePat (P [Pattern])
| LitPat (P Literal) -- new
{- old
| LitPat (P Integer)
| CharLitPat (P Char)
| StringLitPat (P String)
-}
| TwiddlePat (P Pattern)
| FunPat (String, [Pattern])
deriving (Show{-,Read-})
varPat = VarPat . P
tuplePat = TuplePat . P
litPat = LitPat . P
--charLitPat = CharLitPat . P
--stringLitPat = StringLitPat . P
twiddlePat = TwiddlePat . P
pcons x xs = ConstrPat (":", [x,xs])
pnil = ConstrPat ("[]", [])
plist = foldr pcons pnil