aboutsummaryrefslogblamecommitdiff
path: root/src/Syntax.hs
blob: c33f7b32802f305a2ae3c95d90ad429b9bc39a2b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                 
                                 



















                                                       
module Syntax
  where

type Idnt = String
data Typ = TInt
         | TRecord  [(Idnt, Typ)]
         | TVariant [(Idnt, Typ)]
         | TPtr Typ
           deriving(Eq,Show)

data Expr = Var Idnt
          | IntLit Int
          | Record [(Idnt, Expr)]
          | Variant Typ Idnt Expr
          | Add Expr Expr
          | Mult Expr Expr
          | Neg Expr
          | Deref Expr
           deriving(Eq,Show)
data Com = Skip
         | Seq Com Com
         | If Expr Com Com
         | While Expr Com
         | Asgn Idnt Expr
         | Decl Idnt Expr Com
         | Alloc Idnt Expr
         | Save Idnt Expr
           deriving(Eq,Show)
         
data FuncDecl = Func Idnt [Idnt] [(Idnt,Expr)] Com Expr
           deriving(Eq,Show)
data Program = P [FuncDecl] [(Idnt, Int)] Com
           deriving(Eq,Show)