CS4304
Compiler Design & Construction
Arthur
This
course is a one semester course that focuses on the practical aspects of
compiler design and implementation.
It is assumed that each student has a thorough working knowledge of
block-structured language, familiarity with an assembly language, and has taken
CS3204 (Operating Systems) and has passed it with a "C" or better.
The topics in this course will concentrate on lexical analysis, formal
parsing methods, symbol table construction, code generation, type coercion and
error recovery.
Additionally, formal language concepts will be presented that directly
relate to compiler design and construction.
The final product will be a non-trivial compiler that generates code for
a 3-address oriented machine.
Grading
policy:
A
complete and functional compiler IS a prerequisite for an "A" in this
course! If you do not satisfy the above condition, the maximum attainable
grade will be a "B+". With this exception, your grade will be
determined as follows:
Projects
50%
Lexical
Analyzer
16%
Recursive
Descent Parser
17%
Symbol
Table & Code Generation
17%
Pop
Quizes & Homework
10%
Midterm
Exam
20%
Final
Exam
20%
Project
Grading:
Internal
Documentation, Program Structure, and Efficient Algorithms
25%
Correct
Results
75%
A
project that is not complete will be graded on the first three items and the
maximum possible grade attainable will be 25%. It is not the grader's job
to figure out "how close" the project is to being correct... either it
works or it doesn’t! I DO NOT ACCEPT LATE ASSIGNMENTS!
Grades are assigned on a 10 point scale (e.g. 90-100 is in the "A" range); I do give "-" and "+" grades; I do NOT curve the final grade.
Ethics:
VPI & SU Honor Code is applicable.
Text:
Compiler
Construction: Principles and Practice
Tentative
Course Topics:
Course
Outline, Compiler Functions, Language Elements
BNF
Grammars, Regular Expressions,
Context
Free Grammars, Grammar Ambiguity, Parse Trees, Push Down Automata
Parsing
Methods - Top-Down, Recursive Descent, LL, LR
Symbol
Table Construction, Type Checking
Code
Generation
Handling
Recursion and Arrays
Code
Optimization Techniques