Project Requirements

The details of the project are very open ended; the important thing is that you put some design effort into it and don't just turn in examples and illustrations from class stitched together. How you language works, what it is capable of, and what it is like are all up to you. It does not have to be such a great language that it will replace C overnight, but it does have to be usable. Plus, if you have done (or are expecting to do) badly on tests, this is where some extra effort completely under your own control can make up for a lot.

The language you implement must be usable, to the extent that it can run programs that perform useful tasks which could not practically be performed without a computer.

The program must be sufficiently clearly written and well-structured that it can be understood (particularly by me) without undue effort.

The fact that you must be able to run programs tells you that lexical analysis, parsing, linearising, and execution by some kind of virtual machine is necessary. A simple recursive interpreting function is an alternative to the final two stages, but not a very good alternative.

Errors must be caught and reported to the user. Good recovery from errors is not required (i.e. after reporting one syntax or semantic error, it is not necessary for the compiler to continue any futher; after one run-time error, the program may be halted).

Anything beyond the basic requirements will be looked on kindly and will earn extra credit towards examination deficiencies past and future.

Any deficiencies should be clearly documented. Errors that you seem to be unaware of are much worse than errors you are clearly on top of.