Hey there! This is a template repository that contains the necessary boilerplate for CS 131's quarter-long project: making an interpreter. The project specs are as follows:
There are three stages to the project; students are currently at the third. Thus, this folder contains the necessary bootstrapping code:
-
intbase.py
, the base class and enum definitions for the interpreter -
bparser.py
, a staticparser
class to parse Brewin programs -
interpreterv3.py
, which delegates work to:classv3.py
objectv3.py
type_valuev3.py
- note we use the same
env_v2.py
as we did in P2
-
interpreterv2.py
, a working top-level interpreter for project 2 that mostly delegates interpreting work to:classv2.py
which handles class, field, and method definitionsenv_v2.py
which handles the program environment (a stack-based approach to accommodate local variables)objectv2.py
which additional implements inheritance and method calling; most of the code is here!type_valuev2.py
which additionally manage type checking
-
interpreterv1.py
, a working top-level interpreter for project 1 that mostly delegates interpreting work to:classv1.py
which handles class, field, and method definitionsenv1.py
which handles the program environment (a map from variables to values)objectv1.py
which handles operations on objects, which include statements, expressions, etc; most of the code is here!type_valuev1.py
which has classes to create type tags
You can view the starter for Project 1.
Some notes on your submission (for Project 3)
- You must have a top-level, versioned
interpreterv2.py
file that exports theInterpreter
class. If not, your code will not run on our autograder. - You may also submit one or more additional
.py
modules that your interpreter uses, if you decide to break up your solution into multiple.py
files. - You should not modify/submit
intbase.py
orbparser.py
; we will use our own when grading.
You can find out more about our autograder, including how to run it, in its accompanying repo.
This is an unlicensed repository; even though the source code is public, it is not governed by an open-source license.
This code was primarily written by Carey Nachenberg, with support from his TAs for the Spring 2023 iteration of CS 131.