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;
BuildEmptyContext: PROC RETURNS[ContextNode];
FakeCopyContextForConditional: PROC[ContextNode] RETURNS[ContextNode];
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, ContextNode] 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};
BuildBasicLookupContext: PROC[ContextNode] RETURNS[LookupContextNode];
FakeCopyLookupContext: PROC[LookupContextNode] RETURNS[LookupContextNode];
PushProductionContext: PROC[LookupContextNode, ContextNode] 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, ContextNode];
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];
END..