Add '=' operator to IR Generator
This commit is contained in:
parent
52d7ebde15
commit
554270cc40
1 changed files with 11 additions and 1 deletions
|
@ -125,7 +125,17 @@ fn visit_ast_node<'source>(
|
||||||
result_var
|
result_var
|
||||||
}
|
}
|
||||||
BinaryOp(left, op, right) => match *op {
|
BinaryOp(left, op, right) => match *op {
|
||||||
"=" => todo!(),
|
"=" => {
|
||||||
|
let right_var = visit_ast_node(right, types, symbols, instructions, labels);
|
||||||
|
let Identifier(var_name) = left.expr else {
|
||||||
|
panic!("Tried to assign to non-variable!");
|
||||||
|
};
|
||||||
|
let var = symbols.get(var_name).clone();
|
||||||
|
|
||||||
|
instructions.push(IrInstruction::new(right.loc, Copy(right_var, var.clone())));
|
||||||
|
|
||||||
|
var
|
||||||
|
}
|
||||||
"and" => {
|
"and" => {
|
||||||
let l_right = add_label("and_right", right.loc, labels);
|
let l_right = add_label("and_right", right.loc, labels);
|
||||||
let l_skip = add_label("and_skip", ast.loc, labels);
|
let l_skip = add_label("and_skip", ast.loc, labels);
|
||||||
|
|
Reference in a new issue