5

是否有对 Wirth 源代码的简单解释,或者甚至是带有更多注释的版本,以便我弄清楚它是如何工作的?

Wirths pl/0 编译器在这里:http ://www.moorecad.com/standardpascal/plzero.pas

我的主要目标是修改它以使用类似于 Oberon 的整数数组,但尽可能少地接触代码

此处引用的 Oberon:http ://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf

4

1 回答 1

7

该代码在 Wirth 的书Algorithms + Data Structures = Programs中有详细描述。我正在看 1976 年的版本,其中包含大约 70 页有关该程序的信息。

据我所知,这本书的 1976 年版本并不在线,但他后来将代码移植到 Modula-2 和 Oberon。Oberon 版以免费 PDF 的形式提供,但 PL/0 章节已被删除并扩展为第二本书(也是免费在线),编译器构造

这本扩展书使用了一种称为 Oberon-0 的更健壮的语言,其中包括数组、记录、类型等。他详细讨论了如何实现这些东西。

整个编译器是不同的,因为它是用 Oberon 编写的并且针对不同的机器,但是 Wirth 的所有编译器都共享相同的基本结构,因此您应该能够在它们之间映射想法。

或者,他还用 pascal 编写了另一个扩展编译器(ISO pascal 的“p4”参考实现。该编译器已被广泛研究并记录在Pascal 实现一书中,现在转变为一个不错的网站,其中包含对源的超文本交叉引用。

最后,还有一个由 Samuel G Williams 提供的 PL/0 编译器的 python 端口。我的他的 PL/0 语言工具的分支包括几个额外的后端,以及 Wirth 的原始代码(您链接的程序)的副本,稍作修改以在 Free Pascal 下运行。

于 2013-08-08T05:37:27.197 回答