编译实践学习 Part7
License: CC BY-NC-SA 4.0
lv 7.1
没啥难度,照着之前设计 if
的思路走就完了。
lv 7.2
写了几个函数:
void enter_sysy_block() {
symbol_table.add_table();
}
void exit_sysy_block() {
symbol_table.del_table();
}
void enter_koopa_block(std::string id, Ost& outstr, std::string prefix) {
outstr << id << ":\n";
}
void exit_koopa_block(Ost& outstr, std::string prefix) {
assert(outstr.muted);
outstr.unmute();
}
这样可以保证一个基本块的完整性。