- Future Students
- Academic Progams
- Undergraduate Program
- Current Semester CS Courses
- New Course Offerings
- Upcoming Semesters
- Previous Semesters
- Canonical Syllabi
- Course Access & Request Policy
- Academic Integrity Policy
- Grad Student Registration
- Variable Title Courses
- Study Abroad
- Professional Practice
- Co-Op Professional Practice
- Non-Co-Op Professional Practice
- ISS Application Process for International Students (CPT, OPT, RCL, Program Extension, COEL)
- Pass/Not Pass Spring 2020
CS 352: Compilers: Principles and Practice
List of Topics (By Week):
-
Introduction: modules and interfaces, tools and software
-
Programming data structures for tree languages
-
Lexical analysis: lexical tokens, regular expressions, finite automata, lexical analyser generators
-
Parsing I: context-free grammars, predictive parsing
-
Parsing II: LR parsing, parser generators
-
Abstract syntax: semantic actions, abstract parse trees
-
Semantic analysis: symbol tables, type-checking expressions, type-checking declarations
-
Activation records: stack frames, allocation
-
Translation to intermediate code: intermediate representation trees, translation into trees
-
Basic blocks and traces: canonical trees, conditional branches
-
Instruction selection: algorithms for instruction selection, CISC and RISC machines
-
Liveness analysis: solution of basic dataflow equations
-
Register allocation: graph coloring, coloring by simplification, coalescing, register allocation for trees
-
Supplemental material: a selection drawn from garbage collection, object-oriented languages, functional languages, dataflow analysis, optimization, polymorphism, static single-assignment form, scheduling and pipelining, memory hierarchies
-
Summary
1998.08