X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=AST.dcl;h=bf6f54fed0e2359521c0acb80bb833fc6655860c;hb=e34b5f088ff9a86da61afbbe91c2c88f895673c7;hp=cb2e5b790e5efbbde642495ce13800db8203cf56;hpb=cf5417094083fe82194940a157b6bdc74e40d844;p=cc1516.git diff --git a/AST.dcl b/AST.dcl index cb2e5b7..bf6f54f 100644 --- a/AST.dcl +++ b/AST.dcl @@ -4,8 +4,8 @@ from Data.Maybe import :: Maybe from StdOverloaded import class toString, class == :: Pos = {line :: Int, col :: Int} -:: AST = AST [VarDecl] [FunDecl] -:: VarDecl = VarDecl Pos Type String Expr +:: AST = AST [FunDecl] +:: VarDecl = VarDecl Pos (Maybe Type) String Expr :: Type = TupleType (Type, Type) | ListType Type @@ -13,7 +13,6 @@ from StdOverloaded import class toString, class == | IntType | BoolType | CharType - | VarType | VoidType | (->>) infixl 7 Type Type :: Expr @@ -23,7 +22,7 @@ from StdOverloaded import class toString, class == | IntExpr Pos Int | CharExpr Pos Char | BoolExpr Pos Bool - | FunExpr Pos FunCall + | FunExpr Pos String [Expr] [FieldSelector] | EmptyListExpr Pos | TupleExpr Pos (Expr, Expr) :: VarDef = VarDef String [FieldSelector] @@ -32,12 +31,11 @@ from StdOverloaded import class toString, class == :: Op2 = BiPlus | BiMinus | BiTimes | BiDivide | BiMod | BiEquals | BiLesser | BiGreater | BiLesserEq | BiGreaterEq | BiUnEqual | BiAnd | BiOr | BiCons :: FunDecl = FunDecl Pos String [String] (Maybe Type) [VarDecl] [Stmt] -:: FunCall = FunCall String [Expr] :: Stmt = IfStmt Expr [Stmt] [Stmt] | WhileStmt Expr [Stmt] | AssStmt VarDef Expr - | FunStmt FunCall + | FunStmt String [Expr] | ReturnStmt (Maybe Expr) instance toString AST @@ -45,5 +43,4 @@ instance toString Type instance toString Pos instance toString Op2 instance == Op2 -instance == Type instance toString FieldSelector