Project structure
You can download all of the project code from our QQ group.
Files you will edit:
scheme_eval_apply.py
: the recursive evaluator for Scheme expressionsscheme_forms.py
: evaluation for special formsscheme_classes.py
: classes that describe Scheme expressionsquestions.scm
: contains skeleton code for Part III
The rest of the files in the project:
scheme.py
: the interpreter REPLpair.py
: defines the Pair class and the nil objectscheme_builtins.py
: built-in Scheme proceduresscheme_reader.py
: the reader for Scheme input (this file is obfuscated so that you * `can implement it in lab)scheme_tokens.py
: the tokenizer for Scheme inputscheme_utils.py
: functions for inspecting Scheme expressionsucb.py
: utility functions for use in 61A projectstests.scm
: a collection of test cases written in Schemeok
: the autogradertests
: a directory of tests used by okmytests.rst
: a file where you can add your own tests
For the functions that we ask you to complete, there may be some initial code that we provide. If you would rather not use that code, feel free to delete it and start from scratch. You may also add new function definitions as you see fit.
However, please do not modify any other functions. Doing so may result in your code failing our autograder tests. Also, please do not change any function signatures (names, argument order, or number of arguments).
Throughout this project, you should be testing the correctness of your code. It is good practice to test often, so that it is easy to isolate any problems. However, you should not be testing too often, to allow yourself time to think through problems.
Note: we have unlock
tests in this project to guarantee your understanding.