hoi
[cc1516.git] / AST.dcl
diff --git a/AST.dcl b/AST.dcl
index cb2e5b7..bf6f54f 100644 (file)
--- 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