Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module CMM.Abs where
- -- Haskell module generated by the BNF converter
- newtype Id = Id ((Int,Int),String) deriving (Eq, Ord, Show, Read)
- data Program = Program [Def]
- deriving (Eq, Ord, Show, Read)
- data Def = DefineFunction Type Id [Arg] [Stm]
- deriving (Eq, Ord, Show, Read)
- data Arg = ADecl Type Id
- deriving (Eq, Ord, Show, Read)
- data Stm
- = SExp Exp
- | SDecl Type Id
- | SDecls Type Id [Id]
- | SInit Type Id Exp
- | SReturn Exp
- | SBlock [Stm]
- | SWhile Exp Stm
- | SIfElse Exp Stm Stm
- deriving (Eq, Ord, Show, Read)
- data Exp
- = EId Id
- | EInt Integer
- | EDouble Double
- | ETrue
- | EFalse
- | ECall Id [Exp]
- | EPoInc Id
- | EpoDec Id
- | EprInt Id
- | EprDec Id
- | EMul Exp Exp
- | EDiv Exp Exp
- | EPlus Exp Exp
- | EMin Exp Exp
- | ELess Exp Exp
- | EMore Exp Exp
- | EStrLess Exp Exp
- | EStrMore Exp Exp
- | EEqual Exp Exp
- | ENotEqual Exp Exp
- | EAnd Exp Exp
- | EOr Exp Exp
- | EAssign Id Exp
- deriving (Eq, Ord, Show, Read)
- data Type = Tint | Tdouble | Tbool | Tvoid
- deriving (Eq, Ord, Show, Read)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement