Note that you may have already completed parts of this lab in Lab 3, in which case it will be quite easy.
1) Convert your symbol table into an abstract data type (a class) in its own module (that is, you should have a separate .h and .c file for the symbol table, if you haven't already got them). The functions to add and look up variables in the symbol table may be either member functions or friend functions.
2) Ensure that your symbol table class will work for languages other than Bobcat. You should not rely on the fact that Bobcat variable names are single letters, or that only one symbol is introduced in any one scope.
3) Change your symbol table module for your translator project so that it raises the exception "Symbol_Not_Found" when the lookup function is asked to look up an undefined symbol. Then have your parser catch this exception, and print a message about an undefined variable and exit with an error code.
As in Lab 3, your symbol table files should be part of the translator project. Use cvs add (if necessary) and cvs commit to hand in your files.