首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >学习编写编译器

学习编写编译器
EN

Stack Overflow用户
提问于 2008-08-04 22:46:36
回答 37查看 349.3K关注 0票数 697

首选语言: C/C++、Java和Ruby。

我正在寻找一些有用的书籍/教程,关于如何编写您自己的编译器只是为了教育目的。我最熟悉C/C++、Java和Ruby,所以我更喜欢涉及这三种资源之一的资源,但是任何好的资源都是可以接受的。

EN

回答 37

Stack Overflow用户

回答已采纳

发布于 2008-08-04 22:52:00

资源大清单:

  • 一种用于编译教育的纳米框架倍频
  • 高级编译器的设计与实现 $
  • 一种增量式编译结构方法倍频
  • ANTLR 3.x视频教程
  • 编译器设计基础
  • 构建鹦鹉编译器
  • 编译器基础
  • 编译器构造 $
  • 编译器设计与构造 $
  • 用C制作编译器 $
  • 手工艺翻译
  • C语言的编译器设计倍频
  • 编译器:原则、技术和工具 $- aka “龙书”;被广泛认为是用于编写编译器的“书”。
  • 工程编译器 $
  • 程序设计语言要点
  • Flipcode文章存档 (寻找“由Jan实现脚本引擎”)
  • 游戏脚本掌握 $
  • 如何在C#中从头开始构建虚拟机倍频
  • 实现功能语言
  • 实现编程语言(使用BNFC)
  • 使用C# 4.0实现编程语言
  • 解释器模式 (以设计模式 $描述)指定了一种在语言中计算句子的方法
  • 语言实现模式:创建您自己的特定于域的通用编程语言 $
  • 让我们构建一个编译器由Jack PDF格式系列版本(例子在帕斯卡,但这些信息是普遍适用的)
  • 连接器和装载机 $ (Google )
  • 小片段Lisp (LiSP) $
  • LLVM教程
  • 现代编译器在ML中的实现 $-有一个Java $和C $版本,也被广泛认为是一本非常好的书。
  • 面向对象编译器构建 $
  • 解析技术-实用指南
  • Oberon项目 -看第13章
  • 编写个人计算机的程序 $
  • 编程语言:应用和口译
  • 兔子:一个用于计划的编译器倍频
  • 关于信任的思考 -快速指南
  • 为.NET框架滚动您自己的编译器 -- MSDN的快速教程
  • 计算机程序的结构与解释
  • 类型和编程语言
  • 想写一个编译器吗? -快速指南
  • 用Ruby自下而上编写编译器
  • 编译Lisp -直接编译到x86-64

图例:

  • 链接到PDF文件
  • $链接到印刷的书
票数 1.2K
EN

Stack Overflow用户

发布于 2009-07-20 23:01:20

我认为,这是一个相当模糊的问题,仅仅是因为所涉问题的深度。然而,编译器可以被分解成两个独立的部分:上半部分和底层一部分.上半部分通常采用源语言并将其转换为中间表示,而下半部则负责平台特定的代码生成。

尽管如此,一个简单的方法来处理这个主题(至少在我的编译器类中使用的方法)是在上面描述的两部分中构建编译器。具体来说,你只需构建上半身就能很好地了解整个过程。

只需完成前半部分,您就可以获得编写词法分析器和解析器的经验,并开始生成一些“代码”(我提到的中间表示)。因此,它将获取您的源程序并将其转换为另一个表示,并进行一些优化(如果您愿意的话),这是编译器的核心。下半部分将采用该中间表示,并生成在特定体系结构上运行程序所需的字节。例如,下半部分将接受您的中间表示并生成PE可执行文件。

关于这个主题的一些书,我发现特别有用的是编译器原则和技术 (或龙书,由于封面上可爱的龙)。它有一些很好的理论,并且以一种非常容易理解的方式肯定地涵盖了上下文无关的语法。此外,为了构建词法分析器和解析器,您可能会使用*nix工具-- lex和yacc。无趣的是,这本名为"lex和yacc“的书在”龙书“的结尾处找到了这个部分。

票数 75
EN

Stack Overflow用户

发布于 2008-08-10 07:54:32

我认为现代编译器在ML中的实现是编写文本的最好的入门编译器。还有一个Java版本和一个C版,考虑到您的语言背景,这两种语言都可能更容易访问。这本书包含了许多有用的基本材料(扫描和解析、语义分析、激活记录、指令选择、RISC和x86本机代码生成)和各种“高级”主题(编译面向对象和函数语言、多态性、垃圾收集、优化和单个静态赋值形式)到相对较小的空间(约500页)。

比起巨龙书,我更喜欢现代编译器的实现,因为现代编译器的实现对领域的调查较少--相反,它对所有主题都有很好的涵盖,你需要编写一个严肃、体面的编译器。在你读完这本书之后,如果你需要的话,你将准备好直接处理研究论文,以获得更多的深度。

我必须承认,我对尼克劳斯·威尔斯( Niklaus )的“编译器构造”(这是一个PDF格式的可在线获得 )有一个严肃的软肋。我觉得Wirth的编程美学很美,但是有些人觉得他的风格太少了(例如,Wirth倾向于递归下降解析器,但大多数CS课程侧重于解析器生成器;Wirth的语言设计相当保守)。编译器结构是Wirth的基本思想的一个非常简洁的升华,所以不管你是否喜欢他的风格,我强烈推荐读这本书。

票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档