summaryrefslogtreecommitdiff
path: root/src/semantic/translate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/semantic/translate.rs')
-rw-r--r--src/semantic/translate.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/semantic/translate.rs b/src/semantic/translate.rs
index 179eb62..bcbad3a 100644
--- a/src/semantic/translate.rs
+++ b/src/semantic/translate.rs
@@ -48,4 +48,13 @@ impl<F: frame::Frame> Translate<F> {
pub fn make_num(&mut self, num: u64) -> Expression {
Expression::Exp(ir::Expression::Const(num))
}
+
+ pub fn make_binop(&mut self, op: ir::Binop,
+ left: Expression, right: Expression) -> Expression {
+ match (left, right) {
+ (Expression::Exp(left), Expression::Exp(right)) =>
+ Expression::Exp(ir::Expression::Binop(op, Box::new(left), Box::new(right))),
+ _ => panic!("Can't make binop from Void"),
+ }
+ }
}