2 days ago
- 构建AST之后,Zig编译器的下一步是使用AstGen阶段生成Zig中间表示(ZIR)。
- ZIR是一种无类型中间表示,意味着类型直到后续的编译时分析才会被完全评估。
- ZIR由一系列指令组成,每条指令带有一个标签和数据,通常引用其他指令或静态值。
- AstGen引入了作用域感知、标识符解析和字符串驻留,将字符串存储在连续数组中以便释放AST和源代码。
- ZIR指令可以嵌入静态值、通过索引引用其他指令或使用带标签的引用来引用已知原语。
- ZIR中的变量赋值不会生成显式指令,而是通过引用了值指令索引的作用域进行跟踪。
- AstGen每个文件运行一次,将整个AST急切地转换为ZIR,并且是执行标识符检查等语义验证的第一个阶段。