| TBool
deriving (Eq,Ord,Show)
-data Stms =
- Program [Stm]
+data Program =
+ Program [FuncStm]
deriving (Eq,Ord,Show)
data Stm =
SExp Exp
| SBlock [Stm]
+ | SDecl Type Ident Exp
+ | SDeclD Type Ident
| SWhile Exp Stm
| SIf Exp Stm Stm
| SPrint Exp
+ | SReturn Exp
| SNoop
- | SDecl Type Ident Exp
deriving (Eq,Ord,Show)
data Exp =
| ENot Exp
| EReadI
| EReadB
+ | EFunc Ident [Exp]
| BiOpExp Exp Op Exp
| EPost Ident Op
deriving (Eq,Ord,Show)
+data Decl =
+ Decl Type Ident
+ deriving (Eq,Ord,Show)
+
+data Func =
+ Func Type Ident [Decl] [Stm]
+ deriving (Eq,Ord,Show)
+
+data FuncStm =
+ S Stm
+ | F Func
+ deriving (Eq,Ord,Show)
+
data Op =
Lt
| ELt