编译实践学习 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();
}

这样可以保证一个基本块的完整性。

posted @ 2024-07-02 20:24  383494  阅读(3)  评论(0编辑  收藏  举报