DIRECTORY AMModel, AMTypes, Interpreter, InterpreterOps, IO, PPLeaves, PPTree, Rope, SafeStorage, StatementInterpreter, SymTab; StatementInterpreterPrivate: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Tree: TYPE = InterpreterOps.Tree; Node: TYPE = REF PPTree.Node; EvalHead: TYPE = InterpreterOps.EvalHead; Context: TYPE = AMModel.Context; Type: TYPE = AMTypes.Type; TV: TYPE = AMTypes.TV; nullType: Type = AMTypes.nullType; SymbolTable: TYPE = SymTab.Ref; Interval: TYPE = REF IntervalRep; IntervalRep: TYPE = RECORD [ lowClosed, highClosed: BOOL _ FALSE, low, high: TV _ NIL ]; Lambda: TYPE = REF LambdaRep; LambdaRep: TYPE = RECORD [ name: ROPE _ NIL, args, rets: Fields _ NIL, body: Node _ NIL, symbols: SymbolTable _ NIL]; Fields: TYPE = REF FieldsRep; FieldsRep: TYPE = RECORD [ named: BOOLEAN, fields: SEQUENCE length: CARDINAL OF Field]; Field: TYPE = RECORD [ name: ROPE _ NIL, type: AMTypes.Type _ nullType, typed, valued: BOOLEAN _ FALSE, value: REF ANY _ NIL]; SignalDecision: TYPE = RECORD [ type: SignalDecisionType, fields: Fields _ NIL, --only if Return or Resume label: ROPE _ NIL --only if GoTo ]; SignalDecisionType: TYPE = {Reject, Retry, Continue, Resume, Return, Exit, Loop, GoTo}; BasicSignalDecisionType: TYPE = SignalDecisionType[Reject .. Continue]; empty: TV; typeType: Type; Exit: ERROR; Loop: ERROR; Return: ERROR [fields: Fields]; Resume: ERROR [fields: Fields]; GoTo: ERROR [label: ROPE]; DecideSignal: ERROR [decision: BasicSignalDecisionType]; NarrowToSymbolTable: PROC [ra: REF ANY] RETURNS [st: SymbolTable]; NestHead: PROC [outer: EvalHead, st: SymbolTable _ NIL] RETURNS [inner: EvalHead]; DigestFields: PROC [tree: Tree, eval, mayNIL: BOOLEAN, head: EvalHead _ NIL] RETURNS [fields: Fields]; ForceType: PROC [tv: TV, head: EvalHead, parent: Tree] RETURNS [Type]; InterpNoProps: PROC [tree: Tree, head: EvalHead, nest: BOOL _ TRUE]; EvalExpr: PROC [tree: Tree, head: EvalHead, target: Type _ nullType] RETURNS [tv: TV]; EvalReturn: PROC [rn: Node, head: EvalHead]; EvalResume: PROC [rn: Node, head: EvalHead]; EvalProcedure: PROC [head: EvalHead, tree: Tree, target: Type _ nullType, data: REF _ NIL] RETURNS [return: TV] --EvalQuote.EvalQuoteProc--; END. bStatementInterpreterPrivate.Mesa Last Edited by: Spreitzer, January 7, 1985 10:48:28 pm PST Κx– "cedar" style˜Icode™ J™:K˜KšΟk œ0œD˜K˜KšΠbxœœ œ˜0K˜Kš˜K˜Kšœœœ˜Kšœœ˜!Kšœœœ ˜Kšœ œ˜)Kšœ œ˜ Kšœœ˜Kšœœ œ˜K˜"Kšœ œ˜K˜Kšœ œœ ˜!šœ œœ˜Kšœœœ˜$Kšœ œ˜K˜—K˜Kšœœœ ˜šœ œœ˜Kšœœœ˜Kšœœ˜Kšœ œ˜Kšœœ˜—K˜Kšœœœ ˜šœ œœ˜Kšœœ˜Kšœœ œœ˜,—K˜šœœœ˜Kšœœœ˜K˜Kšœœœ˜Kšœœœœ˜—K˜šœœœ˜Kšœ˜KšœœΟc˜0KšœœœŸ˜ K˜—K˜Kšœœ?˜WKšœœ*˜GK˜Kšœœ˜ Kšœ˜K˜Kšœœ˜ Kšœœ˜ Kšœœ˜Kšœœ˜Kšœœ œ˜Kšœœ%˜8K˜Kš Οnœœœœœ˜BK˜Kš œœ%œœ˜RKš   œœœœœ˜fKš  œœœ œ˜FK˜Kš  œœ$œœ˜DKš œœ7œœ˜VKš  œœ˜,Kš  œœ˜,Kš  œœ=œœœ œŸœ˜ŒK˜Kšœ˜—…—¨ ‚