The projectYou must implement the language WIG, which is an acronym for Web Interface Generator.
The WIG LanguageWIG 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.
RequirementsYou 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).
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 extensionsIf 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: