#ifndef __Compiler_h #define __Compiler_h #include "SchemeObject.h" #include "CompiledCode.h" #include "Symbol.h" #include "Scope.h" #include "Error.h" #define TAIL 1 @interface Compiler: SchemeObject { CompiledCode code; SchemeObject sexpr; Scope scope; Error err; } + (id) newWithLambda: (SchemeObject) xp scope: (Scope) sc; - (id) initWithLambda: (SchemeObject) xp scope: (Scope) sc; - (SchemeObject) compile; - (void) emitExpression: (SchemeObject) expression flags: (integer) fl; - (void) emitLambda: (SchemeObject) expression; - (void) emitConstant: (SchemeObject) expression; - (void) emitApply: (SchemeObject) expression flags: (integer) fl; @end #endif //__Compiler_h