1
0
Fork 0
monkey-interpreter/src/repl.rs

31 lines
743 B
Rust
Raw Normal View History

2019-08-30 19:58:20 +00:00
use crate::{lexer::Lexer, parser::Program};
2019-02-05 08:57:20 +00:00
use std::io::{self, BufRead, Write};
const PROMPT: &str = ">> ";
2019-02-05 08:57:20 +00:00
pub fn init() {
let stdin = io::stdin();
let read_handle = stdin.lock();
let stdout = io::stdout();
let write_handle = stdout.lock();
start(read_handle, write_handle);
}
fn start<R: BufRead, W: Write>(mut ip: R, mut out: W) {
loop {
out.write_all(PROMPT.as_bytes()).unwrap();
2019-02-05 08:57:20 +00:00
out.flush().unwrap();
let mut s = String::new();
ip.read_line(&mut s).unwrap();
let tokens = Lexer::new(&s);
for token in tokens.clone() {
2019-02-05 08:57:20 +00:00
println!("{:?}", token);
}
let parser = Program::parse(tokens);
println!("parser={:?}", parser);
2019-02-05 08:57:20 +00:00
}
}