Skip to content

An implementation of @munificent's jlox interpreter built for use with the Programming Languages course at Allegheny College.

License

Notifications You must be signed in to change notification settings

allegheny-college-cmpsc-201-spring-2024/lox-complete

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Lox Programming Language

This repository contains an implementation of the Lox programming language interpreter taken directly from the book Crafting Interpreters by Robert Nystrom. It uses Apache Maven, Apache's build automation tool commonly used with Java. Instructions for using this repository exist in the repository wiki.

Completion log

Unit Unit name Build status Chapters in branch Due Date (EOD)
1 Introduction to Lox Gatorgrader Chapters 1-3 29 January
2 Scanning Gatorgrader Chapter 4 5 February
3 Representing Code Gatorgrader Chapter 5 12 February
4 Parsing Expressions Gatorgrader Chapter 6 19 February
5 Evaluating Expressions Gatorgrader Chapter 7 19 February
6 Statements and State Gatorgrader Chapter 8 26 February
7 Control Flow Gatorgrader Chapter 9 11 March
8 Functions Gatorgrader Chapter 10 18 March
9 Resolving and Binding Gatorgrader Chapter 11 25 March
10 Classes Gatorgrader Chapter 12 1 April (that's no joke)
11 Inheritance Gatorgrader Chapter 13 8 April

Programmatic content

Intended as the main educational tool for CMPSC 201: Programming Languages at Allegheny College, this repository adopts a branched structureeach chapter, and the name and semantic versioning for each build represents the chapter from which the code was taken. Branches contain all code from preceding chapters except where the current chapter modifies it to introduce new features or remedy issues created in previous exercises.

Educational content

Given that this repository accompanies the pedagogical Lox language and textbook introducing that language, each branch contains educational content to help learners demonstrate their understanding and intuition about concepts and structures. This content comes in two flavors.

Challenges

Each branch's README uses the Challenges section concluding each chapter of Crafting Interpreters as a summative exploration of students' grasp of concepts introduced and reviewed in the chapter. Typically, at least once students finish the chapter on parsing, this takes the shape of requiring students to implement additional language features. These are included in the grader via Maven test cases. In some cases, additional challenges have been added to create a deeper learning experience for students.

Reflective writing

This repository caters to a course held in the Department of Computer and Information Science (CIS) at Allegheny College. Department pedagogy includes student reflective writing which explores concepts qualitatively, often asking students to engage in speculation, exercise their intuition, or write about their understandings or experiences engaging with a topic. These documents are included in the docs folder in each branch and are also included in the grader's setup, namely by guaranteeing that questions are finished.

Notes on software supporting this repository

GatorGrade

GatorGrade is a command-line automated grading system (AGS) developed by Allegheny College faculty and students. For more information on installing and using the system, visit the link provided.

All build in this repository, however, automatically installs and configures GatorGrade in its GitHub Actions workflows. Educators and their students are invited to install the software on their machines to gain the full range of benefits associated withe just-in-time (JIT) style of feedback it provides via specifications grading practices.

Wizard

Wizard provides actionable issues to students based on the outcome of their GatorGrader reports via the GitHub issue tracker. When students push content to their GitHub repo remotes, the tool uses the results of GatorGrade to post an issue detailing all of the objectives they have completed and those that they have not yet achieved in the form of issue-based tasks.

Arborist

Arborist protects branches from accidental or haphazard merges. Used here to protect the main and feedback (created by GitHub Classroom) branches. Sometimes students merge these with other branches and create very tangled webs. The Arborist prevents this.

Notes on repository setup

The repository's Maven configuration works from the command line, setup included contemplates the content of the Getting Started guide, which outlines how to set up the Java SDK and runtime in addition to helpful Maven tools for VSCode. In addition, this repository's Wiki outlines some of the common Apache Maven lifecycle commands used in compiling, testing and executing the code for the book, outlined in the Compiling and Testing Java Programs entry.

About

An implementation of @munificent's jlox interpreter built for use with the Programming Languages course at Allegheny College.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published