我决定开始研究编译器理论,但问题是我想要为任何语言编写一个编译器,以便跟踪每种语言。
我知道一些与我类似的关于clang和gcc的问题,我知道他们都在动态地进行词法和语法分析,只要编译器本身是用C编写的,并且运行在ubuntu x64上,我只想用任何语言编写任何编译器。
发布于 2015-03-13 08:19:42
有很多很多地方可以开始探索这片土地。许多语言包括编译功能或方面,如Lisp和Forth。
要了解C编译器,有一本关于LCC编译器的书,其中包括编译器的源代码。在Unix归档(tuhs.org)中也有旧C编译器的存储库。
您还可以从另一个角度来检查语言False (更著名的Brainfuck的祖先),它的设计是用很少的代码实现的。
另一个与你对复杂性理论感兴趣的角度,是学习语言的Chomsky层次结构以及能够解析它们的相关抽象机器。这将告诉您为什么Lex和Yacc是独立的工具,以及每个工具都有什么好处(以及如何自己动手,而根本不需要它们)。
实际上,我自己也在追求同样的目标。我目前正在阅读1979年出版的“Lisp解剖”一书,这本书当然包含了Lisp中的编译器代码。但是这是可以的,因为我已经有了自己的自制lisp解释器来执行它。
发布于 2015-03-13 09:13:36
虎语是由教授设计的。安德鲁·阿佩尔正是故意一步一步地说明一个完整的编译器构造过程.
你可以在谷歌上搜索“老虎语言”,阅读一些在线资源,这里也有一些问题/答案,但更好的选择是获得一本你喜欢的语言的书,并实现你最感兴趣的部分。
https://stackoverflow.com/questions/29027283
复制相似问题