现代编译程序实现——Java语言(第二版 影印版)
基本信息
编辑推荐
本套教学用书的特点:
·权威性——教育部高等教育司推荐、教育部高等学校信息科学与技术引进教材专家组遴选
·系统性——覆盖计算机专业主干课程和非计算机专业计算机基础课程
·先进性——著名计算机专家近两年的最新著作,内容体系先进
·经济性——价格与国内自编材相当,是国内引进教材价格最低的
内容简介回到顶部↑
This textbook describes all phases of a compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via tree matching, dataflow analysis, graph-coloring register allocation, and runtime systems. It includes good coverage of current techniques in code generation and register allocation, as well as the compilation of functional and object-oriented languages, which is missing from most books. The most accepted and successful techniques are described concisely, rather than as an exhaustive catalog of every possible variant. Detailed descriptions of the interfaces between modules of a compiler are illustrated with actual Java classes. The first part of the book, Fundamentals of Compilation, is suitable for a one-semester first course in compiler design. The second part, Advanced Topics, which includes the compilation of object-oriented and functional languages, garbage collection, loop optimization, SSA form, instruction scheduling, and optimization for cache-memory hierarchies, can be used for a second-semester or graduate course.
作译者回到顶部↑
本书提供作译者介绍
Adrew W. Appel is Professor of Computer Science at Princeton University. He has done research and published papers on compilers, functional programming languages, runtime systems and garbage collection, type systems, and computer security; he is also author of the book Compiling with Continuations. He is a designer and founder of the Standard ML of New Jersey project. In 1998, Appel was elected a Fellow of the Association for Computing Machinery .. << 查看详细
目录回到顶部↑
preface
part i fundamentals of compilation
1 introduction
1.1 modules and interfaces
1.2 tools and software
1.3 data structures for tree languages
2 lexical analysis
2.1 lexical tokens
2.2 regular expressions
2.3 finite automata
2.4 nondeterministic finite automata
2.5 lexical-analyzer generators
3 parsing
3.1 context-free grammars
3.2 predictive parsing
3.3 lr parsing
3.4 using parser generators
3.5 error recovery
4 abstract syntax
4.1 semantic actions
part i fundamentals of compilation
1 introduction
1.1 modules and interfaces
1.2 tools and software
1.3 data structures for tree languages
2 lexical analysis
2.1 lexical tokens
2.2 regular expressions
2.3 finite automata
2.4 nondeterministic finite automata
2.5 lexical-analyzer generators
3 parsing
3.1 context-free grammars
3.2 predictive parsing
3.3 lr parsing
3.4 using parser generators
3.5 error recovery
4 abstract syntax
4.1 semantic actions
前言回到顶部↑
This book is intended as a textbook for a one- or two-semester course in compilers. Students will see the theory behind different components of a compiler, the programming techniques used to put the theory into practice, and the interfaces used to modularize the compiler. To make the interfaces and programming examples clear and concrete, we have written them in Java.
Another edition of this book is available that uses the ML language. Implementation project. The "student project compiler" that we have outlined is reasonably simple, but is organized to demonstrate some important techniques that are now in common use: abstract syntax trees to avoid tangling syntax and semantics, separation of instruction selection from register allocation, copy propagation to give flexibility to earlier phases of the compiler, and containment of target-machine dependencies. Unlike many "student compilers" found in other textbooks, this one has a simple but sophisticated back end, allowing good register allocation to be done after instruction selection.
This second edition of the book has a redesigned project compiler: It uses a subset of Java, called Mini Java, as the source language for the compiler project, it explains the use of the parser generators JavaCC and SableCC, and it promotes programming with the Visitor pattern. Students using this edition can implement a compiler for a language they're familiar with, using standard tools, in a more object-oriented style.
Each chapter in Part I has a programming exercise corresponding to one module of a compiler. Software useful for the exercises can be found at http://uk.cambridge.org/resources/O52182060X (outside North America); http://us.cambridge.org/titles/052182060X.html (within North America).
Exercises. Each chapter has pencil-and-paper exercises; those marked with a star are more challenging, two-star problems are difficult but solvable, and the occasional three-star exercises are not known to have a solution. Course sequence. The figure shows how the chapters depend on each other.
A one-semester course could cover all of Part I (Chapters 1-12), with students implementing the project compiler (perhaps working in groups); in addition, lectures could cover selected topics from Part II.
An advanced or graduate course could cover Part II, as well as additional topics from the current literature. Many of the Part II chapters can stand independently from Part I, so that an advanced course could be taught to students who have used a different book for their first course.
In a two-quarter sequence, the first quarter could cover Chapters 1-8, and the second quarter could cover Chapters 9-12 and some chapters from Part II. Acknowledgments. Many people have provided constructive criticism or helped us in other ways on this book. Vidyut Samanta helped tremendously with both the text and the software for the new edition of the book. We would
also like to thank Leonor Abraido-Fandino, Scott Ananian, Nils Andersen, Stephen Bailey, Joao Cangussu, Maia Ginsburg, Max Hailperin, David Hanson, Jeffrey Hsu, David MacQueen, Torben Mogensen, Doug Morgan, Robert Netzer, Elma Lee Noah, Mikael Petterson, Benjamin Pierce, Todd Proebsting, Anne Rogers, Barbara Ryder, Amr Sabry, Mooly Sagiv, Zhong Shao, Mary Lou Sofia, Andrew Tolmach, Kwangkeun Yi, and Kenneth Zadeck.
Another edition of this book is available that uses the ML language. Implementation project. The "student project compiler" that we have outlined is reasonably simple, but is organized to demonstrate some important techniques that are now in common use: abstract syntax trees to avoid tangling syntax and semantics, separation of instruction selection from register allocation, copy propagation to give flexibility to earlier phases of the compiler, and containment of target-machine dependencies. Unlike many "student compilers" found in other textbooks, this one has a simple but sophisticated back end, allowing good register allocation to be done after instruction selection.
This second edition of the book has a redesigned project compiler: It uses a subset of Java, called Mini Java, as the source language for the compiler project, it explains the use of the parser generators JavaCC and SableCC, and it promotes programming with the Visitor pattern. Students using this edition can implement a compiler for a language they're familiar with, using standard tools, in a more object-oriented style.
Each chapter in Part I has a programming exercise corresponding to one module of a compiler. Software useful for the exercises can be found at http://uk.cambridge.org/resources/O52182060X (outside North America); http://us.cambridge.org/titles/052182060X.html (within North America).
Exercises. Each chapter has pencil-and-paper exercises; those marked with a star are more challenging, two-star problems are difficult but solvable, and the occasional three-star exercises are not known to have a solution. Course sequence. The figure shows how the chapters depend on each other.
A one-semester course could cover all of Part I (Chapters 1-12), with students implementing the project compiler (perhaps working in groups); in addition, lectures could cover selected topics from Part II.
An advanced or graduate course could cover Part II, as well as additional topics from the current literature. Many of the Part II chapters can stand independently from Part I, so that an advanced course could be taught to students who have used a different book for their first course.
In a two-quarter sequence, the first quarter could cover Chapters 1-8, and the second quarter could cover Chapters 9-12 and some chapters from Part II. Acknowledgments. Many people have provided constructive criticism or helped us in other ways on this book. Vidyut Samanta helped tremendously with both the text and the software for the new edition of the book. We would
also like to thank Leonor Abraido-Fandino, Scott Ananian, Nils Andersen, Stephen Bailey, Joao Cangussu, Maia Ginsburg, Max Hailperin, David Hanson, Jeffrey Hsu, David MacQueen, Torben Mogensen, Doug Morgan, Robert Netzer, Elma Lee Noah, Mikael Petterson, Benjamin Pierce, Todd Proebsting, Anne Rogers, Barbara Ryder, Amr Sabry, Mooly Sagiv, Zhong Shao, Mary Lou Sofia, Andrew Tolmach, Kwangkeun Yi, and Kenneth Zadeck.
评论交流
共有20人开贴评论 57人参与评论 15人参与打分 查看
发表于:2005-1-4 13:59:00
编译器最牛的有三本书,即你所说的“龙虎鲸”一本是dragon book,就是Ullman的那本;一本是whale book,就是Advanced Compiler Design and Implementation ,Muchnick的那本;最牛的一本是tiger book,Appel的那本Modern Compiler Implementation in XX。总共有三种语言实现(C,ML,Java);前两本都有影印了,惟独最后一本只有高教影印了Java实现的版本(第二版) ,而C和ML实现的版本没有影印,Tiger book好像都是Cambridge University Press出版的,我买的Java版本中没有见到Pearson Ed的字样,希望能够出版!!!!!大家支持一下!!!!
评价等级:





