34 lines
735 B
Rust
34 lines
735 B
Rust
|
use std::error::Error;
|
||
|
use crate::ast::*;
|
||
|
|
||
|
|
||
|
pub trait ASTVisitor {
|
||
|
fn visit(&mut self, ast: &mut AST) {
|
||
|
self.block(&ast.statements);
|
||
|
}
|
||
|
|
||
|
fn block(&mut self, statements: &Vec<Statement>) {
|
||
|
for statement in statements {
|
||
|
self.statement(statement);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn statement(&mut self, statement: &Statement) {
|
||
|
use StatementKind::*;
|
||
|
match statement.kind {
|
||
|
Expression(ref expr) => self.expression(expr),
|
||
|
Declaration(ref decl) => self.declaration(decl),
|
||
|
Import(ref import_spec) => self.import(import_spec),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn expression(&mut self, expression: &Expression) {
|
||
|
}
|
||
|
|
||
|
fn declaration(&mut self, declaration: &Declaration) {
|
||
|
}
|
||
|
|
||
|
fn import(&mut self, import: &ImportSpecifier) {
|
||
|
}
|
||
|
}
|