DIRECTORY BasicTime, Complex, Interpreter, IO, List, Rope; Misp: CEDAR DEFINITIONS = BEGIN LORA: TYPE = LIST OF REF ANY; ROPE: TYPE = Rope.ROPE; COMPLEX: TYPE = Complex.VEC; Int: TYPE = REF INT; Real: TYPE = REF REAL; Comp: TYPE = REF COMPLEX; RefTime: TYPE = REF TimeRec; TimeRec: TYPE = RECORD [t: BasicTime.GMT]; AbortClosure: TYPE = Interpreter.AbortClosure; Error: ERROR [env: Environment, stack: Stack, msg: ROPE]; Stop: ERROR [env: Environment, stack: Stack, stop: AbortClosure]; Throw: ERROR [env: Environment, stack: Stack, atom: ATOM, value: REF ANY]; Closure: TYPE = REF ClosureRep; ClosureRep: TYPE = RECORD [ name: ROPE, eval: EvalProc, evalArgs: BOOLEAN _ TRUE, data: REF ANY _ NIL]; Environment: TYPE = REF EnvironmentRep; EnvironmentRep: TYPE = RECORD [ name: ROPE, in, out: IO.STREAM _ NIL, stop: AbortClosure, parent: Environment, rep: REF ANY, class: EnvironmentClass]; EnvironmentClass: TYPE = REF EnvironmentClassRep; EnvironmentClassRep: TYPE = RECORD [ Init: PROC [env: Environment, sizeGuess: NAT, initData: REF ANY], GetBinding: PROC [env: Environment, key: ATOM] RETURNS [found: BOOL, binding: REF ANY], SetBinding: PROC [env: Environment, key: ATOM, binding: REF ANY, overwriteOld: BOOL], Enumerate: PROC [env: Environment, consume: PROC [key: ATOM, binding: REF ANY]], Size: PROC [env: Environment] RETURNS [NAT] ]; Stack: TYPE = LORA; defaultEnvironmentClass: EnvironmentClass; EvalProc: TYPE = PROC [args: LORA, environment: Environment, data: REF ANY _ NIL, stack: Stack] RETURNS [cooked: REF ANY]; Eval: PROC [raw: REF ANY, environment: Environment, stack: Stack] RETURNS [cooked: REF ANY]; ApplyFn: PROC [fn: Closure, args: LORA, env: Environment, parentStack: Stack] RETURNS [ans: REF ANY]; NewEnvironment: PROC [name: ROPE, parent: Environment _ NIL, in, out: IO.STREAM _ NIL, sizeGuess: NAT _ 10, stop: AbortClosure _ Interpreter.nilAbortClosure, class: EnvironmentClass _ defaultEnvironmentClass, initData: REF ANY _ NIL] RETURNS [Environment]; EnvName: PROC [environment: Environment, long: BOOLEAN _ TRUE] RETURNS [ROPE]; EnvStop: PROC [environment: Environment] RETURNS [stop: AbortClosure]; Bind: PROC [pattern, value: REF ANY, env: Environment, introduce: BOOL, stack: Stack _ NIL]; BindAtom: PROC [pattern: ATOM, value: REF ANY, env: Environment, introduce: BOOL, stack: Stack _ NIL]; Defun: PROC [env: Environment, name: ATOM, eval: EvalProc, evalArgs: BOOLEAN _ TRUE, data: REF ANY _ NIL, stack: Stack _ NIL]; Load: PUBLIC PROC [fileName: ROPE, env: Environment, stack: Stack]; DefinePrimitives: PROC [env: Environment]; RegisterPrimitiveDefiner: PROC [ep: EnvironmentProc, end: End _ back]; End: TYPE = {front, back}; EnvironmentProc: TYPE = PROC [environment: Environment]; ToBool: PROC [REF ANY, Environment, Stack] RETURNS [BOOL]; ToInt: PROC [REF ANY, Environment, Stack] RETURNS [INT]; ToReal: PROC [REF ANY, Environment, Stack] RETURNS [REAL]; ToComplex: PROC [REF ANY, Environment, Stack] RETURNS [COMPLEX]; true, false: REF ANY; BoolDecode: PROC [REF ANY] RETURNS [isBool, value: BOOL]; IsEnvironment: PROC [REF ANY] RETURNS [BOOL]; NarrowToEnvironment: PROC [REF ANY] RETURNS [Environment]; Re: PROC [c: COMPLEX] RETURNS [re: REAL]; Im: PROC [c: COMPLEX] RETURNS [im: REAL]; GetIn: PROC [env: Environment] RETURNS [in: IO.STREAM]; GetOut: PROC [env: Environment] RETURNS [out: IO.STREAM]; PrintVal: PROC [out: IO.STREAM, val: REF ANY, quoteRopes: BOOL _ TRUE]; PrintValRope: PROC [val: REF ANY, quoteRopes: BOOL _ TRUE] RETURNS [rope: ROPE]; END. ΔMisp.Mesa Last Edited by: Spreitzer, July 30, 1985 2:06:42 pm PDT Pavel, June 20, 1985 1:21:41 pm PDT Responsible for only the local bindings: Sample Boolean values; possibly NOT REF BOOLs. Κ – "cedar" style˜J™ ™7Icode™#—K˜KšΟk œ"œ ˜:K˜KšΠbxœœ œ˜K˜Kš˜K˜Kš œœœœœœ˜Kšœœœ˜Kšœœ œ˜Kšœœœœ˜Kšœœœœ˜Kšœœœœ˜Kš œ œœœœœ˜GKšœœ˜.K˜Kšœœ'œ˜9K˜Kšœœ6˜AK˜Kš œœ(œ œœ˜JK˜Kšœ œœ ˜šœ œœ˜Kšœœ˜ K˜Kšœ œœ˜Kšœœœœ˜—K˜Kšœ œœ˜'šœœœ˜Kšœœ˜ Kšœ œœœ˜Kšœ˜K˜Kšœœœ˜ K˜—K˜Kšœœœ˜1šœœœ˜$K™(Kš Οnœœœ œœ˜AKšŸ œœœœ œ œœ˜WKš Ÿ œœœ œœœ˜UKš Ÿ œœœœ œœ˜PKšŸœœœœ˜+K˜—K˜Kšœœœ˜K˜K˜*K˜KšŸœœœœ"œœœœ œœ˜zK˜KšŸœœœœ*œ œœ˜\K˜Kš Ÿœœœ(œœœ˜eK˜KšŸœœœœ œœœ œvœœœœ˜€K˜Kš Ÿœœ"œœœœ˜NK˜KšŸœœœ˜FK˜Kš Ÿœœœœœœ˜\K˜KšŸœœ œ œœœœ˜fK˜KšŸœœœœœœœœœ˜~K˜KšŸœœœ œ"˜CK˜KšŸœœ˜*K˜šŸœœ(˜FKšœœ˜KšŸœœœ˜8—K˜Kš Ÿœœœœœœ˜:Kš Ÿœœœœœœ˜8Kš Ÿœœœœœœ˜:Kš Ÿ œœœœœœ˜@K˜šœ œœ˜K™.—K˜Kš Ÿ œœœœœœ˜9K˜Kš Ÿ œœœœœœ˜-Kš Ÿœœœœœ˜:K˜Kš Ÿœœœœœ˜)Kš Ÿœœœœœ˜)K˜Kš Ÿœœœœœ˜7Kš Ÿœœœœœ˜9K˜KšŸœœœœœœœœ˜GKšŸ œœœœœœœœ˜PK˜Kšœ˜—…— ΠŸ