CSCI 4570/6570  Compilers

Spring 2008

Professor: Krys J. Kochut
Office: 412 GSRC
Class Time: T,R 9:30 - 10:45 and W 10:10 - 11:00 in 306 GSRC
Office Hours: T 1:30 - 3:30 and W 9:00 - 10:00
TA: BJ Wimpey (wimpey at cs dot uga dot edu)
Office Hours:   F 12:00 - 1:00 in 216 GSRC
Text: Compilers: Principles, Techniques, and Tools, 2/E, by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2007 .
Grading:
Test I and II 100
Final 130
Programs 170
Grading Scale:
90% - 100% A
80% - 89% B
70% - 79% C
60% - 69% D
below 60% F
Academic Honesty: Read carefully the Academic Honesty Policy now.
Remarks:

Read a short course description.

In this class the students will study the principles of compiler design and implementation. We will concentrate on the organization of a simple but complete compiler, including the initial phases of a typical front-end. We will begin with scanners, then go on to various parsing techniques, type checking, syntax-directed translation, and code generation. We will also talk about symbol tables, error recovery and runtime systems. Discussions will include compiler compilers (scanner and parser generators), as well code generation and optimization.

Each student is expected to design and implement a simple compiler (the details will be discussed later). All programming should be done in either C++ or C. Development in Java is also possible, but using compiler-compiler tools for Java may be more challenging. The programming project will be split into a few parts to make the development a large program manageable.

Each student is expected to do his/her own work. You are not allowed to work in teams. All suspected cases of academic dishonesty will be handled in strict accordance with department and university policy. The grade of I (incomplete) is reserved for special cases only, such as a serious illness, and will be decided on individual basis.

The course syllabus outlines a general plan for the course and deviations may be necessary.

Project: This semester, the students will be implementing a simple one-pass compiler for Micro Pascal, a small subset of the programming language Pascal.
Programming assignments: Part 1 of the Micro Pascal project.
Part 2 of the Micro Pascal project.
Part 3 of the Micro Pascal project.
Links:

I have created a small page with a variety of information sources on Compiler Construction Tools.

  1. On-line documentation is available for the following compiler tools:
  2. Available scanner generators for Java:
    • JLex, a scanner generator for Java, very similar to Lex.
    • JFLex, flex for Java.
  3. Available parser generators for Java:
    • CUP, a parser generator for Java, very similar to YACC.
    • BYACC/J, a different version of Berkeley YACC for Java. It is an extension of the standard YACC (a -j flag has been added to generate Java code).
  4. Other compiler tools:
    • JavaCC, a parser generator for Java, including scanner generator and parser generator. Input specifications are different than those suitable for Lex/YACC. Also, unlike YACC, JavaCC generates a top-down parser.
    • ANTLR, a set of language translation tools (formerly PCCTS). Includes scanner/parser generators for C, C++, and Java.

 

Exam dates:
Test I February 19, 2008 regular class time
Test II March 27, 2008 regular class time
Final  May 6, 2008 8:00 - 11:00 am