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