]> ruin.nu Git - proglang.git/blob - Abssyntax.hs
minor change
[proglang.git] / Abssyntax.hs
1 module Abssyntax where
2
3 -- Haskell module generated by the BNF converter
4
5 newtype Ident = Ident String deriving (Eq,Ord,Show)
6
7 data Type =
8    TInt
9  | TBool
10   deriving (Eq,Ord,Show)
11
12 data Program =
13    Program [FuncStm]
14   deriving (Eq,Ord,Show)
15
16 data Stm =
17    SExp Exp
18  | SBlock [Stm]
19  | SDecl Type Ident Exp
20  | SDeclD Type Ident
21  | SWhile Exp Stm
22  | SIf Exp Stm Stm
23  | SPrint Exp
24  | SReturn Exp
25  | SNoop
26   deriving (Eq,Ord,Show)
27
28 data Exp =
29    EAss Ident Exp
30  | EVar Ident
31  | EInt Integer
32  | EBool Bool
33  | ENeg Exp
34  | ENot Exp
35  | EReadI
36  | EReadB
37  | EFunc Ident [Exp]
38  | BiOpExp Exp Op Exp
39  | EPost Ident Op
40   deriving (Eq,Ord,Show)
41
42 data Decl =
43    Decl Type Ident
44   deriving (Eq,Ord,Show)
45
46 data Func =
47    Func Type Ident [Decl] [Stm]
48   deriving (Eq,Ord,Show)
49
50 data FuncStm =
51    S Stm
52  | F Func
53   deriving (Eq,Ord,Show)
54
55 data Op =
56    Lt
57  | ELt
58  | Gt
59  | EGt
60  | Eq
61  | NEq
62  | Plus
63  | Minus
64  | Times
65  | Div
66   deriving (Eq,Ord,Show)
67