试图了解Wirth的Pascal pl / 0编译器代码

时间:2013-08-05 04:10:11

标签: pascal freepascal

是否有一个关于Wirth源代码的简单解释,甚至是一个带有更多评论的版本,以便我可以弄清楚它是如何工作的?

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

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

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

1 个答案:

答案 0 :(得分:5)

Wirth的书 Algorithms + Data Structures = Programs 中详细介绍了该代码。我正在看1976年版,其中包含大约70页有关该计划的内容。

据我所知,这本书的1976版本不在线,但他后来将代码移植到Modula-2然后移植到Oberon。 Oberon edition以免费PDF格式提供,但PL / 0章节已删除并扩展为第二本书 Compiler Construction

这本扩展的书使用了一种更强大的语言Oberon-0,它包括数组,记录,类型等。他详细讨论了如何实现这些内容。

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

或者,他还在pascal中编写了另一个扩展编译器(ISO pascal的“p4”参考实现。该编译器已在 Pascal Implementation 一书中进行了广泛研究和记录,现已转换进入一个很好的网站,其中包含对源的超文本交叉引用。

最后,Samuel G Williams还有一个PL / 0编译器的python端口。 My fork of his PL/0 Languages Tools包括一些额外的后端,以及Wirth的原始代码(您链接的程序)的副本,稍微修改以在Free Pascal下运行。