From 1d5ec57d4ee0695a2a3e2542939b091f51c00036 Mon Sep 17 00:00:00 2001 From: David Li Date: Tue, 28 Nov 2017 19:42:11 -0500 Subject: Reference-count levels --- src/main.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/main.rs') 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::::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); } } -- cgit v1.2.3