lamb/ast.hs

30 lines
661 B
Haskell
Raw Normal View History

2013-10-21 00:48:02 +00:00
-- AST definition for the Lamb programming language
-- Copyright (c) 2013 darkf
-- Licensed under the terms of the zlib license, see LICENSE for details
module AST where
data AST = Add AST AST
2013-10-21 00:24:51 +00:00
| Sub AST AST
| Mul AST AST
2013-10-21 00:24:51 +00:00
| Div AST AST
| Block [AST]
| FunDef String ([Pattern], AST)
| Defun String AST
| Def String AST
| Var String
| Lambda [(Pattern, [AST])]
| Call String [AST]
| UnitConst
2013-10-21 05:27:27 +00:00
| Cons AST AST
| ListConst [AST]
| StrConst String
| IntConst Integer
deriving (Show, Eq)
data Pattern = VarP String
| IntP Integer
| UnitP
| ConsP Pattern Pattern
| ListP [Pattern]
deriving (Show, Eq)