发表于:2005-6-23 12:46:00
assembler and loader
Building_an_Optimizing_Compiler
Code Generation In Action (2003)
compiler construction in c
Compiler Construction Principles and Practice(sced)
compiler design - algebraic specifications ch. 5 (source unknown)
compiler design - formal syntax and semantics (1995 slonneger et al)
compilers and compiler generators in c
Concrete Mathematics
constructive type theory 1991 reverse
engineering_a_compiler
linker and loader
Modern Compiler Implementation in Java 2nd Edition.chm
Optimizing Compilers for Modern Architectures_A_Dependence-based_Approach
Writing Optimizing Compiler
Compiler Design - Introduction To The Theory Of Computation (1989 Gurari)
我有这些电子版,需要的留下email,大家随便给点记分。
Building_an_Optimizing_Compiler
Code Generation In Action (2003)
compiler construction in c
Compiler Construction Principles and Practice(sced)
compiler design - algebraic specifications ch. 5 (source unknown)
compiler design - formal syntax and semantics (1995 slonneger et al)
compilers and compiler generators in c
Concrete Mathematics
constructive type theory 1991 reverse
engineering_a_compiler
linker and loader
Modern Compiler Implementation in Java 2nd Edition.chm
Optimizing Compilers for Modern Architectures_A_Dependence-based_Approach
Writing Optimizing Compiler
Compiler Design - Introduction To The Theory Of Computation (1989 Gurari)
我有这些电子版,需要的留下email,大家随便给点记分。
| 我要写评论 |
| 查看所有评论交流(共20条) |








点击看大图



加载中...

