This file describes the overall syntax of kmp-scheme. see ~gjr/work/liar94/text/forms.txt: ;;; -*- Text -*- ;; Output of input stage (except for LETREC). = (QUOTE ) ; constant object reference | (LOOKUP ) ; variable reference | (LAMBDA ) ; procedural abstraction | (LET (*) ) ; simple variable binding | (DECLARE *) ; ?? | (CALL +) ; procedure application | (BEGIN *) ; sequential execution | (IF ) ; conditional execution ;; The following is introduced by "assconv.scm", it need not be handled before | (LETREC (*) ) ; mutually recursive bindings: ; only lambda-expressions allowed. ;; The following need not be handled after "assconv.scm" | (SET! ) ; variable assignment ;; The following need not be handled after "expand.scm" | (OR ; conditional execution | (DELAY ) ; promise construction | (UNASSIGNED? ) ; variable initialization test ;; The following need not be handled after "envconv.scm" | (ACCESS ) ; variable reference in computed env. | (DEFINE ) ; variable definition | (THE-ENVIRONMENT) ; environment reification | (IN-PACKAGE ) ; evaluation in computed environments = ( ) ; LET allows only simple expressions ; LETREC allows only LAMBDA expressions = (* ) = | #!optional + = | #!rest = | #!aux + is eliminated in expand.scm. It is not handled afterwards. CALL expressions have at least two subexpressions: - operator - continuation ('#f until cps) * means 0 or more + means 1 or more