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
|
// use super::{AstVisitor, Expr, Stmt};
// pub struct AstPrettyPrinter;
// impl AstVisitor<String> for AstPrettyPrinter {
// fn visit_stmt(&self, stmt: &Stmt) -> String {
// match stmt {
// Stmt::Expr(expr) => self.visit_expr(expr),
// Stmt::Val(name, expr) => format!("(val '{}' <- {})", name,
// self.visit_expr(expr)), Stmt::Var(name, expr) => format!("(var
// '{}' <- {})", name, self.visit_expr(expr)), }
// }
// fn visit_expr(&self, expr: &Expr) -> String {
// match expr {
// Expr::Literal(i) => i.to_string(),
// Expr::Add(lhs, rhs) => {
// let lhs = self.visit_expr(lhs);
// let rhs = self.visit_expr(rhs);
// format!("({lhs} + {rhs})")
// }
// Expr::Sub(lhs, rhs) => {
// let lhs = self.visit_expr(lhs);
// let rhs = self.visit_expr(rhs);
// format!("({lhs} - {rhs})")
// }
// Expr::Mul(lhs, rhs) => {
// let lhs = self.visit_expr(lhs);
// let rhs = self.visit_expr(rhs);
// format!("({lhs} * {rhs})")
// }
// Expr::Div(lhs, rhs) => {
// let lhs = self.visit_expr(lhs);
// let rhs = self.visit_expr(rhs);
// format!("({lhs} / {rhs})")
// }
// }
// }
// }
|