-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetalang_ast.sml
41 lines (35 loc) · 1.32 KB
/
metalang_ast.sml
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
structure MetaLangAST = struct
datatype MetaLangProgram = ASTList of Statement list
and Statement =
ValBinding of string * Expression |
DatatypeBinding of string * string list |
FunBinding of string * FunctionDefinition list |
Verbatim of string
and FunctionDefinition =
FunDef of Expression list * CompoundExpression
and Expression =
Identifier of string |
Integer of int |
Lambda of string list * Expression |
IfThenElse of Expression * CompoundExpression * CompoundExpression |
Funcall of Expression * Expression list |
opISA of string * Expression |
opMEM of Expression * string |
opADD of Expression * Expression |
opSUB of Expression * Expression |
opMUL of Expression * Expression |
opDIV of Expression * Expression |
opMOD of Expression * Expression |
opLT of Expression * Expression |
opGT of Expression * Expression |
opLE of Expression * Expression |
opGE of Expression * Expression |
opEQ of Expression * Expression |
opNE of Expression * Expression |
opAND of Expression * Expression |
opOR of Expression * Expression |
opNOT of Expression |
opNEG of Expression
and CompoundExpression =
CompoundExpr of Statement list * Expression ;
end