Grades and deadlines

The languages

Each chosen language has a separate github repo with starter code:

Once you have chosen your language, you can clone the repo like this:

git clone https://github.com/si413usna/startlab.git -b lab4.2-XXXXXX lab4.2

replacing XXXXXX with easyas, simple, or ddcw.

Your task

For each chosen language, the starter code contains a partially working interpreter, which is able to handle mostly the Unit 3 stuff like variables, string and boolean operations, if statements, and while loops, with a single global scope.

In this lab, you will first need to understand the new language you are working with. The best way to do that is to look at the example programs, as well as the language syntax spec in tokenSpec.txt and ParseRules.g4.

Then, you will need to add to the existing functionality to support function calls with closures and lexical scope, similar to the Scheme and Python examples we have seen in class. In particular, you will want to add:

This list is in no particular order, and in fact many of these tasks are kind of inter-related. Part of your challenge is to figure out how to work methodically and carefully, testing as you go, to build this magnificent piece of software.

This is the pinnacle of what we are asking you to do in this course. Your hard work so far has led you here, and we know you are ready for it. Good luck and have fun with it!