about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs
index 1825af5..d433a16 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,20 +2,35 @@ mod interpret;
 mod lex;
 mod parse;
 
+use std::io::{self, Write};
+
 use lex::lexer::Lexer;
 
 use interpret::walker::Walker;
 use parse::parser::Parser;
 
+const PROMPT: &'static str = "🐇: ";
+
 fn main() {
-    let source = "1 * 2 + 3 + (-1)";
+    let walker = Walker::new();
 
-    let lexer = Lexer::new(source);
-    let mut parser = Parser::new(lexer);
+    let mut input_buffer;
 
-    let node = parser.parse().expect("Failed parsing.");
+    loop {
+        print!("{}", PROMPT);
+        io::stdout().flush().expect("Failed flushing.");
 
-    let walker = Walker::new();
-    let result = walker.walk(&node).expect("Failed interpreting.");
-    println!("{}", result);
+        input_buffer = String::new();
+        io::stdin()
+            .read_line(&mut input_buffer)
+            .expect("Failed reading input.");
+
+        let lexer = Lexer::new(input_buffer.trim());
+        let mut parser = Parser::new(lexer);
+
+        let node = parser.parse().expect("Failed parsing.");
+        let result = walker.walk(&node).expect("Failed interpreting.");
+
+        println!("🥕: {}\n", result);
+    }
 }