| Preface | |
| Introduction | |
| Literate Programs | |
| How to Read This Book | |
| Overview | |
| Design | |
| Common Declarations | |
| Syntax Specifications | |
| Errors | |
| Storage Management | |
| Memory Management Interface | |
| Arena Representation | |
| Allocating Space | |
| Deallocating Space | |
| Strings | |
| Types | |
| Representing Symbols | |
| Representing Symbol Tables | |
| Changing Scope | |
| Finding and Installing Identifiers | |
| Labels | |
| Constants | |
| Generated Variables | |
| Code Generation Interface | |
| Representing Types | |
| Type Management | |
| Type Predicates | |
| Type Constructors | |
| Function Types | |
| Structure and Enumeration Types | |
| Type-Checking Functions | |
| Type Mapping | |
| Lexical Analysis | |
| Type Metrics | |
| Interface Records | |
| Symbols | |
| Types | |
| Dag Operators | |
| Interface Flags | |
| Initialization | |
| Definitions | |
| Constants | |
| Functions | |
| Interface Binding | |
| Upcalls | |
| Parsing | |
| Input | |
| Recognizing Tokens | |
| Recognizing Keywords | |
| Recognizing Identifiers | |
| Recognizing Numbers | |
| Recognizing Character Constants and Strings | |
| Expressions | |
| Languages and Grammars | |
| Ambiguity and Parse Trees | |
| Top-Down Parsing | |
| FIRST and FOLLOW Sets | |
| Writing Parsing Functions | |
| Handling Syntax Errors | |
| Expression Semantics | |
| Representing Expressions | |
| Parsing Expressions | |
| Parsing C Expressions | |
| Assignment Expressions | |
| Conditional Expressions | |
| Binary Expressions | |
| Unary and Postfix Expressions | |
| Primary Expressions | |
| Expression Semantics | |
| Conversions | |
| Unary and Postfix Operators | |
| Function Calls | |
| Binary Operators | |
| Assignments | |
| Conditionals | |
| Constant Folding | |
| Statements | |
| Representing Code | |
| Execution Points | |
| Recognizing Statements | |
| If Statements | |
| Labels and Gotos | |
| Loops | |
| Switch Statements | |
| Return Statements | |
| Managing Labels and Jumps | |
| Declarations | |
| Translation Units | |
| Declarations | |
| Declarators | |
| Function Declarators | |
| Structure Specifiers | |
| Function Definitions | |
| Compound Statements | |
| Finalization | |
| The Main Program | |
| Generating Immediate Code | |
| Eliminating Common Subexpressions | |
| Building Nodes | |
| Flow of Control | |
| Assignments | |
| Function Calls | |
| Enforcing Evaluation Order | |
| Driving Code Generation | |
| Eliminating Multiply Referenced Nodes | |
| Structuring the Code Generator | |
| Organization of the Code Generator | |
| Interface Extensions | |
| Upcalls | |
| Node Extensions | |
| Symbol Extensions | |
| Frame Layout | |
| Generating Code to Copy Blocks | |
| Initialization | |
| Selecting and Emitting instructions | |
| Specifications | |
| Labelling the Tree | |
| Reducing the Tree | |
| Cost Functions | |
| De | |
| Table of Contents provided by Publisher. All Rights Reserved. |