Add initial tests for type checker
This commit is contained in:
parent
50bc35753a
commit
b0420a9a5f
5 changed files with 280 additions and 33 deletions
|
@ -4,6 +4,7 @@ use interpreter::interpret;
|
|||
use parser::parse;
|
||||
use symtab::SymTab;
|
||||
use tokenizer::tokenize;
|
||||
use type_checker::type_check;
|
||||
|
||||
mod ast;
|
||||
mod interpreter;
|
||||
|
@ -11,12 +12,13 @@ mod parser;
|
|||
mod symtab;
|
||||
mod token;
|
||||
mod tokenizer;
|
||||
//mod type_checker;
|
||||
mod type_checker;
|
||||
mod variable;
|
||||
|
||||
pub fn compile(code: &str) {
|
||||
let tokens = tokenizer::tokenize(code);
|
||||
parser::parse(&tokens);
|
||||
let tokens = tokenize(code);
|
||||
let ast = parse(&tokens);
|
||||
type_check(&ast, &mut SymTab::new_type_table());
|
||||
}
|
||||
|
||||
pub fn start_interpreter() {
|
||||
|
@ -27,7 +29,7 @@ pub fn start_interpreter() {
|
|||
let tokens = tokenize(&code);
|
||||
let ast = parse(&tokens);
|
||||
|
||||
let val = interpret(&ast, &mut SymTab::new());
|
||||
let val = interpret(&ast, &mut SymTab::new_val_table());
|
||||
println!("{}", val);
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue