| BoolType
| CharType
| VarType
-
:: Expr
- = VarExpr String (Maybe FieldSelector)
- | Op2Expr Expr Op2 Expr //TODO, iets met associativiteit wat niet weet hoe
+ = VarExpr VarDef
+ | Op2Expr Expr Op2 Expr
| Op1Expr Op1 Expr
| IntExpr Int
| CharExpr Char
| BoolExpr Bool
+ | FunExpr FunCall
| EmptyListExpr
| TupleExpr Expr Expr
-
+:: VarDef = VarDef String [FieldSelector]
:: FieldSelector = FieldHd | FieldTl | FieldFst | FieldSnd
:: Op1 = UnNegation | UnMinus
:: Op2 = BiPlus | BiMinus | BiTimes | BiDivide | BiMod | BiEquals | BiLesser |
BiGreater | BiLesserEq | BiGreaterEq | BiUnEqual | BiAnd | BiOr | BiCons
-
-//TODO
-
-:: FunDecl = Stub
-
-parse :: LexerOutput -> ParserOutput
+:: FunDecl = FunDecl String [String] FunType [VarDecl] [Stmt]
+:: FunType = FunType [Type] (Maybe Type)
+:: FunCall = FunCall String [Expr]
+:: Stmt
+ = IfStmt Expr [Stmt] [Stmt]
+ | WhileStmt Expr [Stmt]
+ | AssStmt VarDef Expr
+ | FunStmt FunCall
+ | ReturnStmt (Maybe Expr)
+
+instance toString AST
+
+parser :: LexerOutput -> ParserOutput