aboutsummaryrefslogtreecommitdiff
path: root/src/ast/printer.rs
blob: 1aa32ae3688e27bb3f1e06b0fd548e990a7a8336 (plain)
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})")
//             }
//         }
//     }
// }