milestone: scanner and parser

At this point in time you should:
  • have implemented the WIG scanner;
  • have implemented the WIG parser;
  • have implemented the construction of WIG abstract syntax trees;
  • have implemented the WIG weeder; and
  • have implemented the WIG pretty printer; and
  • have tested your implementation, by using your pretty printer to test acceptance of existing benchmarks, and by using your weeder to test rejection of micro benchmarks that you write.


  • have you handled HTML correctly, including META tags?
  • does your scanner/parser run on these benchmarks? What about the 2007 class WIG benchmarks?
  • does pretty(parse(pretty(parse(X)))) = pretty(parse(X)) for these benchmarks?
  • does the output of the pretty printer compile on the wig4, wig10, wig18, pwig, or lkwig compilers for each of these benchmarks? For the cases where it does not compile, is the original benchmark also rejected?
  • have you created a suite of tiny .wig programs that are correctly rejected by your weeder?
  • does your compiler have a friendly command-line interface with built-in documentation of useful switches, either available by default when no arguments are given or via the standard --help switch? Can you do a better job than the lkwig compiler in this regard?
  • do you have a GNU Make Makefile or Ant build.xml with the following targets:
    • all (default, builds and tests);
    • code (builds);
    • check (tests, simply depending on weed, pretty, and unit for now);
    • weed (tests weeder);
    • pretty (tests pretty printer); and
    • unit (tests individual functions through unit testing, at least where constructing the input is straightforward)?

    If you are developing a C program and decide you want to use the GNU Autotools and Check for your build system that is most excellent.

You should check in your source code to group-X/wig/src. You should also detail your progress for each of the steps above in group-X/reports/scanparse.txt. Remember that if you write your milestone report well enough then you can likely reuse portions of it in your final project report.

This milestone is due on the Friday of Week 7. It will not be considered complete until you can truthfully answer yes to all questions. This is a fairly considerable milestone and you will not be able to finish it in one day. Remember that successfully completing the milestones is a key factor in completing the WIG project, and that timely completion of milestones is part of the grade for the course. Also remember that we expect to see all group members committing changes to the Subversion repository.

There is no need to email us on completion. Unless you took a late day we will automatically take the version into account that was checked in last before the point of the deadline.

Maintained by Eric Bodden. [HOME]