<<>> <> <> <> <> DIRECTORY CardTab USING [Ref], IntCodeDefs USING [LogicalId, VariableId], IO USING [STREAM], Rope USING [ROPE], SymTab USING [Ref]; C2CNames: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; <> <> <> <<=> there must be simple rules to tell writers of include files.>> <> <<=> names must contain the LogicalId/VariableId number unclipped>> <> ScanExterns: PUBLIC PROC [stream: IO.STREAM] RETURNS [externs: SymTab.Ref]; <> AssociateNames: PROC [names, labels: CardTab.Ref, externProcs: SymTab.Ref¬NIL]; <> IsExtern: PROC [id: IntCodeDefs.LogicalId] RETURNS [BOOL]; <> <<[e.g whether it is mentioned in a externProc file]>> TryName: PROC [try: ROPE] RETURNS [ROPE]; <> <> <<[e.g. usefull for types]>> <> <<>> InternalName: PROC [class: ROPE¬NIL] RETURNS [ROPE]; <> <> <> VarName: PROC [id: IntCodeDefs.VariableId, class: ROPE¬NIL] RETURNS [ROPE]; <> <> LabName: PROC [id: IntCodeDefs.LogicalId, class: ROPE¬NIL] RETURNS [ROPE]; <> <> <<>> ProgramName: PROC [] RETURNS [ROPE]; <> <> <> PreDeclare: PROC [id: ROPE]; <> <> Reserve: PROC [r: ROPE] RETURNS [sameRope: ROPE]; <> <> END.