Addison wesley aho, sethi, ullman compilers principles, techinques, and tools

804 264 0
Addison wesley   aho, sethi, ullman compilers principles, techinques, and tools

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Preface This bwk is a descendant of Prinrlpdes of Compiler Design by Alfred V , Aho and Jeffrey D UNman Like its ancestor, it is intended as a text for a first course in compiler design The emphasis is on solving p b l c m s universally cnwuntered in designing s language'translator, regardless of the source or target machine Although few p p l e are likely to build or even maintain a compiler for a major programming language, the reader can profitably apply the ideas and techniques discussed in this book to general software design Fwr example, the string matching techniques for building lexical analyzers have also been used in text editors, information retrieval systems, and pattern recognition programs Curttext-free grammars and syntax-d irected definitions have been u d to build many little languages such as the typesettin6 and figure drawing systems that prproduced this h k , The techniques of d e optimization have been used in program verifitrs and in programs that prduce 'Structured" pdograms from unstructured ones The m a p topicn' in cornpib design are covered in depth The first chapter intrduccs the basic structure of a compiler and is essential to the rest of the bQk Chapter presents a translator from infix to p t f i x expressions, built using some of the basic techniques described in this book, Many of the remaining chapters amplify the material in Chapter Chapter covers lexical analysis, regular expressions, finitc-state machines, and scanner-generator tools The maprial in this chapter i s broadly applicabk to text-prcxx~ing* Chapter cuvers the major parsing techniques in depth, ranging from t h t recursiue&scent methods that are suitable for hand implementation to the mmputatianaly more intensive LR techniques that haw ken used in parser generators Chapter introduces the principal Meas in syntaxdirected translation This chapter is used in the remainder of the h k for both specifying and implcmenting t rrrnslations Chapter presents the main ideas for pwforming static semantic checking, Type checking and unification are discuswd in detail, PREFACE Chapter discusses storage organizations u d to support the run-time environment of a program Chapter begins with a discussion of intermediate languages and then shows how common programming language constructs can be translated into intermediate d e Chapter covers target d e generation Included are the basic "on-thefly" d e generation mcthds, as well as optimal rnethds for generating d t for expressions, Peephole optimization and dt-generator generators arc also covered Chapter 10 is a wmprehensivc treatment of d t optimization Data-flow analysis methods are covered in detail, as well as the principal rnethds for global optirnhtiw Chapter I discusses some pragmatic issues that arise in implementing a compiler Software engineering and teaing are particularly important in m- pller mnstxuctim Chapter 12 presents case studies of wmpikrs that have been ms~nrctcd udng some of the techniques presented in this book Appndix A dcscriks a simple language; a "subset" of Pascal, that can be used as the basis of an implementation project, The authors have taught both introductory and advanced courses, at the undergraduate and graduate levels, from the material in this b k at: AT&T &11 hbratories, Columbia, Princeton, and Stanford, An introductory mmpibr course might cover matmid from the following sections of this book: introduction lexical analysis symbl tables parsing Chapter and Sections 2.1-2.5 2.6 3.1-3.4 2.7, 7-6 2.4, 4.1-4,4 synt a x ireded trawlation type checking run-time organization intermediate code generation d e generation d e optimization Informmtbn needmi for a programming project like the one in Apptndix A is introduced in Chapter A course stressing twls In compiler construction might include tbe dimssion of lexical analyzer generators in Sections 3.5, of pmw generators in SIXtions 4.8 and 4.9, of code-generator generators in Wim 9.12, and material on techniques for compiler constriction from Chapter I I An advanced course might stress the algorithms used in lexica1 analyzer generators and parser gcneratms discussed in Chapters and 4, the material PREFACE on type equivalence, overloading, polymurphisrn, and unifica~ionIn Chapter , the material on run-time storage organizalion in Chapter 7, the paiterndirected code generation methods discussed in Chapter 9, and material on code optimization from Chapter 10 Exercises As before: we rate exercises with stars Exereism without stars test understanding of definitions, singly starred exercises are intended for more advanced courses, and doubly starred exercises are fond for thought Acknowledgments At various stages in the writing of this book, a number of people have given us invaluable comments on the manuscript In this regard we owe a debt of gratitude to Bill Appelbe Nelson Beebe, Jon Btntley, Lois Bngess, Rodney Farrow, Stu Feldman, Charles Fischer, Chris Fraser, Art Gittelman, Eric Grosse, Dave Hanson, Fritz Henglein, Robert Henry, Gerard Holzmann, Steve Johnson, Brian Kernighan, Ken Kubota, Daniel Lehmann, Dave MacQueen, Dtanne Maki, Alan Martin, Doug Mcllroy, Charles McLaughlin, John Mitchell, Elliott Organick, Roberr Paige, Phil Pfeiffer, Rob Pike, Kari-Jouko Riiiha, Dennis Rirchic Srirarn Sankar, Paul Stwcker, Bjarne Strmlstrup, Tom Szyrnanskl Kim Tracy Peter Weinberger, Jennifer Widom and Reinhard Wilhelra This book was phototypeset by the authors using the cxcellenr software available on the UNlX system The typesetting c o m n m d read picJk.s tbl e q n I t m f f -ms p i c is Brian Kernighan's language for typesetting figures; we owe Brian a special debt of gratirude for accommodating our special and extensive figuredrawing needs so cheerfully, tbl is Mike Lesk's language for laying out tables eqn is Brian Kernighan a d Lorinda Cherry's language for typesetting mathcrnatics trofi is Joe Ossana's program for formarring text for a phototypesetter, which in our case was a Mergenthakr Lino~ron202M The ms package of troff macros was written by Mike Lesk in addition, we managed the lext using make due to Stu Feldman, Crass references wirhin the text.-were mainrained using awk crealed by A l Aho, Brian Kernighan, and Peter Weinberger, and sed created bv Lee McMahon The authors would par~icularlylike to aekoowledp Patricia Solomon for heipin g prepare the manuscript for photocomposiiion Her cheerfuhcss and expert typing were greatly appreciated I D Ullrnan was supported by an Einstein Fellowship of the Israeli Academy of Arts and Sciences during part of the lime in which this book was written Finally, the authors would like thank AT&T Bell Laboratories far ils suppurt during the preparation of the manuscript A,V+A,.R.S J.D.U Contents 1.1 Compilers I 1.2 Analysis of the source program 1.3 The phasa of a compiler 16 1.4 Cousins of the compiler 1.5 The grouping of phases ., I 20 1.6 Compiler-construction tools Bibliographic noles Cbapkr 22 23 A Simple Ompass Cempiler 2.1 Overview 2.2 Syntax definition 2.3 Syntax-directed translation 2.4 Parsing 2.5 A translator for simple expressions 2.6 Lexical analysis 2.7 Incarprating a symbol table 2.8 Abstract stack machines 2.9 Putting the techniques together Exercises Bibliographic notes Chapter bid Analysis 33 3.1 The role of the bxical analyzer 3.2 Input buffering 3.3 Specification of tokens 3.4 Recognition of tokens 3.5 A language for specifying lexical analyzers Finite automata 3.7 From a regular expression to an NFA 3.8 Design of a lexical analyzer generator 3.9 Optimization of DFA-based pattern matchers Exercises Bibliographic notes CONTENTS Chapter Syntax A d y s b 4.1 The role of the parser 4.2 Context-free grammars 4.3 Writing a grammar 4.4 Topdown parsing 4.5 Bottom-up parsing ; - 4.6 Operator-precedence parsing 4.7 LR parsers 4.8 Using ambiguous grammars 4.9 Parser generators Exercises * .*.* *.**** Bibliographic notes Chapter S y n t s K - D i m Translation 5.1 Synta~directeddefinitions 5.2 Construction of syntax trees 5.3 Bottom-up evaluation of Sattributed definitions 5.4 L-attributed definitions 5.5 Topdown translation 5.6 Bottom-up evaluation of inherited attributes 5.7 Recursive evaluators 5.8 Space for attribute values at compile time 5.9 Assigning spare at compiler-construction time LO Analysis of syntaxdirected definitions E ~ercises * * .** .* ' Bibliographic notes Chapter Type khaklng 6.1 Type systems 6.2 Specification of a simple type checker 6.3 Equivalence of type expressions 6.4 Type conversions Overloading of functions and operators 6.6 Polymorphic funclions 6.7 An algorithm for unification Exercises Bibliographic notes 7+1 Source language issues 7.2 Storage organization 7.3 Storage-allocation strategies 7.4 A m s s to nonlocal names CONTENTS 7.5 Parameter passing 424 7.6 Symbol tables .429 7.7 Language facilities for dynamic storage allmation 440 7.8 Dynamic storage alkation techniques , 442 7.9 $orage allocation in Fortran 446 Exercises 455 Bibliographic notes 461 463 Chapter Intermediate C& Generstba 8.I Intcrmediatt languages ** ** , 8.2 Declarations 8.3 Assignment slaternents 8.4 Boolean e~pressions ** .* 8.5 Case statements - 8.6 Backpatching 8.7 P r d u r e calls Bibliographic notes Exercises 9.1 Issues in the design of a code generator 9.2 The target machine 9.3 Run-time storage management 9.4 Basic blocks and flow graphs 9.5 Next-use information 9.6 A simple code generator 9.7 Register allocation and assignment 9.8 The dag representation of basic blwks 9.9 Peephole optimist ion 9.10 Generating code from dagg 9.1 Dynamic programming code-generation algorithm 9.12 Code-generator generators Exercises Bibliographic noles 586 10.1 Introduction I 10.2 The principal sources of optimization 592 10.3 Optimization of basic blocks 598 10.4 Loops in flow graphs .- 602 608 10.5 introduction to global data-flow analysis 10.6 l€erative mlutiosi of data-flow equations 624 10.7 Cde-improving transformations 633 10.8 Dealing with aliases 648 CONTENTS 10.9 Data-flow analysis of structured flow graphs 10.10 Efficient data-flow algorithms 10.1 A tool for data-flow analysis 10.12 Estimation of typ +,., 10.13 Sy m b l i c debugging of optimized axle Exercises Bibliographic notes 660 671 680 694 703 711 718 723 Chapter 11 Want to Write a Compiler? Planning a compiler Approaches to compiler development The compilerdevelopment environment Testing and maintenance 723 725 12.1 BQN a preproawr for typesetting mathematics 12.2 Compilers for Pascal 12.3 The C compilers 12.4 The Fortran H compilers - 12.5 The Bliss( l compiler 12.6 Modula-2 optimizing compiler 733 734 735 11 11.2 I 1.3 L 729 731 737 740 742 A l Intrduction 745 A.2 A Pascalsubset 745 A.3 Program structure 745 A.4 Lexical conventions 743 A Suggested exercises 749 A.6 Evolution of the interpreter 750 A.7 Extensions : 751 ? CHAPTER Introduction to Compiling The principles and techniques of compiler writing are so pervasive that the ideas found in this book will be used many times in the career of a cumputer scicnt is1, Compiler writing spans programming languages, machine architecture, language theory, algorithms, and software engineering Fortunately, a few basic mrnpikr-writing techniques can be used to construct translators for P wide variety of languages and machines In this chapter, we intrduce the subject of cornpiiing by dewxibing the components of a compiler, the environment in which compilers their job, and some software tools that make it easier to build compilers 1.1 COMPILERS Simply stated, a mmpiltr i s a program that reads a program written in oae language - the source Language - and translates it inm an equivalent prqgram in another language - the target language (see Fig 1.I) As an important part of this translation process, the compiler reports to its user the presence of errors in the murcc program messages At first glance, the variety of mmpilers may appear overwhelming There are thousands of source languages, ranging from traditional programming languages such as Fortran and Pascal to specialized languages (hat have arisen in vktually every area of computer application Target languages are equally as varied; a target language may be another programming language, or the machine language of any computer between a microprocasor and a supercwmputcr, Compilers arc sometimes classified as ~ingle~pass, multi-pass, load-and-go, debugging, or optimizing, depending on how they have been constructed or on what function they arc suppsed to pcrform Uespitc this apparent complexity, the basic tasks that any compiler must perform arc essentially the same By understanding thcse tasks, we can construct compilers h r a wide variety of murcc languages and targct machines using the same basic techniques Our knowlctlp about how to organim and write compilers has increased vastly sincc thc first compilers startcd to appcar in the carty 1950'~~ it is difficult to give an exact date for the first compiler kcausc initially a great deal of experimentat ion and implementat ion was donc independently by several groups Much of the early work on compiling deal1 with the translation of arithmetic formulas into machine cads Throughout the lY501s, compilers were mnsidcred notoriously difficult programs to write The first Fortran ~Cimpller,for exampie, t o o k f staff-years to implement (Backus ct a[ 119571) We have since discovered systematic techniques for handling many of the imponant tasks that mcur during compilation Good implementation languages, programming environments, and software t w l s have also been developed With the% advances, a substantial compiler can be implemented even as a student projtxt in a onesemester wmpilar-design cuursc+ There are two puts to compilation: analysis and synthesis The analysis part breaks up the source program into mnstitucnt pieces and creates an intermdiate representation of the sou'rce pmgram Tbc synthesis part constructs the desired larget program from the intcrmcdiate representation Of the I w e parts, synthesis requires the most specialized techniques, Wc shall msider analysis informally in Sxtion 1.2 and n u t h e the way target cude is synthesized in a standard compiler in % d o n 1.3 During anaiysis, the operations implicd by thc source program are determined and recorded in a hierarchical pltrlrcturc m l l d a trcc Oftcn, a special kind of tree called a syntax tree is used, in which cach nodc reprcscnts an operation and the children of a node represent the arguments of the operation Fw example a syntax tree for an assignment statemcnt i s shown in Fig 1.2 :e / ' \ gasition / initial + '- / rate h.1.2, + \ 60 Syntax trtx lor @sit ion :+ i n i t i a l + r a t e 60 782 INDEX s51, 564, 592-595, 59P600, 633636,709, 39-74 L ,743 See also Available expression Case statement 497-500 Cattell, R G, Ci 511, 584 CDC 584 txm CFG See Context-free grammar Chaitin, G J 546 583 Chandra, A K 546,583 Chang, C H 278 Changed variable 657-660 Charader class 92, 97 148 Sse also Alphabet Cherniavsky, J C 720,722 Cherry, L L 9, 158, 252, 733 Commutativity %, 684 Compaction, of storage 446 Compiler-compiler 22 Composition 684 Compression See Encoding of types Concatenation 34-35, 92-% 123 Concrete syntax t r e 49 ke also Syntax tree Choe, K M 278 Conditiom, d e 54 Cond itimal expression See Boolean expression Chomsky N, Configuratim 217 Chomsky normal form 276 Chow, F 583, 719,721 Church, A 387,462 Ciesinger, J 278 Circular syntax-directed definlrbn 287 334-336, 340, 342 Cleveland, W S 462 Closure 93-96.123 Closure of set of items 222-223, 225, Conflict Sae Child 29 23 1-232 See Chamsky rtorml form Cobol 731 Cocke, J 160, 277, 546 583, 718-721 Cwke-Y ounger-Kasami algorithm 1m, 277 736-737 Code motion 596, 638-643 710-71 1, 72 1, 742-743 ' Code optimitat ion 14- 15, 463, 472, M, 3, 530, 554-557, 585-722, 738-740 Coercion 344, 359-360, 387 Coffman, E G 584 Cohen, R wnflict Confluence operator 624, 680.695 Congruence closure %e Congruent nodes Congruent nodes 385, 388 Conservative approximation 61 1, 624, 63Q 652-654, 659-440, 639-6W Constant folding 592, 599, 601 , 63 1-685, 687-688 Context-free grammar 25-30,4 - , I 82, 165-181,280 See also LL grammar, LR grammar Opqrator grammar Context-free language 168, 172-173, 179- 181 Contiguous evaluation 569-570 Control flow 66-67, 468-470, 488-506 556-557, a, 61 1, 621, 639-690, 720 Control link 348,406-409,423 Control stack 393-394 3% Conway, M E 277 Conway, R W !& 278 I, Copy propagation 592, 594-595,636-638 Copy rule 322-323,325, 428-429 Copy statement 467, 55 I, 594 Copy-restore-linkage 427 I CNF Code generation 15 513-584, Code hoisting 14 Disambiguation rule, Reduce/redue conflicr , Shifthedurn 341 Coloring See Graph coloring Column-majw form 48 1-482 Comment 84-85 Common block 432 -448 454-455 Common Lisp 462 Comrnm subexpressim 290, 531, 546, Corasick, M J 158 Core, of set of items 231 Corntack G V 158 387 DELTA 341 Courcelle, B, 341 Cousot, P 720 Coumt, R 720 Dcmers, A J 278 CPL 387 Cross compiler 726 Cron edge 663 Curry H, 387 Cutler, D 719 Cyclc 177 Cycle, in type graphs 358-359 Cycle-frec grammar 270 CYK algorithm Ctxkc-Younger-Kammi rithm DAG k t Dirccfcd acyclic graph Dangling dse 174- 175 191, 201-202, 249-251 263, 268 Dangling rcfcrcucc 409, 442 Data arca 446, 454-455 Dala layout 399 473-474 Data object Set Objcct Data statement 402-405 Data-flaw analysis 586 6C)B-722 Data-flow analysis framework 43 1-694 Data-flw cnginc 23, 690-694 Data-flow quation 608, 624, 1330 Date, C Daussmann, M, 387 Davidson, J, W 1 , 534 Dcad cclde 53 1,555, 592, 595 Debuggcr 406 Dcbugginy 555 Sce also Symblic debugging Dcclarstion 269, 394-395, 473-478 10 Decor at ion Sce Annotated parse tree Deep acccm 423 Default value 497-498 Definitiofi 529, 610, 632 Definition-use chain Sce Du-chain hkscaillc, J.-P 342, I Dclction , of Iwds 404 Dcnckcr, P+ 158 Dcnotational semantics DcFndcncy graph 279-280 284-287 331 -334 Depth, of rr flow graph W, 672-673 716 Depth-first ordering 296, 6b! 671-673 Depth-first w r c h 660-6154 Dept h-f irst spanning trec 662 Depth-first traversal 36-37, 324-325 393 Dcransart, P+ 342 DeRemcr, F 278, 387 Derivation 29, 167-171 Ekspcyroux, T 388 Dcterrninistic finite automaton I 13, I - 127-128, 132-136 141146, 150, 180-181, 217, 222, 224-226 Deterministic transit ion diagram 100 DFA k c Detcrrninislic finite automaton Diagnostic ScF Error mcssagc Directcd acyclic graph 2W293, 347 4M-466, 471, 546.554, 558-561, 582, 584 598-WZ @M,705-708 Disambiguating rule 171 175, 247-254 26 -264 Disambiguation 387 See also Overloading Display 420-422 Distance bctwcen strings 155 Distributive framework 686-688,692 Distributivity 720 Ditzel D, 583 Do statomen1 86, 111-112 Dominator 6U2, 639, 670-671, 721 Dominator trcc 602 Downcy, P J 388, 584 Dror>ss~pou IOU, S 387 Druseikis F C+ 162 Du-chain 632-633 643 Dummy argumcot Sce Formal parameter Durre K 158 Dynamic allocation 40 40-446 Dynamic chwking 343 347 Dynamic programming 277, 567-572, 84 Dynamic scope 1 422-423 Earley, J 181 277-278 721 Earley's algorithm 160, 277 EBCDIC 59 Edit distance 156 Efficiency 85, 89, 126-128, 144.146 152, M-244, 279, 360, 388, 433, 435-438,451, 516, 618620, 72.4 See also Code optimization Egrep 158 ELI 307 Elshoff, J L 583 Emitter 67-68, 72 Empty set 92 Empty string 27 46, 92 94.96 E n d h g of types 354-355 Engelfriet, 341 Englund, D E 7I Entry to a laop 534 Environment 395 457-458 closure 18-1 1.9, 225 efrec grammar 270 t-production 177, 189, 270 €-transition IQ-IIS, f M EQN 9- LO, 252-254, 300, 723-724 726 733-7 34 Equel 16 Equivalence, of basic blocks 530 Equivalence, of finite automata 388 Equivalence, of grammars 163 Equivalence, of regular expressions 95, 150 Equivalence, of syntax-directed definitions 302-305 Equivalence, of type expressions 352-359 See also Unification Equivalenw statement 432,448-455 Equivalence, under a substitution 37 I, 377-379 Error handling 11, 72-73, 88, 161-162 See also Lexical error, Logical error Semantic error, Syntax error Error message 194, 1-215,' 256-257 Error productions 164-163, 264-266 Ershov, A P MI, 583, 718 Escape character l 10 Evaluation order, for bask blocks 518, 558-56 Evaluation order, for synlax-directed - definitions 285-287, 298-299, 16-336 Evaluation order, for trees 561-580 Eve, l 278 Explicit allocation 440, 443-444 Explicit type cmversion 359 Expression 6-7, 31-32 166, 290-293, 350-351 See also Postfix e~pression Extended basic block 14 External referen& 19 Fabri, J 718 Failure function 15 154 Family, of an induction variable 644 Fang 341 Farrow, R 341-342 Feasible type 363 Feldrnan, S 157, 511, 729 Ferrante, I+ 718 Feys, R 387 Fgrep 158 Fibonacci string 153 Field, o f a record 477-478, 488 Final slate See Accepting state ' Find 378-379 Finite automaton ! 13-144 See also Transition diagram FIRST 45-46, 188-190, 193 Firsipos 135, 137-140 Fischer C Ni 278 583-584 Fischer, M S 158, 442 Flsrrk, A C 428 Flow graph 528, 532-534, $47, 591, 602 % also Reducible flow graph Flow of control 529 See also Control flow Flow-of-control check 343 Floyd, R W 277, 584 FOLDS 341 FOLLOW 188-190, 193 23@231 ' Fdlowps 135, 137-140 Fmg, A C 721 Fwmal parameter 390 Fortran 86, 111-113 157, 208, 386 396, 401-403, 427, 432, 446-455, 481, 602, 718, 723 Fortran H 542, 583 727-728.737-740 data-flow Forward equations 624, 698-702 Forward edge 606 Fosdick L D+ 22 Foster, J M 82,277 Fragmentation 4-43-44 Framc Scc Activation record Frawr, C.W 51 1-522 584 Fredman, M 158 Frege, G 462 Frciburghousc, R A + 512, 583 Frcudenbgcr, S M 719,722 Front end 20,62 Fukuya S 583 Function !ke Procedure Function type 346-347, 352, 361-364 Scc also Polymorphic function GAG 341-342 Gajewska, H 72 Galler, A 462 Ganapathi, M , 583-584 Cannon, D 163 Ganzinger, H 341, 387 Garbage collection 441-42 Garcy, M R 584 Gear C+ W , 720 Gen 603,612-614, 627, 636 Generation, of a string 29 Gcfieric function 364 See also Polymorphic function Gcschkc, C M 489, 543, 583, 71 19, 740 Giegerich, R + 341, 512 584 Glanvilk R S 579, 584 Gbbal error correction 164- 165 Global name 653 Scc a h Nonlml name G h h l optimization 592, 633 Global registcr allocation 542-546 GNF See Greibach normal form Goldberg R Goto, of set of items 222, 224-225, 231232 239 Goto statcmcnt 5Q6 Goro table 216 Graham: R , M 277 462 Graham S L 278, 583-584 720 Graph See Dcpcndcncy graph Dirccted acyclic graph Flow graph, Interval graph, Reducible flow graph, Register-interference graph %arch, Transition graph, Trcc Type graph Graph coloring 545-546 Grau, A A 512 Grcibach normal form 272 Grep 158 Haibt, L M Haley C B 278 Hatstcad, M +H 512, 727 Handle 1%-1% 200 205-206, 210, 225-226 Handlc pruning 197-198 Hanwn, D R 512 Harrison, M , A 278 Harrison, M C 158 Harrison, W H 583,718, 722 Harry, E 341 Hash function 434-438 Hash tablc 498 Hashing 292-293, 433-440 459-460 Hashpjw 435-437 Head 604 Header 603,61I, 664 Heap 397, 735 Heap allocation 401-402 440-446 Hechl M, S 718*721 Heinen, R 719 Held G l b Hclsinki Language Proccssw Sec HLP 410-4 Hcndcrsrm, P B 720 Hcnncssy, J L 583, 721 Hcnry, R R 583-584 Hcrrick H L Hcuft J 158 Hcxt J €3 387 H icrarchical analysis Scc also Parsing Hill U 512 H indlcy R 387 H LP 278, 341 Hwarc, C A K $2 387 H~bbs,S 4HY 511, 540 583-584 8-7 19, 740 Hoffman, C M 584 Holc in w*copc4 12 Hollerith siring 98 Hopcroft, J E 142, 157, 277 ?92, 388, 392, 444-445, 462, 584, 587 Hope 385 I nd ircct ion 472 Induc[ion variablc 596-598 643-648 7W, 72!,739 infix cxprcssion 33 lngalls, D H H 387 lngcrman, P Z 82 lnhcritcd nttributc 34, 28r) 283, 299, 308-3 16 324-325 340 k c niso Attributc hitiid node 532 Initial statc Sce Stalc In- t inc expansion 428-429 Scc also Macru lnncr loop 534, 605 Input symbol 114 instance, of a polymorphic typc 370 Instruction sctcction 516-517 Intcrmcdiatc crde 12-14 563-5 12, 14, 5x9, 71)4 Hopkins M E 546, 583, 719 Homing, J 82, 163, 277-278 Horspooi, R N S 158 Horwitz L P 583 Huct G 584 Huffman, D A 157 Hughes, R A Hunt, J W , 158 Huskcy H D 51 I 727 Hutt B 341 IBM-7090 584 IBM-370 517, S W , SH4, 737,740 Ichbiah D 277 idcmpotcncc 94.684 Idcntificr 56, 36-87 179 ldcntity function 683-684 If sratcmsnt 112-1 13 491-493 504-505 SCC atso Abstract rnachinc, Postfix cxprcssion , Quadruplc Thrceaddress c d c , Trcc Intcrprder 3-4 Intcrproccdural data flow armlgsis 653-MO lnrcrval 664-667 Intcrval nnalysiz 623, MI,667, 72I) See also T , -T, analysis Interval dcpth 672 Interval graph 666 Intcrvd partition 665-666 Irons, E T 82, 278, 340 lshihara, K 722 Item Scc Kcrml itcm, LRI I ) item, LRII)) item lrcratirc data-flow analysis 624-633, 672-473, 690-694 Iverson K + 387 Ikcda, K 583 lmmcdiatc duminatr,r Immcdiatc kt7 recursion I76 Implicit a l l u c d n n 440, 444-446 Implicit typc conrcrsim 359 Important s t a k I34 lndcxcd addrcwing 51 540 lndircct addressing 14-520 I ndircct triplcs 472-473 Jawbi Ch 82 51 , 734 Janas, J , M, 387 Jarvis, J F 83, 158 lamycri, M 341-542 Jcnscn K 82 I 1, 734 745 Johnson, D S 584 I Johnson, S C 4, 157- 158, 257, 278, 340, 354-355, 383, 462, 511, 566, 572, 584, 73 735-737 Johnson, W.L 157 hhnsson, R K 489, 543, 583 718719, 740 J d i a t , M 278 Jones, N D 341, 387, 718, 720 Jourdan, M 342 Joy, W,N 278 Kaiscrwerth, M 158 Kam, J B 720 Kaplan MAA 387, 721 Karp, R M 388 583 Kasami, T 160, 277, 720 Kastcns, Cf 341-342 Kasyanov, V N 720 Katayarna, T 342 Kcizcr, E G 511 Kcnncdy, K 341-342 583 720-321 Kcohanc J 720 Kerncl item 223 242 Kcrnighan, B W 9, 23 82, 158, 252, 462, 723, 730, 733 750 Kcyword 56 86-87, 430 Kicburtz, R B 278 Kildall G.A 634, 680-681, 720 Kili 608, 612-614, 627 636 Kiyono T 583 K lcene closure See Closure Klecne S C 157 K M P algorithm 152 Knuth, D E R, 23-24, 82, 157-158, 277, 340, 3RR, 444 h , 583-584, 672-673, 721, 732 Knu~h-Morris-Prattalgorithm 158 See also KMP algorithm Kolsky, H +G + 718, 737 Komlor J 1% Korcnjak A IA 277-278 Kosaraju, S R 720 Koskimics, K 341 Kostcr, C H A 341 Kou, L 720 Kreps P 16 Label 66-67,467, 506, 515 LaLonde, W R 278 LALR collection of sets nf kerns 238 LALR grammar 239 LALR parsing See Lackahcad LR parsing L A L R parsing table 236-244 Lamb D A 584 Lambda calculus 387 Lampson, B W 462 Landin P S 462 Langmaack, H 12 Language 28,92, 15, 168,203 Lassagne T 584 Lastpos 135, 137-140 Lattice 387 L-att~ibutcddefinition 280, 296-318, 341 Lazy state mnstructim 128, 158 Leader 529 Leal 29 Lecarme, 0.727 Ledgard, H F 388 Left associativity 30-31, 207, 263 Left factoring t 78- I79 Left leaf 561 Left recursion 47-50, 71-72 176-178, 182, 191- 192, 302-305 Left most derivation I69 Lcft-sententid form 169 Leinius R P 278 Lcngaucr, T 721 Lcsk, M E 157 731 Levcrctt , €3 W t 583-584 Lcvy J P 278 LCVY,J.-J 584 Lcwi J 342, 512 + Lcwis, H R 720 Lcwis P M 277.341 Lcx 83, 105-113, 128-129, 148-149 158, 730 Lcxcmc 12,54,56,61, 85,430-431 Lcxical analysis 5, 12, 26, 5440, i , 83-158, 160 172 261 264 738 788 INDEX Lexical environment 457-458 Lexical error 88, 161 Lexica! scope 1 -422 Lcxical value 12, I 1 , 281 Library 4-5, 54 Lifetirnc, of a temporary 480 Lifetime, of an activation 391 410 Lifetime, of an attribute 320-322 324-329 Limit flow graph 666,668 +ear analysis See also Lexical analysis LINGUIST 341-342 Link editor 19 402 Linked list 432-435.439 Lint 347 Lisp 411 440,442, 461, 694, 725 Literal swing 86 Live variable 534-535, 543, 551, 595, 9 - W , 631-632, 642, 653 LL grammar LW, 162, 191-!92, 221, 271) 273, 277, 307-308 Loadcr 19 Local name 394-395,398400, 41 Local optimization 592, 633 Lmwner, P G 718 Logical crror 161 Longest common subsequence I155 Lookahcad 90.1 1 - 13, 134, 215, 230 Lookahcad LR parsing 216, 236-244 254 278 See also Yacc Lookahcad symbol 41 Loop 533-534 544 602dM, 616-618, 660 Loop header See Header Lmp optimization 5% k c also Code motion, Induction variable, Loop unrolling Reduction in strength Loop-invariant computation Scc Code motion Lorho 341-342 Low, J 721 Lowry, E S 542, 583, 718, 721, 727, 737 LR grammar 160, !62, 201-202, 22022 247 273, 278.308 LR parsing 21 5-266, 34 , 518-579 LR{ I ) grammar 235 LRT ! I hem 230-23 LRIOI item 221 Lucas P 82 277 Lundc A 583 Lunnd, H 5g3 L-valuc M-65 229 395 424-429 547 Machinc code 4-5 18 557, 569 Machinc starus 398, 4W-408 MacLarcn M7D 19 MacQuccn, !I B 385,388 Macro 16.17, 84, 429 456 Madsen C M 341 Madsen 0.L 278, 341-342 Mikt 729-73 Manifest constant 107 Marill T 342.583 Marker nonrerrninal 3119 1 - 15 341 Markstein- J 719 721 Marhstein P W 546, 583 Martelli, A 388 278 Maximal munch 578 Maxweli W L 278 Mauney S Maynh, H 340 McArthur R 1, 727 McCarthy, J+ 82, 461, 725 M d l u r e , R M 277 McCraclien, N 388 McCullcrch, W 157 Mcllroy, M D 158 McKeeman, W M 82, 277, 4h2, 584 McKusick M , K + 584 M c k h , H R 583 Muh'uughton, R 157 Medlrrck C W 542 583, 718, 721 727, 717 Mcertens, L 387 Meet operator 68 t Meet-over-paths sotutiun bRP-6%) 692, 694 Memory map 446 Memory organization See Sroragc organiutiim META 277 Mctcalf, M 718 Newcomer, I.M 511, 584 Meyers, R 387 Milkr, R E+ 583, 720 Milner, R 365, 387 Minimum-distance erwr correction 88 Minktr, J 512 Minker, R:G 512 Mitchell, J C 387 Mixed strategy precedence 277 M ixed-mode expression 495-497 ML 365, 373-374, 387 Mwk 82, 511,725, Modula 607 19, 742-743 Newey Moncke, U 341 Monotone framework 686-688,692 Monotonicily 720 Mmtanari U 388 Moore E F \57,721 Moore, J I58 Morel, E 720 Morris, D 340 Morris, J H 158 387-388 Mwris R 462 Morse, S P 277 Mom, l 462 Most dosely nested rule 12, 415 Most general unifier 370-371, 376-377 Moultun P.G 278 Muchnick S+ S 387, 71 8, 720 MUG 341 Muller M.E 278 N Nageli H H 82,511, 734 Nakata, I 583 Name 389 Name eq uiralence of type expressions 35b357 Name-related check 343-344 Natural loop 603-604 Naur P 82, 277, 386, 461 NEATS 342 Neliac 51 1, 727 Nelson R.A Nested procedures 415.422, 474-477 Nesting depth 416 Nesting of activations 391 See also Block structure M C 51 1-512 NF A See Nondcierministic finitc aulornaton Nievergeh, J 583 Node splitting 666-668,679480 Nondeterministic finite automaron 13- 114, 117-128, 130-132, 136 Nondeterministic transithn diagram I84 Nonlocal name 395 41 1-424, 528 Nonrsdlrcible flow graph 607, 679-680 Nonreguhr set 180- 181 See also Regular sel Nonterminal 26 166-167 204-205 %e also Ma~kernonterminal Nori, K V 82, 51 1, 734 Nullabk expression 135, 137-140 Nutt, R Object 389, 395 Objecr code 704 Objecr language See Target language O'Donnell, M J 584 Offset 397, 400,450,473, 524 Ogden W F 342 Olsztyn, J 82, 51 1,725 One-pass compiler See Single-pass translat~on Operalor grammar 203-204 Operator identifitation MI See also Overloading Operator precedence 31 Owrator precedence gransmdr 271-272 Operator precedence, parsing 203-2 15, 277,736 Opcratm prccedende relations 203-204 Optimizing campikr SeeCdeoptirnization Osterweil L 722 Overloading 330,344, 36 1-364, 384-385, 387 P Packed data 399 790 INDEX Padding 399 Pager, D 27K Pai A B 278 Paige R 721 Pair, C 342 Palm, R C 721 Panic mndc 88, 164, 192-193 254 Panini 82 Pararnetcr passing 14-415 , 424-429 653-654 Parenihcses 95 98, If 3- 1'14 Park J C H 278 Parse tree 6-7,28-30 40-43, 49 160, h9- 17 i , !96, 279 296 %e also Syntax tree Parser generator 22-23, 730-73 See also Yucc Parsing 6-7, 12, 30, 40-43,57, -72, 84-85 I 59-278 Sce also ~ ~ l t ~ m - uparsing, p Bounded canrcxt parsing, Topdown parsing Pdrtial order 833-335 Partition 142 Pascal 52 85, 94, 96-97 162-163, 347 349, 356-357, 365-366 396-398, L I , 424-425, 427, 440-442, 471, 481, 510-512 583 719 727-729 734-735 Pass 20-22 Passing en vironmenr 457-458 Paterson M S 388 Pattern matching 85, 129- I3 577-578, 584 PCC 519, 572 584, 735-737 ?-code 734,742 Peephole oprimizar ion 554-558 584 587 Petegr i-Llopar~,E 584 Pennetlo T 278, 387 Period, of a string 192 G 387 Petermn, T G 278 Peterson, W W 462 720 Peyrolle-Thomas, M.-C.777 Phaw !Q See also Code generation, Code uptimizsh Error handling Intcrmediate c d c Lexicel analysis Parsing, Semantic analysis Symbol Persch, [able Phrase-lcvel error recovery 164- 165, 194- 195 255 Pic 456 Pig Liltin 79-80 Pikc, R 82, 462, 730, 750 Pitts, W 157 Plankalk~l386 P L K 164 514 PL/I 21 80, 87 162-163, 383, 387 488, 510, 512, 719 Plotkin, G 388 Poinl 6W Pointcr 349, 409, 467-468, 540-54 , 553, 582.648-653 Poinlcr type 346 Poll;ick, B W 24 ~olldck,1.L 722 Polymorphic fundion 344 364-376 Polymorphic ~ y p e368 Poole, P C 511 Pop 65 Port~bility85, 724 Pumblc C compiler See PCC Portcr, d , H !57 Positive clctsur6 97 See also Ciosure Post E $2 Postfix expression 25, 33-34, 464, M, 470, 509 Postorder travcral 561-562 Powll, M L 719 721 742 Pozefsky D 342 Pralt T W 462 Pratt, V, R 158, 277 Precdmce 1-32, 95, 207, 237-249, 263-264 See also Operator precedence grammar Precedence function 208-2!0 Precedence relations Set Operator precedence relations Prcdeceswr 532 Prcdiclive parsing 44-48 182-188, 192195, IS, 302-308 Predictwe ~ranslatw306-308 Prefix 93 Prefix expression 508 Prebcader 605 Preprocessor 4-5, 16 Pretty printer Procedure 389 Procedure body 390 Prmdure call 202, 3%, 398, 404-4 1 , '467, 506-508,522-527, 553.649 See also Intmprmdural data flow analysis P t d u r e definition 390 Procedure parameter 414-515, 418-4 19 Product See Cartesian product Production 26, 166 Proliler 587 Programming languagc See Ada, Algol APL BCPL, Bliss, C, Cobol, CPL, E L I , Fortran Lisp ML, Mdula, Neliac, Pascal, P U [ , SETL, SIMPL, Push 65 Quadruples 470, 472-473 Qucry intcrprctcr Qucue 507-508 Quicksort 390, 588 Rabin, M+0 i57 624-627, 652-653, 674-680, 684 Recognizer 13 Record typc 346, also - 565, 739-743 Register assignment 15 517, 537-540 Smalltalk, Snob1 Programming project 745-75 Project, programming 745-75 I Propagation, of Imkahcad 242 Prusscr, R T 72 Purdorn, P.W 341, 721 Radin, O 387 Raiha, K.-J 278, 341-342 Ramanathan, J 341 Randell, 24, 82, 462, 512 Rat for 723 Rcaching definition 10-621 Lcft recursion, Right recursion, Tail rccursim Rccursivt-dc.wenr parsing 44, 82, I I 182, 736 740 Rcduceircduce flict 20 , 237, 262, 578 RcducibL now graph W-608.664, W , 668, 714-715, 740 Reductim 195, 199, 21 1-213, 216, 255 Reduction in strength 557, 59b598 601 644, Redundant cvde 554 Rcdziejowski, R R 583 Rcfcrcncc See Vsc Rcfcrcncc count 445 Rcgion 61 1-612, 669-670.673-679 Rcgistcr 519-521 Register allocation 17, 542-546, 562See 359 477-478 Recursion 6-7, 165, 16-3 18 329-332, 391 401 544-545 Rcgistcr dcwripmr 537 Rcgistcr pair 17, 5b6 Rcgistcr-intwfcrcnw graph 546 Rcgresion test 73 Rcgular d d i n ition 96 107 Rcgular cxprcssion 83, 94-98, 107, 113, 121-125 129, 135-141, la, 172173, 26R-269 Rcgular set 98 Rchostability 724 Rcif.j H + 720 Rcincr, A H 51 I , 584 Rciss, S P, 462 Rclative ddrcss Scc Offset Rclmatable machine mdc 8, 15 Relocation bit 19 Rcnaming 531 Rcnvoise, C 720 Rcps.T W 341 Rcsrvcd ward 56 87 Rcturgctability 724 Rctargcling 463 Rctcntion of locals 401-403 410 Rctrcating cdgc 663 Return addrcss 407.522-527 Return nodc 654 792 INDEX Rcturn sequencc Rcturn value 399, W407 Reynolds, J C+ 388 Rhdes, S,P 278 Richards, M 511 584 Right associativity 30-3 1, 207, 263 Right leaf 562 Right recursion 48 Rightmost derivation 169, 195- 197 Right-sentential form 169, 1% Ripken, K 387, 584 Ripley, G D 162 Ritchie D M 354,462, 1, 735-737 Robinson, I, A 388 Rogoway, H P 387 Rohl, J S 462 Rohrich, J 278 Root 29 Roscn, B K 719-720 Scanncr generalor 23 See also Lex Scanning % Lexical analysis %arbrough, R G 718, 737 Schaefcr M 718 Schaffer, J B+ 719 M a t z , B R 51 1, 584 Schonhrg, E+ 721 Schorre, D.V 277 Schwartz, J T 387 583, 718-721 b p e 394.41 1, 438-440,459,474479 Scott, D 157 Search d a graph 19 See a h Depth-first search Sedgewick, R 588 Semantic action 37-38, 260 Semantic analysis 5, Semantic error 16 1, 343 Roscn, S, 24 Semantic rule 33, 279-287 Rwcnkrantz, D J 277, 341 Roslec, L 723 Ross, I) T 157 Rounds, W.C 342 Rovner, P+ 72 Row-major form 48 1-482 Run-time support 389 See also Hcap allocation, Stack allocation Russell, L 24 82 462, 512 Russell, S R 725 R u m , W +L 278 R-value 64-65 229 395, 424-429, 547 Ryder, B ,721-722 Semantics 25 s Saal, H J + 387 4arinen M 278, 341-342 Safe approximation See Coowvative approximation Samelwn, K 340 Sankoif, D 158 Sannella, D.T 385 SPrjakoski, M 278, 341 Sattribuccd definition 28 1, 293-296 Save aatcment 402-403 Sayre, D+ Scanner 84 Sentencc 92*168 Sententid form 168 Sentinel 91 Sethi, R 342, 388, 462, 566, 583-584 SETL 387,694-695, 719 Shallow access 423 Shared node 6 Sharir, M 719 721 Shcll 149 Sheridan, P, B 2, 277, 386 Shift 199, 216 Shiftireduce conflict 201, 213-2 15, 237, 263-264,578 Shift-reduce parsing 198-203,206 See also LR parsing, Operator prc cedence parsing Shimasaki, M 583 Short-circuit code 490-49 Shustek L J Si& effect 280 583 Signature, of a DAG node 292 Silicon compiler SlMPL 19 Simple LR parsing 216, 22 t -230, 254, 270 Simple precedence Simple syntax-directed translation 3940, 298 2n INDEX 793 Single production 248, 270 Singk-pass translation 279, 735 Sippu S 278, 341 Skeletal parsc tree 206 SLR grammar 228 SLR parsing See Simple LR parsing SLR parsing table 227-230 %-ringer, W 387 Snob1 41 Soffa, M L 722 Sbisalon-Soininen, E 277-278, 341 S u n d type system 348 3urage 395 Source language I Spillman, T.(3 721 Subsequence 93 Sce also Longest common wbse- Spontanwus generatiun, of lookahcad 24 Stack 126, 186, 198, 217, 255, 215-276, 290 294-296, 310.3L5, 324-328 393-394 397.476-479 562, 735 See also Control stack Stack allocation 401% 404-412, 522, 524-528 Stack machine 62-69,4M 584 Start statc 100 Qart symbol 27, 29 166, 281 Statc 100, 114, 153, 216, 294 Statc minimization 141- 144 State (of stwage) 395 St~temcnt26, 28, 32 67 352 See also Assignment statement, C a x statement, Copy statement, Do statement Equivalence state- mcnt Gnto statement if statement, Whilc shtemcnt Static allmation 401-403 522-524, 527-528 Static chccking 343.347 722 Static mpe See Lcxkat scope Staveren H van 1 ,584 3dio.h 58 Srcarns, R E 277, 341 Steel, T B 82, 511, 725 Steele, G +L 462 Stern, H Stevenwn, J W 1, 584 Stuckhausen, P.F+ 584 Sonebraker M 16 Storage alhiat ion 4Ui -411 432, 440-446 Storage organization 396-400 String 92, 167 String table 431 Strong, J 82, 1 , 725 Strongly noncircular synt ax-directed definition 332-336, 340 Strongly typed language 348 ' Stroustrup, B 437 Structural equivalcn~c, of type expressions 353-355 376,380 Structure editor quenct Subscr wnstrudion 117-121 134 Substitution 370-37 1, 376-379 Substring 93 Successor 532 Suffix 93 Sussman,G 462 Suzuki, N 387.722 Switch statement See Case statement Symbol table 7, 11, Wb2, 34 160 429-440,470,473,475-480, 703 Symbolic debugging 703-7 1 Symbolic dump $36 Symbolic register 545 Synchronizing tokcn 192- 194 Syntax 25 See also ConteM-free grammar Syntax analysis k e Parsing Symtax error 161-165, 192-195, 199, 206, 10-2 15, 18, 254-257, 264-266 275, 278 Syntax tree 2, 7, 49, 287-290,464-466, 47 See also Abstract syntax tree, Concrete syntax tree, Parse tree Syntax-directed definition 33, 279-287 Sx also Annotaled parse troc, Syntax-directcd translation Syntax-directed translation 8, 25, 33-40 46-54, 279-342, 464-465, 468-470 Syntaxdirected translation engine 23 &e also GAG HLP, LINGUIST 794 INDEX MUG NEATS Synthesized attribute 34 280-282, 298- 299, 316, 325 See also Attribute Szcmercdi, E 158 Szymanski T.G 158 584 engine Parscr gcncratw, Scanner generator, Syntax-directed transla tion eriginc Top element 684 Topdown paning 41-48, 176, 181-195, 302, 34 , 463 Scc also Predictive parsing, Recursive-descent paning Table comprcmion 144- 146, I5 244-247 Ttlblc-driven parsing 186, 190-192 16-220 Scc also Canonical LR parsing LALR parsing, Opcrator prccedencc parsing, SLR parsing Tai K C 2751 Tail 604 Tail rwursion 52-53 Tancnbaum; A S 511,584 Tantzen, R G 82 Targel Imguage Target machine 724 Tarhio J 341 Tarjan, R E 158, 388,462, 720-72 Tdiagram 725-728 Tcmprary 398, 470, 486481 535, 635 639 Tcrtncnbaum A M 387 720-721 Tcnncnt R D 462 Terminal 26 165-167 281 Testing 73 1-732 8-9, 16-17, 82, 731 Text cdkor !58 Tcxt formatter 8- 10 Thompwn K 122, 158, 601, 735 Three-address d e 13- 14, 46W72 Thunk 429 Ticnari.M 278.341 Tjiang, S 584 TMC 277 Token 4-5, 12, 26-27', 56, 84-86, 98, 165, 179 Takuda T 278 Tokura, N, 720 T -T analysis 667-668 673-680 Tmls 724 Sec o h Automatic c d c generator, Compilcrampilcr, D a b - fluw , Topological sort 285 551 Trnbb Pardo L 24 Transfer function 674, 681, 689 Transition diagram 99- 105, 14, 183- 85 226 Sce also Finitc automaton Transition funclion 14, 153- 154 Transition graph 14 Transition tablc 114-1 15 Translation rule 108 Translotion s~hcmc37-40, 297-301 ~ranslhor-writingsystcrn %e Compiler-compilcr Traversal 36, 3163 19 See also Dcpth-first traversal Trcc 2,347,449 !kt also Activation twc, Depth-first spanning tree, Dt~minator tree, Syntax tree Trec rewriting 572-580, $84 Trcc-banslat ion scheme 574-576 Trcvillyan, L H 18 Trickcy H W Trie 151, 153-154 Triples 470-472 Trittcr, A 82 511, 725 TROFF 726 733-734 Two-pass assembler 18 Type 343-388 Type checking 8, 343-344 347 514 Type constructor 345 Type mnvcrsion 359-360, 435-487 See also Coercion Type cstirnation 694-702 T y pc expression 345-347 Type graph 347, 353, 357-359 T y v infcrcnce 364-367, 373-376, 694 Type name 345-346, 356 Typ system 347-348, 697-698 Type variabie 3h6 U Ud-chain 621, 642-&I3 Ukkonen, E, 277 Ullrnan; J D 4, 142, 157, 181, 204, 277-278, 292, 387, 392, 444-445, 462, 566, 583-584 587-588, 7Z@'12! Unambiguous definition 610 Unary operator 208 UNCOL 82, 511 Unification 376372, 376380,388 U nim 93-96, 122- 123,378-379 Uniqucness check 343 Unit production See Single production Universal quantifier 367-3153 UNIX 149 158, 257, 584.725, 735 Unreachable code Sec Dead code Upwards exposed usc 633 Usage munt 542-544, 583 U w 529 534535,632 U=definition chain Sce Ud-chain Usekss symbal270 Valid item 225226, 231 Value number 292-293, 635 Va be-result linkage Sec Copy-restore-linkage Van Staveren &e Staveren, H van Vanbegin, M + 342, 512 Ward, P+ 341 Warren, S K 342 Wasikw, S, G 534 WATFIV 514 Watt, D.A 341 Weak prwcdence 277 W E B 732 Wekt, H 277 Wegbreit, B 387, 720 Wegman, M N 388, 72@721 Wegner, P 719 Wegsiein, J H 82, 157, 511, 125 Weihl, W E, 721 Weinberger, P J+ 158, 435 Weingart, S 584 Weinstock, C B 489, 543, 583, 19,740 Welsh, J 387 Wexelblat, R L 24, 82 While statement 491493, 504-505 White space 54,8445, 99 Wilcox, T.R 164, 278 Wilhelm, R + 341, 512 Winograd, S 583 W interstein G 387 Wirth, N 82, 277-278, 462, 512, W d , D 277 Word 92 Wortman, D 82, 277 Wossner, H 386 Wulf, W A 489, 511, 543, 583-584, 718-719, 740 Variable SBe Identifier, Type variable Variable-length data 406,408-409,413 Very busy expression 13-714 Viable prefix 201, 217, 224-225 230-231 Void type 345, 352 Vyswtsky, V 719 Wagner, R A 158 Waite, W M $1 1-512, 583-584, 720, 73 r ' Walter, K G + 341 Yacc 257-266, 730.736 742 Y arnada, H 157 Yannakakis, M 534 Kao, A, C 158 Yellin, D 342 Yield 29 Younger, D H '160, 277 7% INDEX Z II Zimrnermann, E 341 Zuw.K 386

Ngày đăng: 28/08/2016, 12:27

Từ khóa liên quan

Mục lục

  • Compilers: Principles, Techinques & Tools

  • Preface

  • Contents

  • 1. Introduction to Compiling

  • 2. A Simple One-Pass Compiler

  • 3. Lexical Analysis

  • 4. Syntax Analysis

  • 5. Syntax-Directed Translation

  • 6. Type Checking

  • 7. Run-Time Environments

  • 8. Intermediate Code Generation

  • 9. Code Generation

  • 10. Code Optimization

  • Bibliography

  • Index

Tài liệu cùng người dùng

Tài liệu liên quan