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 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.
RequirementsYou must work in groups of sizes two or three.
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 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. 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:
|Maintained by Chris Pickett. [HOME]|