Building an Interpreter
In this assignment we will start work on building an interpreter for a programming language. You should have read the describing the interpreter notes first.
Instead of instructions in the file itself, this time the instructions are provided in a Markdown document: https://github.com/skiadas/ProgLangAssignments/blob/master/assignment8doc.md
As before, you should NOT specify the types of your functions, but rather let the system figure it all out. This may make the resulting types appear different than what is required, you should make sure that they are indeed the same and that the only difference is because of type aliases. In some cases the system might derive a “more general type” than the expected one, and that is OK.
You will not need to write many functions from scratch. Most of this assignment involves adding components to existing functions and type declarations. This assignment is also unusual as it requires editing many different files at once.
As in prior assignments, you should not use any functions we have not learned about unless explicitly told to. These assignments are not about learning a number of library functions, but about delving deeply into fundamental building blocks of programming. You may use anything present in the Pervasives or List modules, though you really will not need much.
Correctness of the solutions, including the types and whether the code loads, will count for 15 points. Your code MUST load with no errors and have the correct types. You should make sure that the compile steps described in the README in the assignment file work out without problems.
Another 5 points will come from style issues, your tests and use of GitHub, including Milestones and Labels, issues and closing those issues via commits. Keep creating issues for the various parts of the assignment. assigining them to milestones and tagging them with labels. Create new milestones for each assignment.
git fetch instr
git merge master instr/master
. This may give you a editor window to edit a commit message. You don’t need to edit it, just “save” (writeOut) and exit/close the document. (This is probably not your prefered editor. See this page for how to set up your favorite editor for use in these merge situations. I would recommend setting it to SublimeText).interpreter
. More details can be found in the assignment’s documentation file.interpreter
folder for how to create and run tests.