CISC 471  -   Compiler Design  -   Fall 2000

M/W/F 12:20pm-1:10pm, SMI 220


Instructor: Daniel Chester  TA: Wei Du 
Office: Room 205, 77-79 E. Delaware (The green house next to East Hall)  Office: 404 Wolf Hall
Hours: T/Th 4:00pm-5:00pm  Hours: M 9:00am-11:00am 
Phone: 831-1955  Phone: 831-2770
Email: chester@cis.udel.edu Email: wei@cis.udel.edu

Textbook

Introduction to Compiler Construction, by Thomas W. Parsons, Computer Science Press.

Web Page

http://www.cis.udel.edu/~chester/courses/471.html
Read it! All the assignments, hints, and solutions will be posted here.

Course Description

This course will introduce several major topics in practical compiler design. It is intended to provide not only a good understanding of all of the components of a compiler, but also a real sense of how they actually fit together to make a workable, usable compiler. The student is expected to implement a compiler for a nonlinear programming language. The project will be broken into parts including a lexical analyzer (scanner), a parser that will produce an intermediate representation, a code generator that will produce C or C++ code for solving the specified nonlinear programming problem. The scanner and parser will be built with the aid of LEX and YACC, respectively.

Course Objectives

After taking this course, you should:

Learning Experiences

Most of the textbook will be covered. You should read each topic at least twice, once just before the lecture on the material (a light reading) and once after (a more careful reading). We'll try to keep the specific sections covered up-to-date here. Of course you will also want to review the material for exams as well. There will be weekly (usually) assignments. The compiler project will be broken up into three major parts.

Topics to be covered (tentative):

TOPIC READING 
Introduction; syntax-directed translation Ch. 1
Lexical analysis Ch. 2 except for 2.8; Appendix B.1 LEX
Grammars and Top-Down Parsing Ch. 3
Bottom-Up Parsing 4.1-4.3.3, 4.3.6,4.4, Appendix B.2 YACC
Symbol Tables and Memory Management 8.1,8.2.3
Intermediate Code Generation Ch. 5
Object Code Generation 6.1.1; Ch. 7; 8.2.1,8.2.2
Optimization (if time permits) Ch. 6

Grading

Overall Course Grade:

          25% Final (December 8, 8am)
          25% Two Midterms (September 29, November 8)
          20% Homework
          30% Project

Policies


ASSIGNMENTS
Homework Assignment 1 Homework Assignment 1 Solutions
Homework Assignment 2 Homework Assignment 2 Solutions
PROJECT, PART 1; DUE MONDAY, SEPTEMBER 25
NONLINEAR PROGRAMMING SPECIFICATION LANGUAGE
Sample Problem Specifications: Problem 1 Problem 2 Problem 3
Homework Assignment 3 Homework Assignment 3 Solutions
C++ version of book's lex example
Example source file for book's lex and yacc examples
Example scanner handwritten in C++
Example table driven scanner and simulated DFA
Homework Assignment 4 Homework Assignment 4 Solutions
Homework Assignment 5 Homework Assignment 5 Solutions
MODEL LEX FILE FOR PROJECT, PART 1

PROJECT, PART 2; DUE MONDAY, OCTOBER 30
Sample Yacc file Sample lex file for sample yacc file
FINDING CONFLICTS REPORTED BY YACC
MAJOR CHANGES TO AND HINTS FOR PROJECT
Homework Assignment 6 Homework Assignment 6 Solutions
Homework Assignment 7 Homework Assignment 7 Solutions
Homework Assignment 8 Homework Assignment 8 Solutions
PROJECT, PART 3; DUE MONDAY, DECEMBER 4
Lex spec. file for the project, part 3
Starter Yacc file for the project, part 3
Homework Assignment 9 Homework Assignment 9 Solutions

Decembert 4, 2000
chester@cis.udel.edu