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

Jas*_* M. 3 pascal freepascal

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

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

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

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

tan*_*orm 6

该代码在Wirth的书" 算法+数据结构=程序"中有详细描述.我正在看1976年的版本,其中包含大约70页有关该计划的内容.

据我所知,该书的1976版本不在线,但他后来将代码移植到Modula-2然后移植到Oberon.该奥伯伦版是作为一个免费的PDF,但取出并扩展到第二本书中,PL/0章编译器建设.

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

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

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

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