-
Notifications
You must be signed in to change notification settings - Fork 39
/
printer.ts
103 lines (82 loc) · 2.05 KB
/
printer.ts
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
// import { BinOp } from './ast';
// import { Expr, Program, Stmt, Value } from './ir';
// // let console.log = console.log;
// export function printProgram<A>(p : Program<A>) {
// p.body.map(bs => bs.stmts.map(printStmt));
// }
// function printStmt<A>(stmt : Stmt<A>) {
// console.log("--" + stmt.tag);
// switch(stmt.tag) {
// case "assign":
// console.log(" " + stmt.name + " = ");
// printExpr(stmt.value);
// break;
// case "return":
// break;
// case "expr":
// console.log(" --> " + stmt.expr.tag + "\n");
// printExpr(stmt.expr);
// break;
// case "pass":
// break;
// case "field-assign":
// console.log(stmt.tag + " not handled yet");
// break;
// case "ifjmp":
// console.log(stmt.tag + " not handled yet");
// break;
// case "label":
// console.log(" label: " + stmt.name);
// break;
// case "jmp":
// console.log(" --> " + stmt.lbl);
// break;
// }
// console.log("\n");
// }
// function printExpr<A>(expr : Expr<A>) {
// console.log("----" + expr.tag);
// switch(expr.tag) {
// case "value":
// printValue(expr.value);
// break;
// case "binop":
// printValue(expr.left)
// console.log(BinOp[expr.op]);
// printValue(expr.right)
// break;
// case "uniop":
// break;
// case "builtin1":
// break;
// case "builtin2":
// break;
// case "call":
// break;
// case "lookup":
// break;
// case "method-call":
// break;
// case "construct":
// break;
// }
// console.log("\n");
// }
// function printValue<A>(value : Value<A>) {
// console.log(" ");
// switch(value.tag) {
// case "num":
// console.log(value.value.toString());
// break;
// case "bool":
// console.log(value.value.toString());
// break;
// case "id":
// console.log(value.name);
// break;
// case "none":
// console.log("None");
// break;
// }
// console.log(" ");
// }