compiler-construction - SICP最后两章的简短解释

标签 compiler-construction sicp

谁能给我一个关于SICP(计算机程序的结构和解释),ch4元语言抽象和ch5用注册机计算的最后两章的清晰简洁的解释?

我还想知道这两章的内容是否(以及如何)与标准的本科编译器类(class)不同。

最佳答案

长免责声明,实际答案如下

如果您真的想了解如何从头开始构建编译器,并且需要了解所有相关的实际解析、编译、生成和优化技术,那么 dragon book将是更好的选择。

如果您想使用解释器从头开始构建干净的编程语言,我会推荐弗里德曼的 EPL书。

如果你的学士论文所追求的是对前两本书中所有基本问题的更深入理解,那么请继续阅读下面我的答案。 SICP是一部教育作品,它试图用一种尽可能清晰的语言来传达基本概念。它不会详细介绍左递归解析器、公共(public)子表达式消除、x86 SSE 扩展等。

SICP CH4-5

用于解释所涉及的复杂概念的技术是在您眼前从头开始构建一系列计算机语言。

第 4 章首先构建了一个元循环 Scheme 解释器:一个用 Scheme 本身编写的小型 Scheme 解释器。这将为您提供递归解释器的基础知识,并为构建 ch4-5 其余部分的一系列迷你语言奠定基础。它回答了如何表示您的已解析代码、涉及哪些数据结构、如何将主机与基础语言分开等问题。
重要的是,它向您展示了语言解释器本身就是另一个计算机程序。
第 4 章的其余部分将向您展示如何通过修改以前的解释器来改变您的语言风格。两大类是惰性求值和逻辑编程。

第 5 章制作了一个“注册机器”的粗略模型,以抽象级别表示您当前的计算机。他们构建了一个小的注册机器语言,作为一种汇编语言用于所有意图和目的。他们介绍了下一点所需的所有数据结构和控制流结构:用这种机器语言构建方案解释器。不知何故仍然类似于元循环解释器。然后他们跳出深渊,用他们的寄存器机器语言构造一个方案编译器;完成组装步骤、尾递归优化、垃圾收集、词法寻址、跟踪等。

尽管 SICP 构建了玩具解释器和编译器,但它们在概念上已经足够完整,可以让您立即掌握当前的实用技术。 GCC 的中间代码看起来很像 SICP 的寄存器机器代码,例如 these guys直接在汇编中实现了 SICP 的 ARM 微 Controller 解释器。

关于compiler-construction - SICP最后两章的简短解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266733/

相关文章:

java - Java 是否包含对编译代码的注释?

data-structures - 程序范围的数据结构?

emacs - 从 Racket REPL 更改输出打印样式

scheme - 教会数字算术

scheme - 错误 : #f is not a function [count-frac,(匿名)、(匿名)、(匿名)、(匿名)、=]

c++ - 在具有指针参数的模板实例化之间进行选择

iphone - XCode编译器错误: ld: library not found for -loauth

c - 为什么C、Pascal等语言不能实现尾递归?

lambda - 跟踪 lambda 表达式求值

compiler-construction - 如何在windows下编译golang源码