There is a long-standing debate in the academic community about the appropriate use of analysis tools in undergraduate programming language and compiler courses. On the one hand, such tools enable students to experiment with linguistic structures and see how they could be analyzed; on the other, tools may have steep learning curves or depend on concepts that are irrelevant to the course. Fossum believes that tools are beneficial, and he developed this programming language compiler compiler (PLCC) to attack the problems of the learning curve and irrelevant concepts.
PLCC uses the regular expressions of the Java pattern class to describe tokens, slightly extended Backus normal form (BNF) to describe structure, and Java methods to describe semantics. A student’s language definition is written as a single file and submitted to PLCC. Output is a collection of Java files deposited in a subdirectory of the current directory. Java is used in other courses at Fossum’s school, and the additional notation is certainly relevant to any course in the area.
A compiler writer will find nothing of interest in this paper; it was written to help an educator to decide whether to use analysis tools in general and PLCC in particular, and it succeeds admirably at this task. Fossum lays out the pedagogic issues, and from them develops a set of goals for PLCC. He presents an overview of the notation that PLCC accepts, and provides a complete specification for a trivial language. There is a section describing the architecture of the PLCC implementation that shows how it interacts with its environment.