schala/schala-lang/language/src/ast/visitor.rs

34 lines
735 B
Rust
Raw Normal View History

2019-09-25 18:41:07 -07:00
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) {
}
}