From 1304e048089f2937dd1209f6f80c21006686b943 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 26 Aug 2018 13:45:52 -0700 Subject: [PATCH] [lexer] Bring over the REPL from the parser --- lexer/src/main.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lexer/src/main.rs b/lexer/src/main.rs index e177f98..366ef92 100644 --- a/lexer/src/main.rs +++ b/lexer/src/main.rs @@ -4,11 +4,27 @@ extern crate sibillexer; +use std::io::prelude::*; +use std::io; use sibillexer::Lexer; fn main() { - let lexer = Lexer::new("(ab (cd) ef)".chars()); - for tok in lexer { - println!("found {:?}", tok.unwrap()); + 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(); + + // Create a lexer and parser and process the input. + let lexer = Lexer::new(input.chars()); + + // Print the parser's output. + for thing in lexer { + println!("{:?}", thing); + } + println!(); } }