Assignment 2: Production Systems and Shift-Reduce Parsing
Assessment
Due: Wednesday, 25 September, 2013 11:59 PM
Worth: 12 percent of total marks for class
Aims of the Assignment
This assignment has three purposes. The first is to give you experience with representations based on list structures and with methods for list processing that manipulate them. To complete the exercise, you must implement a system that stores information using embedded lists and that alters these structures through a series of operations.
A second purpose is to expose you to programming in a production system language on a problem that takes advantage of its special capabilities. Production systems are a class of rule-based formalisms that, like logic programs, rely centrally on relational pattern matching, but that differ by mimicking the cyclic operation of human cognition over time. You have already used CLIPS for the first exercise. The production system framework you will use for this assignment, PROPS, has a different syntax, similar to that in Prolog, the language in which it is implemented. This provides it with more powerful pattern-matching abilities that will prove useful for the task.
As explained in the lecture on production systems, a program in this framework utilizes two stores: a working memory that changes dynamically and a production rule memory that is (typically) static. You will find an introduction to the language's syntax and operation at
http://www.cs.auckland.ac.nz/courses/compsci367s2c/assignments/ex2/props.html
Briefly, each working memory element should take the form of a Prolog fact, and thus should have a predicate and one or more arguments. Each production rule should have a left-hand side comprising a set of conditions and a right-hand side that specifies one or more actions, the most important being actions that add elements to working memory or that remove them. You can