[ivy]<Satterthwaite>SML>SMVal.mesa!4

SMVal.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
last edit by Satterthwaite, May 12, 1986 11:56:34 am PDT
DIRECTORY
SMOps: TYPE USING [MS],
SMTree: TYPE Tree USING [Handle, Id, Link, Name, SonId],
SMTreeOps: TYPE TreeOps USING [TM];
SMVal: CEDAR DEFINITIONS~{
OPEN Tree~~SMTree, TreeOps~~SMTreeOps;
operations on model value trees (fully evaluated only)
Binding: PROC[t: Tree.Link] RETURNS[BOOL];
BtoD: PROC[binding: Tree.Link] RETURNS[decl: Tree.Handle];
BtoG: PROC[binding: Tree.Link] RETURNS[group: Tree.Handle];
IdName: PROC[id: Tree.Id] RETURNS[Tree.Name];
IdType: PROC[id: Tree.Id] RETURNS[Tree.Link];
IdValue: PROC[id: Tree.Id] RETURNS[Tree.Link];
Select: PROC[binding: Tree.Link, index: Tree.Name] RETURNS[Tree.Link];
ValOf: PROC[t: Tree.Link] RETURNS[Tree.Link];-- iterates IdValue for Id's
ValOfNthSon: PROC[t: Tree.Link, n: Tree.SonId] RETURNS[Tree.Link];
enumeration of operator nodes (evaluates Id's, suppresses multiple visits)
VisitNodes: PROC[tm: TreeOps.TM, root: Tree.Link, proc: PROC[node, parent: Tree.Link]];
ResetVisits: PROC[ms: SMOps.MS];
lambda decomposition
OuterBody: PROC[t: Tree.Link] RETURNS[formals, body: Tree.Link];
indirection through value tree to get/set ext from parse tree
GetExtFromParse: PROC[link: Tree.Link] RETURNS[Tree.Link];
PutExtInParse: PROC[link: Tree.Link, ext: Tree.Link];
}.