CS 224 Project 2 - Writing a Recursive Descent Parser

Objectives:
Build a syntax analyzer that parsers Jack programs according to the Jack grammar

Description:
You are given the Jack grammar on pp208-209 of N2T.  Complete Stage 2 as described on p221, implementing the parser with your modified grammar. The text also explains how you can test the correctness of your parser by comparing your output with the output provided in two test programs. 

Process:
Complete the CompilationEngine class as outlined on pp215-216.  Your main program will stay the same as in the previous part of the project.

Academic integrity is very important as you embark upon this project.  Wrestling and finally mastering the concepts needed to complete this project will greatly improve your understanding of how programming languages work. Since your learning is the highest priority to me, I want to clearly emphasize the following:

  1. The process of figuring out what you need to do to complete the project is where the learning is happening.  By cheating and looking at an online or another student solution, you are robbing yourself of this learning.  Remember that learning is why you are here, right?!
  2. You will sometimes find yourself frustrated and stuck as you embark upon this learning process.  When this happens, instead of cheating yourself by looking at a solution, talk out your problem with me or a fellow student. 
  3. Helping a fellow student does not involve giving them code but you can explain to them how to proceed.  Doing so benefits both the student getting assistance and the student helping out.

Submission and Grading:
Submit your zipped project code in GoucherLearn by the due date even if it is not working perfectly.  After I have graded on the correctness of your code and made comments, if you have errors I will ask you to resubmit after making the changes I suggest.  In doing so, you will have the opportunity to earn back up to 50% of the points you lost in the first submission.  You will need a parser for the rest of the project so it is important that you get this working.