Crafting a Compiler - Charles Fischer, Richard J. LeBlanc Jr., Ron K. Cytron, Richard LeBlanc

Crafting a Compiler

Featuring Java
Buch | Hardcover
832 Seiten
2007
Pearson (Verlag)
978-0-201-38593-9 (ISBN)
47,95 inkl. MwSt
  • Titel wird leider nicht erscheinen
  • Artikel merken
Presents an introduction to compilers. This title takes a language-neutral approach that focuses the reader on the concepts covered in the text. Students can then apply these concepts to the Java programming assignments and use the Java Virtual Machine to build a compiler.
This textbook is a new version of Charles Fischer and Richard LeBlanc's classic introduction to compilers. With the addition of educator Ron Cyton, this book is adapted to take a language-neutral approach that favors no particular programming language. Students can apply concepts to the Java programming assignments and use the Java Virtual Machine to build a compiler. Advanced courses will benefit from the updated and expanded coverage of back-end topics in this edition.

1. Introduction.


Overview and History of Compilation.



What Compilers Do.



Interpreters.



Syntax & Semantics of Programming Languages.



Organization of a Compiler.



Compiler Design & Programming Language Design.



Architectural Influences of Computer Design.



Compiler Variants.



Program Development Environment.



2. A Simple compiler.


An Informal Definition of the ac Language.



Structure of an ac Compiler.



Formal Syntax Definition of ac.



The Scanner's Job.



The Parser's Job.



Semantic Analysis.



Code Generation.



3. Scanning.


Overview of a



Regular Expressions.



Finite Automata & Scanners.



The Lex Scanner Generator.



Other Scanner Generators.



Practical Considerations of Building a Scanner.



Translating Regular Expressions & Finite Automata.



Summary.



4. Grammars and Parsing.


Context-free grammars: Concepts & Notation.



Properties of Context-Free Grammars.



Transforming Extended Grammars.



Parsers and Recognizers.



Grammar Analysis Algorithms.



5. LL Parsing.


The LL(1) Predict() Function.



Recursive-Descent LL(1) parsers.



Table-Driven LL(1)Parsers.



Making Grammars LL(1).



The "if-then-else" Problem in LL(1) Parsing.



Properties of LL(1) Parsers.



6. LR Parsing.


Shift-Reduce Parsers.



LR(0) Table Construction.



Conflict Diagnosis.



SLR(k) Table Construction.



LALR(k) Table Construction.



LR(k) Table Construction.



7. Abstract Syntax Trees.


Overview.



Synthesized and Inherited Attributes.



Bottom-up Translation.



Top-down Translation.



Abstract Syntax Trees.



Summary.



8. Symbol Tables.


9. Semantic Analysis of Expression.


Declaration Processing Fundamentals.



Semantic Processing of Simple Declarations.



Semantic Processing for Simple Names and Expressions: AnIntroduction to Type Checking.



10. Semantic Analysis of Control Structures.


Semantic Processing for Control Structures.



Semantic Processing for Procedure Declarations and Calls.



11. Run-Time Storage Organization.


Static Allocation.



Stack Allocation.



Heap Allocation.



12. A Simple View of Code Generation.


Assemble Language and Binary Formats.



Translating ASTs.



Code Generation for ASTs.



Declaration of Scalar Variables and Constants.



Translating Simple Expressions.



Translating Predefined Operators.



Pointer and Reference Manipulations.



Type Conversion.



Assignment Operators.



13. Code Generation for Control Structures, and Subprograms.


Code Generation for Control Structures.



Code Generation for Subprogram Calls.



14. Processing Data Structure Declarations and References.


Semantic Processing for Records and Static Arrays.



Semantic Processing for Pointers and References.



Semantic Processing for General Array Types.



Semantic Processing for Variant Records and Other Union Types.



Semantic Processing for Modules and Classes.



Code Generation for Simple Record and Array References.



Multidimensional Array Organization and References.



Referencing Variant Records and Records with Dynamic Objects.



Code Generation for Pointers and References.



Code Generation for Modules and Classes.



15. Advanced Code Generation.


Translating Expression Trees.



Translating Expression Dags.



Register Allocation Using Graph Coloring.



Automatic Instruction Selection.



Peephole Optimization.



16. Optimization.


Introduction.



Intermediate Languages.



Introduction to data flow frameworks.



Available Expressions.



Dominance.



Live Variables.



Data Flow Frameworks.



Data Flow Graph.



Meet Lattice.



Transfer Functions.



Bit-vectoring problems.



Evaluating Data Flow Frameworks.



Properties of monotone data flow frameworks.



Rate of convergence.



Distributive frameworks.



Static Single Assignment (SSA) Form.



Definition.



Computation.



Optimizations based on SSA Form.



Constant Propagation.



Value Numbering.



Register Assignment. 0201385937T04062001

Erscheint lt. Verlag 28.10.2007
Sprache englisch
Themenwelt Mathematik / Informatik Informatik Betriebssysteme / Server
Informatik Programmiersprachen / -werkzeuge Java
Mathematik / Informatik Informatik Web / Internet
ISBN-10 0-201-38593-7 / 0201385937
ISBN-13 978-0-201-38593-9 / 9780201385939
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
mit über 150 Workouts in Java und Python

von Luigi Lo Iacono; Stephan Wiefling; Michael Schneider

Buch (2023)
Carl Hanser (Verlag)
29,99
Einführung, Ausbildung, Praxis

von Christian Ullenboom

Buch | Hardcover (2023)
Rheinwerk (Verlag)
49,90