CISC 471/672 PROGRAMMING ASSIGNMENT 3 - PARSER - PART 2 --------------------------------------------------------- GRADING INSTRUCTIONS -------------------- Name:_____________________________ Date of Submission:_________ Total grade ____ - late points ____ = Final grade (out of 65)_____ Days Late:____ Due Date: Friday, April 6, 2018 (midnight). Correctness: We will show point deductions or check below (partial credit given where applicable): Tree creation: produces correct abstract syntax tree for all constructs. Both Undergrads (55 pts, about 3 pts each) and Graduate students (50 pts, about 2.2 pts each): ___ simple skeleton program with a class ___ class lists ___ class declarations ___ feature list ___ feature ___ method declarations without parameters ___ method declarations with parameters ___ method call (2 forms) ___ variable declarations ___ assignment expression ___ if then else expression ___ begin block ___ let expression ___ new expression ___ isvoid expression ___ arithmetic expressions (+,-,*,/) ___ relational expressions (~,<,<=,=) ___ logical expressions (not) ___ simple expressions (id, integer, string, true, false) Graduate students only (1 pt each): ___ variable declarations with initialization ___ while loop ___ case expression ___ nested control structures (5 pts) Error Handling (Graduate student only): ___ compiler does not bomb when trees partially created during error recovery that recovers from multiple errors The parser should recover in at least the following situations: 1) If there is an error in a class definition but the class is terminated properly and the next class is syntactically correct, the parser should be able to restart at the next class definition. 2) Similarly, the parser should recover from errors in features (going on to the next feature), a {\tt let} binding (going on to the next variable), and an expression inside a {\tt begin-end} block. ___(5 pts) Program Structure and Efficiency: Readable, concise, simple structure. (5 pts) Documentation ___ Internal documentation (comments throughout spec: explain unusual productions and actions) ___ External documentation in README Explain your design decisions, your test cases, and why you believe your program is correct and robust. Any restrictions of the program? Any additional features? Any additional error handling beyond above? General Comments: