X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=AST.dcl;h=4a5a6cb49b9a6531773237ec2b72e07d33209188;hb=14e9a339d121ce18c420e4cb99f6bad86d1a5b45;hp=e9c694486eb02e9eddcfaf2c0c08445c95b1996b;hpb=43f59bf00c11cfbeee906b16063abfca6f4c09cc;p=cc1516.git diff --git a/AST.dcl b/AST.dcl index e9c6944..4a5a6cb 100644 --- a/AST.dcl +++ b/AST.dcl @@ -1,19 +1,21 @@ definition module AST from Data.Maybe import :: Maybe -from StdOverloaded import class toString, class ==, class < +from StdOverloaded import class toString, class ==, class zero, class < :: Pos = {line :: Int, col :: Int} :: AST = AST [FunDecl] :: VarDecl = VarDecl Pos (Maybe Type) String Expr +:: TVar :== String :: Type = TupleType (Type, Type) | ListType Type - | IdType String + | IdType TVar | IntType | BoolType | CharType | VoidType + | FuncType Type | (->>) infixl 7 Type Type :: Expr = VarExpr Pos VarDef @@ -35,13 +37,20 @@ from StdOverloaded import class toString, class ==, class < = IfStmt Expr [Stmt] [Stmt] | WhileStmt Expr [Stmt] | AssStmt VarDef Expr - | FunStmt String [Expr] + | FunStmt String [Expr] [FieldSelector] | ReturnStmt (Maybe Expr) instance toString Pos instance toString Type instance toString AST +instance toString FieldSelector +instance toString Op2 +instance toString Expr +instance toString VarDecl + +instance zero Pos instance == Op1 instance == Op2 instance < Op1 instance < Op2 +instance == Type