CISC 458/3.0 Programming Language ProcessorsOriginal Author: Jim Cordy
Last Revised: September 25, 2006
Introduction to the systematic construction of a compiler: grammars and languages, scanners, top-down and bottom-up parsing, runtime organization, symbol tables, internal representations; Polish notation, syntax trees, semantic routines, storage allocation, code generation, interpreters.
Prerequisites: CISC 121/3.0, 221/3.0, 223/3.0 (or 366/3.0).
This course introduces the student to the major concepts and techniques of programming language implementation, with emphasis on practical methods rather than theoretical issues. Students are provided with hands-on experience in modifying an existing compiler, and gain experience with one or more typical software tools that aid in compiler construction such as S/SL, LEX, YACC, GLA, GAG or others.
The course normally includes a practical course project consisting of implementing a small set of language extensions to an existing compiler for a modest programming language using standard compiler construction tools such as S/SL, LEX, YACC, GLA, GAG or others. The project is structured as a sequence of assignments carried out cooperatively in small teams guided by practical tutorials.