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 the following
grammar.
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; its is part of your project to
decide the precise semantics of 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.
Requirements
You must work in groups of sizes two. (Groups of three will be allowed with
special permission only. To receive the best grade groups of three will have
to prove the effort of all three team members and must fully implement all
functionality of tuples).
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 and may assume familiarity
with the WIG project.
A longer report is not 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 (groups of two only). 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.