logo资料库

《编译原理》 龙书 英文版.pdf

第1页 / 共1038页
第2页 / 共1038页
第3页 / 共1038页
第4页 / 共1038页
第5页 / 共1038页
第6页 / 共1038页
第7页 / 共1038页
第8页 / 共1038页
资料共1038页,剩余部分请下载后查看
Table of Contents
Chapter 1 Introduction
1.1 Language Processors
1.2 The Structure of a Compiler
1.2.1 Lexical Analysis
1.2.2 Syntax Analysis
1.2.3 Semantic Analysis
1.2.4 Intermediate Code Generation
1.2.5 Code Optimization
1.2.6 Code Generation
1.2.7 Symbol-Table Management
1.2.8 The Grouping of Phases into Passes
1.2.9 Compiler-Construction Tools
1.3 The Evolution of Programming Language
Second Edition Alfred V. Abo Columbia University Monica S. Lam Stanford University Ravi Sethi Avaya Jeffrey D. Ullman Stanford University Boston San Francisco New York London Toronto Sydney Tokyo Singapore Madrid Mexico City Munich Paris Cape Town Hong Kong Montreal
Editor Publisher Editor Executive Acquisitions Project Editor Associate Managing Editor Cover Designer Digital Assets Manager Media Producer Senior Marketing Marketing Senior Author Support! Manager Assistant Greg Tobin Michael Hirsch Matt Goldstein Katherine Harutunian Jeffrey Holcomb Joyce Cosentino Marianne Groth Bethany Tidd Michelle Brown Sarah Milmore Wells Technology Specialist Buyer Senior Manufacturing Cover Image Joe Vetere Carol Melville Scott Ullman of Strange Tonic Productions (www.strangetonic.com) used by manufacturers and sellers to distinguish their are claimed as trademarks. Where those designations appear in this Many of the designations products book, and have been printed Addison-Wesley in initial was aware of a trademark caps or all caps. claim, the designations This interior of this book was composed in LATEX. Library of Congress Cataloging-in-Publication Data Compilers: principles, techniques, and tools / Alfred V. Aho ... ret a1.]. -- 2nd ed. p.cm. Rev. ed. of: Compilers, principles, techniques, and tools / Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. 1986. ISBN 0-321-48681-1 1. Compilers Compilers, principles, (alk. paper) (Computer programs) 1. Aho, Alfred V. II. Aho, Alfred V. techniques, and tools. QA76.76.C65A372007 005.4'53--dc22 2006024333 without the prior may be reproduced, Copyright © 2007 Pearson Education, publication any form or by any means, electronic, written permission otherwise, United States material Inc., Rights and Contracts Department, MA 02116, fax your request to 617-848-7047, http://www. of America. For information pearsoned.comllegallper missions. or e-mail at htm. for use of to Pearson Education, in this work, please submit a written request Suite 300, Boston, Street, on obtaining 75 Arlington Inc. All rights reserved. No part of this stored in a retrieval mechanical, system, or transmitted, recording, photocopying, in or Printed in the of the publisher. permission 2 3 4 5 6 7 8 9 lO-CW -10 09 08 07 06
Preface 1986 edition significantly. problems. Computer of this book, the world of compiler to present of resources evolved offer a variety languages have Programming new of design designer must architectures take advantage. Perhaps has found use outside of code optimization most interestingly, that find bugs in software, and most importa of the "front-end" code. And much parsers, and syntax-directed compilers. find ntly, - technology translators - are tools compiler In the time since the has changed compilation which the the venerable It is now used in security grammars, regular still expressions, holes in existing technology in wide use. Thus, our philosophy that few readers We recognize major programming ated with a compiler design and software most commonly the source language. can be applied development encountered language or target from previous in designing machine. versions will build, or even maintain, a compiler for Yet the of the book has not a theory, and to a wide range of problems algorithms associ­ in software changed. models, . We therefore a language problems that are processor, emphasize regardless of Use of the Book in this book. It is common to cover the first half in an undergraduate or even two semesters to cover all or most of the half of the book - stressing or mezzanine level. - in code optimization Here is an outline of the 1 contains and the second two quarters at the graduate It takes at least material course a second course chapters: Chapter issues Chapter tant concept appears Chapter scanner-generator sorts. in the appendix. 3 covers lexical motivational architecture a miniature analysis, regular tools. This material 2 develops in computer v material and also presents and programming-la compiler nguage and introduces later chapters. some background principles. many of the impor­ The compiler itself s, which are then developed in expressions, is fundamental finite-state and of all to text-processing machines,
vi PREFACE the major parsing (LR and , LL) methods, top-down s). 5 introduces ideas in syntax-directed its variant definitions and (recursive-descent 5 and shows how to use it to generate programming language. environment s, especially management of the run-time of code from expressions and basic blocks, and register-allocation It covers generation. construction of basic blocks, theory 7 covers 4 covers of Chapter run-time 6 takes the code for a typical collection. 8 is on object-code the principal translations. Chapter and bottom-up Chapter syntax-directed Chapter intermediate Chapter stack and garbage Chapter generation techniques. 9 introduces Chapter frameworks, data-flow 10 covers Chapter of parallelism traction processors on single 11 talks Chapter the emphasis multidimensional arrays. Chapter and data-flow analysis that reach a given point in the code. the technology that can do more is on numeric and iterative algorithms for including of code optimization, these frameworks. is on the ex­ solving The emphasis of instructions optimization. flow graphs, from small sequences and scheduling them instruction-level about larger-scale parallelism Here, codes that have many tight and exploitation. loops that range over than one thing at once. detection 12 is on interprocedural that takes into account pointer the sequence analysis, aliasing, of procedure calls analysis. It covers Courses work in small teams to create own design. The from material in this book have been taught course a senior/first-y using material fr offered has been regularly is a semester-long project and translators chapters. A highlight ear graduate of this course on program­ at Columbia , Harvard, and Stanford. At Columbia, ming languages the first eight in which students guage of their domains application puter graphics, compiler-comp directed compilers. through machines 12, emphasizing including translation A follow-on gaming, onent generators techniques including graduate matrix a little and implement lan­ have covered music synthesis, com­ student-created languages computation, quantum Students and many other areas. operations such as ANTLR, Lex, and Yacc and the syntax­ discussed in chapters 9 has focused on material optimization code generation and course processors in Chapters diverse use om two and five to build their for contemporary network 1 through from Chapter and multiprocessor the mate­ code there is an introduction to global architectures. roughly course covers At Stanford, a one-quarter introductory rial in Chapters optimization through ter 7. Students implementing data-flow 12, plus the more advanced 8, although 9. The second use a locally analysis material developed, Java-based system algorithms. on garbage compiler course covers Chapters collection from Chap­ Joeq for called 9
PREFACE Prerequisites vii The reader at least discrete is useful. a second mathematics. course should possess some "computer-science sophistication ," including on programming, and courses different in data structures and programming languages Knowledge of several Exercises The book contains indicate hardest exercises exercises have a double extensive harder or parts of exercises exclamation with an exclamation point. point. The exercises, with some for almost every section. We Gradiance. On-Line Homeworks by Gradiance Corp. Instructors may to their class, is an accompanying set of on-line is that there developed the new edition using a technology these homeworks in an "omnibus class" A feature of homeworks assign enroll (without questio are given specific instructor A subscription ns, but your solutions or feedback permits, you are allowed advice as a tutorial look like ordinary questions or students not enrolled in a class may to do the homeworks If you make an incorrect choice you If your again, is offered with all new copies to help you correct to try service your solution. you get a perfect score. until of this an instructor-created class). Gradiance that allows them to the Gradiance are sampled. text sold in North America. web site www . aw . com/gradiance or send email tocomputing@aw. com. For more information, visit the Addison-Wesley Support on the Wo rld Wide We b The book's home page is dragonbook. stanford. edu Here, you will find errata to make available teach them, including descriptions of importa as we learn of them, and backup the notes for each offering of compiler-related as we materia ls. We hope courses We also plan to post homeworks, nt compilers solutions, written and exams. by their implemen ters. Acknowledgements Cover art is by S. Jon Bentley D. Ullman comments draft of this book. Helpful comments of Strange Tonic Productions. of an from: on a number of chapters received and errata were gave us extensive earlier
viii PREFACE Bianculli, Peter Bosch, Marcio Hazelwood, Gaurav Kc, Domenico Vibhav Garg, Kim Krysta gratefully Svore, acknowledged. In addition, Monica errors Remaining would like to thank her colleagues are ours, of course. on the SUIF com­ Olivier Tardieu, and Jia Zeng. The help of all these people is Buss, Marc Eaddy, Stephen Edwards, Wei Li, Mike Smith, Art Stamness, team for an 18-year lesson piler Saman Amarasinghe, Diwan, Avots, Cheong, Amer Anwar Ghuloum, Mary Hall, John Hennessy, David Amy Lim, Benjamin , Heine, Shih-Wei Liao, Jennifer Anderson, Livshits, Carbin, Michael Michael Gerald Robert French, Martin, Dror on compiling: Gerald Aigner, Dzintars Maydan, tin Rinard, Olatunji Steven Michael Whaley, Wilson, Smith, Robert Todd Mowry, Brian Murphy, Jeffrey Oplinger, Ruwase, Constantine Sapuntzaki Sathyanathan Karen Pieper, Mar­ , s, Patrick Christopher Unkel, John Tjiang, Chau-Wen Christopher Wilson, Tseng, and Michael Wolf. NJ A. V. A., Chatham M. S. L., Menlo Park CA R. S., Far Hills J. D. U., Stanford CA June, 2006 NJ
Table of Contents 1 Introduction . . . . . . 1 . 1 Language 1.2 The Structure Processors 1.1.1 Exercises for Section 1.1 of a Compiler . Analysis Analysis . . . . . 1.2.1 Lexical 1.2.2 Syntax 1.2.3 Semantic Analysis 1.2.4 Intermediate Code Generation 1 .2.5 Code Optimization . . . . . 1.2.6 Code Generation 1.2.7 Symbol-T 1.2.8 The Grouping 1.2.9 Compiler-Construction Tools able Management . . of Phases into Passes 1 1 3 4 5 8 8 9 10 . . . . . . . . 10 11 11 . . . . 12 12 13 14 1.3 . . . . . . . 14 . . . . . 15 15 and Implementation 15 17 17 19 Architectures 21 22 23 . . . . . 25 25 26 28 31 31 33 . . . . . . . Distinction Structure . . . . 1.3 The Evolution of Programming . Languages 1.3.1 The Move to Higher-level Languages 1 .3.2 Impacts . . . . 1.3.3 E xercises on Compilers for Section 1 .4 The Science of Building a Compiler Design in Compiler 1.4.1 Modeling 1.4.2 The Science 1.5 Applications of Compiler Technology 1.5.1 Implementation 1.5.2 Optimizations for Computer Computer 1.5.3 Design 1 .5.4 Program 1.5.5 Software of High-Level . Translations Productivity Tools of New 1 .6 Programming Language Basics of Code Optimization . . . . . . . . . . . . . . . . . . . . . Programming Architectures Languages and States Scope and Block . 1.6.1 The Static/Dynamic 1.6.2 Environments 1.6.3 Static 1.6.4 Explicit 1.6.5 Dynamic 1.6.6 Parameter Control Access Scope. . . . . . . . . Passing Mechanisms . . . . ix
分享到:
收藏