-- SMVal.mesa -- last edit by Satterthwaite, August 15, 1983 11:02 am DIRECTORY SMLoad: TYPE USING [LoadInfo], SMOps: TYPE USING [MS], SMProj: TYPE USING [Proj], SMTree: TYPE Tree USING [Handle, Id, Link, Name, SonId], SMTreeOps: TYPE --TreeOps-- USING [TM]; SMVal: CEDAR DEFINITIONS~{ OPEN Tree~~SMTree, TreeOps~~SMTreeOps; -- types -- LoadMod -- stored in Ext of Apply nodes -- where first son is an apply, describes bcd files that have been loaded -- there is one of these per parse tree node LoadMod: TYPE~REF LoadModRecord; LoadModRecord: TYPE~RECORD[ proj: SMProj.Proj←NIL, loadInfo: SMLoad.LoadInfo←NIL, mustReplace: BOOL←FALSE]; -- => this module must be replaced in the load state -- operations on model value trees (full 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[t: 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]; }.