In each part of the assignment, implement the function
parse, which consumes an expression in the language's
concrete syntax and returns the abstract syntax representation of that
expression. parse must accept only expressions in the
syntax of the language.
In addition to parse, you must implement the function
interp, which consumes an abstract syntax expression (as
returned by the parse function) and returns a
CFWAE-Value.
You must include a contract for every function that you write and include test cases that amply exercise all of the code you've written. Refer to the style requirements for clarification, if necessary.
I have attempted to break the lab apart into a sequence of steps that, if followed, should make things easier. Skipping ahead, or deciding to conflate one step with another, may lead to confusion.
Further, I have given you two paths through the laboratory: one path by which you leave with statements handling a single binding (and functions handling a single argument), or a second path where you handle multiple-binding with statements and multiple-argument functions. Start down the first path, and then, if time allows, revise your project to handle the second path.