EXP ::== (:= VAR EXP)Our parser parses assignment expressions that follow the above syntax and creates records of the type: (define-record varassign (var exp))
EXP ::== (begin EXP COMPOUND) COMPOUND ::== EXP*You will have to extend our parser non-trivially. For compatibility, your parser must create records of the type (define-record begin (exp1 exp2)).
EXP ::== (letrec DECLS EXP) DECLS ::== (DECL+) DECL ::== (VAR EXP)This is almost exactly the same syntax as let expressions, the difference being that the EXP field of a DECL must be a proc expression. However, evaluating letrec expressions is quite a bit different from evaluating let expressions! This part corresponds to exercise 5.6.2. You will have to extend the parser to handle letrec expressions. For compatibility, your parser must create records of the type (define-record letrec (decls body)). decls are made up of decl records that are exactly the same as those defined in our parser for let expressions.
% ~cs326/bin/sub5sub5 will be available Nov 17th, 1999.