diff options
Diffstat (limited to 'src/semantic/translate.rs')
-rw-r--r-- | src/semantic/translate.rs | 9 |
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"), + } + } } |