Overview |
Chapter 1: Introduction |
Lexical Analysis (Scanning) |
Chapter 2:
- Sec. 2.1: Introduction
- Sec. 2.2: Regular expressions
- Sec. 2.3 – 2.8: Finite automata; converting regular expressions to
finite automata
- Sec. 2.9: Lexers and lexer generators
|
Syntax Analysis (Parsing) |
Chapter 3:
- Sec. 3.1: Introduction
- Sec. 3.2: Context-free grammars
- Sec. 3.3: Derivation
- Sec. 3.4: Operator precedence
- Sec. 3.5: Other sources of ambiguity
- Sec. 3.6: Syntax analysis
- Sec. 3.8: Nullable and FIRST
- Sec. 3.10: FOLLOW
- Sec. 3.14: SLR Parsing
- Sec. 3.15: Constructing SLR parse tables
- Sec. 3.17: Using LR-parser generators
|
Semantic Analysis |
|
Chapter 4: Scopes and Symbol Tables
- Sec. 4.1: Introduction
- Sec. 4.2: Symbol tables
- Sec. 6.3: The symbol table
- Sec. 6.4: Type checking
|
|
Chapter 6: Type Checking
- Sec. 6.1: Introduction
- Sec. 6.2: The design space of types
- Sec. 6.3: Attributes
- Sec. 6.4: Environments for type checking
- Sec. 6.5: Type checking expressions
- Sec. 6.6: Type checking of function declarations
- Sec. 6.7: Type checking a program
- Sec. 6.8: Advanced type checking
|
Intermediate Code Generation |
Chapter 7:
- Sec. 7.1: Introduction
- Sec. 7.2: Choosing an intermediate language
- Sec. 7.4: Syntax-directed translation
- Sec. 7.5: Generating code from expressions
- Sec. 7.6: Translating statements
- Sec. 7.7: Logical operators
- Sec. 7.8: Advanced control statements
- Sec. 7.9: Translating structured data
- Sec. 7.10: Translating declarations
|
Machine-Code Generation
|
|
Chapter 8
- Sec. 8.1: Intoduction
- Sec. 8.2: Conditional jumps
- Sec. 8.5: Opimisations
|
|
Chapter 10:
- Sec. 10.1: Introduction
- Sec. 10.2: Activation records
- Sec. 10.3: Prologues, epilogues and call-sequences
- Sec. 10.4: Caller-saves versus callee-saves
|
Interpreters |
- Types of Interpreters: Byte Code, Direct Threaded Code,
Indirect Threaded Code.
- Register machines and Stack machines; JVM and Dalvik VMs
- Just-in-Time Compilers
|
The following topics will be covered as time permits:
|
Systems Software
|
Linkers, loaders; static and dynamic linking; debuggers. |