diff --git a/parser/src/main.rs b/parser/src/main.rs index a1c160a..52b164f 100644 --- a/parser/src/main.rs +++ b/parser/src/main.rs @@ -5,13 +5,32 @@ extern crate sibillexer; extern crate sibilparser; +use std::io::prelude::*; +use std::io; use sibillexer::Lexer; use sibilparser::Parser; fn main() { - let lexer = Lexer::new("(ab)".chars()); - let parser = Parser::new(lexer); - for thing in parser { - println!("main: token -> {:?}", thing); + loop { + // Print a prompt. + print!("> "); + io::stdout().flush().ok().expect("couldn't flush"); + + // Read a line from stdin. + let mut input = String::new(); + io::stdin().read_line(&mut input).unwrap(); + + // Remove the trailing newline. + input.pop(); + + // Create a lexer and parser and process the input. + let lexer = Lexer::new(input.chars()); + let parser = Parser::new(lexer); + + // Print the parser's output. + for thing in parser { + println!("{:?}", thing); + } + println!(); } }