-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProjectTypesAST.fs
103 lines (100 loc) · 2.47 KB
/
ProjectTypesAST.fs
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// This file implements a module where we define a data type "expr"
// to store represent exprthmetic expressions
module ProjectTypesAST
// type expr =
// | Num of float
// | TimesExpr of (expr * expr)
// | DivExpr of (expr * expr)
// | PlusExpr of (expr * expr)
// | MinusExpr of (expr * expr)
// | PowExpr of (expr * expr)
// | UPlusExpr of (expr)
// | UMinusExpr of (expr)
// | Array of string*expr
// | True
// | False
// | Ands of expr * expr
// | Ors of expr * expr
// | Andd of expr * expr
// | Ord of expr * expr
// | Not of expr
// | Equal of expr * expr
// | NotEq of expr * expr
// | Greater of expr * expr
// | GreaterEq of expr * expr
// | Less of expr * expr
// | LessEq of expr * expr
// | Arrow of expr*expr
// | Ifelse of expr * expr
// | Assignment of string*expr
// | If of expr
// | Do of expr
// | Then of expr*expr
// | ArrayAs of string*expr*expr
// | Null
// | Var of string
type cmd =
| Assignment of string*ari
| If of gc
| Do of gc
| Then of cmd*cmd
| ArrayAs of string*ari*ari
| Null
and ari =
| Num of float
| TimesExpr of (ari * ari)
| DivExpr of (ari * ari)
| PlusExpr of (ari * ari)
| MinusExpr of (ari * ari)
| PowExpr of (ari * ari)
| UPlusExpr of (ari)
| UMinusExpr of (ari)
| Array of string*ari
| Var of string
and boolean =
| True
| False
| Ands of boolean * boolean
| Ors of boolean * boolean
| Andd of boolean * boolean
| Ord of boolean * boolean
| Not of boolean
| Equal of ari * ari
| NotEq of ari * ari
| Greater of ari * ari
| GreaterEq of ari * ari
| Less of ari * ari
| LessEq of ari * ari
and gc =
| Arrow of boolean*cmd
| Ifelse of gc * gc
// type expr =
// | Num of float
// | TimesExpr of (ari * ari)
// | DivExpr of (ari * ari)
// | PlusExpr of (ari * ari)
// | MinusExpr of (ari * ari)
// | PowExpr of (ari * ari)
// | UPlusExpr of (ari)
// | UMinusExpr of (ari)
// | Array of string*ari
// | True of bool
// | False of bool
// | Ands of boolean * boolean
// | Ors of boolean * boolean
// | Andd of boolean * boolean
// | Ord of boolean * boolean
// | Not of boolean
// | Equal of ari * ari
// | NotEq of ari * ari
// | Greater of ari * ari
// | GreaterEq of ari * ari
// | Less of ari * ari
// | LessEq of ari * ari
// | Arrow of bool*cmd
// | Ifelse of gc * gc
// | Assignment of string*ari
// | If of gc
// | Do of gc
// | Then of cmd*cmd
// | ArrayAs of string*ari*ari