DIRECTORY ThreeC4BaseDecl1Def, Rope; ThreeC4BaseDecl2Def: CEDAR DEFINITIONS = BEGIN OPEN ThreeC4BaseDecl1Def, Rope; FcnDefGraphNode: TYPE = REF FcnDefGraphNodeBody; FcnDefGraphNodeBody: TYPE; BuildFcnBaseGraph: PROC[NameListNode, NameListNode] RETURNS[FcnDefGraphNode]; FakeCopyFcnBaseGraph: PROC[FcnDefGraphNode] RETURNS[FcnDefGraphNode]; RecordShareList: PROC[FcnDefGraphNode, NameListNode] RETURNS[FcnDefGraphNode]; RecordDamageList: PROC[FcnDefGraphNode, NameListNode] RETURNS[FcnDefGraphNode]; PrepareRecFcnDefGraph: PROC[FcnDefGraphNode] RETURNS[FcnDefGraphNode]; ContextNode: TYPE = REF ContextNodeBody; ContextNodeBody: TYPE; LockedContextNode: TYPE = REF LockedContextNodeBody; LockedContextNodeBody: TYPE; BuildEmptyContext: PROC RETURNS[ContextNode]; FakeCopyContextForConditional: PROC[ContextNode] RETURNS[ContextNode]; LockContext: PROC[ContextNode] RETURNS[LockedContextNode]; RecordGlobalTreeType: PROC[ContextNode, NameNode, MesaCodeNode] RETURNS[ContextNode]; RecordSimpleBaseType: PROC[ContextNode, NameNode, ROPE, MesaCodeNode] RETURNS[ContextNode]; RecordEnumeratedBaseType: PROC[ContextNode, NameNode, ROPE, NameListNode, MesaCodeNode] RETURNS[ContextNode]; RecordCedarType: PROC[ContextNode, NameNode, ROPE, MesaCodeNode] RETURNS[ContextNode]; RecordPreDefinedCedarType: PROC[ContextNode, NameNode, MesaCodeNode] RETURNS[ContextNode]; RecordBaseFunction: PROC[ContextNode, NameNode, ROPE, TypeListNode, TypeListNode, FcnDefGraphNode] RETURNS[ContextNode]; RecordBaseFcnDef: PROC[ContextNode, NameNode, ROPE, TypeListNode, TypeListNode, FcnDefGraphNode] RETURNS[ContextNode]; RecordRecFcnDef: PROC[ContextNode, NameNode, ROPE, TypeListNode, TypeListNode, FcnDefGraphNode] RETURNS[ContextNode]; RecordRopeToken: PROC[ContextNode, RopeNode] RETURNS[ContextNode]; RecordNonTerminalToken: PROC[ContextNode, NameNode, NameNode] RETURNS[ContextNode]; RecordProduction: PROC[ContextNode, NameNode, INT] RETURNS[ContextNode]; RecordGenericToken: PROC[ContextNode, NameNode, ROPE, MesaCodeNode] RETURNS[ContextNode]; RecordAbstractProduction: PROC[ContextNode, NameNode, ROPE, NameListNode, LockedContextNode] RETURNS[ContextNode]; RecordAbstRightSideSymbol: PROC[ContextNode, NameNode, NameNode] RETURNS[ContextNode]; RecordControlModule: PROC[ContextNode, ROPE] RETURNS[ContextNode]; FindType: PROC[ContextNode, NameNode] RETURNS[TypeNode]; LookupContextNode: TYPE = REF LookupContextNodeBody; LookupContextNodeBody: TYPE; FunctionCase: TYPE = {base, recursive}; TearDownGraphs: PROC[LookupContextNode] RETURNS[BOOLEAN]; BuildBasicLookupContext: PROC[ContextNode] RETURNS[LookupContextNode]; FakeCopyLookupContext: PROC[LookupContextNode] RETURNS[LookupContextNode]; PushProductionContext: PROC[LookupContextNode, LockedContextNode] RETURNS[LookupContextNode]; RecordVarSeq: PROC[LookupContextNode, NameListNode, TypeListNode] RETURNS[LookupContextNode]; PushLocalRSS: PROC[LookupContextNode, NameNode, TypeNode] RETURNS[LookupContextNode]; LookUpType: PROC[LookupContextNode, NameNode] RETURNS[TypeNode]; LookUpFunction: PROC[LookupContextNode, NameNode] RETURNS[FunctionCase, TypeListNode, TypeListNode]; LookUpRecFcnDef: PROC[LookupContextNode, NameNode] RETURNS[TypeListNode, TypeListNode]; LookUpFcnDefGraph: PROC[LookupContextNode, NameNode] RETURNS[FcnDefGraphNode]; LookUpAbProduction: PROC[LookupContextNode, NameNode] RETURNS[NameListNode, LockedContextNode]; LookUpSimpleValue: PROC[LookupContextNode, IdentifierNode] RETURNS[TypeNode, MesaCodeNode]; LookUpValue2: PROC[LookupContextNode, IdentifierNode, IdentifierNode] RETURNS[TypeNode, MesaCodeNode]; EqualFunCase: PROC[FunctionCase, FunctionCase] RETURNS[BOOLEAN]; CheckLegalRopeToken: PROC[LookupContextNode, RopeNode] RETURNS[BOOLEAN]; LookUpGrammarSymbol: PROC[LookupContextNode, NameNode] RETURNS[TypeNode]; LookUpProduction: PROC[LookupContextNode, NameNode] RETURNS[INT]; LookUpAbstractProduction: PROC[LookupContextNode, NameNode] RETURNS[TypeNode, TypeListNode]; LookUpRightSideSymbol: PROC[LookupContextNode, NameNode] RETURNS[TypeNode]; EmptyRSContext: PROC[LookupContextNode] RETURNS[BOOLEAN]; LookUpEnumTypeVal: PROC[LookupContextNode, NameNode, NameNode] RETURNS[TypeNode, MesaCodeNode]; UsageNode: TYPE = REF UsageNodeBody; UsageNodeBody: TYPE; Use: TYPE = {ref, import, export}; BuildEmptyUsage: PROC RETURNS[UsageNode]; RecordTypeUse: PROC[UsageNode, TypeNode] RETURNS[UsageNode]; RecordTypesUse: PROC[UsageNode, TypeListNode] RETURNS[UsageNode]; RecordFcnUse: PROC[UsageNode, NameNode, Use, LookupContextNode] RETURNS[UsageNode]; RecordAbstProdUse: PROC[UsageNode, NameNode, Use, LookupContextNode] RETURNS[UsageNode]; RecordGenericTokenUse: PROC[UsageNode, NameNode, Use, LookupContextNode] RETURNS[UsageNode]; RecordLinkExport: PROC[UsageNode, LookupContextNode] RETURNS[UsageNode]; RecordDefFileUse: PROC[UsageNode, ROPE, Use] RETURNS[UsageNode]; BuildImplUseCode: PROC[UsageNode] RETURNS[MesaCodeNode, MesaCodeNode, MesaCodeNode, MesaCodeNode]; BuildDefUseCode: PROC[UsageNode, ROPE] RETURNS[MesaCodeNode, MesaCodeNode]; FakeUsageCopy: PROC[UsageNode] RETURNS[UsageNode]; BPrintError: PROC[BOOLEAN, ROPE] RETURNS[BOOLEAN]; BPrintBadName: PROC[BOOLEAN, NameNode, ROPE] RETURNS[BOOLEAN]; BAbort: PROC[BOOLEAN] RETURNS[BOOLEAN]; True: PROC RETURNS[BOOLEAN]; False: PROC RETURNS[BOOLEAN]; MarkErrors: PROC RETURNS[BOOLEAN]; AreErrors: PROC RETURNS[BOOLEAN]; END..