<> <> 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.