33 lines
678 B
Rust
33 lines
678 B
Rust
use std::io;
|
|
|
|
use interpreter::Interpreter;
|
|
use parser::parse;
|
|
use tokenizer::tokenize;
|
|
|
|
mod ast;
|
|
mod interpreter;
|
|
mod parser;
|
|
mod symtab;
|
|
mod token;
|
|
mod tokenizer;
|
|
mod value;
|
|
|
|
pub fn compile(code: &str) {
|
|
let tokens = tokenizer::tokenize(code);
|
|
parser::parse(&tokens);
|
|
}
|
|
|
|
pub fn start_interpreter() {
|
|
let lines = io::stdin().lines();
|
|
#[allow(clippy::manual_flatten)]
|
|
for line in lines {
|
|
if let Ok(code) = line {
|
|
let tokens = tokenize(&code);
|
|
let ast = parse(&tokens);
|
|
|
|
let mut interpreter = Interpreter::new();
|
|
let val = interpreter.interpret(&ast);
|
|
println!("{}", val);
|
|
}
|
|
}
|
|
}
|