Chia-Hui Chang - Rm E1-323, Ext: 4523
Office hours - Thursday 2:00pm - 4:00pm
§d¥ß«C - Rm E1-304, Ext: 4504
Office hours - Tuesday 10:00am - 12:00am
Or by Appointment
C.N. Fischer and R.L. LeBlanc, Jr., Crafting a Compiler with C, Benjamin/Cummings, 1991. (¶}µo)
This course is an introduction to the design and implementation of compilers for an imperative language. We will study various components in a compiler, including scanners, parsers, symbol tables, semantic analyzers, and code generators, and the overall organization of a compiler. In the scanners, we will study regular expressions and the transformation of a regular expression into a deterministic finite state machine. In the parsers, we will study LL and LR parsing methods and the construction of various parsing tables. There are many tools that can generate scanners and parsers from formal specifications. We will also study these tools and use them to generate the scanner and parser for our project.
We will study and implement the code generation components of a compiler. The symbol tables are a data structure shared by most components in the compiler. We will study how to process variables, types, expressions, records, arrays, pointers, and simple control structures. Procedures and packages will also be studied. Finally, we will study techniques for code generation and local optimization. If time permits, we will study global optimization techniques in compilers.
§@·~»P¦Ò¸Õªº¦¨ÁZ¤ñ« Homework 20% Project 20% Midterm 30% Final 30%