The project

You must implement the language WIG, which is an acronym for Web Interface Generator.

The WIG Language

WIG is a proper subset of <bigwig> restricted to a specific grammar. We also provide you with bison and sablecc versions with all conflicts resolved. An introduction to the WIG language and its intended uses is contained in the slides for lectures on WIG. WIG does not have a detailed language definition; it is part of your project to determine the precise semantics for your own version of the language. Most of WIG looks just like the language C; the primary issues to discuss are html constants, tuples, and the constructs plug and show.


You must work in groups of sizes two or three.

There is a strict deadline for the project: the compiler and the report in week 14.

Your compiler must work, at least for a subset of WIG. A compiler that won't generate working code for even the smallest examples will not be accepted. Apart from that, your implementation will be evaluated on structure, correctness, and elegance of both your compiler and the generated CGI-scripts.

The report must document all the choices that you have made during the project. Your report can be informally written (i.e. it does not need to read like a technical manual) and may assume familiarity with the WIG project. A longer report is not necessarily a better one, but don't exclude anything of interest.

Restrictions or extensions

If you feel the WIG project is too large, then make simplifying restrictions rather than give up. For example, if you throw out functions or tuples, then you are left with a smaller but still coherent language. It is important that you clearly state what restrictions you have made; your potential maximal grade will of course go down, but you will not be severely penalized. It is still possible to get an A for a WIG compiler that does not implement tuples. However, such a compiler must be complete and correct in all other aspects.

If you feel the WIG project is too small, then it would be a good idea to extend it with some features. However, you must follow these rules:

  • you must first have an implementation of standard WIG;
  • your language must be a strict superset of standard WIG; and
  • your extensions must be motivated and documented.
Ideas for extensions are obviously available from the <bigwig> language. Your potential maximal grade will of course go up, but you should mainly do this to challenge yourself.

Maintained by Chris Pickett. [HOME]