Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1.  
  2.  
  3. module CMM.Abs where
  4.  
  5. -- Haskell module generated by the BNF converter
  6.  
  7.  
  8.  
  9.  
  10. newtype Id = Id ((Int,Int),String) deriving (Eq, Ord, Show, Read)
  11. data Program = Program [Def]
  12. deriving (Eq, Ord, Show, Read)
  13.  
  14. data Def = DefineFunction Type Id [Arg] [Stm]
  15. deriving (Eq, Ord, Show, Read)
  16.  
  17. data Arg = ADecl Type Id
  18. deriving (Eq, Ord, Show, Read)
  19.  
  20. data Stm
  21. = SExp Exp
  22. | SDecl Type Id
  23. | SDecls Type Id [Id]
  24. | SInit Type Id Exp
  25. | SReturn Exp
  26. | SBlock [Stm]
  27. | SWhile Exp Stm
  28. | SIfElse Exp Stm Stm
  29. deriving (Eq, Ord, Show, Read)
  30.  
  31. data Exp
  32. = EId Id
  33. | EInt Integer
  34. | EDouble Double
  35. | ETrue
  36. | EFalse
  37. | ECall Id [Exp]
  38. | EPoInc Id
  39. | EpoDec Id
  40. | EprInt Id
  41. | EprDec Id
  42. | EMul Exp Exp
  43. | EDiv Exp Exp
  44. | EPlus Exp Exp
  45. | EMin Exp Exp
  46. | ELess Exp Exp
  47. | EMore Exp Exp
  48. | EStrLess Exp Exp
  49. | EStrMore Exp Exp
  50. | EEqual Exp Exp
  51. | ENotEqual Exp Exp
  52. | EAnd Exp Exp
  53. | EOr Exp Exp
  54. | EAssign Id Exp
  55. deriving (Eq, Ord, Show, Read)
  56.  
  57. data Type = Tint | Tdouble | Tbool | Tvoid
  58. deriving (Eq, Ord, Show, Read)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement