From 13f066dc660c5491dd4549df60bb0f4a21944379 Mon Sep 17 00:00:00 2001 From: Zhu Siyuan <3200100491@zju.edu.cn> Date: Mon, 8 Apr 2024 21:16:53 +0800 Subject: [PATCH] [docs] typo fix --- docs/middle-ir-gen.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/middle-ir-gen.md b/docs/middle-ir-gen.md index 2b9ea66..039bb99 100644 --- a/docs/middle-ir-gen.md +++ b/docs/middle-ir-gen.md @@ -454,23 +454,24 @@ translate_expr(expr, symbol_table, current_bb) -> value 由于 `translate_expr` 只是翻译表达式,没有任何控制流转移,因此只会生成线性的指令流,因此考虑传入基本块信息 `current_bb`,表示当前控制流在 `current_bb` 这个基本块,翻译得到的指令序列应当插入此处. -面对形如 `expr1 + expr2` 这样的二元表达式,我们递归调用两个子节点的 `translate_expr`,然后生成一条加法指令将他们加起来,最后 `result_value` 将作为 `translate_expr` 的返回值: +面对形如 `expr1 + expr2` 这样的二元表达式(下文记作 `expr0`),调用 `translate_expr(expr0, sym_table, current_bb)` 进行翻译. +我们递归调用两个子节点的 `translate_expr`,然后生成一条加法指令将他们加起来,最后 `result_value` 将作为最后的返回值: ```plaintext lhs_value = translate_expr(expr1, sym_table, current_bb) rhs_value = translate_expr(expr2, sym_table, current_bb) -result_value = create_binary(addop, lhs, rhs, current_bb) +result_value = create_binary(addop, lhs_value, rhs_value, current_bb) return result_value ``` -上面生成的指令在 IR 中看起来可能像这样,其中 `%2` 是 `translate_expr` 的返回值: +上面生成的指令在 IR 中看起来可能像这样,其中 `%2` 是 `translate_expr(expr0, sym_table, current_bb)` 最后的返回值: ```rust // lhs value, anonymous let %0 = ..... // rhs value, anonymous let %1 = ..... -/// result value +/// result value, anonymous let %2 = add %0, %1 ``` @@ -628,7 +629,7 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
binop = get_binop(BinOp);
 expr1_value = translate_expr(expr1, sym_table);
 expr2_value = translate_expr(expr2, sym_table);
-return create_binary(binop, expr1, expr2, current_bb);
+return create_binary(binop, expr1_value, expr2_value, current_bb); MINUS Expr1