added support for reserved keywords 'try', 'catch', 'finally', and 'as' in lexer.
removed erroneous whitespace.
added try statement to astLabels.
Added exception token. Currently using placeholder 'exception' for all exception types since they haven't been formally defined yet.
Added ast labels for exception and exception binding in catch.
Parsing support for try-catch and try-catch-finally statements. Defined TryCatchStatement, Exception, and CatchExceptionBinding, where the catch exception binding is the binding of an exception type to an identifier within a catch block.
basic slicing for try-catch-finally. Unclear whether this is complete or not, although it allows compilation to continue to the code emit phase.
Trivial type-checking for try, catch, and finally blocks. Have not yet added exception type or exception-identifier binding for catch block.
Updated grammar for try-catch-finally in order to allow for type-checking of exception binding within catch block. Note that this update to the grammar introduced shift/reduce conflicts (I believe 2) related to the optional finally block. We agreed that this is tolerable as the only previous shift/reduce conflicts were due to a dangling else and this dangling finally block is essentially the same issue.
added labels for exceptions.
Completed type-checking for try-catch including exception-type binding for identifier in catch block.
Updated slicer to explicitly slice the bodies of the try, catch, and finally blocks.
Implementation of code generation for try-catch-finally statement. This code is currently naive in that it simply leverages python's existing try-except-finally construct. Furthermore, it does not account for any name-mangling of the identifier used in the excexception binding withint the catch block.
Removed reserved exception tokens from the lexer and moved the functionality of checking that exception types in catch block exception bindings are valid to the type checker per Behram's suggestions. Moving this functionality out of the lexer allows for better error-reporting to the programmer at the expense of potentially allowing programmers to use semi-reserved exception type names in identifiers.
Slicer should now add unique annotated name to identifer used for exception binding in catch block.
Changed EXCEPTIONS to dict mapping waldo exceptions to string lists of python exceptions. This should make it very easy to change which exceptions in Waldo map to which python exceptions.
Fixed bug in slicer for try/catch. Incorrect assumptions about number of children nodes under AST_TRY_CATCH_STATEMENT which got lost in earlier refactoring.
Updated dict of Waldo exceptions.
Refactored popContext in typeStack such that it doesn't automatically set the current function node to None. Since the current function node is explicitly set with addCurrentFunctionNode, I chose to move this removal functionality to a method called removeCurrentFunctionNode.
Simple application exception try-catch test added to runAllTests.py script.