`
yawl
  • 浏览: 61047 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

编译器的书

阅读更多
有关编译器的书中"Dragon Book" (Compilers: Principles, Techniques, and Tools)是最经典,最有名的一本,但其实是对很多想学习编译器的人非常不适合的一本书.这本书的内容更适合的读者是编译器的研究人员,或者想构造parser generator等底层工具的开发者.我认识的大多数人往往是想了解编译器的工作原理,或者作一个中小型的编译器,Dragon book里的太细致的学术理论解释其实帮助并不大.结果很多把Dragon book当作自己编译器入门书的人,错以为编译器是什么dark art而放弃了.

由于编译器已经理论技术都很成熟了,本身不是很active的研究领域.所以Dragon book的理论内容仍很完备,尤其是第二版加上garbage collection, JIT等内容之后.记得上学的时候,教授本来想挑选更新些的教材(当时没有第二版),最后还是沿用了Dragon book.

Modern Compiler Implementation in Java则是另外一种类型的书,较生动的讲解加之更现代的例子,使书读起来有趣很多.当然如果想更快的上手的话,剑桥的一份课程笔记非常值得推荐:
http://www.cl.cam.ac.uk/teaching/2004/CompConstr/NEJ/report.pdf
里面用了ANTLR作为语法分析的例子,.NET作为代码生成的平台.

还有关于parser generator的主题.yacc family基本上是最知名的,当然本身也是很流行,很有用的工具.LR类别的语法分析器也被众多研究证明是运行速度更高.但我们常用的编译器,如sun的java,visual studio的c++/C#等,却都是手写的recursive decent parser.这主要的原因就是维护性和报错.

看一些yacc(bison)的代码输出可以发现,绝大部分输出的代码是无法阅读的巨大的integer table.同时,好的编译器在报错方面的要求很高,需要在各个地方插入的与报错相关的代码,这样的代码对于yacc类的工具则很不好结合起来.现在ANTLR,javacc这样的recursive decent parser geneator比较流行的原因,也是它们能自动化很多工作,同时比较容易插入手写的代码.

Bjarne Stroustrup在The Design and Evolution of C++也提到了这个问题.他在设计c++的parser时选了yacc,但后来发现其实如果当时用手写一个recursive decent parser会更好.
0
0
分享到:
评论
2 楼 healer_kx 2009-10-27  
Reading~
healer.kx~~~~~~~
1 楼 dreamhead 2008-01-05  
《Unix编程环境》,一本看上去与编译器无关的书,有一个章节,以逐步扩展的方式实现了一个计算器,是我读过的关于编译器方面的内容中,最容易理解的,即便站在实践的角度来看,也是非常有指导价值的。

相关推荐

    《PIC单片机CCS-C编译器参考手册》

    《PIC单片机CCS C编译器参考手册》是一本专为在CCS编译环境中使用C语言编程PIC单片机而设计的指南。它适用于PIC12、PIC16和PIC18系列的CPU,如示例中的18F67K22型号。手册中包含了对特定配置指令和C语言扩展特性的...

    GNU编译器手册(精通GCC)

    总的来说,《GNU编译器手册》是开发者必备的工具书,无论你是初学者还是经验丰富的程序员,都能从中受益匪浅,提升编译器使用技巧,更好地理解和优化你的代码。通过阅读和实践手册中的内容,你可以熟练掌握GCC和G++...

    龙书虎书鲸书编译器设计.zip

    《龙书》、《虎书》和《鲸书》是编译器设计领域的经典之作,分别代表了编译器设计的不同层次和深度。这四本书的集合为学习者提供了全面而深入的编译器设计知识体系,涵盖了从基础理论到实践技术的广泛内容。 编译器...

    简单的编译器(新手学习)--编译原理

    **编译器基础** 编译器是计算机科学中的核心组件之一,它负责将高级语言(如C++、Java等)源代码转换为机器可以执行的指令。编译器的工作流程通常包括词法分析、语法分析、语义分析、优化和目标代码生成等多个阶段...

    编译原理 pl0编译器 c语言版

    编译原理课程设计,改进书后附录的pl0程序,c语言版: 1.扩充语句for(<语句>;<条件>;<语句>)<语句> 2.扩充语句if <条件> then <语句> else <语句> 3.扩充语句repeat <语句>;until <条件> 4.增加自增自减运算++和—...

    高级编译器设计与实现(鲸书)

    高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书) 高级编译器设计与实现(鲸书...

    编译器原理,技术,工具

    经典的编译器书籍,djvu格式,编译器所使用的技术能够用于很多方面.大幅提升功力.

    鲸书-现代编译原理

    编译算法和实现方法 是Andrew w.Apple的“虎书” Modern Compiler Implementation “红 蓝 绿”三序列之一 这三本书的内容基本相同 但是使用不同的语言来实现书中给出的一个编译器 本书使用的是更适合广大读者的...

    lcc编译器源码(C编译器的一种)

    完整的LCC编译器源码。LCC是一种开源的C编译器,可用作商业用途。《可变目标C编译器-设计与实现》一书是对它的注释与说明。

    自己动手写编译器、链接器_编译器_

    本书讲述了一个真实编译器的开发过程源语言是以C语言为蓝本进行适当简化定义的一门新语言称之为SC语言(简化的C语言)目标语言是大家熟悉的Intelx86机器语言。在本书中读者将看到从 SC语言定义到SCC编译器开发的完整...

    [鲸书][高级编译器设计与实现](Steven.S.Muchnic.pdf

    《高级编译器设计与实现》是一本深入探讨编译器构建的专业书籍,作者Steven S. Muchnick以其丰富的经验和深入浅出的讲解,为读者揭示了编译器背后复杂的理论和实践。这本书对于计算机科学的学生、软件工程师以及对...

    高级编译器设计与实现_编译原理_编译器_

    本书涵盖了现代微处理器编译器的设计和实现方面的所有高级主题。本书首先介绍编译器的结构、符号表管理、中间代码结构、运行时支持等问题,探讨过程内的控制流分析、数据流分析、依赖关系分析和别名分析的各种方法,...

    自己动手写编译器、链接器高清带目录PDF书籍+源码

    《自己动手写编译器、链接器》这本书是IT领域中关于编译技术的经典之作,旨在帮助读者深入理解编译器和链接器的工作原理。通过阅读这本书,你可以了解到从源代码到可执行程序的全过程,这包括词法分析、语法分析、...

    FANUC宏编译器的应用.pdf

    FANUC宏编译器是FANUC数控系统二次开发的重要工具之一,通过提供一系列的宏程序开发功能,它使得机床制造商能够更加方便、高效地开发出满足特定生产需求的用户界面和功能。以下是根据给定文件内容生成的知识点: 1....

    编译器设计之路 高清书+源代码

    《编译器设计之路》是一本深入探讨编译器构建技术的专业书籍,它涵盖了编译器设计与实现的各个环节,是学习编译原理和实践编译器开发的重要资源。书中结合PASCAL语言的实例,使得理论知识更具可操作性和实践性。...

    简单的编译器(c++实现)

    本项目“简单的编译器(C++实现)”旨在通过C++编程语言来构建一个基本的编译器,使初学者能理解编译器的工作原理,并具备实际编写编译器的能力。下面我们将深入探讨编译器的基本概念、结构和实现过程。 一、编译器...

    编译器原理,帮你揭开编译器的内幕,彻底掌握编译器的行为

    《编译器原理》一书由Torben Ægidius Mogensen撰写,旨在深入探讨编译器的工作原理,帮助读者理解并掌握编译器的设计与行为。本书不仅适用于学生,也对从事软件开发的专业人士有极大价值。 #### 编译器的概念与...

    lcc-master_lcc编译器_

    **lcc编译器——一个轻量级C编译器** **一、lcc编译器简介** lcc是一款开源的、轻量级的C语言编译器,它由Dennis M. Ritchie和Steve A. Johnson在贝尔实验室开发。lcc的设计目标是作为一个教学工具,用于讲解编译器...

    可变目标C编译器设计与实现.pdf

    知识点一:编译器的基本概念与功能 编译器是一种计算机程序,它的作用是将一种高级语言编写的源代码转换成另一种特定机器语言的汇编代码或机器代码。它主要完成语言的词法分析、语法分析、语义分析、中间代码生成、...

Global site tag (gtag.js) - Google Analytics