next up previous
Next: The Assignment Up: Compiler Theory: Assignment 2 Previous: Guidelines

Preliminaries

You will also learn a lot by studying the (the MOOL language) project given in the Winter 2003 which was proposed as Assignment 3. Observe that the archive yacc.tar.gz contains samples of different steps in the development of a MOOL compiler.
mool-0.y
generates a parser for MOOL programs restricted to classes declarations, themselves restricted to attributes declarations.
mool-1.y
generates a parser similar to mool-0.y but provides animation to figure out in which order YACC actions are performed.
mool-2.y
generates a parser similar to mool-1.y. In addition, it stores the names of the defined classes. Hence, this is a preliminary stage for symbol table computations.
mool-3.y
generates a parser similar to mool-2.y. In addition, stores the names of the defined attributes. It performs also some little checks.
mool-4.y
is similar to mool-3.y except that it uses an external C file mool-aux.c for C code.
You are strongly suggested to proceed in the same way, carefully step by step:
  1. Realize a first parser that will parse only category definitions (i.e. no domain definitions, no main definitions).
  2. Realize a second parser from the previous one that will parse category and domain definitions with very limited statements, say just assignments (i.e. no alternatives, no loops, no arithmetic/boolean expressions, ...).
  3. Your third parser will recognize arithmetic/boolean expressions.
  4. The fourth will add statements,
  5. Finally, enhance this parser with the construction of symbol tables. Here again, you can proceed step by step:
    1. a symbol table for the whole program that will only store category and domain names,
    2. a symbol table for each category that will store function declarations,
    3. a symbol table for each domain that will store its category and its attributes,
    4. a symbol table for each function definition that will store the domain it belongs to, its local variables, ...


next up previous
Next: The Assignment Up: Compiler Theory: Assignment 2 Previous: Guidelines
Marc Moreno Maza
2004-12-01