schala/schala-lang/language/src/ast/visitor.rs
2019-09-26 01:31:39 -07:00

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) {
}
}