Objectives:
This course covers the organization of compilers and translators for a wide variety of computer-processed languages. Students completing this course should gain a solid understanding of the components that make up a compiler and should be able to use those components in the development of the translators, language processing tools, and user interfaces that arise in a variety of practical programming situations.
Required Text: Aho, Sethi, &Ullman, Principles of Compiler Construction, 1987
Prerequisites: CS 361 (Data Structures)
Students are presumed to be familiar with a variety of programming languages (commensurate with Senior-level status in a computer science degree program.)
Programming Projects: The course does involve a substantial programming assignment, which will be assigned in pieces over the course of the semester.
Course Outline (tentative)
Topic I. Overview II. Lexical Analysis III. Grammars IV. LR Parsing V. Semantic Processing Fundamentals VI. Symbol Tables VII. Storage Management VIII. Semantic Processing A. Expressions B. Control Flow C. Records and Arrays D. Procedures and Functions E. Pointers and Packages IX. Code Generation and Local Optimization X. Global Optimization XI. Recursive Descent and LL(1) Parsing XII. Attribute Grammars