X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=AST.dcl;h=e9afa4fb042a94cfccb4cc40d172b4d807eb6bd0;hb=74b900cf6db033a51e177f7f85d835dae44217e5;hp=0bfe1baa49ad6a527d93aa4836351ed09927e871;hpb=51921a9587d60b6411610845f56d62ebd73f80cb;p=cc1516.git diff --git a/AST.dcl b/AST.dcl index 0bfe1ba..e9afa4f 100644 --- a/AST.dcl +++ b/AST.dcl @@ -15,6 +15,7 @@ from StdOverloaded import class toString, class ==, class zero, class < | BoolType | CharType | VoidType + | FuncType Type | (->>) infixl 7 Type Type :: Expr = VarExpr Pos VarDef @@ -26,6 +27,7 @@ from StdOverloaded import class toString, class ==, class zero, class < | FunExpr Pos String [Expr] [FieldSelector] | EmptyListExpr Pos | TupleExpr Pos (Expr, Expr) + | LambdaExpr Pos [String] Expr :: VarDef = VarDef String [FieldSelector] :: FieldSelector = FieldHd | FieldTl | FieldFst | FieldSnd :: Op1 = UnNegation | UnMinus @@ -36,7 +38,7 @@ from StdOverloaded import class toString, class ==, class zero, class < = IfStmt Expr [Stmt] [Stmt] | WhileStmt Expr [Stmt] | AssStmt VarDef Expr - | FunStmt String [Expr] + | FunStmt String [Expr] [FieldSelector] | ReturnStmt (Maybe Expr) instance toString Pos @@ -45,6 +47,7 @@ instance toString AST instance toString FieldSelector instance toString Op2 instance toString Expr +instance toString VarDecl instance zero Pos instance == Op1