Zig 中间表示
本文承接《Zig 词法分析和语法解析》的内容,继续讨论 Zig 程序编译的下一步:从抽象语法树(AST)中生成中间表示(IR)。
本文翻译自 Mitchell Hashimoto 关于 Zig 的系列博客第三篇:
- Zig AstGen: AST => ZIR (https://mitchellh.com/zig/astgen)
翻译本文的过程中,我越来越回想起自己使用 Perl 6 做编译实习作业的时候。通过 Perl 6 内嵌的 Grammar 语法,我基本把词法分析和语法分析的内容给快速解决了。余下的大部分时间都在完成从 AST 到课程定义的中间表示的翻译,数据流分析和生成 riscv 汇编代码的工作。应该说,北京大学仿照虎书内容做的编译实习课程还是很有含金量的。
感兴趣的读者可以查看我当时的代码仓库,其中包括一个完整的 PDF 报告。
以下原文。