-
Notifications
You must be signed in to change notification settings - Fork 0
/
ast.mli
43 lines (30 loc) · 1.17 KB
/
ast.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type bop = Plus | Minus | Mult | Div | Mod | Equate | Equal | NEqual | LowTh | GrtTh | StrictLow | StrictGrt | And | Or | Dot | Arrow
type uop = Pos | Neg | Ptr | Adress | Not | Incr | Decr
type vtype = Void | Int | Float | Char | StructName of string | Ptr of vtype
type expr = Ident of string
| Cst of vtype * string
| StructInst of expr list option
| Subscript of expr * expr
| Binop of expr * bop * expr
| Unop of uop * expr
| Null
type param = Param of vtype * string
type decl = VarDecl of vtype * (string * (expr option)) list
| FunDecl of vtype * string * param list option * instr list option
| StructDecl of string * (decl list option)
and instr = Decl of decl
| If of expr * instr
| IfThEl of expr * instr * instr
| While of expr * instr
| For of expr list option * expr option * expr list option * instr
| Return of expr option
| Expr of expr
| Block of instr list option
type file = File of decl list
val print_bop : bop -> string
val print_uop : uop -> string
val print_type : vtype -> string
val print_expr : expr -> string
val print_decl : decl -> string
val print_instr : instr -> string
val print_ast : file -> unit