This assignment requires students to create an enhanced scanner for the lox programming language by following Chapter 4 of the "Crafting Interpreters" textbook. You are to work in the lox team you have already set up for this lab. In addition to getting a working scanner as it is implemented in the book, you are responsible for adding a small extension for the scanner and provide a complete documentation for the scanner in the README of the lox_interpreter
repository. Furthermore, each team is invited to engage in a code walkthrough and a demonstration with a TL and/or instructor during the next week's lab.
You are responsible for storing alll implementation for this lab in your team's lox_interpreter
repository.
To enhance your understanding of the concepts and code of this laboratory assignment, you should carefully read Chapter 4 in Crafting Interpreters.
- Complete working version of the scanner from the textbook with addition of proper comments.
- Small enhancement to the scanner.
- Complete documentation.
- Participation in the walkthrough and demo.
Follow Chapter 4 in Crafting Interpreters textbook to arrive at a working scanner. Note, you will need to make some adjustments to the code from the book to get it to the working state in your repository. Please, also ensure the scanner has standard Javadoc comments before each class and each method, and single line comments to explain lines of code
Add one small enhancement (make changes or additions to the code) to make the scanner better. Most enhancements might be cosmetic or add to the usability of the scanner (for example, better error reporting).
For this part of the assignment, you are to complete the section in the README under the "Scanning" heading. In this section, you must, at the minimum, include the following:
- Visual representation of the general flow of the scanning process (for example, a flow diagram).
- Short summary of each class's high-level description and the functionality of its main methods, similar to information on the documentation API. This should be organized into subsections as relevant.
During our next lab, each team will demonstrate their working scanner and participate in a code walkthrough. Code walkthrough is an informal analysis process with a goal of identifying defects within the code. In this case, code walkthrough will also be used to assess the understanding of the code by the team members.
- Before next lab, each team should find time to engage in a peer code walkthrough process, where each person assigned to a specific part of the code explains the given code line by line. The goal of this exercise is to ensure everyone is comfortable with the understanding of every line of code of the scanner.
- Then, during the next lab session on February 21st, each team will lead the review process for a TL/instructor who will ask questions. Teams can assign specific members to lead the review of the certain portion of the code, however questions can be directed to anyone on the team.
GitHub Actions is not used in this assignment. The grade that a student receives on this assignment will have the following components. All components of the grade will be assessed manually by the instructor and the technical leaders.
-
Mastery of Verbal Explanation [up to 35%]: Students will receive a portion of their grade when their explanations presented during the walkthrough reveal a thorough understanding of the code. Every member of the team is expected to understand every line of code being presented. The reviewer reserves to question any member of the team to assess their understanding.
-
Mastery of Technical Writing [up to 25%]: Students will also receive a portion of their grade when the documentation reveals a proficiency of both writing skills and technical knowledge.
-
Mastery of Technical Knowledge and Skills [up to 40%]: Students will receive a portion of their assignment grade when their lab solution reveals that they have mastered all of the technical knowledge and skills developed during the completion of this assignment. As a part of this grade, the instructor will assess aspects of the project including, but not limited to, the completeness and correctness of the scanner, the required extension, and contributions of each student to the project on GitHub.
All grades for this project will be reported through a student's gradebook GitHub repository.
If you are having trouble completing any part of this project, then please talk with the course instructor or technical leaders during the laboratory session. Alternatively, you may ask questions in the Discord channel for this course. Finally, you can schedule a meeting during the course instructor's office hours.