Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover image
Title page
Table of Contents
Copyright page
About the Author
Dedication
Foreword
Preface
Changes in the Fourth Edition
The Companion Site
Design & Implementation Sidebars
Numbered and Titled Examples
Exercise Plan
How to Use the Book
Supplemental Materials
Acknowledgments for the Fourth Edition
I: Foundations
I: Foundations
1: Introduction
1.1 The Art of Language Design
1.2 The Programming Language Spectrum
1.3 Why Study Programming Languages?
1.4 Compilation and Interpretation
1.5 Programming Environments
1.6 An Overview of Compilation
1.7 Summary and Concluding Remarks
1.8 Exercises
1.9 Explorations
1.10 Bibliographic Notes
2: Programming Language Syntax
2.1 Specifying Syntax: Regular Expressions and Context-Free Grammars
2.2 Scanning
2.3 Parsing
2.4 Theoretical Foundations
2.5 Summary and Concluding Remarks
2.6 Exercises
2.7 Explorations
2.8 Bibliographic Notes
3: Names, Scopes, and Bindings
3.1 The Notion of Binding Time
3.2 Object Lifetime and Storage Management
3.3 Scope Rules
3.4 Implementing Scope
3.5 The Meaning of Names within a Scope
3.6 The Binding of Referencing Environments
3.7 Macro Expansion
3.8 Separate Compilation
3.9 Summary and Concluding Remarks
3.10 Exercises
3.11 Explorations
3.12 Bibliographic Notes
4: Semantic Analysis
4.1 The Role of the Semantic Analyzer
4.2 Attribute Grammars
4.3 Evaluating Attributes
4.4 Action Routines
4.5 Space Management for Attributes
4.6 Tree Grammars and Syntax Tree Decoration
4.7 Summary and Concluding Remarks
4.8 Exercises
4.9 Explorations
4.10 Bibliographic Notes
5: Target Machine Architecture
II: Core Issues in Language Design
II: Core Issues in Language Design
6: Control Flow
6.1 Expression Evaluation
6.2 Structured and Unstructured Flow
6.3 Sequencing
6.4 Selection
6.5 Iteration
6.6 Recursion
6.7 Nondeterminacy
6.8 Summary and Concluding Remarks
6.9 Exercises
6.10 Explorations
6.11 Bibliographic Notes
7: Type Systems
7.1 Overview
7.2 Type Checking
7.3 Parametric Polymorphism
7.4 Equality Testing and Assignment
7.5 Summary and Concluding Remarks
7.6 Exercises
7.7 Explorations
7.8 Bibliographic Notes
8: Composite Types
8.1 Records (Structures)
8.2 Arrays
8.3 Strings
8.4 Sets
8.5 Pointers and Recursive Types
8.6 Lists
8.7 Files and Input/Output
8.8 Summary and Concluding Remarks
8.9 Exercises
8.10 Explorations
8.11 Bibliographic Notes
9: Subroutines and Control Abstraction
9.1 Review of Stack Layout
9.2 Calling Sequences
9.3 Parameter Passing
9.4 Exception Handling
9.5 Coroutines
9.6 Events
9.7 Summary and Concluding Remarks
9.8 Exercises
9.9 Explorations
9.10 Bibliographic Notes
10: Data Abstraction and Object Orientation
10.1 Object-Oriented Programming
10.2 Encapsulation and Inheritance
10.3 Initialization and Finalization
10.4 Dynamic Method Binding
10.5 Mix-In Inheritance
10.6 True Multiple Inheritance
10.7 Object-Oriented Programming Revisited
10.8 Summary and Concluding Remarks
10.9 Exercises
10.10 Explorations
10.11 Bibliographic Notes
III: Alternative Programming Models
III: Alternative Programming Models
11: Functional Languages
11.1 Historical Origins
11.2 Functional Programming Concepts
11.3 A Bit of Scheme
11.4 A Bit of OCaml
11.5 Evaluation Order Revisited
11.6 Higher-Order Functions
11.7 Theoretical Foundations
11.8 Functional Programming in Perspective
11.9 Summary and Concluding Remarks
11.10 Exercises
11.11 Explorations
11.12 Bibliographic Notes
12: Logic Languages
12.1 Logic Programming Concepts
12.2 Prolog
12.3 Theoretical Foundations
12.4 Logic Programming in Perspective
12.5 Summary and Concluding Remarks
12.6 Exercises
12.7 Explorations
12.8 Bibliographic Notes
13: Concurrency
13.1 Background and Motivation
13.2 Concurrent Programming Fundamentals
13.3 Implementing Synchronization
13.4 Language-Level Constructs
13.5 Message Passing
13.6 Summary and Concluding Remarks
13.7 Exercises
13.8 Explorations
13.9 Bibliographic Notes
14: Scripting Languages
14.1 What Is a Scripting Language?
14.2 Problem Domains
14.3 Scripting the World Wide Web
14.4 Innovative Features
14.5 Summary and Concluding Remarks
14.6 Exercises
14.7 Explorations
14.8 Bibliographic Notes
IV: A Closer Look at Implementation
IV: A Closer Look at Implementation
15: Building a Runnable Program
15.1 Back-End Compiler Structure
15.2 Intermediate Forms
15.3 Code Generation
15.4 Address Space Organization
15.5 Assembly
15.6 Linking
15.7 Dynamic Linking
15.8 Summary and Concluding Remarks
15.9 Exercises
15.10 Explorations
15.11 Bibliographic Notes
16: Run-Time Program Management
16.1 Virtual Machines
16.2 Late Binding of Machine Code
16.3 Inspection/Introspection
16.4 Summary and Concluding Remarks
16.5 Exercises
16.6 Explorations
16.7 Bibliographic Notes
17: Code Improvement
A: Programming Languages Mentioned
B: Language Design and Language Implementation
C: Numbered Examples
Bibliography
Index
← Prev
Back
Next →
← Prev
Back
Next →