DIRECTORY AMModel, AMTypes, Interpreter, InterpreterOps, IO, PPTree, Rope, SafeStorage, SymTab; StatementInterpreter: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Context: TYPE = AMModel.Context; SymbolTable: TYPE = SymTab.Ref; Tree: TYPE = InterpreterOps.Tree; EvalHead: TYPE = InterpreterOps.EvalHead; Type: TYPE = SafeStorage.Type; nullType: Type = SafeStorage.nullType; TV: TYPE = AMTypes.TV; InterpretStatement: PROC [blockAsRope: ROPE, context: Context _ NIL, symTab: SymbolTable _ NIL, abort: Interpreter.AbortClosure _ Interpreter.nilAbortClosure] RETURNS [errorRope: ROPE]; ParseBlock: PROC [asRope: ROPE, errout: IO.STREAM] RETURNS [asTree: Tree]; ParseModule: PROC [asRope: ROPE, errout: IO.STREAM] RETURNS [asTree: Tree]; Interp: PROC [asTree: Tree, head: EvalHead, nest: BOOL _ TRUE]; Enable: PROC [catches: REF PPTree.Node, head: EvalHead, inner: PROC]; END. pStatementInterpreter.Mesa Last Edited by: Spreitzer, January 7, 1985 10:48:26 pm PST blockAsRope should include bracketing BEGIN-END or curly braces. Evaluate a statement. IF nest THEN top scope will be nested inside scope of head ELSE top scope will be merged with head. Call the inner procedure, as if protected by the given catch series in the given context. Κr– "cedar" style˜Icode™J™:K˜KšΟk œV˜_K˜KšΠbxœœ œ˜)K˜Kš˜K˜Kšœœœ˜Kšœ œ˜ Kšœ œ˜Kšœœ˜!Kšœ œ˜)Kšœœ˜Kšœ&˜&Kšœœ œ˜K˜šΟnœœœœœAœ œ˜ΉK™@—K˜Kš Ÿ œœ œ œœœ˜JKš Ÿ œœ œ œœœ˜KK˜šŸœœ&œœ˜?K™K™c—K˜šŸœœ œ%œ˜EK™Y—K˜Kšœ˜—…—xZ