[project @ 2003-07-31 10:48:50 by panne]
[ghc-base.git] / Text / ParserCombinators / Parsec / examples / tiger / TigerAS.hs
1 module TigerAS where
2
3 type VarIdent = String
4 type TypeIdent = String
5   
6 data Declaration = TypeDec TypeIdent Type | VarDec VarIdent TypeIdent Expr | FunDec VarIdent [TypedVar] TypeIdent Expr
7   deriving (Eq, Show)
8   
9 data TypedVar
10   = TypedVar VarIdent TypeIdent
11   deriving (Eq, Show)
12
13 data Type
14   = Var TypeIdent
15   | Array TypeIdent
16   | Record [TypedVar]
17   deriving (Eq, Show)
18
19 data Expr
20   = Sub Expr Expr
21   | Dot Expr Expr
22   | Apply VarIdent [Expr]
23   | Ident TypeIdent
24   | RecordVal TypeIdent [AssignField]
25   | ArrayVal TypeIdent Expr Expr
26   | IntLit Integer
27   | StringLit String
28   | While Expr Expr
29   | For VarIdent Expr Expr Expr
30   | If Expr Expr Expr
31   | Let [Declaration] [Expr]
32   | Assign Expr Expr
33   | Op String Expr Expr
34   | UnOp String Expr
35   | Skip
36   | Nil
37   | Break
38   | Seq [Expr]
39   deriving (Show, Eq)
40
41 data AssignField 
42   = AssignField VarIdent Expr
43   deriving (Eq, Show)