aboutsummaryrefslogtreecommitdiff
path: root/src/ast/printer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/printer.rs')
-rw-r--r--src/ast/printer.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/ast/printer.rs b/src/ast/printer.rs
new file mode 100644
index 0000000..1aa32ae
--- /dev/null
+++ b/src/ast/printer.rs
@@ -0,0 +1,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})")
+// }
+// }
+// }
+// }