From 01daee374a299646c595dd245c8e4a4990769002 Mon Sep 17 00:00:00 2001 From: David Li Date: Sun, 26 Nov 2017 19:59:00 -0500 Subject: Translate variable bindings --- src/semantic/translate.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/semantic/translate.rs') diff --git a/src/semantic/translate.rs b/src/semantic/translate.rs index 57581a4..5e68f36 100644 --- a/src/semantic/translate.rs +++ b/src/semantic/translate.rs @@ -59,4 +59,18 @@ impl Translate { _ => panic!("Can't make binop from Void"), } } + + pub fn alloc_local<'a>(&mut self, + level: &mut Level<'a, F>, + escapes: frame::Escape) -> Expression { + match level { + &mut Level::Top => { + panic!("Can't allocate in toplevel frame") + }, + &mut Level::Level { parent: _, ref mut frame, .. } => { + let access = frame.alloc_local(&mut self.temp, escapes); + Expression::Exp(frame.location_to_exp(access)) + } + } + } } -- cgit v1.2.3