diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index f3128a2..8d8486e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,15 +7,17 @@ pub mod ast; pub mod semantic; pub mod taiga; +use std::cell::RefCell; use std::io::{self, BufRead, Write}; +use std::rc::Rc; fn main() { let stdin = io::stdin(); let mut handle = stdin.lock(); loop { let mut translate = semantic::translate::Translate::<semantic::frame::Amd64Frame>::new(); - let mut toplevel = semantic::translate::Level::Top; - let mut level = translate.make_level(&mut toplevel, vec![]); + let toplevel = Rc::new(RefCell::new(semantic::translate::Level::Top)); + let level = translate.make_level(toplevel, vec![]); let mut input = String::new(); print!("taiga> "); io::stdout().flush().unwrap(); @@ -24,7 +26,7 @@ fn main() { let program = taiga::parse_Program(&input); println!("{:?}", program); if let Ok(program) = program { - let result = semantic::analysis::translate(&mut translate, &mut level, &program); + let result = semantic::analysis::translate(&mut translate, level, &program); println!("{:?}", result); } } |