diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-02-02 22:29:41 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-02-02 22:30:16 +0100 |
commit | 185623be46dfd9a60e5a021259a6c7778cfb07cd (patch) | |
tree | 8bbbe2edeec7fb7018a52f5cf52ed0a24ab48e59 /parser.hs | |
parent | dd1a2323e743df5ca3109bae6e213cd7b02dddee (diff) |
Parse and typecheck casts
Diffstat (limited to 'parser.hs')
-rw-r--r-- | parser.hs | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -99,7 +99,16 @@ exprTable = prefix name op = E.Prefix (exUnOp_ op <$ symbol name) pExpression :: Parser Expression -pExpression = E.buildExpressionParser exprTable pExLit +pExpression = E.buildExpressionParser exprTable (pExCast <|> pExLit) + +pExCast :: Parser Expression +pExCast = do + symbol "cast" + symbol "(" + t <- pType + symbol ")" + e <- pParenExpr + return $ ExCast t e pExLit :: Parser Expression pExLit = (exLit_ <$> pLiteral) <|> pParenExpr |