Complete the full interpreter programming assignment.
Be sure to include your code and tests from previous submissions, but feel free to make any improvements to your code.
Remember: Your tests will be graded as well. Make sure to include comprehensive tests for multiple cases.