-- JunoLookupImpl.mesa -- August 31, 1983 4:03 pm -- Last Edited by: Gnelson, December 10, 1983 5:35 pm DIRECTORY JunoSyntax, JunoLookup, ParseWindow; JunoLookupImpl: PROGRAM IMPORTS JunoSyntax EXPORTS JunoLookup = {OPEN JS: JunoSyntax; GetFunDef: PUBLIC PROC [name: JS.FunName, defs: REF] RETURNS [JS.FunDef] = {l: LIST OF ParseWindow.NodeContent ← NARROW[defs, ParseWindow.Handle].content; WHILE l # NIL AND (l.first.tree = NIL OR NOT(IsFunDefOf[name, l.first.tree])) DO l ← l.rest ENDLOOP; IF l = NIL THEN RETURN [NIL] ELSE RETURN [l.first.tree]}; GetPredDef: PUBLIC PROC [name: JS.PredName, defs: REF] RETURNS [JS.PredDef] = {l: LIST OF ParseWindow.NodeContent ← NARROW[defs, ParseWindow.Handle].content; WHILE l # NIL AND (l.first.tree = NIL OR NOT(IsPredDefOf[name, l.first.tree])) DO l ← l.rest ENDLOOP; IF l = NIL THEN RETURN [NIL] ELSE RETURN [l.first.tree]}; GetProcDef: PUBLIC PROC[name: JS.ProcName, defs: REF] RETURNS [JS.ProcDef] = {l: LIST OF ParseWindow.NodeContent ← NARROW[defs, ParseWindow.Handle].content; WHILE l # NIL AND (l.first.tree = NIL OR NOT(IsProcDefOf[name, l.first.tree])) DO l ← l.rest ENDLOOP; IF l = NIL THEN RETURN [NIL] ELSE RETURN [l.first.tree]}; IsFunDefOf: PROC[name: JS.FunName, tree: REF] RETURNS [BOOLEAN] = {RETURN [JS.IsFunDef[tree] AND name = JS.FunOfFunDef[tree]]}; IsPredDefOf: PROC[name: JS.FunName, tree: REF] RETURNS [BOOLEAN] = {RETURN [JS.IsPredDef[tree] AND name = JS.PredOfPredDef[tree]]}; IsProcDefOf: PROC[name: JS.FunName, tree: REF] RETURNS [BOOLEAN] = {RETURN [JS.IsProcDef[tree] AND name = JS.ProcOfProcDef[tree]]}; }.