本章总结
本节阅读量:第一章只支持很小的语言:
|
|
但这已经走通了一门语言实现最重要的两条路:
|
|
前半条路回答:
|
|
解释器沿着 AST 递归求值。遇到整数就返回整数,遇到加法就先求左右两边,再把结果相加。
后半条路回答:
|
|
编译器先把 AST 降成 IR,让嵌套表达式变成一行一行的计算步骤。再给每个临时变量分配栈槽,把 IR 翻译成 x86-64 AT&T 汇编。最后用 cc 把汇编变成可执行程序。
这一章里有几个分界线很重要:
|
|
后面章节会继续扩展语言,但不会推翻这条主线。第二章加入变量和 let 后,新的问题会变成:
|
|
也就是从“只计算数字和加法”,走向“处理名字和作用域”。
本节目录