Design and Implementation of an Abstract Syntax Hierarchy

Reading

Abstract Syntax Hierarchies

In this assignment, we're going to jump ahead a few weeks and focus on the goal of parsing: production of an internal representation of concrete source code for exactly the set of syntactically valid programs. In order to facilitate a clean interface between projects in this class, we will ultimately use a standardized set of classes rather than the work you design here. However, the design of an abstract syntax hierarchy is something of an art, and engagement with the design task will help to give intuition to the next few projects.

Your Job

You are to design and implement a set of classes that represent the nodes of abstract syntax trees sufficient to represent any syntactically valid Tiger program. To be clear, you are not implementing any parsing. The actual translation of concrete source code to these tree structures is the work of the next several weeks. The goal of this project is just to give you some intuition about the eventual goal of parsing.

Most of the specifics are up to you, but a few guidelines apply to all work:

This project may be somewhat challenging for a one week time frame, and in light of that, you should work in groups of two or three. If you choose the group option, you'll have to choose a turn in directory.

Turn In:

John H. E. Lasseter