From e3ee310fe3545d368ffbf48a802b06fb860ea9ba Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Fri, 24 Aug 2007 16:57:02 +0000 Subject: [PATCH] Rain: added parsing support for channel-end casts --- RainParse.hs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/RainParse.hs b/RainParse.hs index 439e5e6..18b1920 100644 --- a/RainParse.hs +++ b/RainParse.hs @@ -210,7 +210,11 @@ expression "expression" where castExpression :: RainParser A.Expression - castExpression = do {ty <- dataType ; m <- sColon ; e <- expression ; return $ A.Conversion m A.DefaultConversion ty e} + castExpression = (try $ do {ty <- dataType ; m <- sColon ; e <- expression ; return $ A.Conversion m A.DefaultConversion ty e}) + <|> do {m <- sIn ; e <- expression ; return $ A.Conversion m A.DefaultConversion + (A.Chan A.DirInput A.ChanAttributes {A.caWritingShared = False, A.caReadingShared = False} A.Any) e} + <|> do {m <- sOut ; e <- expression ; return $ A.Conversion m A.DefaultConversion + (A.Chan A.DirOutput A.ChanAttributes {A.caWritingShared = False, A.caReadingShared = False} A.Any) e} compExpression :: RainParser A.Expression compExpression = do {lhs <- subExpression ; (m,op) <- dyadicCompOp ; rhs <- subExpression ; return $ A.Dyadic m op lhs rhs }