首选语言:C/ c++、Java、Ruby。
我正在寻找一些关于如何编写自己的编译器的有用书籍/教程,只是为了教育目的。我最熟悉C/ c++、Java和Ruby,所以我更喜欢包含这三者之一的资源,但任何好的资源都是可以接受的。
首选语言:C/ c++、Java、Ruby。
我正在寻找一些关于如何编写自己的编译器的有用书籍/教程,只是为了教育目的。我最熟悉C/ c++、Java和Ruby,所以我更喜欢包含这三者之一的资源,但任何好的资源都是可以接受的。
当前回答
“让我们构建一个编译器”是很棒的,但它有点过时了。(我并不是说这让它变得不那么有效。)
或者看看俚语。这类似于“让我们构建一个编译器”,但对于初学者来说是一个更好的资源。这是一个pdf教程,需要7步的方法来教你一个编译器。添加quora链接,因为它有各种各样的俚语端口的链接,在c++, Java和JS中,也有python和Java中的解释器,最初是用c#和。net平台编写的。
其他回答
Python附带了一个用Python编写的Python编译器。您可以看到源代码,它包括从解析、抽象语法树、发出代码等所有阶段。 破解它。
龙之书绝对是关于“构建编译器”的书,但是如果您的语言不像当前这一代语言那么复杂,那么您可能想看看设计模式中的解释器模式。
书中的示例设计了一种类似正则表达式的语言,并且经过了深思熟虑,但正如书中所述,它有助于思考整个过程,但实际上只在小型语言上有效。然而,用这种模式为一种小型语言编写解释器要快得多,而不必学习所有不同类型的解析器,yacc和lex等等……
As an starting point, it will be good to create a recursive descent parser (RDP) (let's say you want to create your own flavour of BASIC and build a BASIC interpreter) to understand how to write a compiler. I found the best information in Herbert Schild's C Power Users, chapter 7. This chapter refers to another book of H. Schildt "C The complete Reference" where he explains how to create a calculator (a simple expression parser). I found both books on eBay very cheap. You can check the code for the book if you go to www.osborne.com or check in www.HerbSchildt.com I found the same code but for C# in his latest book
我发现Dragon的书太难读了,因为它太专注于语言理论,而实际上编写编译器并不需要这些理论。
我将添加Oberon书籍,其中包含了一个惊人的快速和简单的Oberon编译器项目Oberon的完整源代码。
如果你想了解更多关于编译器(和元编译器)的知识,这不是一本书,而是一篇技术论文和一个非常有趣的学习经历……本网站将引导您构建一个完全自包含的编译器系统,可以编译自己和其他语言:
教程:metaccompilers第1部分
这一切都是基于一份惊人的10页技术论文:
META II:一种面向语法的编译器编写语言
从1964年开始。我从1970年开始学习如何构建编译器。当您最终明白编译器如何自我再生....时,会有一个令人兴奋的时刻
我从大学时代就认识这个网站的作者,但我和这个网站没有任何关系。