Giter Club home page Giter Club logo

lab04-lox_scanner's Introduction

Lox Scanner

DUE: February 21 by 2:30pm

Table of Contents

Introduction

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.

Learning

To enhance your understanding of the concepts and code of this laboratory assignment, you should carefully read Chapter 4 in Crafting Interpreters.

Requirements

  1. Complete working version of the scanner from the textbook with addition of proper comments.
  2. Small enhancement to the scanner.
  3. Complete documentation.
  4. Participation in the walkthrough and demo.

Working and Properly Commented Scanner

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

Enhancements

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).

Documentation

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.

Walkthrough and Demo

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.

Assignment Assessment

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.

Assistance

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.

lab04-lox_scanner's People

Contributors

jjumadinova avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.