X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Abssyntax.hs;h=881c1723bcc4fa5021eb17ef6d9503edfc6ffd3c;hb=1003c4028c1f1ea1dc280fa2843ee2b3202f3148;hp=ec85c8d619730b34e85d5e00a39f4a562e995d06;hpb=565fbd61dca527c23888e08783d0d91cee458524;p=proglang.git diff --git a/Abssyntax.hs b/Abssyntax.hs index ec85c8d..881c172 100644 --- a/Abssyntax.hs +++ b/Abssyntax.hs @@ -9,18 +9,20 @@ data Type = | 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 = @@ -32,10 +34,24 @@ 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